VoIP protokoly

Preview:

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:0800123456@192.168.1.11 SIP/2.0Accept: application/sdpCall-ID: d5661-134f1-eb52e-d5661-3d541@192.168.40.143Contact: sip:1034@192.168.40.143:5060CSeq: 101 INVITEExpires: 1000From: "Vladimir Toncar" <sip:1034@192.168.1.11>;tag=ff177c16ff177c16To: <sip:0800123456@192.168.1.11>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)

Recommended