„Technologie VoIP I Qos - Urząd Miasta Łodzi

Transcription

„Technologie VoIP i Qos”„Serwer Asterisk”Prezentacja jest współfinansowana przezUnię Europejską w ramachEuropejskiego Funduszu Społecznego w projekciept.„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności dozatrudniania osób niepełnosprawnych”PrezentacjaPrezentacja dystrybuowanadystrybuowana jestjest bezpłatniebezpłatnieProjekt współfinansowany przez Unię Europejskąw ramach Europejskiego Funduszu SpołecznegoPolitechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83www.kapitalludzki.p.lodz.pl

IAX2 Inter-Asterisk eXchange – protokół powstałyspecjalnie dla łączenia serwerów AsteriskOpracowany przez firmę DigiumZdefiniowany w rfc5456 – około 90% opisuprotokołu mieści się w 100 stronach tekstuProtokół binarny – większość pakietówsygnalizacyjnych posiada długość nie większąniż kilkadziesiąt bajtów

IAX2 Transmisja odbywa się przy wykorzystaniuportu 4569 Ten sam port używany jest do transmisji dźwięku,nawet jeżeli jednocześnie transmitowanych jestwiele rozmów. Pakiety rozróżnianie są poprzezwykorzystanie pola callno, ustalanego dla każdegopołączenia z osobnaTakie rozwiązanie eliminuje większość problemówzwiązanych z NATemIstnieje możliwość szyfrowania całego kanałutransmisyjnego (sygnalizacja oraz audio)

IAX2 Postać adresu: iax:USER@HOST:PORT/NUMER?KONTEKST USER – nazwa użytkownika HOST – nazwa serwera docelowego PORT – numer portu na serwerze docelowym NUMER – numer telefonu, lub nazwa użytkownika KONTEKST – specyficzne dla serwera Asterisk –przestrzeń nazw, do której wykonywane jestpołączenie

Metody IAX2 REGREQ – Próba rejestracji użytkownika, możezawierać hasło, jednak jest ono opcjonalneREGACK – Odpowiedź świadcząca o udanejrejestracjiREGREJ – Odpowiedź świadcząca o nieudanejrejestracjiREGAUTH – Odpowiedź świadcząca o wymaganejautentykacji użytkownika, REGREQ musi zostaćwysłane ponownieREGREL – Wyrejestrowanie użytkownika

Metody IAX2 NEW – Próba rozpoczęcia połączenia,odpowiednik INVITE w SIPREJECT – Odmowa wykonania połączeniawysyłana przez serwerACCEPT – Akceptacja – po niej następująkolejne fazy łączeniaAUTHREQ – Podobnie jak w przypadku SIP –informacja o konieczności autentykacji

Metody IAX2 HANGUP – zakończenie połączeniaAUTHREP – odpowiedź na AUTHREQ, musizawierać parametry uwierzytelnianiaPROCEEDING – poświadczenie wykonywaniapołączeniaRINGING – Podobnie jak w SIP – sygnałdzwonieniaANSWER – sygnalizacja odebrania połączeniaprzez drugą stronę

Metody IAX2 HOLD – chwilowe wstrzymanie połączenia UNHOLD – wznowienie połączenia FLASH – zdarzenie typu hook-flash,sygnalizuje wystąpienie w trakcie rozmowy,może zostać zignorowaneQUELCH – Sygnalizacja przerwania transmisjidźwięku, występuje wtedy możliwośćzdefiniowania nowego kanału dźwiękowego(np: music on hold)

Metody IAX2 UNQUELCH – wznowienie transmisji kanałudźwiękowego przerwanego przez QUELCHTRANSFER – Przekierowanie połączenia, wwiadomości przesyłany jest nowy numerTXREQ – transfer dotyczący jedynie kanałudźwiękowego – możliwość rozdzieleniasygnalizacji od audioTXCNT, TXACC, TXREADY, TXREL,TXMEDIA, TXREJ – kolejne pakiety związane ztransferem ścieżki audio

Metody IAX2 PING, PONG – sprawdzenie połączeniapomiędzy dwoma hostami np: w przypadkuprzerwania kanału dźwiękowegoLAGRQ, LAGRP – metody służące do pomiaruparametrów połączenia sieciowego. Za ichpomocą wyznaczane jest opóźnienie pomiędzystronami połączeniaDPREQ, DPREP, DIAL – dzwonienie zwykorzystaniem planu dzwonienia na innymserwerze

