Semestrální práce do předmětu TPS (Technologie Počítačových Sítí). VoIP Telefonie Provozování protokolu SIP mezi softwarovou ústřednou Asterisk a Cisco 2811 Vypracoval: Pavel Jeníček, JEN022 Martin Milata, MIL051 Ostrava, 9.1.2006 Zadání: Průzkum možností telefonie mezi softwarovou ústřednou Asterisk, klasickým telefonním přístrojem, Cisco routerem s FXS portem, ISDN ústřednou a koncovým ISDN telefonem. Použité HW a SW prostředky: Analogový a ISDN telefon Cisco 2811: IS Router s přídavným VIC2-2FXS modulem (2xFXS pro zapojení analogového telefonu) Asterisk: Asterisk je plně konfigurovatelná softwarová modulární ústředna společnosti Digium (tvůrce Mark Spencer), která je podporována na OS Linux, BSD a MacOS. Asteriskem je možno provádět IP telefonii stejně jako spojovat hovory na analogovou či ISDN telefonní linku s použitím přídavných hardwarových karet. Asterisk poskytuje funkce hlasového záznamníku, konferencí, automatických odpovědí a držení hovoru dále SIP a H.323 protokoly (obojí jako klient i gateway). Je zde i podpora novějšího IAX (Inter-Asterisk eXchange) protokolu, který má oproti SIPu či H.323 více možností ověřování, směrování, signalizace ap. Pro provozování IP telefonie není zapotřebí žádný přídavný hardware. Pro klasickou telefonii jsou podporovány zejména karty firmy Digium, ale i karty třetích stran. Zapojení: Analog.tel. IP síť analog
Cisco 2811 VoIP-SIP
ISDN mrak
VoIP-SIP Asterisk
ISDN BRI
ISDN BRI
ISDN tel.
Tok dat a jeho protokoly: Hovor zahajuje analogový telefon, signalizace pro FXS kartu je tedy standardní pro tento druh spojení. Z Cisco routeru jde hovor po IP síti protokolem SIP do Asterisku. Asterisk tento hovor přepojí na ISDN ústřednu, na jejímž druhém konci je ISDN telefon, kde hovor končí. Opačný směr toku dat je analogický.
Konfigurace Analog.Tel. IP síť
ISDN mrak
tel.č. 1111
tel.č. 5689
Cisco 2811 FXS 0/2/1 port
FastEthernet0/0 IP adr. 158.196.135.20
NIC VoIPBox IP adr. 158.196.135.11
Asterisk ISDN - BRI TE tel.č. 5690
ISDN Tel.
Konfigurace Cisco 2811 IS routeru: Hlavní konfigurační částí jsou sekce pro připojení analogového telefonu a pro připojení PC s Asteriskem. Analogový telefon je připojen na FXS port, který router oznažuje jako port 0/2/1. V konfiguračním souboru se k tomuto portu váže záznam „dial-peer voice 2 pots“, kde „pots“ na konci označuje, že se jedná o analogový telefon (Plain Old Telephone Service). Tomuto portu je přiřazeno číslo 1111, což značí řádek „ destination-pattern 1111“. Asterisk je připojen na rozhraní fastEthernet0. IP adresa PC s Asteriskem je 158.196.135.11. Sekce „dial-peer voice 1 voip“ říká, že se jedná o VoIP provoz, který sem bude směrován, pokud se vytočí číslo 5689, dále tento provoz bude směrován pomocí protokolu SIPv2 na IP adresu peera, tedy ústřednu Asterisk. Obecná syntaxe příkazů Cisco 2811 použitých při konfiguraci hlasových služeb: dial-peer voice <číslo> <pots | voip> vstup do dial-peer konfiguračního módu. číslo – slouží jako identifikace dial-peera pots – definuje typ analogové služby (Plain Old Telephone Service) voip – definuje typ přenos hlasu přes IP síť (Voice over IP) destination-pattern <číslo> specifikuje telefonní číslo asociované s dial-peerem číslo – definované konkrétní telefonní číslo nebo prefixu (za číselným prefixem následují “....“) port
(pouze pro POTS dial-peera) asociuje dial-peera se zadaným portem
forward-digits <číslo | all> definuje počet předávaných číslic z telefonního čísla sloužících dále pro identifikaci volajícího all – předat všechna čísla číslo – předá definovaný počet čísel v rozsahu (0 - 32) max-conn <číslo> udává počet specifikovaný číselnou hodnotou číslo souběžně probíhajících spojení session protocol (pouze pro VIOP dial-peer) specifikuje protokol používaný pro signalizaci v prostředí paketové sítě. aal2-trunk – použití ATM adaptační vrstvy 2 (AAL2) cisco – užití proprietárního Cisco VoIP protokolu sipv2 – užití protokolu SIP verze 2 smtp – užívá Simple Mail Transfer Protocol session target (pouze pro VIOP dial-peer) asociuje dial-peera s příjemcem hovoru definovaného pomocí zadané IP adresy nebo doménového jména
codec (pouze pro VIOP dial-peer) definuje kodek používaný pro přenos hlasových dat g711alaw, g711ulaw – kodek G.711 (A-Law, u-Law) g729r8 – kodek G.729
Úplná konfigurace portů na Cisco 2811: interface FastEthernet0/0 ip address 158.196.135.20 255.255.255.0 duplex auto speed auto ! … ! vstup do konfiguračního modu pro dial-peer s označením 1 dial-peer voice 1 voip určeného pro přenos hlasu přes IP síť (viop) definice telefonního čísla 5689 asociovaného s dial-peerem 1 destination-pattern 5689 definice používaného protokolu pro signalizaci hovoru SIPv2 session protocol sipv2 definice cílového zařízení specifikovaného IP adresou verze 4 session target ipv4:158.196.135.11 (ipv4:158.196.135.11)
no call fallback codec g711alaw ! dial-peer voice 2 pots max-conn 5 destination-pattern 1111 port 0/2/1 forward-digits 0
definice kodeku G.711 pro přenos vlasových dat vstup do konfiguračního modu pro dial-peer s označením 2 definovaného pro připojení analogového zařízení (post) definice maximálního počtu souběžných spojení na 5 definice telefonního čísla 1111 asociovaného s dial-peerem 2 asociace dial-peer 2 s FXS portem 0/2/1 omezení počtu předávaných čísel, sloužících k identifikaci volajícího na 0
Konfigurace Asterisku: V tomto příkladě funguje Asterisk jako ústředna pro směrování hovorů a zároveň jako SIP server, ke kterému se registrují SIP klienti, kterým je zde Cisco router. Směrování hovorů se děje pomocí kontextů, kdy je nakonfigurováno např: „ Pro hovor, které přichází ze SIPu, používej např. kontext „sip“, kde bude uvedeno jak je směrovat dále. Pro hovory, které přijdou z ISDN karty používej např. kontext „ss“, kde bude uvedeno jak je směrovat dále. “
Konfigurace SIP protokolu je v souboru /etc/asterisk/sip.conf: [1111]
; definice kontextu ve kterem je receno jak s hovorem dale nakladat context=sip ; typ klienta, ktery ma moznost volat a byt volan type=friend ; nepouzivan NAT ;nat=no ;jmeno ucastnika (zobrazene na telefonu) callerid=Cisco ;IP adresa ucastnika (dynamic pro DHCP) host=158.196.135.20 ; jmeno ucastnika (uzivatelske jmeno) user=158.196.135.20
Pokud je uskutečněn hovor z analog. telefonu, který je směrován přes IP na Asterisk, jméno volajícího (které kontroluje Asterisk v sip.conf) je číslo přiřazené k portu routeru, ze kterého se volá. V tomto případě je portu s telefonem přiřazeno číslo 1111, sekce pro SIP klienta je tedy označen „[1111]“. Dále je nutno ústředně sdělit, kam má hovor směrovat. Konfigurace směrování je v souboru /etc/asterisk/extensions.conf: [sip]
exten => 5689,1,Dial(Zap/g2/5689) exten => 5689,2,Hangup
Výše uvedená konfigurace říká, že hovor, který přišel z kontextu „sip“ a číslo volaného je 5689 má být směrován na rozhraní ZAP, což je ISDN karta, konkrétní karta je ve skupině 2 (g2=group2) a číslo volaného má být opět 5689. Poté zavěs. (Číslo je nutno znovu uvést, neboť je možné volat i číslo jiné, tedy pokud volám např. číslo 100, ústředna tento hovor přesměruje na jinou ústřednu a na ni může volat např. číslo 200, což je pro volajícího zcela transparentní. Ve skupině cílových rozhraní může být přiřazeno obecně více karet, hovor lze směrovat obecně na více telefonů. Konfigurace pro hovor v druhém směru, tedy od ISDN telefonu zpět na Asterisk Konfigurace směrování je v souboru /etc/asterisk/extensions.conf: [ss]
exten => 5690,1,Dial(SIP/[email protected]) exten => 5690,2,Hangup
Výše uvedená konfigurace říká, že hovor, který přišel z kontextu „ss“ (bude vysvětleno dále) směruj na IP adresu 158.196.135.20 (Cisco router) a použij protokol SIP. Poté zavěs.
Konfigurace kontextu a skupin pro ISDN se nachází v souboru /etc/asterisk/zapata.conf: [channels] ; vse nasledujici pripadne do kontextu default context=default ; definuje typ signalizace na PRI lince (euroISDN) switchtype=euroisdn ; definuje typ dialplanu na PRI lince (vyjimecne vyzadovane PRI switchi) pridialplan=national prilocaldialplan=national priindication = outofband ; definice skupiny group 1 (PRI) group = 1 signalling = pri_cpe channel => 1-15 channel => 17-31 ; vse co nasleduje pripadne do kontextu ss context=ss ; definice skupiny group 2 (BRI - TE) group = 2 ; nastaveni BRI do rezimu TE signalling = bri_cpe_ptmp ; vyber kanalu na něž se uplatní volby nastavené výše channel => 32-33 Zvýrazněná část ukazuje, že kontext „ss“ je zvolen pro ISDN kanály 32-33, zároveň tyto kanály spadají pod skupinu 2. V souboru /etc/zaptel.conf jsou definovány fyzické sloty (karty) pro tyto kanály (zaptel.conf konfiguruje dodavatel ústředny, při práci se již nemodifikuje) Závěr: Asterisk je výborné řešení všude tam, kde je potřeba provozovat telefonní ústřednu, např. lokální VoIP ve firmě vč. propojení na VoIP operátora. Při dokoupení potřebného HW pro ISDN či klasickou telefonii je možno jednoduše směrovat hovory i mezi těmito zařízeními. Vyniká jednoduchou konfigurací (při instalaci jsou .conf soubory již připraveny s velkým množstvím příkladů), je dostupný zdarma (www.asterisk.org), podporuje moderní protokoly pro VoIP a má velkou uživatelskou podporu.