Upload
shandi
View
49
Download
0
Embed Size (px)
DESCRIPTION
VoIP protokoly. Vladim ír Toncar Kerio Technologies. O čem budeme mluvit. O co v šechno se musí VoIP systém postarat? Jak se to realizuje v H.323 a SIPu? Co ostatní protokoly? Praktické problémy?. O co se musí VoIP systém postarat?. Získat informaci, kde druhý účastník je - PowerPoint PPT Presentation
Citation preview
Vladimír ToncarKerio Technologies
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?
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)
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
Navázání spojení a parametry přenosuSpecifické pro jednotlivé protokoly –
podíváme se na to blíže později
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...
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
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ů
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
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
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
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
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
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áč“)
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
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)
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
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)
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
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 }
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)
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
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..]......
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
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ů
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ů
Průběh H.323 hovoru
Průběh H.323 hovoru (2)
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)
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
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
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č
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
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
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.
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
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>
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
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
SIP – kódy odpovědí
SIP – příklad hovoru
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)
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
Další VoIP protokolyMGCP a H.248/MegacoCisco SCCPIAX2
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
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)
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)
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)