IP dochodzi do głosu

Standardy kodowania głosu

Organizacja ITU (International Telecommunication Union) opracowała serię standardów używanych do kodowania głosu, w tym wspomniane powyżej standardy PCM i ADPCM.

Problem z kodowaniem głosu polega na tym, iż w celu ograniczenia niezbędnego pasma przenoszenia danych (używanego do transmitowania cyfrowej mowy) należy do kodowania mowy użyć jak najmniejszej liczny bitów. Używając do próbkowania mowy 8 bitów, system kodowania może rozpoznać 256 różnych poziomów określających amplitudę analizowanego sygnału. Aby zredukować pasmo przenoszenia danych do 32 kb/s, można użyć tylko czterech bitów (64 poziomy), a bit reprezentuje wtedy zmianę w stosunku do poprzedniej wartości (stąd obecność litery D w nazwie standardu ADPCM - differental - czyli kodowanie różnicowe).

Pierwszy system telefonowania IP został opracowany przez firmę VocalTec w 1995 r., a pierwsza brama VoIP weszła na rynek rok później. To właśnie wtedy użytkownicy mogli po raz pierwszy porozmawiać ze sobą w czasie rzeczywistym, używając do tego celu oprogramowania IP, które przesyłało przez sieć LAN pakiety zawierające dane audio.

Do tego dochodzą standardy kompresji oparte na algorytmie LPC (Linear Predictive Code), który modeluje ludzki głos poprzez wykorzystanie powtarzających się elementów składowych wypowiadanych słów. Większość urządzeń LPC odbiera do dalszej obróbki cyfrową mowę uformowaną zgodnie ze standardem PCM 64 kb/s, przetwarzając ją następnie na pakiety zgodnie z zestawem specyfikacji serii G.XXX, opracowanych przez ITU. Są to, żeby wymienić tylko najważniejsze, takie standardy jak: G.711, G.726, G.728, G.729 i G.723.1.

Opóźnienia

Sieć przesyłająca głos powinna się charakteryzować tym, że opóźnienia są niewielkie i nie przekraczają określonych wartości. Uwaga ta dotyczy zarówno samej wartości opóźnienia (opóźnienie w sieci VoIP nie powinno być większe niż 200 milisekund), jak i stabilności (chodzi o to, aby opóźnienie było stałe i nie wynosiło raz 50 milisekund, raz 190 milisekund itp.).

Jak już wspomniano, głos w postaci pakietów może być przesyłany zarówno przez sieci oparte na protokole połączeniowym (ATM), jak i przez sieci oparte na protokole bezpołączeniowym (IP). My zajmiemy się sieciami IP. Mogą to być sieci LAN, prywatne sieci IP, jak i publiczna sieć Internet.

W sieciach opartych na protokole bezpołączeniowym (czyli w intranetach IP i w Internecie) nie ma mechanizmów gwarantujących, że dane dotrą do adresata w określonym czasie. Mogą tu więc występować absolutnie różne opóźnienia. Protokół TCP (Transmission Control Protocol), operujący w czwartej warstwie modelu OSI, kontroluje przepływ pakietów i odpowiada za odzyskiwanie pakietów po wystąpieniu błędów. Ale wszystko to wymaga czasu i dlatego protokół TCP generuje przy przesyłaniu danych kolejne opóźnienia.

Dlatego do przesyłania pakietów zawierających głos jest używany protokół UDP (User Datagram Protocol). Jednak protokół ten nie przewiduje stosowania znaczników czasu, więc nie może kontrolować opóźnień. Aby uniknąć kłopotów wynikających z faktu, że protokoły IP/UDP nie pozwalają kontrolować opóźnień, projektanci systemu VoIP zaproponowali standard H.323. Standard ten (opracowany specjalnie z myślą o stosowaniu w tych sieciach pakietowych, w których usługi QoS są niedostępne) przewiduje, że na szczycie protokołu UDP jest zagnieżdżony protokół noszący nazwę RTP (Real-Time Protocol).

Zakodowany w postaci cyfrowej głos jest grupowany, przybierając postać niewielkich dwudziestobajtowych paczek informacji. RTP korzysta z mechanizmów oferowanych przez protokół UDP, czyli z bezpołączeniowego trybu przesyłania pakietów. RTP zapewnia utrzymanie sekwencji pakietów, a także dołącza do pakietów znaczników czasu (time stamp), na podstawie których pakiety dochodzą do stacji przeznaczenia w określonym czasie. Pracę RTP wspiera kolejny protokół - RTCP (Real-Time Control Protocol). Protokół ten służy do obsługiwania takich połączeń, które przesyłają głos w trybie punkt-wiele punktów.

Omawiane powyżej protokoły operują w czwartej warstwie modelu OSI. Urządzenia operujące w warstwie trzeciej (a więc na przykład routery) muszą dysponować dodatkowymi mechanizmami, dzięki którym mogą rezerwować odpowiednie pasmo przenoszenia dla pakietów zawierających głos. Najczęściej jest tu stosowany protokół RSVP (Resource Reservation Protocol - protokół rezerwacji zasobów).