48
Vladimír Toncar Kerio Technologies

VoIP protokoly

  • 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

Page 1: VoIP  protokoly

Vladimír ToncarKerio Technologies

Page 2: VoIP  protokoly

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Průběh H.323 hovoru

Page 28: VoIP  protokoly

Průběh H.323 hovoru (2)

Page 29: VoIP  protokoly

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

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

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

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

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

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

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

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

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

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

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

SIP – kódy odpovědí

Page 41: VoIP  protokoly

SIP – příklad hovoru

Page 42: VoIP  protokoly

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

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

Další VoIP protokolyMGCP a H.248/MegacoCisco SCCPIAX2

Page 45: VoIP  protokoly

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

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

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

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)