Asterisk 13: stabilní motor pro vaše komunikace

Marek Červenka 18. 2. 2015

Asterisk je open-source framework pro budování komunikačních systémů a aplikací, který pohání různé pobočkové ústředny, konferenční servery, VoIP Gatewaye a další speciální aplikace. Před časem vyšla LTS verze 13, která se hodí pro projekty, které vyžadují dlouhodobou stabilitu. Co od ní můžete čekat?

Obecně o Asterisku

Na úvod krátce o Asterisku pro neznalé: Asterisk je open-source framework pro budování komunikačních systémů a aplikací. Asterisk pohání různé pobočkové ústředny, konferenční servery, VoIP Gatewaye a další speciální aplikace. Projekt je sponzorován firmou Digium, která prodává support a komerční produkty.

První verzi dal k dispozici Mark Spencer v roce 1999. Mark Spencer je mimo jiné také původním autorem programu dnes známého pod jménem Pidgin.

Pokud si chcete Asterisk vyzkoušet, doporučuji např. návod VoIP s Asterisk: pobočková ústredňa za 30 minút.

V České republice existují firmy, které poskytují komerční support nebo produkty nad Asteriskem postavené. Jsou to například Canistec, IPEX a další. Asterisk 13 je Long Term Support verze. Tzn. je dlouhodbě podporovaná a tudíž se hodí pro projekty u kterých je třeba zajistit dlouhodobou podporu. Např. telefonní ústředny, UC systémy atd.

Release Series

Release Type

Release Date

Security Fix Only

EOL

11.x

LTS

25.10.2012

25.10.2016

25.10.2017

12.x

Standard

2013–12–20

2014–12–20

2015–12–20

13.x

LTS

2014–10–24

2018–10–24

2019–10–24

14.x

Standard

2015–10 (tentative)

2016–10 (tentative)

2017–10 (tentative)

Hlavní novinky verze 13

Jako obvykle, je tato LTS verze chudší na nové funkce. Důvodem je zaměření na vydání LTS verze. Je snaha, aby v produkčním prostředí bylo co nejméně problémů. Dalším důvodem tohoto opatrnějšího přístupu je, že uživatelé v telekomunikacích jsou zvyklí, že jim služba funguje nepřetržitě.

Stále znatelnějším trendem je zaměření na API pro vývojáře. Skupina koncových uživatelů, kteří si ve firmě sami Asterisk konfigurují se zmenšuje a používá spíše hotové distribuce a produkty.

Některé nové funkce jsou již v Asterisku 12, protože dle pravidel je možné do standard začleňovat nové věci. Tyto ale nebyly obsaženy v článku o Asterisku 12.

Pokud budete upgradovat na Asterisk 13 z některé verze starší než 12, tak doporučuju přečíst i článek o Asterisku 12. A dále prostudovat změny v AMI, CEL, CDR modulech.

Realtime bezpečnost pomocí Security Events via AMI

AMI je Asterisk Management Interface. Rozhraní pomocí kterého lze externě Asterisk ovládat a přijímat realtime informace např. o příchozím hovoru. Ve verzi 13 přibyla možnost informování o událostech související s bezpečností.

Můžete se nechat informovat např. při neúspěšných pokusech o příhlášení k SIP účtu.

Podpora protokolu HEP

Pro dohledové složky a správce systémů přibyla velmi důležitá vlastnost a to je ukládání veškeré SIP signalizace do externího systému pro zpětnou diagnostiku. Asterisk podporuje protokol, který se jmenuje HEP a data ukládá do projektu HOMER (není to ten seriálový).

Webové rozhraní projektu HOMER vám následně umožní podrobnou analýzu SIP provozu.

Na starosti to mají tři moduly – res_hep, res_hep_pjsip, res_hep_rtcp. Jak z názvů vyplývá, podpora není pro starší kanál chan_sip ale pouze pro nový  chan_pjsip.

Není podporováno ukládání celých hovorů včetně audia (RTP). Odesílány jsou pouze statistické informace o audiu, které jsou v RTCP.

Pokud potřebujete analyzovat i audio, doporučuji projekt www.voipmonitor.org.

Posílání out-of-call zpráv pomocí ARI (JSON přes websocket)

Do ARI byla v této verzi přidána možnost poslat kdykoliv textovou zprávu na podporované zařízení. Podporovány jsou kanály chan_sip, chan_pjsip kam jsou zprávy zasílány pomocí SIP SIMPLE. Dále je možné zprávy posílat zprávy na chan_motif. Sem jsou zprávy přeformátovány na protokol XMPP.

RFC 4662 Resource Lists v PJSIP kanálu

V případě, že s vaší pobočkovou ústřednou využíváte tzv. funkci BLF (Busy Lamp Field), abyste viděli, zda váš kolega právě hovoří, musí PBX ústředna podporovat SIP SUBSCRIBE metodu.

