Download - VoIP protokoly
![Page 1: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/1.jpg)
Vladimír ToncarKerio Technologies
![Page 2: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/2.jpg)
O čem budeme mluvitO co všechno se musí VoIP systém postarat?Jak se to realizuje v H.323 a SIPu?Co ostatní protokoly?Praktické problémy?
![Page 3: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/3.jpg)
O co se musí VoIP systém postarat?Získat informaci, kde druhý účastník jeNavázat spojení s druhým účastníkemDohodnout parametry přenosuZakódovat a rozkódovat hlas (a případně
obraz)Přenést hlas a obraz na druhou stranuPoskytnout dodatečné služby (transfer,
parkování hovoru, konference)
![Page 4: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/4.jpg)
Nalezení druhého účastníkaENUM – převod telefonních čísel ve formátu
E.164 na IP adresu, využívá DNS (420377632445 → 5.4.4.2.3.6.7.7.3.0.2.4.e164.arpa)
Registrační server – účastníci se k němu přihlašují a sdělují mu své IP adresyGatekeeper v H.323Registrar v SIPu
![Page 5: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/5.jpg)
Navázání spojení a parametry přenosuSpecifické pro jednotlivé protokoly –
podíváme se na to blíže později
![Page 6: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/6.jpg)
Kódování a přenos zvukuPřenos – protokol RTP – využívá se v H.323 i
v SIPuKódování zvuku – existuje řada kodeků, ale
nejdříve trochu teorie...
![Page 7: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/7.jpg)
Kódování zvukuPři digitalizaci analogového signálu musíme
vzorkovat na frekvenci, která je aspoň dvakrát větší než šířka přenášeného pásma (Nyquist & Shanon)
Typ Pásmo Vzorkovací frekvence
Telefonní hovor 300-3400 Hz 8 kHz
„Wide band“ hovor
50-7000 Hz 16 kHz
CD kvalita 20-20000 Hz 44.1 kHz
![Page 8: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/8.jpg)
Kódování zvukuZvolená velikost vzorku ovlivňuje velikost
šumuNapříklad při lineání kvantizaci a pro 16-ti
bitové vzorky je maximální odstup signálu od šumu 94.6 dB
SNR (dB) = 6.02N – 1.73 N… počet bitů
![Page 9: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/9.jpg)
Hodnocení kvality přenosuITU-T P.800, P.830Hodnocení je nevyhnutelně subjektivní, ale je
snaha dojít ke „zprůměrovanému“ výsledku (MOS – mean opinion score)
Větší počet posluchačů (bez sluchových problémů), diverzifikace materiálu: muži, ženy, různý věk mluvčích, různé jazyky
Excelent 5
Good 4
Fair 3
Poor 2
Bad 1
![Page 10: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/10.jpg)
G.711Definován ITU v roce 1972Používá se v ISDNPoužívá logaritmický převod, kompresní
poměr 1:2 (každý 16-ti bitový vzorek z původního signálu je reprezentován 8-mi bity)
Dvě varianty: A-law (Evropa a mezinárodní linky), μ-law (USA, Japonsko)
Bitrate 64 kbit/s na jeden směrMOS = 4.2
![Page 11: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/11.jpg)
G.7298 kbit/sPracuje s rámci o velikosti 10 milisekund (80
vzorků), každý zakódovaný rámec je reprezentován 10 bajty
V jednom RTP paketu se typicky posílají 3 rámce
Licenční poplatkyMOS = 4.0
![Page 12: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/12.jpg)
G.723.1Dvě varianty: 6.3 kbit/s, 5.3 kbit/s (ITU
vybralo dva vítězné návrhy a zkombinovalo je do jednoho standardu)
Pracuje s rámci o velikosti 30 milisekund (240 vzorků)
Licenčně nákladnýMOS = 3.9, 3.7
![Page 13: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/13.jpg)
GSM Full Rate (06.10)Definován ETSI (European
Telecommunications Standards Institute)Bitrate 13 kbit/sRámce o velikosti 20 milisekund (160
vzorků), jeden rámec převede na 33 bajtů (4 bity nejsou využity)
MOS = 3.7Volná licence
![Page 14: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/14.jpg)
Další volné kodekySpeex (Xiph.org Foundation)
Řada různých bitrates (2 kbit/s až 44 kbit/s, prakticky použitelné od 8 kbit/s), také varianty pro 16 kHz a 32 kHz
iLBC (Internet low bitrate codec) – RFC 3951Bitrate 15.2 kbit/s pro rámce 20 ms, 13.33
kbit/s pro rámce 20 ms
LPC-10 (DoD) – 2.4 kbit/s, technicky zajímavý, ale nízká kvalita („plecháč“)
![Page 15: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/15.jpg)
Protokol H.323Definován ITU (Mezinárodní telekomunikační unie)„Packet-based multimedia communications
systems“Verze 1 v roce 1996, verze 6 v roce 2006„Zastřešující standard“, používá následující:
H.225.0 a Q.931– hovorová signalizaceH.245 – vyjednání parametrů multimediálních kanálůH.235 – bezpečnostní a ověřovací mechanismyRTP – přenost audio/videoH.450.x – doplňkové služby
![Page 16: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/16.jpg)
Protokol H.323 – pro a protiMezinárodní standard, detailně a přesně
definovaný (ASN.1 + mnoho stran dokumentace)
Složitý protokol, „Design by committee“Zprávy se kódují ASN.1 PER (Packed
Encoding Rules) → větší nároky na paměť a procesor (obtížnější implementace v malých zařízeních)
![Page 17: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/17.jpg)
Entity v síti H.323Terminál (telefon)Brána - zajišťuje komunikaci s uživateli v
jiných sítíchMCU – konferenční jednotkaGatekeeper – registrační server, řízení
provozu v síti, překlad adres (telefonní číslo → IP adresa)
„endpoint“ – terminál, brána nebo MCUZóna – množina zařízení řízená jedním
gatekeeperem
![Page 18: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/18.jpg)
Komunikace s GatekeeperemPro komunikaci endpoint-gatekeeper nebo
gatekeeper-gatekeeper se používá část protokolu H.225.0 označená „RAS“ – Registration, Admission, Status
GK poslouchá na portu 1719/udp (unicast), 1718/udp (multicast, vyhražená multicast adresa je 224.0.1.41)
![Page 19: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/19.jpg)
H.225.0–RAS – typy zprávObjevení gatekeeperu – Gatekeeper Request
(GRQ), Gatekeeper Confirm (GCF), Gatekeeper Reject (GRJ)
Registrace endpointu – Registration – RRQ, RCF, RRJ
Povolení hovoru – Admission – ARQ, ACF, ARJUkončení hovoru – Disengage – DRQ, DCF,
DRJOdregistrování – Unregister – URQ, UCF, URJ
![Page 20: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/20.jpg)
H.225.0-RAS: příklad zprávy[05/Aug/2003 13:11:31] incoming 192.168.101.1:1602 H225 message: gatekeeperRequest gatekeeperRequest { requestSeqNum = 41142 protocolIdentifier = 0.0.8.2250.0.4 rasAddress = ipAddress { ip = 4 octets { c0 a8 65 01 ..e. } port = 1602 } endpointType = { vendor = { vendor = { t35CountryCode = 46 t35Extension = 0 manufacturerCode = 1 } productId = 20 octets { 4b 65 72 69 6f 2d 48 33 32 33 2d 53 6f 66 74 50 Kerio-H323-SoftP 68 6f 6e 65 hone }
![Page 21: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/21.jpg)
Signalizace během hovoruPro signalizaci mezi endpointy se používají
protokoly Q.931 a H.225.0Zprávy se přenášejí po TCP (port 1720)Spojení buď přímo mezi koncovými zařízeními
nebo přes gatekeeper (Gatekeeper-routed call model)
![Page 22: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/22.jpg)
Q.931/H.225.0Q.931 je protokol vypůjčený z L3 v ISDN, není
definován pomocí ASN.1 (vznikl dřív, než ITU začala ASN.1 používat).
Údaje, které lze namapovat na položky zpráv Q.931 se uvádějí přímo (např. volající a volané telefonní číslo), kompletní informace je pak ve zprávě H.225.0, která je binárně zapouzdřena v Q.931
Používají se tyto zprávy Q.931: Setup, Call Proceeding, Alerting, Connect, Release Complete, Facility
![Page 23: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/23.jpg)
Q.931/H.225.0 - příklad[05/Aug/2003 14:21:38] outgoing 192.168.40.72:1721 Q931 message: Setup { protocolDiscriminator = 8 callReference = 26927 from = originator messageType = Setup IE: Bearer-Capability = { 80 90 a5 ... } IE: Calling-Party-Number = { 81 31 31 31 .111 } IE: Called-Party-Number = { 81 32 30 30 31 .2001 } IE: User-User = { 20 b8 06 00 08 91 4a 00 04 01 01 00 44 42 2c 09 .....J.....DB,. 00 00 3d 1a 4f 70 65 6e 20 48 33 32 33 20 50 72 ..=.Open H323 Pr 6f 6a 65 63 74 20 4f 68 50 68 6f 6e 65 00 00 19 oject OhPhone... 31 2e 34 2e 31 20 28 4f 70 65 6e 48 33 32 33 20 1.4.1 (OpenH323 76 31 2e 31 32 2e 32 29 00 00 00 01 01 80 53 34 v1.12.2)......S4 00 c0 a8 28 48 06 b9 00 9a 78 f3 07 ad c5 d7 11 ...(H....x...... 9e 1b 00 50 04 6a 55 8c 00 5d 0f 80 07 00 c0 a8 ...P.jU..]......
![Page 24: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/24.jpg)
Q.931/H.225.0 – příklad (2)IE: User-User (decoded) = { h323_uu_pdu = { h323_message_body = setup { protocolIdentifier = 0.0.8.2250.0.4 sourceAddress = 1 entries { [0]=dialedDigits "111" } sourceInfo = { vendor = { vendor = { t35CountryCode = 9 t35Extension = 0 manufacturerCode = 61 } productId = 27 octets { 4f 70 65 6e 20 48 33 32 33 20 50 72 6f 6a 65 63 Open H323 Projec 74 20 4f 68 50 68 6f 6e 65 00 00 t OhPhone.. } versionId = 26 octets { 31 2e 34 2e 31 20 28 4f 70 65 6e 48 33 32 33 20 1.4.1 (OpenH323 76 31 2e 31 32 2e 32 29 00 00 v1.12.2).. } } terminal = { } mc = FALSE
![Page 25: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/25.jpg)
H.245Používá se pro vyjednání parametrů
multimediálních kanálůKodeky, IP adresy a čísla portůV základní verzi signalizace používá druhé
TCP spojeníObvyklá výměná zpráv:
hlasování master/slave výměna informací o schopnostech endpointů vyjednání logických kanálů
![Page 26: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/26.jpg)
Než si ukážeme průběh hovoru...H.225.0-RAS – komunikace endpoint-gatekeeperQ.931/H.225.0– hovorová signalizaceH.245 – vyjednání parametrů multimediálních
kanálů
![Page 27: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/27.jpg)
Průběh H.323 hovoru
![Page 28: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/28.jpg)
Průběh H.323 hovoru (2)
![Page 29: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/29.jpg)
Co lze vylepšit?H.245 – pro vyjednání mediálních kanálů
potřebuje druhé TCP/IP spojení„Handshake“ v H.245 je složitý a trvá
relativně dlouho (u HW telefonu s pomalejším procesorem si uživatel všimne krátkého intervalu ticha po přijetí hovoru)
![Page 30: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/30.jpg)
Optimalizace hovorové signalizaceTunelování H.245 – zprávy H.245 se zakódují ASN.1
PER a v binární podobě se vloží do zpráv H.225.0Fast Connect – navrhované parametry audia/videa
se vloží hned do úvodní zprávy H.225.0 (Setup), odpověď přijde v některé zpětné zprávě.
Parallel H.245 (uvedeno v H.323 v.4) – kompletní přehled schopností volajícího endpointu je také zapouzdřen v H.225.0 Setup
Early media start – audio (video) se spouští okamžitě, jakmile jsou vyjednány parametry, nečeká se na přijetí hovoru
![Page 31: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/31.jpg)
Programování v H.323Open Source knihovny OpenH323 (H323Plus) a Opal1998: Craig Southeren a Robert Jongbloed
(Equivalence) vytvořili OpenH3232001: Quicknet koupil Equivalence, stává se
sponzorem OpenH3232003: Craig a Robert opouštějí Equivalence,
pokračují ve vývoji OpenH323 na Sourceforge, posléze začínají paralelně vyvíjet Opal (multiprotokolová knihovna)
2007: „poslední“ relase OpenH323, přednost má Opal10/2007: H323Plus – nový fork OpenH323 s podporou
Packetizer.com
![Page 32: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/32.jpg)
Programování v H.323OpenH323, H323 Plus i Opal používají jako
spodní vrstvu knihovnu PWLibPWLib je multiplatformní knihovna v C++
(procesy, vlákna, sokety, atd.)Součástí PWLib je také ASN.1 překladač
![Page 33: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/33.jpg)
OpenH323 / H323 PlusOpět C++, platformně nezávislé (používají
PWLib)Část kódu generována ASN.1 překladačem –
třídy reprezentující zprávy protokolu a jejich kódování a dekódování
Programátor používající OpenH323 oddědí nové třídy od tříd v knihovně a předefinuje v nich virtuální funkce pro obsluhu událostí (např. příchozí hovor)
Tutoriál na http://toncar.cz/openh323/tut/index.html
![Page 34: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/34.jpg)
Session Initiation ProtocolDefinován IETFRFC 2543 (1999), RFC 3261 (2002)Henning Schulzrine, Columbia UniversityObecně slouží pro navázání relace mezi
dvěma či více účastníky, modifikaci a ukončení relace
Audio/video se opět přenáší protokolem RTP
![Page 35: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/35.jpg)
SIP entityUser Agent (UA) – SIP telefonRegistrar (location) server – udržuje databázi
telefonní číslo <-> IP adresaProxy server – směruje hovorovou signalizaciServery se obvykle realizují jako „vše v
jednom“ – registrar & proxyBrány do jiných telekomunikačních sítí (SIP-
PSTN, SIP-H.323, atd.)Posílání SIP zpráv – TCP nebo UDP, port
5060, v praxi spíše UDP.
![Page 36: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/36.jpg)
SIP Proxy/RegistarHlavní řídící prvek v SIP sítiFunkčně odpovídá gatekeeperu v H.323Nalezení volané staniceBezpečnost – oprávnění k voláníSměrování hovorové signalizaceDoplňkové služby
![Page 37: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/37.jpg)
SIP – formát zprávSIP je textový protokol, formátování vychází z
HTTPDva druhy zpráv – požadavky a odpovědiFormát požadavku:
<řádek požadavku><hlavička zprávy>CRLF<tělo zprávy>
Formát odpovědi:<stavový řádek>
<hlavička zprávy>
CRLF
<tělo zprávy>
![Page 38: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/38.jpg)
SIP – požadavky (metody)INVITE – požadavek na navázání spojeníACK – přijetí hovoruCANCEL – zrušení probíhajícího INVITEBYE – ukončení spojení (hovoru)REGISTER – registrace na registar serveruOPTIONS – dotaz na „schopnosti“ protistrany
(odpověď obsahuje audio/video kodeky, které protistrana podporuje)
Rozšiřující metody: INFO, UPDATE, SUBSCRIBE, NOTIFY, MESSAGE
![Page 39: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/39.jpg)
SIP – příklad požadavkuINVITE sip:[email protected] SIP/2.0Accept: application/sdpCall-ID: [email protected]: sip:[email protected]:5060CSeq: 101 INVITEExpires: 1000From: "Vladimir Toncar" <sip:[email protected]>;tag=ff177c16ff177c16To: <sip:[email protected]>Via: SIP/2.0/UDP 192.168.40.143:5060Content-Type: application/sdpContent-Length: 152
v=0o=TinyPhone 19505 19505 IN IP4 192.168.40.143s=SIP Callc=IN IP4 192.168.40.143t=0 0m=audio 48256 RTP/AVP 18 101a=rtpmap:18 g729a/8000
![Page 40: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/40.jpg)
SIP – kódy odpovědí
![Page 41: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/41.jpg)
SIP – příklad hovoru
![Page 42: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/42.jpg)
SIP - rozšířeníSIP Presence
SUBSCRIBE – žádost o zasílání změn stavu NOTIFY – informace o změně stavu („away“,
„online“, atd.)
Zasílání zprávMESSAGE – v těle zprávy je přímo text
(Content-Type: text/plain)
![Page 43: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/43.jpg)
SIP - programováníTextový protokol → jednodušší implementace
v malých zařízeníchNěkolik Open Source knihoven,
implementace nejen v C/C++, ale také v Javě, Ruby
![Page 44: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/44.jpg)
Další VoIP protokolyMGCP a H.248/MegacoCisco SCCPIAX2
![Page 45: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/45.jpg)
MGCP, H.248/MegacoProtokoly pro řízení distribuovaných bran
mezi VoIP a jinými sítěmi (Media Gateway, Media Gateway Controller)
MGC
MG
MG
MG
PSTN
H.323/SIP H.248
RTP
![Page 46: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/46.jpg)
MGCP, H.248/MegacoMGCP – starší protokol, RFC3435H.248/Megaco – vývoj v kooperaci mezi ITU a
IETF, protokol měl binární (ASN.1) a textovou verzi
ITU posléze pokračovala ve vývoji sama a IETF prohlásila svoji verzi za zastaralou (RFC 3015, 3525, 5125)
Aktuální označení je H.248.1, verze 3 (2005)
![Page 47: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/47.jpg)
Cisco SCCPSkinny Client Control ProtocolProprietární protokol, Cisco ho koupilo s
firmou SelsiusPro komunikaci mezi IP ústřednou (Call
Manager) a telefonemDefinován tak, aby koncové zařízení mohlo být
co nejjednoduššíRelativně nízkoúrovňové operace („rozsviť
kontrolku“, „spusť audio“), zprávy se přenášejí jako kopie bloků paměti (little endian)
![Page 48: VoIP protokoly](https://reader033.vdocuments.site/reader033/viewer/2022061610/56813ce5550346895da68df4/html5/thumbnails/48.jpg)
IAX2Inter-Asterisk eXchange protocolPro „příčkování“ open-source ústředen
AsteriskBinární protokolPoužívá jediné UDP spojení (port 4569), v
něm posílá jak signalizaci, tak audio (i několika hovorů najednou)