Testy współpracy programowej centrali Asterisk z techniką WebRTC KSTIT 2016, Gliwice, 26-28 września 2016 Grzegorz Rzym, Krzysztof Wajda, Robert R. Chodorek AGH Akademia Górniczo-Hutnicza, Katedra Telekomunikacji AGH Agnieszka Chodorek Politechnika Świętokrzyska, Katedra Systemów Informatycznych
Plan prezentacji Wprowadzenie do WebRTC Architektura WebRTC Ustanawianie sesji WebRTC Współpraca pomiędzy WebRTC a centralą PBX Asterisk Wyniki Podsumowanie
Technika WebRTC Wprowadzenie języka HTML w wersji 5 zmieniło w sposób znaczący odtwarzanie multimediów w przeglądarkach internetowych Wzrosła również rola języka skryptowego JavaScript, który w HTML 5 został użyty do budowy szeregu interfejsów programistycznych aplikacji oraz interfejsów użytkownika Odtwarzanie mediów pozyskiwanych lokalnie z mikrofonu i kamery
Technika WebRTC Po dodaniu możliwości transmisji lokalnie pozyskanych mediów powstała technika WebRTC - złożenie angielskiego słowa Web oraz akronimu RTC, pochodzącego od angielskiego Real-Time Communications, komunikacja w czasie rzeczywistym W systemach tych strona WWW pełni rolę interfejsu użytkownika
Architektura WebRTC Trzy podstawowe bloki funkcjonalne: głos, wideo, transport strumieni mediów pomiędzy przeglądarkami. Abstrakcja sygnalizacyjna opiera się na metadanych zawartych w opisie SDP Transportu strumieni mediów: protokół transportowy SRTP (ang. Secure Real-time Transport Protocol), multipleksacji połączeń transportowych i przenikania przez NAT-y (dla transmisji peer-to-peer)
Architektura WebRTC Moduł audio WebRTC C++ API (PeerConnection) Zarządzanie sesją/abstrakcja sygnalizacji Moduł wideo Transport Kodeki isac/ilbc NetEQ Kasowanie echa/ Redukcja szumów Przechwytywanie audio/renderowanie Kodek VP8 Bufor wideo elminujący jitter Poprawa jakości obrazu Przechwytywanie wideo SRTP Multipleksacja P2P STUN+TURN+ICE Interfejs we/wy sieci
Współpraca techniki WebRTC z SIP Oba rozwiązania są podstawą budowy systemów transmisji informacji multimedialnej w czasie rzeczywistym Różnica pomiędzy WebRTC a rozwiązaniami opartymi o SIP dotyczy głównie metod sygnalizacji. Wspólne zapis informacji o parametrach sesji za pomocą protokołu SDP (Session Description Protocol) Różne sposób transportu informacji o parametrach sesji
Model warstwowy ustanawiania sesji WebRTC
Ustanawianie sesji WebRTC pomiędzy dwiema przeglądarkami WWW
Ustanawianie sesji WebRTC pomiędzy przeglądarką WWW a terminalem VoIP
Współpraca pomiędzy WebRTC a centralą PBX Asterisk Współpraca protokołu SIP i techniki WebRTC możliwa jest poprzez odpowiednio stworzoną bramkę sygnalizacyjną
Współpraca pomiędzy WebRTC a centralą PBX Asterisk Bramka sygnalizacyjna składa się z części wyniesionej (zaimplementowanej w przeglądarce) i części pośredniczącej (w urządzeniu pośredniczącym)
Współpraca pomiędzy WebRTC a centralą PBX Asterisk Część wyniesiona bramki sygnalizacyjnej napisana z wykorzystaniem biblioteki JsSIP Bramka sygnalizacyjna zostały zbudowane z wykorzystaniem oprogramowania Asterisk
Współpraca pomiędzy WebRTC a centralą PBX Asterisk Aby możliwa była współpraca centrali Asterisk z techniką WebRTC centrala musi obsługiwać: interfejs WebSocket (od wersji 11), protokół SRTP (od wersji 1.8). Systemy WebRTC stosują w odniesieniu do mediów komunikację P2P dlatego też muszą posiadać zdolność przenikania przez NAT. Zapewnia to protokół ICE (Interactive Connectivity Establishment), który należy skonfigurować w centrali Asterisk.
Wyniki Telefony Linphone rejestrują się w centrali Asterisk za pomocą standardowej procedury zdefiniowanej w protokole SIP. W przypadku terminali WebRTC pomiędzy terminalem a centralą Asterisk ustanawiana jest sesja WebSocket a następnie SIP. Przesyłane pakiety w ramach sesji WebSocket nie mogą być przechowywane w pamięci podręcznej.
Wyniki Po wymianie wstępnych komunikatów w ramach sesji WebSocekt będą wymieniane komunikaty SIP oraz w przypadku centrali Asterisk również komunikaty WebSocket Ping i Pong podtrzymujące sesję. W analizowanym systemie komunikaty te były przesyłane w przedziale od 18 do 30 sekund.
Wyniki W systemie VoIP, wykorzystującym programową centralę Asterisk, media pomiędzy terminalem WebRTC a telefonem Linphone (terminalem SIP) przesyłane są przez centralę. Może ona modyfikować przesyłany strumień mediów np. dokonując konwersji metod kodowania i kompresji sygnału audio.
Wyniki Do transmisji audio pomiędzy centrala Asterisk a terminalem Linphone wybrany został kodek G.711. Natomiast do transmisji pomiędzy centrala Asterisk a terminalem WebRTC wybrany został kodek G.722. W każdym z przeprowadzonych testów zestawiane było połączenie głosowe pomiędzy terminalem WebRTC a telefonem Linphone o czasie trwania od 40 do 80 sekund.
Wyniki
Podsumowanie Analiza przedstawiona w niniejszym artykule pokazuje możliwości współpracy oprogramowania Asterisk na poziomie protokołowym. Współpraca terminali WebRTC i SIP jest realizowana z translacją sygnału przeprowadzaną przez centralę Asterisk. Daje to możliwość współpracy różnych terminali o niezgodnych kodekach, natomiast może prowadzić do ograniczeń skalowalności.
Podsumowanie Planowane jest przeanalizowanie skalowalności rozwiązań Asterisk i Kamailio (gdzie terminale bezpośrednio przekazują strumienie medialne między sobą) dla dużej liczby użytkowników i określenie czy dokonywana translacja sygnału audio w Asterisku stanowi istotne ograniczenie we wdrażaniu w dużych instalacjach VoIP.
Dziękuję za uwagę!