Pokud máte 19 kolegů a chcete mít informaci o všech, musí vaše zařízení poslat 19× SIP SUBSCRIBE. Pokud tohle nastavení použije i 19 vašich kolegů, tak je třeba provést 20 × 19 = 380 subscriptions. Jak je na první pohled vidět, tohle není příliš škálovatelné řešení.

Z tohoto důvodu vzniklo RFC 4662, které umožňuje tyto požadavky sdružit do jednoho. V této verzi byla podpora tohoto RFC implementována. Podrobné detaily naleznete na wiki projektu Asterisk.

Kodeky

Bohužel ani v této verzi není k dispozici plná (transcoding) podpora kodeku Opus, protože strašák patentového trolla stále visí ve vzduchu. Nicméně pro ty, kteří chtějí Opus testovat existuje patch. Ten je k dispozici na GitHubu.

V současné době bohužel stále ještě není využit variable bitrate mód, který Opus umí. K dispozici je pouze statická verze. Nějaký šikovný doktorand na VŠB nebo VUT telco fakultě?

Menší novinky

Výčet všech změn není úplný. Jsou obsaženy pouze ty, které autor používá nebo jsou z jeho pohledu zajímavé.

Aplikace

MixMonitor

Aplikace MixMonitor je určena pro nahrávání hovorů. Pomocí parametru B() je možné do hovoru periodicky pípat, aby bylo jasné že je hovor nahráván.

Dále je toto pípání pustit při začátku a konci nahrávání. K tomu slouží parametry p(přehraje se tomu kdo spustil nahrávání) a P (přehraje se tomu kdo ukončil nahrávání).

PickupChan

Tato aplikace slouží pro přebírání hovorů ve skupině. Nově je možné definovat pomocí uniqueid proměnné, který hovor(kanál) chcete vyzvednout.

Jádro Asterisku

Account kódy

Pro účtování hovorů existuje v Asterisku proměnná „accountcode“. Dá se dá využít pro uložení informace o tom, komu daný hovor naúčtovat. Tato informace je nyní lépe v Asterisku propagována např. při vytváření odchozích kanálů.

AMI (Asterisk Manager Interface)

AMI je rozhraní pro externí správu Asterisku. Umožňuje například externě vytvořit hovor.

Actions (příkazy)

Jak již někteří víte, od Asterisku 12 je dostupný nový SIP stack na bázi projektu pjproject –  chan_pjsip.

V rámci nové verze jsou k dispozici nové příkazy v AMI:

PJSIPNotify – funkce umožňuje poslat SIP NOTIFY na libovolné URI.

PJSIPShowEndpoint – ve výstupu přibylo pole ContactStatusDetail, které obsahuje informace o pokusech Asterisku kontrolovat dostupnost SIP zařízení (qualify).

Byly přidány příkazy DeviceStateList, PresenceStateListExtensionStateList. Pomocí těchto příkazů je možné zjišťovat aktuální stavy daného zařízení.

Events (události)

Byly přidány události DeviceStateChanged PresenceStateChanged. Tyto události jsou generovány v případě kdy zařízení změní svůj stav. Pozor: těchto událostí může být velké množství, takže používejte pouze pokud opravdu potřebujete realtime informace o stavu zařízení.

Používání funkce TALK_DETECT (detekce zda někdo mluví) nově také generuje události. Názvy událostí jsou ChannelTalkingStart/Channel­TalkingStop .

Do události DialEnd přibyla status informace o tom jak byla aplikace Dial ukončena. Jedná se o hodnoty ABORT, CONTINUE a GOTO.

Funkce talk detect = např. statistika pro call centrum, který agent ma největší prodlevy při komunikaci.

ARI (Asterisk REST Interface)

Toto rozhraní obsahovalo nejvíce změn. Uvádím pouze některé.

  • Operace, které vytváří nějaký objekt můžou jako parametr zadat unikátní id. Týká se to:

    • Channels

    • Bridges

    • Playbacks

Příklad:

POST channels/my-channel-id kde my-channel-id je mnou definované id

  • Uložené nahrávky souborů podporují nově operaci copy, která umožňuje nahrávku překopírovat na jiné místo v adresáři určeném pro nahrávky.

  • LiveRecording objekt nyní obsahuje 3 další položky, které můžou být reportovány v ARI události RecordingFinished:

    • total_duration: celková délka nahrávky v sekundách

    • talking_duration: celková doba mluvení v hovoru při použití funkce TALK_DETECT

    • silence_duration: celková doba ticha v hovoru při použití funkce TALK_DETECT

  • Playback URI tón byl přidán. Jedná se o tóny, které slyšíte v případě nějakých problémů např. obsazovací tón. Tzn. ARI nyní umožňuje přehrávat dynamicky do hovorů tóny.

  • Je možné generovat uživatelské události do ARI

  • Přidány nové události pro externě iniciované přepojení. Pro přepojení naslepo (BlindTransfer) je to událost BridgeBlindTransfer. Pro přepojení s konzultací je to BridgeAttendedTransfer.