IAX2 Trunking Trunking pozwala na transmisję wielu kanałówdźwiękowych w tym samym czasie Łączy kilka kanałów dźwiękowych w jeden kanałsieciowyOgraniczenie zużycia pasma ze względu namniejszą ilość pakietówImplementacja może powodować powstawanieniewielkich opóźnień pomiędzy pakietami

Serwer VoIP: Asterisk Serwer typu open-source rozwijany przezkomercyjną firmę DigiumNad jego rozwojem pracuje grupaprogramistów Digium, oraz programiści zcałego świata, jednak Digium ma kontrolę nadtym co zostaje zintegrowane z serweremStrona projektu: www.asterisk.org

Asterisk Projekt Asterisk jest rozwijany równocześnie wkilku wersjach: Wersja 1.8 – wersja rozwojowa Wersja 1.6 – wersja aktualna Wersja 1.4 – poprzednia wersja, obecnie dodawanesą do niej jedynie poprawki bezpieczeństwa orazpatche, nie są implementowane nowe funkcjeWersja 1.2 – uważana za najbardziej stabilną,jednak uboga w możliwości, rozwijana podobnie jakwersja 1.4Wersja 1.0 – nie rozwijana

Asterisk Poza rozwojem serwera Asterisk Digiumpracuje także nad innymi projektamiintegrującymi się z serwerem Zaptel – biblioteka do obsługi kart analowych orazcyfrowychDahdi – ta biblioteka zastąpiła Zaptela dla wersji 1.6oraz nowszych 1.4LibPri – biblioteka do obsługi łącz cyfrowych typuPRI

Asterisk Obsługiwane protokoły sygnalizacyjne SIP 2.0 IAX2 MGCP H.323Funkcjonalność Jako serwer sygnalizacyjny Jako serwer typu media-gateway

Asterisk Pełna obsługa wspomnianych protokołówsygnalizacyjnych oznacza możliwość translacjipomiędzy nimi Możliwe jest np: zestawienie połączenia pomiędzyurządzeniem wspierającym SIP i IAX2Asterisk wykorzystuje w tym celu „uniwersalną”reprezentację kanału sygnalizacyjnego

Asterisk Budowa modularna Aplikacje Formaty Kanały Kodeki Funkcje Moduły CDR (Call Detail Record) Moduły poczty głosowej

Formaty Format jest sposobem zapisu sygnałudźwiękowego, strumienia wideo, tekstu lubinnych danych multimedialnych Formaty dostarczane są w postaci modułów,możliwość rozbudowy o kolejne formatyObecnie wspierana jest większość popularnychformatów dźwięku wykorzystywana w technologiiVoIP, oraz kilka formatów obrazu

Kanały Kanał symbolizuje połączenie pomiędzyserwerem a klientem przy wykorzystaniujednego z obsługiwanych protokołówsygnalizacyjnych Kanały definiowane są w postaci modułów, np:chan sip, chan iax2, chan ss7 etc.

Kodeki Kodek jest sposobem reprezentacji danychaudio/wideo Różnica pomiędzy kodekiem a formatem Format: np: format pliku audioKodek: algorytm kompresji wykorzystany dozapisu w danym formacieKodeki obsługiwane są w postaci modułów,obecnie praktycznie wszystkie kodekiwykorzystywane w VoIP są obsługiwane

Funkcje Funkcje pozwalają na wykorzystaniedodatkowej logiki przy konstruowaniu planudzwonienia np: Pobranie obecnej daty/czasu Wykonanie operacji arytmetycznych Operacje na ciągach znaków Zapis/odczyt z plików, baz danych itd.

Moduły CDR CDR (Call Detail Recording) – moduły służącedo zapisu informacji o połączeniach np: Moduł zapisu do plikuModuł zapisu do bazy danych (mysql, postgresql,źródło ODBC)Moduł zapisu do serwera RADIUS

Asterisk Zasady działania Połączenie przedstawione jako zestaw dwóchkanałów (Call Leg) połączonych ze sobąJedna ze stron jest inicjatorem połączenia copowoduje uruchomienie jednej lub szeregu aplikacjiKażda aplikacja może wykonywać różne funkcje Wykonanie połączeniaOdegranie pliku dźwiękowegoWykonanie komendy systemowejZestawy aplikacji grupowane są w tzw: konteksty,wszystkie konteksty tworzą razem „plandzwonienia”

Asterisk – pliki konfiguracyjne Konfiguracja serwera zawiera się w przedzialeod kilku do kilkudziesięciu plikówkonfiguracyjnych, zwykle każdy moduł maoddzielny plik konfiguracyjnyFormat wpisów jest zwykle bardzo podobny [Sekcja] Nazwa Wartość Nazwa2 Wartość2 ;Komentarz;(do oznaczania komentarzy wykorzystywany jestznak średnika, znak # jest znakiem występującymna klawiaturze telefonu)

Asterisk – konfiguracja Ze względu na trzymanie się pewnej konwencji wplikach konfiguracyjnych możliwe jestprzetrzymywanie większości elementów konfiguracji wrelacyjnej bazie danychNp: przy wykorzystaniu modułu res config odbcWystarczy utworzyć tabele z kolumnami nazwa orazwartość i odpowiednio skonfigurować modułPozwala to na wygodną konfigurację serwera zwykorzystaniem innych aplikacji takich jak np: panelWWW

Asterisk - konfiguracja Niektóre elementy nie dają się jednak zapisaćw podany sposób w bazie danych – dla nichnależy utworzyć oddzielne tabele Plan dzwonienia Użytkownicy CDR Poczta głosowa

Plan dzwonienia Plan podzielony na sekcje nazwanekontekstami, nazwa kontekstu może byćdowolna, w każdym kontekście można wykonaćinny zestaw aplikacjiKażdy użytkownik skonfigurowany na serwerzemusi mieć przydzielony kontekstKolejność wykonywania aplikacji ustalana jestza pomocą liczbowego priorytetu, lub wartościspecjalnej „n”

Plan dzwonienia Wpis w planie ma postać: exten numer,priorytet,aplikacja(parametry)Numer – numer wybrany przez użytkownika, lubjego część, możliwe jest tworzenie grup numerówPriorytet – kolejność wykonywania aplikacjiAplikacja – aplikacja, która ma zostać uruchomionadla danego priorytetu

Asterisk - aplikacje Aplikacje wykonywane są w odpowiedniejkolejności oraz przekazywane są do nichargumenty np: Dial(SIP/numer1&SIP/numer2,30,r)Wykonanie połączenia jednocześnie do dwóchnumerów z ustawionym limitem 30 sekund napołączenie, po wybraniu numeru zostanieautomatycznie wygenerowany sygnał dzwonienia

Aplikacje Dial(chan,timeout,opts) – wykonaniepołączenia. Chan – kanał lub kilka kanałów połączonychznakiem „&”, w przypadku podania kilku kanałówpołączenie wykonywane jest jednocześnie,pierwszy telefon który odbierze zostaje połączony,pozostałe są odrzucaneFormat kanału ma zwykle postać: NAZWA PROTOKOŁU/NAZWA UZYTKOWNIKANp: SIP/uzytkownik1, SIP/48429222222, IAX2/444 itd.

Aplikacje Dial(chan,timeout,options) Timeout- czas oczekiwania na odebraniepołączenia, w przypadku nie odebrania planwykonuje się dalejOptions – opcje łączone znakiem „ ”, obecniedostępnych jest kilkadziesiąt opcji do aplikacji Dial

Aplikacje - Dial Pomyślne uruchomienie aplikacji Dial kończyprzetwarzanie planu dzwonienia. Oznacza to, że jeżeli połączenie doszło do skutkunie zostaną uruchomione następne aplikacje.Powoduje to trudności z wykonaniem akcji pozakończeniu połączenia Można wykorzystać specjalny priorytet „h” (Hangup) dotego celu, jednak nie zapewnia on dostępu do wszystkichzmiennych kanałów

Aplikacje Wait(sec) – aplikacja zatrzymuje przetwarzanieplanu na podaną liczbę sekundWaitExten(sec,options) – aplikacja zatrzymujeprzetwarzanie planu na podaną liczbę sekundpozwalając użytkownikowi wybrać numerwewnętrzny Opcjonalnie można w trakcie czekania odtworzyćmuzykę – parametr „m”

Aplikacje System (command, args) – wykonuje poleceniesystemowe. Polecenie może składać się z kilkumniejszych poleceń Wartość zwrócona przez program zostaje zapisanado zmienniej SYSTEMSTATUS

Aplikacje NoCDR – powoduje nie wykonanie zapisudanej rozmowy w billingu Aplikacja powinna być wykorzystywana tylko wsytuacjach gdy mogą się pojawić kilkukrotne wpisyw billinguW innych celach należy billing zapisać

Aplikacje Answer(sec) – automatycznie odbierapołączenie po podanej liczbie sekund Większość aplikacji nie wymaga odebraniapołączenia przed uruchomieniem Aplikacje Playback i Background automatycznieodbierają połączenieZdarzają się jednak sytuacje gdy przedwykonaniem akcji należy zainicjować kanał kilkomasekundami ciszy – w przeciwnym wypadku częśćdźwięku może zostać utracona

Aplikacje Hangup() - rozłącza aktywne połączenie –wymusza zamknięcie połączenia od stronyserwera i zapisanie billinguRinging() - generuje sygnał dzwonienia wsposób zależny od konfiguracji klienta Kanał dźwiękowy Sygnalizacja Ustawienie odpowiedniego kodeka kompresji

Aplikacje RetryDial() - pozwala na wykonanie kilku próbpołączenia Jeżeli jedna z prób zostanie zakończona sukcesemnastępne nie zostaną wykonaneAplikacja przyjmuje większą ilość parametrów niżDial(), jednak pozwala na wykonanie takich samychakcji

Aplikacje AGI () - wykonanie skryptu AGI (AsteriskGateway Interface) Skrypt AGI może korzystać z jednej z dostępnychbibliotek w celu przejęcia sterowania nad planemdzwonieniaSkrypt może wykonać bardziej skomplikowaneoperacje, niedostępne dla standardowych,wbudowanych aplikacji

Aplikacje Macro() - wykonanie makra o podanej nazwie zokreślonymi parametrami Przydatność makr i różnica pomiędzy częścią planudzwonienia a makremMakra mają ograniczoną liczbę możliwychzagnieżdzeń

Aplikacje Goto (ctx, exten, prio) – wykonanie skokubezwarunkowego do określonego miejsca wplanie Przydatne w celu grupowania wspólnych częściplanuMożna podać tylko jeden z dostępnych parametrów– pozostałe zostaną ustawione na wartościdomyślne

Aplikacje GotoIf() - wykonanie skoku warunkowego Dodatkowym parametrem poza tymi dostępnymi dlaGoto jest warunek, który musi być spełnionyAplikacja pozwala wykonać skok w inne miejsce wprzypadku gdy warunek nie jest spełnionyW warunkach można korzystać zarówno z wartościzmiennych jak i funkcji udostępnionych przezserwer

Aplikacje Random() - skok losowy do wybranej lokalizacjiw planie dzwonienia biorąc pod uwagę wyniktestu Aplikacja może mieć zastosowanie w przypadkuchęci równomiernego rozłożenia ruchu na kilkahostów

Aplikacje Playback(file) - odtwarza plik dźwiękowypodany w ścieżce W nazwie pliku nie powinno być rozszerzenia –zostanie ono zidentyfikowane automatycznie biorącpod uwagę kodek, którego używa dany klientW przypadku nie znalezienia danego formatuaplikacja nie wykona automatycznie konwersji doformatu obsługiwanego przez klienta

Aplikacje Background() - odtwarza muzykę w tle,jednocześnie pozwalając użytkownikowi nawybranie numeru wewnętrznego Korzystając z tej aplikacji nie można pobraćżadnych danych od użytkownika, skok do danegonumeru zostanie zawsze automatycznie wykonanyDo odczytu danych od użytkownika w innychcelach można skorzystać z innych dostępnychaplikacji

Aplikacje MixMonitor() - uruchomienie nagrywaniadanego kanału Starsza wersja tej aplikacji nosiła nazwę Monitor inie miksowała automatycznie dźwięku obu kanałówAplikacja nagrywa każdy pakiet dźwiękowybezpośrednio na dysk – konieczność korzystania zramdysku lub wbudowanego buforowania

Plan dzwonienia Przykładowy schemat: 042X.,1,Wait(1) 042X.,2,Dial(SIP/ {EXTEN:2}) 022X.,1,Playback(not-supported) 111,1,VoiceMailMain( CALLERID(num)) 111,h,AGI(skrypt-koncowy.pl)

„Technologie VoIP i Qos”„Serwer Asterisk”Prezentacja jest współfinansowana przezUnię Europejską w ramachEuropejskiego Funduszu Społecznego w projekciept.„Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności dozatrudniania osób niepełnosprawnych”PrezentacjaPrezentacja dystrybuowanadystrybuowana jestjest bezpłatniebezpłatnieProjekt współfinansowany przez Unię Europejskąw ramach Europejskiego Funduszu SpołecznegoPolitechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83www.kapitalludzki.p.lodz.pl

IAX2 Inter-Asterisk eXchange - protokół powstały specjalnie dla łączenia serwerów Asterisk Opracowany przez firmę Digium Zdefiniowany w rfc5456 - około 90% opisu protokołu mieści się w 100 stronach tekstu Protokół binarny - większość pakietów sygnalizacyjnych posiada długość nie większą