RealTime (moduly pro realtime konfiguraci Asterisku např. v MySQL)

  • Byly přidány nové Alembic skripty, které vytváří CDR tabulky tak jak je očekává Asterisk 13.

TLS (šifrování signalizace)

Asterisk podporuje šifrování signalizace i samotných hovorů jako ochranu např. proti odposlechu. Problematika TLS/SRTP by vydala na samostatný článek a studium necháváme na laskavém čtenáři.

Asterisk nyní podporuje Perfect Forward Secrecy (PFS). PFS je ve výchozím stavu zapnuto. Ephemeral ECDH (ECDHE) je standardně zapnuto. Pokud ECDHE potřebujete vypnout, je to možné v sip.conf  udělat takto:

tlscipher=AES128-SHA:DES-CBC3-SHA

Ephemeral DH (DHE) je ve výchozím stavu vypnuto. Pro zapnutí přidejte DH parametry do privátního klíče. Konfigurace v sip.conf  – parametr  tlsprivatekey.

Protože klienti očekávájí od serveru PFS a protože OpenSSL seřazuje šifry podle jejich bitové síly ( openssl ciphers -v DEFAULT),je doporučeno prověřit konfigurační soubor sip.conf a nastavení případně změnit, viz příklad:

tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH

Asterisk použije PFS, pokud mu to klient nabídne. Pokud PFS není nabídnuto, tak je proveden fall-back na AES-128.

Functions (funkce)

TALK_DETECT

Funkce TALK_DETECT umožňuje u hovoru detekci mluvení. Události kdy je mluvení detekováno nebo naopak, jsou poté posílány do AMI a ARI rozhraní. Na základě těchto událostí můžete např. hovor, v kterém nikdo 10 minut nepromluvil, ukončit, protože se třeba jedná o zapomenutý neukončený hovor.

widgety

Resources (kanály, drivery)

res_pjsip

Nejvíce změn, tak jak se očekávalo, je v novém kanálu pro SIP – chan_pjsip. Pro příznivce RedHat/Centos/Fedora systémů je příznivá zpráva, že projekt Pjproject, na kterém chan_pjsip závisí, byl „zRPMifikován“ a protlačen do repozitářů.

Architektura kanálu chan_pjsip

  • Konfigurace koncového zařízení nyní podporuje nastavení accountcode.

  • Je možné nastavovat QoS pomocí IP hlavičky ToS (Type of Service) – tos, tos_audio, tos_video odpovídající hodnoty cs0 – cs7, af11 – af43, ef.

  • Do CLI přibyly nové příkazy.

    • pjsip show contacts – vypíše aktuální PJSIP kontakty

    • pjsip show contact – vypíše informace o aktuálním kontaktu

    • pjsip show channel – vypíše informace o pjsip kanálu

    • pjsip show registrations – vypíše všechny odchozí SIP registrace (směrem k operátorům)

  • Přidána podpora pro hlavičku Path.

  • Přibyla možnost nastavit proměnnou v kanále pro dané zařízení – set_var v konfiguraci zařízení.

  • Bylo vylepšeno fungování na multihomed systémech (více síťových karet).

Nakonec krátká zajímavost co se vaří na reviewboardu. Posílání CDR/CEL dat pomocí AMQP což je další krůček k lepšímu nasazení do virtualizovaného a distribuovaného prostředí. Pro zájemce o detaily: reviewboard.asterisk.org/r/4365/.

Reference

Našli jste v článku chybu?
Vitalia.cz: Opuncie je plod kaktusu. Pozor na trny

Opuncie je plod kaktusu. Pozor na trny

Vitalia.cz: Tohle jsou nejlepší česká piva podle odborníků

Tohle jsou nejlepší česká piva podle odborníků

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

DigiZone.cz: Rapl: seriál, který vás smíří s ČT

Rapl: seriál, který vás smíří s ČT

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Lupa.cz: Aukro.cz mění majitele. Vrací se do českých rukou

Aukro.cz mění majitele. Vrací se do českých rukou

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

120na80.cz: Hrbatá prsa aneb mýty o implantátech

Hrbatá prsa aneb mýty o implantátech

Vitalia.cz: Voda z Vltavy před a po úpravě na pitnou

Voda z Vltavy před a po úpravě na pitnou

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

DigiZone.cz: DVB-T2 ověřeno: seznam TV zveřejněn

DVB-T2 ověřeno: seznam TV zveřejněn

Podnikatel.cz: Chystá se smršť legislativních novinek

Chystá se smršť legislativních novinek

DigiZone.cz: Wimbledon na Nova Sport až do 2019

Wimbledon na Nova Sport až do 2019

DigiZone.cz: Koncesionářské poplatky pro RTVS

Koncesionářské poplatky pro RTVS

Vitalia.cz: 5 pravidel proti infekci močových cest

5 pravidel proti infekci močových cest

DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT