}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
VoIP klient ˇ B AKALÁ RSKÁ PRÁCE
Michal Vávra
Brno, jaro 2008
Prohlášení Prohlašuji, že tato bakaláˇrská práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Vedoucí práce: RNDr. Eva Hladká, Ph.D. ii
Podˇekování Tímto bych chtˇel podˇekovat vedoucí práce RNDr. Evˇe Hladké, Ph.D. za hodnotné rady a odborné vedení bˇehem mé práce.
iii
Shrnutí Úˇcelem této práce bylo srovnání dnes používaných VoIP klientu˚ a nalezení kriterií pro jejich hodnocení. Nejprve popíši technologie používané pro VoIP, následnˇe provedu porovnání šesti VoIP klientu˚ a z výsledku˚ sestavím kriteria pro jejich hodnocení. V poslední cˇ ásti se pak vˇenuji návrhu a popisu použití VoIP klientu, který byl vytvoˇren v rámci této práce.
iv
Klíˇcová slova IP telefonie, Voice over Internet Protocol, Session Initiation Protocol, Real-time Transport Protocol, Java, VoIP klient
v
Obsah 1 2
Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Protokoly a technologie používané pro VoIP . . . . . . . 2.1 Session Initiation Protocol . . . . . . . . . . . . . . . 2.1.1 Principy fungování SIPu . . . . . . . . . . . . 2.1.2 Entity v SIPu . . . . . . . . . . . . . . . . . . 2.2 Session Description Protocol . . . . . . . . . . . . . . 2.3 Real-time Transport Protocol . . . . . . . . . . . . . 2.4 Zvuk, jeho získávání a kódování . . . . . . . . . . . 2.5 Prubˇ ˚ eh bˇežného VoIP hovoru nad protokolem SIP . 3 Pˇrehled klientu˚ . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Metodika testování . . . . . . . . . . . . . . . . . . . 3.2 Ekiga . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 X-Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 SJphone . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 Linphone . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 WengoPhone . . . . . . . . . . . . . . . . . . . . . . . 3.7 SIP Communicator . . . . . . . . . . . . . . . . . . . 3.8 Závˇereˇcné zhodnocení porovnávaných VoIP klientu˚ 4 Návrh a vývoj vlastního VoIP klientu . . . . . . . . . . . 4.1 Návrh klientu . . . . . . . . . . . . . . . . . . . . . . 4.2 Použité technologie . . . . . . . . . . . . . . . . . . . 4.3 Popis použití . . . . . . . . . . . . . . . . . . . . . . . 5 Závˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Pˇríloha A . . . . . . . . . . . . . . . . . . . . . . . . . . . . B Pˇríloha B . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
1 2 2 3 5 5 6 6 7 9 9 10 11 12 13 14 15 16 18 18 19 19 22 24 25
vi
Kapitola 1
Úvod Koncem 90. let 20. století bylo vytáˇcené spojení nejbˇežnˇejším zpusobem ˚ pˇripojování se k Internetu. Docházelo tak vlastnˇe k vytváˇrení paketové sítˇe nad spojovanou sítí telefonní. Dnes, o deset let pozdˇeji, je situace témˇerˇ opaˇcná a dochází k vytváˇrení spojované sítˇe nad sítí paketovou. Vˇetšina domácností vlastní vysokorychlostní pˇrípojku k Internetu a masovˇe se zacˇ íná projevovat fenomén známý jako IP telefonie cˇ i Voice over Internet Protocol (dále jen VoIP), ve volném pˇrekladu hlas pˇrenášený po Internetu cˇ i jednodušeji, telefonování po Internetu. Bˇehem tohoto pomˇernˇe rychlého vývoje bylo vytvoˇreno nˇekolik signalizaˇcních a pˇrenosových protokolu˚ pro VoIP a mnoho klientu, ˚ které nad nimi fungují. Jako pˇrední dva signalizaˇcní protokoly se ukázaly H.323[1] a Session Initiation Protocol[2] (dále jen SIP). Tato práce se bude v teoretické cˇ ásti zabývat srovnáním VoIP klientu˚ pracujících nad protokolem SIP a nalezením vhodných kritérií pro jejich srovnávání. Hlavním duvodem ˚ pro upˇrednostnˇení protokolu SIP je fakt, že díky svému návrhu a použití textové komunikace je daleko pružnˇejší než již zminovaný ˇ protokol H.323. V praktické cˇ ásti je popsán návrh, vývoj a návod k použití mého vlastního jednoduchého VoIP klientu, který byl napsán tak, aby reflektoval kritéria pro hodnocení VoIP klientu˚ shrnutá v teoretické cˇ ásti práce.
1
Kapitola 2
Protokoly a technologie používané pro VoIP Abych mohl naplnit cíle práce, které jsem nastínil v úvodní kapitole, je tˇreba znát alesponˇ základní charakteristiky jednotlivých protokolu˚ a technologií, které se pro VoIP používají. Proto v této kapitole postupnˇe vysvˇetlím, jak funguje signalizaˇcní protokol SIP, protokol pro popis spojení Session Description Protocol[3] (dále jen SDP), protokol pro pˇrenos multimediálních dat Real-time Transport Protocol[4] (dále jen RTP), jak samotná multimediální data, v tomto pˇrípadˇe konkrétnˇe audio data, získat, pˇripravit pro pˇrenos a jak je následnˇe prezentovat na stranˇe pˇríjemce. Na konci této kapitoly pak na jednoduchém pˇríkladu popíši, jak všechny tyto cˇ ásti fungují dohromady pˇri bˇežném internetovém telefonním hovoru.
2.1
Session Initiation Protocol
Session Initiation Protocol, v cˇ eském pˇrekladu „protokol pro ustavení spojení,“ je v souˇcasnosti nejperspektivnˇejším signalizaˇcním protokolem v prostˇredí VoIP. Dokumentaci nalezneme v RFC 3261[5]. Slovo „signalizaˇcní“ znamená, že protokol sám o sobˇe nepˇrenáší hlas cˇ i video, nýbrž slouží jako prostˇredek k dohodˇe komunikujících stran o tom, v jakém formátu, jakým zpusobem ˚ a na jakém portu bude docházet k samotnému pˇrenosu multimediálního obsahu. SIP ale nemusí sloužit jen pro VoIP. Díky vhodnému návrhu ho lze použít napˇríklad pro Instant Messaging aplikace, tedy aplikace urˇcené pro ˇ výmˇenu textových zpráv, jako je napˇríklad v Ceské republice velmi oblíbené ICQ. Na následujících stránkách popíši, na jakém principu SIP funguje a jaké v nˇem figurují entity. 2
2. P ROTOKOLY A TECHNOLOGIE POUŽÍVANÉ PRO V O IP 2.1.1 Principy fungování SIPu SIP je protokol, který je v principu velmi podobný známému protokolu HTTP1 . Stejnˇe jako HTTP pracuje na principu Request–Response, v pˇrekladu „Požadavek–Odezva“, a stejnˇe jako u HTTP se jedná o textový protokol. Všechny zprávy jsou posílány ve formˇe textu, který cˇ lovˇek muže ˚ bez problému˚ cˇ íst. Právˇe tato vlastnost dovoluje SIPu být mnohostranˇe použitelným, nebot’ vývojáˇr není pˇri tvorbˇe aplikací pevnˇe vázán na puvodní ˚ pˇresnˇe specifikované zprávy. Další duležitou ˚ vlastností SIPu je jeho nezávislost na pˇrenosovém protokolu. SIP funguje jak nad UDP2 , tak nad TCP3 . O nˇekolik rˇ ádku˚ výše jsem zmínil, že SIP funguje na principu Požadavek–Odezva. Následuje popis jednotlivých požadavku, ˚ které jsou specifikovány v RFC 3261. Jedná se o následujících šest požadavku: ˚ INVITE Slouží jako pozvánka k hovoru. ACK Slouží jako potvrzení, že odesílateli dorazila finální odezva. Na tento požadavek se nijak nereaguje. BYE Slouží pro ukonˇcení hovoru, byl-li již potvrzen, tedy pokud byla zaslána odpovˇed’ 200 OK. CANCEL Slouží k ukonˇcení hovoru, nebyl-li ještˇe potvrzen, tedy pokud nebyla zaslána odpovˇed’ 200 OK. OPTIONS Slouží k zjištˇení, co vše muže ˚ server, kterému je tento požadavek zaslán, vykonávat. REGISTER Slouží k registraci odesílatele požadavku na takzvaném registrar serveru (viz. kapitola 2.1.2). Odezvy v SIPu maji velmi podobné kódy i význam jako odezvy v HTTP. Odezev je velké množství, takže pouze uvedu, co které rozsahy kódu˚ znamenají, a vypíši jen ty duležité. ˚ Odezvy 100 až 199 Informují o stavu spojení. Odezva 180 – Ringing Slouží jako odezva na požadavek INVITE a informuje odesílatele požadavku, že se cˇ eká na pˇríjem cˇ i odmítnutí hovoru volaným. 1. 2. 3.
HTTP, http://en.wikipedia.org/wiki/HTTP UDP, http://en.wikipedia.org/wiki/User_Datagram_Protocol TCP, http://en.wikipedia.org/wiki/Transmission_Control_Protocol
3
2. P ROTOKOLY A TECHNOLOGIE POUŽÍVANÉ PRO V O IP Odezvy 200 až 299 Informují o úspˇechu požadavku, na který reagují. Odezva 200 – OK Informuje, že požadavek byl zpracován úspˇešnˇe. Odezvy 300 až 399 Informují o pˇresmˇerování požadavku. Odezvy 400 až 499 Informují o selhání z duvodu ˚ špatného požadavku. Odezva 404 – Not Found Informuje, že adresát požadavku nebyl nalezen. Odezvy 500 až 599 Informují o selhání z duvodu ˚ chyby na serveru. Odezvy 600 až 699 Informují o selhání z duvodu ˚ obecné chyby. Každá zpráva, at’ už požadavek cˇ i odezva, se skládá z úvodní rˇ ádky, jednotlivých hlaviˇcek a pˇrípadého obsahu tˇela zprávy. Než pˇristoupím k popisu duležitých ˚ hlaviˇcek, je tˇreba vysvˇetlit pojem SIP URI. SIP URI je velmi podobný e-mailové adrese a slouží pro jednoznaˇcnou identifikaci každého úˇcastníka v SIPové telefonní síti. Je tvaru uživatel@server, tedy napˇríklad pokud by uživatel „Bob“ mˇel domovský server brno.cz, bude jeho SIP URI
[email protected]. Nyní pˇrejdu k popisu úvodní rˇ ádky a nejduležitˇ ˚ ejších hlaviˇcek. Úvodní rˇádka Je rozdílná pro požadavek a pro odezvu. Úvodní rˇ ádka pro požadavek obsahuje typ požadavku (INVITE, BYE apod.), SIP URI adresáta požadavku a verzi protokolu (dnes výhradnˇe SIP/2.0). Úvodní rˇ ádka odezvy obsahuje verzi protokolu, kód odezvy a rˇ etˇezec s duvodem ˚ dané odezvy. Hlaviˇcka To Urˇcuje, komu je zpráva urˇcena. Adresa má tvar SIP URI. Hlaviˇcka From Urˇcuje odesílatele zprávy, tedy komu budou zasílány pˇrípadné odpovˇedi. Adresa má tvar SIP URI. Hlaviˇcka CSeq Identifikuje transakci. Hlaviˇcka Via Jednoznaˇcnˇe identifikuje každý hovor. Hlaviˇcka Contact Tato hlaviˇcka v požadavku typu REGISTER urˇcuje jméno, pod kterým má registrar server evidovat adresu, ze které tento požadavek pˇrišel. Jméno má tvar SIP URI. Tato hlaviˇcka se muže ˚ opakovat. Hlaviˇcka Content-Type Tato hlaviˇcka urˇcuje typ obsahu tˇela zprávy, pokud nˇejaký existuje. Pokud je pˇrítomna, musí být pˇrítomna i hlaviˇcka Content-Length, která urˇcuje délku obsahu tˇela zprávy. 4
2. P ROTOKOLY A TECHNOLOGIE POUŽÍVANÉ PRO V O IP 2.1.2 Entity v SIPu V SIPu rozeznáváme 4 typy entit – User Agent, Proxy Server, Redirect Server a Registrar Server. User Agent Reprezentuje koncový bod, kterým je napˇríklad VoIP klient. Protože každý klient muže ˚ posílat i pˇrijímat požadavky, vnitˇrnˇe se každý User Agent dˇelí na User Agent Client (dále jen UAC) a User Agent Server (dále jen UAS). Zatímco UAC požadavky zasílá, UAS požadavky zpracovává a zasílá na nˇe odezvy. Proxy Server Chová se jako UAC i UAS, tedy pˇrijímá požadavky i zasílá odpovˇedi. Nejedná se však o koncový bod v SIPové architektuˇre. Proxy server muže ˚ pˇrijímat požadavky, jednat ve jménu puvodního ˚ zasilatele požadavku a poté mu zaslat finální výsledek transakce. Redirect Server Pˇrijímá požadavky od klientu a mˇení pole adresáta požadavku na aktuální adresu volaného. Následnˇe vrací tyto požadavky volajícímu. Tedy informuje volajícího o zmˇenˇe adresy volaného. Registrar Server Toto je speciální typ serveru, který pˇrijímá požadavky typu REGISTER a podle hodnot jejich hlaviˇcky cˇ i hlaviˇcek typu Contact upravuje vlastní databázi o umístˇení daného uživatele.
2.2
Session Description Protocol
Session Description Protocol[3], v cˇ eském pˇrekladu „protokol pro popis spojení,“ slouží pro ustanovení konkrétního kodeku (viz. kapitola 2.4), který se má použít pro pˇrenos multimediálních dat. Bývá souˇcástí SIPového požadavku typu INVITE, a to jako obsah tˇela tohoto požadavku. VoIP klient volajícího v této zprávˇe specifikuje, jaké kodeky podporuje a na jaké adrese a portu oˇcekává multimediální data. VoIP klient volaného poté vyhodnotí obsah této zprávy a pokud zjistí, že obˇe strany podporují alesponˇ jeden stejný kodek, bude tento použit pro výmˇenu multimediálních dat. V pˇrípadˇe, že je k dispozici kodeku˚ více, vybere se ten s nejvyšší prioritou, což už je ale záležitost každého konkrétního VoIP klientu. V pˇrípadˇe, že volaný hovor pˇrijme, odešle se v tˇele jeho odezvy 200 OK zpráva protokolu SDP, obsahující identifikátor vybraného kodeku, adresu a port, na kterém volaná strana oˇcekává multimediální data. 5
2. P ROTOKOLY A TECHNOLOGIE POUŽÍVANÉ PRO V O IP
2.3
Real-time Transport Protocol
Real-time Transport Protocol, v cˇ eském pˇrekladu protokol pro pˇrenos dat v reálném cˇ ase, je urˇcen pro pˇrenos multimedií. Tento protokol je definován v RFC 3550[6]. RTP pracuje nad transportním protokolem UDP a nemá žádný pevnˇe definovaný port, který by používal. Jediným pravidlem je, že cˇ íslo portu pro RTP je sudé a následující port se použije pro protokol RTCP[7], sesterský protokol k RTP, sloužící k výmˇenˇe informací o spojení mezi komunikujícími stranami. Obecnˇe pro UDP platí, že se jedná o protokol s nezajištˇeným pˇrenosem, negarantující doruˇcení paketu˚ ani jejich pˇrípadné správné poˇradí. Dokáže však pakety posílat rychleji než TCP, což je právˇe pro multimedia žádaná vlastnost. RTP posílá v paketu s multimediálními daty také informaci o typu multimediálních dat, která pˇrenáší, o poˇradí daného paketu, aby bylo možno na stranˇe pˇríjemce data rekonstruovat, a v neposlední rˇ adˇe cˇ asové razítko pro kontrolu rozptylu cˇ asu, který potˇrebují pakety na cestu k cíli.
2.4
Zvuk, jeho získávání a kódování
„Zvuk je ve své podstatˇe podélné mechanické vlnˇení v látkovém prostˇredí (v tomto pˇrípadˇe ve vzduchu), které je schopné v lidském uchu vyvolat sluchový vjem.“[8] Zvukové vlnˇení je tedy analogová spojitá veliˇcina, kterou chceme pˇrevést do diskrétních hodnot. Toho se dociluje použitím technik vzorkování a kvantování. Pˇri vzorkování dochází k odebírání vstupního signálu v definovaných intervalech, takzvané vzorkovací frekvenci. Typické vzorkovací frekvence jsou: 8 kHz Odpovídá kvalitˇe telefonního hovoru. 11 kHz Odpovídá lidské rˇ eˇci. 44,1 kHz Odpovída CD kvalitˇe. 48 kHz a vyšší Odpovídá DVD kvalitˇe. Po navzorkování signálu nastupuje kvantování, pˇri kterém se každému navzorkovanému bodu pˇriˇradí jeho zvuková intenzita. Nejˇcastˇeji používané jsou hodnoty: 8 bitu˚ – 256 úrovní Dostaˇcuje pro telefonní hovor. 6
2. P ROTOKOLY A TECHNOLOGIE POUŽÍVANÉ PRO V O IP 16 bitu˚ – 65 536 úrovní Odpovídá CD kvalitˇe. 24 bitu˚ – 16 777 216 úrovní Odpovídá DVD kvalitˇe. Po provedení vzorkování a kvantování dostaneme diskrétní signál ve formátu zvaném Pulse Code Modulation, dále jen PCM. Výsledná šíˇrka pˇrenosového media se poté spoˇcte jako vzorkovací frekvence × hodnota kvantování v bitech. Šíˇrka pásma nutná pro VoIP hovor je tedy 8000 (vzorkovací frekvence 8 kHz) × 8 bitu˚ = 64kb/s v jednom smˇeru. Tato hodnota muže ˚ být na nˇekterých linkách problémem, proto je nutné používat ruzné ˚ další kodeky. Kodek je program pro kompresi a následnou dekompresi multimediálních dat, tedy pro snížení nároku˚ na šíˇrku pˇrenosového pásma. Pro VoIP je velmi polulární rodina kodeku˚ Speex, které nejsou zatíženy patenty a jsou dostupné pod BSD licencí4 . Každý kodek kromˇe snížení nároku˚ na pˇrenosové pásmo také vnáší do pˇrenosu urˇcité zpoždˇení, zpusobené ˚ kompresí dat u odesílatele a dekompresí u pˇríjemce. Všechny ztrátové kodeky navíc více cˇ i ménˇe zhoršují kvalitu pˇrenášeného zvuku.
2.5
Prubˇ ˚ eh bˇežného VoIP hovoru nad protokolem SIP
Nyní, když jsem nastínil všechny základní technologie používané pro VoIP, mohu ukázat prubˇ ˚ eh bˇežného VoIP hovoru nad protokolem SIP. Hovor bude probíhat mezi dvˇema úˇcastníky, Alicí a Bobem. Alice má domovský server s adresou adamov.cz, její SIP URI tedy je
[email protected]. Bob má domovský server brno.cz a SIP URI
[email protected]. Alice chce volat Bobovi, zadá tedy do svého VoIP klientu bobovu SIP URI
[email protected]. Alicin VoIP klient vytvoˇri požadavek INVITE, obsahující ve svém tˇele údaje protokolu SDP, který zašle bobovu domovskému serveru brno.cz. Tento server ve zprávˇe pˇrepíše adresu odesílatele na svoji adresu a pošle zprávu na adresu, na níž se aktuálnˇe Bob nachází. Bobuv ˚ VoIP klient zprávu pˇreˇcte, podle údaju˚ protokolu SDP ve zprávˇe zkontroluje, zda podporuje alesponˇ jeden stejný zvukový kodek jako Alicin VoIP klient, zašle Alici prozatimní odpovˇed’ 180 Ringing a informuje Boba, že má pˇríchozí hovor. V pˇrípadˇe, že by Bob hovor odmítl, odešle jeho klient odpovˇed’ 603 Declined, na kterou Alicin VoIP klient zareaguje potvrzujícím požadavkem ACK a dojde k ukonˇcení hovoru. 4.
BSD licence, http://en.wikipedia.org/wiki/BSD_licence
7
2. P ROTOKOLY A TECHNOLOGIE POUŽÍVANÉ PRO V O IP V pˇrípadˇe, že Bob hovor pˇrijme, jeho VoIP klient zašle Alici koneˇcnou odpovˇed’ 200 OK, obsahující ve svém tˇele údaje protokolu SDP. Alicin VoIP klient odešle požadavek ACK, aby dal najevo, že pˇrijal odpovˇed’ 200 OK. V této chvíli oba VoIP klienty zaˇcnou naslouchat na portech, na kterých ve zprávách protokolu SDP specifikovaly, že oˇcekávají multimediální data. Zárovˇenˇ zaˇcnou sbírat, komprimovat a odesílat zvuková data na adresu a port svého protˇejšku, kde jsou tato data dekomprimována a prezentována. Jakmile si jeden z úˇcastníku˚ hovoru pˇreje hovor ukonˇcit, stiskne k tomu urˇcené tlaˇcítko, cˇ i provede jinou akci a jeho VoIP klient druhému úˇcastníku zašle požadavek BYE. Zárovenˇ pˇrestane posílat zvuková data a naslouchat na portu pro pˇríchozí zvuková data. Když zpráva dorazí druhému úˇcastníku hovoru, tento taktéž uzavˇre svuj ˚ naslouchací port, pˇrestane vysílat zvuková data a zašle svému protˇejšku zprávu 200 OK, aby dal najevo, že rozumˇel. Po pˇrijetí odezvy 200 OK odesílatel požadavku BYE zašle požadavek ACK pro potvrzení pˇrijetí odezvy na svuj ˚ požadavek BYE a tímto je hovor definitivnˇe ukonˇcen.
8
Kapitola 3
Pˇrehled klientu˚ Tato cˇ ást mé bakaláˇrké práce je zamˇerˇ ena na testování jednotlivých VoIP klientu˚ v praxi. Vybral jsem šest VoIP klientu, ˚ pracujících nad protokolem SIP. S žádným z tˇechto klientu˚ jsem doposud nemˇel žádné zkušenosti, což bylo zárukou zcela jednotného a nezaujatého pˇrístupu ke všem šesti mnou vybraným VoIP klientum. ˚
3.1
Metodika testování
Všechny mnou vybrané VoIP klienty existují jak ve verzi pro platformu Windows, tak pro platformu Linux. Z tohoto duvodu ˚ bylo provádˇeno testování každého VoIP klientu na dvou poˇcítaˇcích. Pro platformu Windows to byl poˇcítaˇc s dvoujádrovým procesorem Intel® Core™2 Duo E6600 s taktem jader 2400 MHz, který byl vybaven 2 GB operaˇcní pamˇeti. Pro platformu Linux sloužil poˇcítaˇc s procesorem Intel® Pentium™IV s taktem 3200 MHz a aktivovanou technologií „Hyper-Threading“, taktéž s 2 GB operaˇcní pamˇeti. Další parametry poˇcítaˇcu˚ neuvádím, jelikož ty již nejsou relevantní pro testování. Platformu Windows zastupoval operaˇcní systém Windows® XP Professional s balíˇckem aktualizací Service Pack 2 a všemi následujícími aktualizacemi. Platformu Linux pak zastupoval operaˇcní systém Ubuntu 8.04 LTS „Hardy Heron,“ taktéž plnˇe aktualizovaný. U každého klientu bylo zkoumáno, jak jednoduše je dostupný pro bˇežného uživatele, jak nároˇcná je instalace daného klientu, jak rychle se klient spouští, kolik procent procesorového cˇ asu a jak velké množství pamˇeti potˇrebuje ve stavu neˇcinnosti a kolik systémových prostˇredku˚ potˇrebuje, pokud probíhá hovor. Sít’, na které veškeré testy probíhaly, používala privátní adresy v rozsahu 192.168.0.0 – 192.168.0.255. Zkušební poˇcítaˇc pro platformu Windows mˇel adresu 192.168.0.1, zkušební poˇcítaˇc pro platformu Linux mˇel adresu 9
ˇ ˚ 3. P REHLED KLIENT U
192.168.0.204, registrar server, na kterém bˇežela ústˇredna Asterisk1 , mˇel adresu 192.168.0.230. Dále byly do testovací sítˇe zapojeny dva hardwarové SIPové telefony „IP–300 Internet Phone“. Všechny VoIP klienty byly nakonfigurovány tak, aby používaly pro pˇrenos hlasu pouze formát PCM µ-law, neboli taktéž PCMU2 . Takto jsem eliminoval ruzné ˚ odchylky v mˇerˇ ení spotˇreby systémových prostˇredku, ˚ zpusobené použitím rozdílných kodeku. ˚
3.2
Ekiga
VoIP klient Ekiga3 , jehož starším jménem je GnomeMeeting, je šíˇren pod licencí GNU/GPL4 a má otevˇrený zdrojový kód. Ekiga podporuje jak signalizaci nad protokolem SIP, tak nad protokolem H.323. Na platformˇe Linux je souˇcástí nˇekterých distribucí, ale je i volnˇe ke stažení ve formˇe již pˇripravených instalaˇcních balíku˚ cˇ i zabalených zdrojových kódu. ˚ Pro platformu Windows existuje Ekiga jako betaverze. Aktuální verze Ekigy je 2.0.12, na Windows je zatím k dispozici instalace pouze pro verzi 2.0.11. Stažení i instalace na obou platformách jsou operace, které v pˇrípadˇe použítí pˇripravených binárních instalaˇcních balíku˚ zvládne i ménˇe zkušený uživatel. Na platformˇe Windows je souˇcasnˇe nainstalováno i GTK+, což je grafické prostˇredí, ve kterém Ekiga bˇeží. Pˇri prvním spuštˇení Ekiga otevˇre „asistenta pro první nastavení“, což je jednoduchý pruvodce, ˚ který umožní v deseti krocích nastavit Ekigu dle potˇreb uživatele. Za pozitivní považuji možnost vytvoˇrení bezplatné SIPové adresy na serveru ekiga.net, která však není uživateli nijak vnucována. Další v dnešní dobˇe velmi užiteˇcnou položkou asistenta je automatická detekce typu použitého pˇrekladu adres, takzvaného NATu. Po zjištˇení typu NATu Ekiga navrhne vhodná opatˇrení, aby vše fungovalo jak má. Samotné provedení tˇechto opatˇrení je již na uživateli samotném. Jakmile se Ekiga spustí, je možno v menu Úˇcty nastavit, na které registrar servery se má Ekiga pokusit zaregistrovat a s jakými údaji. V menu Nastavení je možno mˇenit nastavení pruchodu ˚ pˇres NAT vˇcetnˇe možnosti použití STUN5 serveru. Mimo to mužeme ˚ v nastavení mˇenit množinu používaných zvukových kodeku˚ cˇ i napˇríklad nastavovat pˇresmˇerování SIPových hovoru. ˚ 1. 2. 3. 4. 5.
Asterisk, http://www.asterisk.org/ PCMU, http://en.wikipedia.org/wiki/%CE%9C-law_algorithm Ekiga, http://www.ekiga.org/ GNU/GPL Licence, http://en.wikipedia.org/wiki/GNU_General_Public_License STUN, http://en.wikipedia.org/wiki/Simple_traversal_of_UDP_over_NATs
10
ˇ ˚ 3. P REHLED KLIENT U
Tabulka 3.1: Ekiga
Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
3.3
Windows Linux 2.0.11 2.0.12 12 s 3,2 s 3–5% 8–9% 21 860 kB 10 700 kB 0% 0% 21 210 kB 10 600 kB Odchozí proxy server STUN server Pˇrímé nastavení veˇrejné IP adresy
X-Lite
X-Lite je VoIP klient vyvíjený spoleˇcností CounterPath, dˇríve známou jako Xten. X-Lite je dostupný na webové adrese spoleˇcnosti CounterPath6 a je ke stažení ve verzi 3.0 pro platformy Windows, Linux a Mac. Je dostupný zdrama, má však uzavˇrený zdrojový kód. Tento VoIP klient podporuje signalizaci pouze nad protokolem SIP. Spoleˇcnost CounterPath vyvíjí ještˇe VoIP klienty Bria a eyeBeam, které jsou však placené. Než je uživateli umožnˇeno stažení tohoto VoIP klientu ze stránek výrobce, je tˇreba zadat e-mailovou adresu, na kterou je následnˇe zaslána žádost o vyplnˇení dotazníku. Pro platformu Windows je ke stažení klient s instalátorem, pro Linux pouze zabalený binární soubor, který staˇcí rozbalit a spustit. Bˇehem instalace na Windows se X-Lite dotáže, zda se má spouštˇet okamžitˇe po nabˇehnutí systému. Pˇri prvním spuštˇení se otevˇre konfiguraˇcní okno, kde je možno vyplnit všechny duležité ˚ údaje, jako je nastavení registrace na registrar server cˇ i zda má být použit proxy server pro odchozí hovory. Po tomto iniciálním nastavení je X-Lite okamžitˇe schopen fungovat. V menu lze ještˇe nastavit další SIPové úˇcty, jaké zvukové kodeky se mají používat cˇ i jaký typ pˇripojení k Internetu uživatel používá. V menu však není jakákoliv možnost nastavení pruchodu ˚ pˇres NAT. X-Lite spoléhá na to, že sít’, ve které bude provozován, bude obsahovat SIP proxy server, který 6.
X-Lite, http://www.counterpath.com/x-lite.html
11
ˇ ˚ 3. P REHLED KLIENT U
bude obsluhovat veškeré požadavky pˇricházející z vnˇejší sítˇe. Ve vˇetšinˇe domácností ale takový stroj není, a to X-Lite dosti znehodnocuje. Tabulka 3.2: X-Lite
Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
3.4
Windows Linux 3.0 3.0 4,5 s 2,3 s 1% 1% 34 160 kB 14 110 kB 0% 0% 34 130 kB 13 700 kB Odchozí proxy server
SJphone
SJphone je VoIP klient vyvíjený spoleˇcností SJ Labs7 , dostupný ke stažení pro Windows, Linux, Mac a pro kapesní poˇcítaˇce vybavené platformou Windows CE. Stejnˇe jako X-Lite je i SJphone dostupný zdarma a taktéž má uzavˇrený zdrojový kód. Podporuje signalizaci nad protokoly SIP, H.323 a XMPP8 . Stažení VoIP klientu SJphone není nijak limitováno. Pro platformu Windows je dostupný ve verzi 1.65.377a spolu s instalátorem, pro Linux pak ve verzi 1.60.299 jako zabalený binární soubor, doprovázený potˇrebnými knihovnami. Pˇri instalaci na platformˇe Windows se SJphone bez jakéhokoliv vˇedomí uživatele pˇridá mezi programy spouštˇené po nastartování systému a po dokonˇcení instalace se okamžitˇe spustí. Na platformˇe Linux staˇcí rozbalit obsah staženého souboru a spustit binární soubor. Po prvním spuštˇení se otevˇre pruvodce ˚ nastavením zvukových zaˇrízení. Bohužel další nastavení musí uživatel v menu hledat sám. Menu je naštˇestí docela pˇrehledné. Lze v nˇem nastavovat vlastnosti zvuku, používané zvukové kodeky cˇ i vzhled klientu. Pomˇernˇe zvláštnˇe je rˇ ešeno nastavení SIPu. Nejprve je tˇreba vybrat profil spojení. Po instalaci jsou pro SIP dostupné dva profily, „pˇrímé pˇripojení“ a „pˇripojení pˇres odchozí proxy server.“ Pro tyto je pak nutno v konfigu7. 8.
SJ Labs, http://www.sjphone.org/ XMPP, http://www.xmpp.org/
12
ˇ ˚ 3. P REHLED KLIENT U
raˇcním souboru zadat hodnoty. SJphone na své hlavní obrazovce ukazuje, jaký typ NATu detekoval a v menu je pro SIPový profil pˇrímého pˇripojení možnost nastavení použití STUN serveru. Tabulka 3.3: SJphone
Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
3.5
Windows Linux 1.65.377a 1.60.299 5,8 s 3,1 s 1% 1% 30 260 kB 3650 kB 0% 0% 30 100 kB 3510 kB Odchozí proxy server STUN server
Linphone
Linphone9 je projekt s otevˇreným zdrojovým kódem, který je volnˇe šiˇritelný pod licencí GNU/GPL. Podporuje signalizaci pouze nad protokolem SIP. Linphone je ke stažení pro platformy Windows a Linux. U verze urˇcené pro Windows je poznámka, že se jedná o nestabilní vˇetev. Pro platformu Windows je aktuálnˇe dostupná verze 0.5.1 a je ke stažení ve formˇe instalátoru. Pro Linux jsou dostupné instalaˇcní balíˇcky s verzí 2.1.1. Je také možno stáhnout zdrojové kódy a provést kompilaci VoIP klientu Linphone na svém poˇcítaˇci. Instalace na obou platformách probíhá naprosto bez potíží. Linphone pˇri prvním spuštˇení nenabízí žádného pruvodce ˚ nastavením. Paradoxnˇe, i když má oproti všem ostatním porovnávaným VoIP klientum ˚ Linphone nejménˇe konfiguraˇcních položek, umožnuje ˇ nastavit nejvíce relevantních parametru. ˚ Samozˇrejmostí je možnost nastavení registraˇcních údaju˚ zasílaných na registrar server, nastavení zvukových zaˇrízení a zvukových kodeku, ˚ které se mají používat. Co je ale duležitˇ ˚ ejší, Linphone umožnuje ˇ v menu vybrat, jaká verze IP protokolu se má používat, jaké porty má používat pro pˇrenos SIPových zpráv, audia a videa a jakou veˇrejnou IP adresu má uživateluv ˚ router. Po 9.
Linphone, http://www.linphone.org/index.php/eng/
13
ˇ ˚ 3. P REHLED KLIENT U
zadání tˇechto údaju˚ je již nastavení firewallu a domácího routeru zcela jednoduché. A samozˇrejmˇe je tu stále možnost využít služeb STUN serveru. Bohužel jsem bˇehem testování zjistil, proˇc je Linphone pro Windows oznaˇcen jako nestabilní. SIPová signalizace na zaˇcátku hovoru probˇehla korektnˇe, ale jakmile mˇelo dojít k navázání RTP spojení, Linphone provedl neplatnou operaci a pˇredˇcasnˇe se ukonˇcil. Nebyl jsem schopen zjistit, zda je problém v RTP spojení cˇ i až v ovládání zvuku. Výsledkem bohužel je, že Linphone je na Windows aktuálnˇe nepoužitelný. Je to velká škoda, protože na Linuxu je tento klient prakticky nejlepší z testovaných. Tabulka 3.4: Linphone
Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
3.6
Windows Linux 0.5.1 2.1.1 3,2 s 2,7 s nemˇerˇ eno 1 % nemˇerˇ eno 8 140 kB nemˇerˇ eno 0 % nemˇerˇ eno 8110 kB Odchozí proxy server STUN server Pˇrímé nastavení veˇrejné IP adresy
WengoPhone
VoIP klient WengoPhone10 , obˇcas také nazývaný OpenWengo, má otevˇrený zdrojový kód a je volnˇe šiˇritelný pod GNU/GPL licencí. Podporuje signalizaci pouze nad protokolem SIP. Je dostupný pro platformy Windows, Linux a Mac. Navíc je možné WengoPhone stáhnout a používat i jako rozšíˇrení do prohlížeˇce webových stránek Firefox11 . WengoPhone je dostupný pro Windows ve formˇe instalátoru, pro Linux je pak dostupný binární instalaˇcní balíˇcek. V obou pˇrípadech se aktuálnˇe jedná o verzi 2.1.2. Instalace je na obou platformách bezproblémová. WengoPhone umožnuje ˇ pˇri prvním spuštˇení zadat registraˇcní údaje, registrar server a odchozí proxy server, pˇrípadnˇe vytvoˇrit nový SIPový úˇcet 10. WengoPhone, http://www.openwengo.org/ 11. Firefox, http://www.mozilla-europe.org/cs/products/firefox/
14
ˇ ˚ 3. P REHLED KLIENT U
u wengo.com. Bohužel, tím prakticky možnosti konfigurace sítˇe a SIPu konˇcí. WengoPhone v pˇrípadˇe použítí úˇctu u wengo.com používá pro pˇrekonání NATu proprietární rˇ ešení na bázi HTTP tunelu. Pokud je použit úˇcet u jiného poskytovatele, nezbývá nic jiného, než se spolehnout na služby odchozího proxy serveru, který musí být v lokální síti. Vzniká tak podobná situace jako u VoIP klientu X-Lite. V nastavení zvuku je možno vybrat používaná zvuková zaˇrízení a upravit prioritu zvukových kodeku. ˚ Kodeky bohužel nelze z výbˇeru pˇrímo odebrat. Ostatní nastavení už nejsou pro VoIP duležitá. ˚ Tabulka 3.5: WengoPhone
Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
3.7
Windows Linux 2.1.2 2.1.2 3,2 s 3,8 s 1–2% 2–5% 38 110 kB 19 210 kB 0% 0% 38 060 kB 18 920 kB Odchozí proxy server Vlastní proprietární rˇ ešení
SIP Communicator
Posledním porovnávaným VoIP klientem je SIP Communicator12 . Jedná se o klient s otevˇreným zdrojovým kódem, šíˇreným pod licencí GNU/GPL. Zvláštností tohoto klientu oproti ostatním testovaným je, že je napsaný v jazyce Java. Tím je zajištˇena jeho funkˇcnost na obou testovaných platformách. SIP Communicator využívá signalizaci nad protokolem SIP. Krom toho ovšem implementuje i mnoho protokolu˚ pro zasílání textových zpráv, jako jsou XMPP, AIM/ICQ, MSN, RSS a nˇekteré další. Ke stažení je SIP Communicator dostupný s instalátorem pro Windows, jako instalaˇcní balíˇcky pro Linux, s instalátorem napsaným v Javˇe, cˇ i jako zdrojové kódy. Instalace probíhá na obou platformách bez potíží. I pˇresto, že je SIP Communicator rozsáhlý projekt, má pˇrekvapivˇe málo konfiguraˇcních položek. Prakticky jediné, co lze nastavit, jsou registraˇcní údaje, adresa a port registrar serveru, adresa a port proxy server a zpusob ˚ 12. SIP Communicator, http://www.sip-communicator.org/
15
ˇ ˚ 3. P REHLED KLIENT U
udržování spojení. I tento VoIP klient tedy uživatele odsuzuje v pˇrípadˇe potˇreby pˇrekonat NAT k nutnosti použití odchozího proxy serveru. Žádná možnost nastavení zvukových zaˇrízení ani kodeku˚ se zde taktéž nenalézá. Tabulka 3.6: SIP Communicator
Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
3.8
Windows Linux 1.0-alpha3 1.0-alpha3 26 s 20,4 s 1–3% 1% 57 660 kB 47 590 kB 0% 0% 57 610 kB 47 520 kB Odchozí proxy server
Závˇereˇcné zhodnocení porovnávaných VoIP klientu˚
Dˇríve, než zaˇcnu hodnotit výsledky porovnávání výše uvedených VoIP klientu, ˚ chtˇel bych shrnout jejich další vlastnosti, které jsem bˇehem testování zjistil a které jim jsou spoleˇcné. U všech porovnávaných VoIP klientu˚ jsem za pomocí ústˇredny Asterisk zkoumal, zda zasílají korektní SIPové zprávy. Byl jsem mile pˇrekvapen a mohu konstatovat, že všechny porovnávané VoIP klienty skuteˇcnˇe neporušují standardy definované v RFC 3261[5]. Dále mohu konstatovat, že všechny porovnávané VoIP klienty uspˇely v testu, kdy jsem je nechal hodinu volat na linku, u které bylo nastaveno echo13 , a kdy jsem do vstupu pro mikrofon u daného poˇcítaˇce posílal hudbu a poslouchal výstup. Ani jeden z klientu˚ ve stanoveném cˇ asovém úseku nezhavaroval. Tímto by byly spoleˇcné vlastnosti všech porovnávaných VoIP klientu˚ vyˇcerpány. Pokud bych se mˇel zamˇerˇ it na výbˇer kritérií, podle kterých VoIP klienty srovnávat, tak pˇri pohledu na pˇredchozí odstavce a tabulky docházím k závˇeru, že by to mˇela být ta následující, uvedená v poˇradí podle du˚ ležitosti: Nároky na systémové prostˇredky Mˇely by být co nejnižší. Schopnost pˇrekonávat NAT Alesponˇ do doby, než se zaˇcne masovˇe používat IPv6, je tato vlastnost pro úspˇešný VoIP klient nutností. 13. Echo – automatické zpˇetné zasílání zvuku˚
16
ˇ ˚ 3. P REHLED KLIENT U
Podpora kvalitních zvukových kodeku˚ V dobˇe, kdy je širokopásmové pˇripojení již dostateˇcnˇe rozšíˇreno, není tˇreba srážet kvalitu telefonování pˇres Internet nekvalitním pˇrenosem zvuku. Jednoduché ovládání Uživateli staˇcí, když nastaví údaje od poskytovatele SIP úˇctu a muže ˚ telefonovat, urˇcitˇe nechce trávit zbyteˇcný cˇ as dalším nastavováním a hledáním položek. Vše potˇrebné by mˇelo být viditelné cˇ i rychle pˇristupné. Tato kriteria na platformˇe Linux zdaleka nejlépe reflektuje VoIP klient Linphone. Díky vyšším nárokum ˚ na systémové prostˇredky konˇcí Ekiga až za Linphonem, na tˇretí místo bych pak zaˇradil SJphone, kterému snižuje hodnocení hlavnˇe ménˇe možností rˇ ešení pruchodu ˚ skrz NAT. Další poˇradí klientu˚ nestanovuji. Na platformˇe Windows je situace daleko vyrovnanˇejší. Moji nejvˇetší pˇrízenˇ si získala Ekiga, pˇredevším pro svou pˇrehlednost a dostatek možností, jak procházet NATem. Za ní se pak svornˇe umístily X-Lite a SJphone. Zvláštní pozornost si i pˇres svou pamˇet’ovou nároˇcnost zasluhuje SIP Communicator. Díky použití programovacího jazyka Java není zavislý na platformˇe a opravdu jak na Windows tak na Linuxu funguje a vypadá shodnˇe, což je vlastnost, kterou žádný jiný porovnávaný VoIP klient zcela nesplnoval. ˇ
17
Kapitola 4
Návrh a vývoj vlastního VoIP klientu 4.1
Návrh klientu
Praktická cˇ ást této práce spoˇcívala ve vytvoˇrení vlastního jednoduchého VoIP klientu. I muj ˚ VoIP klient, jako každý program, musel nejprve projít fází návrhu. Protože se nejedná o rozsáhlý projekt, rozhodl jsem se nepoužívat žádné sofistikované metody návrhu systému˚ a nekreslit DFD diagramy1 . Místo toho jsem si rozepsal, jaké cˇ ásti by muj ˚ VoIP klient mˇel obsahovat a co by každá z nich mˇela dˇelat. Základním prvkem každého programu, se kterým je možno interaktivnˇe pracovat, je grafické uživatelské rozhraní (GUI2 ). Tˇrída GUI bude tedy vykreslovat všechny ovládací prvky VoIP klientu, bude reagovat na akce provedené uživatelem, a bude jej informovat o pˇríchozích zprávách z ostatních tˇríd. Dále bude klient obsahovat tˇrídu pro interakci s protokolem SIP, tedy vytváˇrení, zasílání, pˇrijímání a cˇ tení SIPových zpráv. Tato tˇrída bude pˇredávat GUI všechny duležité ˚ informace o pˇríchozích SIPových zprávách a zárovenˇ bude od GUI dostávat povely k odeslání SIPových zpráv. Další tˇrída se bude starat o získávání, paketizaci a odesílání audio dat a v opaˇcném smˇeru pak o pˇríjem, depaketizaci a reprezentaci pˇríchozích audio dat. Této tˇrídˇe budou z GUI zasílány informace o tom, že má zaˇcít audio data zasílat na specifikovanou adresu, na jakém portu má naslouchat pˇríchozím audio datum ˚ a že má ukonˇcit vysílání a pˇríjem audio dat. Klient sám o sobˇe nebude obsahovat žádnou možnost konfigurace v GUI. Aby bylo možno ovlivnit parametry, jako je zobrazované jméno, nebo zda se má pokusit pˇripojit k registrar serveru, bude pˇri startu VoIP klient pomocí další tˇrídy cˇ íst XML soubor, ve kterém budou uloženy konfiguraˇcní údaje.
1. 2.
DFD diagramy, http://en.wikipedia.org/wiki/Data_flow_diagram GUI, Graphical User Interface
18
4. N ÁVRH A VÝVOJ VLASTNÍHO V O IP KLIENTU
4.2
Použité technologie
V zadání mé bakaláˇrské práce stojí, že pro vytvoˇrení mého VoIP klientu mám použít knihovny projektu Ekiga, tedy VoIP klienta napsat v jazyce C++. Bˇehem testování VoIP klientu˚ v pˇredchozí kapitole jsem však došel k názoru, že daleko lepším rˇ ešením bude použít jazyk Java[9] a vytvoˇrit tak VoIP klient, který nebude závislý na platformˇe, kde pobˇeží. Další otázkou bylo, zda si napsat kompletnˇe vlastní tˇrídy pro použití protokolu SIP a RTP, nebo využít již hotových tˇríd. Vzhledem k zadání padla nakonec volba na využití tˇríd již vytvoˇrených. Jako SIP stack je využit projekt Jain-Sip3 verze 1.2. Jako RTP stack pak slouží projekt Java Media Framework4 ve verzi 2.1.1e. Jedinou nevýhodou použití JMF je, že uživatel musí mít tento projekt pˇredem korektnˇe nainstalovaný a nastavený, což ale na druhou stranu není nijak složité.
4.3
Popis použití
Muj ˚ VoIP klient je distribuován jako archiv ve formátu ZIP. Po rozbalení kompletního obsahu do uživatelem zadaného adresáˇre, by tento mˇel obsahovat následující položky: •
Adresáˇr lib, ve kterém se nacházejí knihovny potˇrebné pro bˇeh mého VoIP klientu.
•
Soubor voip.172871.fi.muni.cz.jar, který reprezentuje muj ˚ VoIP klient.
•
Soubor settings.xml, do kterého jsou ukládána nastavení.
•
Dávkové soubory win32.bat a linux.sh, urˇcené pro spouštˇení mého VoIP klientu.
Pˇred prvním spuštˇením je tˇreba provést úpravu souboru settings.xml a nastavit v nˇem správné hodnoty. Pro úpravu postaˇcí bˇežný textový editor, jedinou podmínkou je, aby umˇel cˇ íst a ukládat v kódování UTF-8. Pro bˇežné použití je tˇreba nastavit hodnotu znaˇcky registrar, kam se zapisuje adresa a port registrar serveru, který má být použit. V pˇrípadˇe, že se nemá registrar server používat, staˇcí nechat 3. Jain-Sip, https://jain-sip.dev.java.net/ 4. Java Media Framework, http://java.sun.com/javase/technologies/desktop/media/jmf/
19
4. N ÁVRH A VÝVOJ VLASTNÍHO V O IP KLIENTU nastavenu hodnotu „none“. Jako hodnoty znaˇcek username a showname je tˇreba zadat pˇrihlašovací jméno, které se zašle registrar serveru, respektive jméno, které se bude zobrazovat volaným. Nyní je muj ˚ VoIP klient pˇripraven ke spuštˇení. Na platformˇe Windows se ke spouštˇení používá dávkový soubor win32.bat, na Linuxu pak dávkový soubor linux.sh. Pokud není v konfiguraˇcním souboru v poli registrar nastavena hodnota „none“, pak muj ˚ VoIP klient zašle na specifikovanou adresu požadavek REGISTER s pˇrihlašovacím a zobrazovaným jménem odpovídajícím konfiguraˇcnímu souboru. Jakmile na tento požadavek pˇrijde odpovˇed’ 200 OK, pˇrepne se VoIP klient do stavu „Registered“. Ve stavu „Registered“ VoIP klient, v pˇrípadˇe zadání adresy volaného bez zavináˇce, automaticky za zadanou adresu doplní zavináˇc a adresu registrar serveru. Pokud je z jakéhokoliv duvod ˚ nutno VoIP klient pˇrepnout do neregistrovaného stavu, staˇcí stisknout tlaˇcítko Unregister. Taktéž je po uplynutí hodiny od posledního zaslání požadavku REGISTER tˇreba VoIP klient pˇrepnout ze stavu registrované do neregistrovaného a zpˇet. Pro volání staˇcí zadat adresu volaného a stisknout tlaˇcítko Call. Zavˇesit pak muže ˚ uživatel kdykoliv stiknutím tlaˇcítka Hang up. V pˇrípadˇe pˇríchozího hovoru VoIP klient automaticky umožní stisk tlaˇcítek Accept a Reject pro pˇrijetí respektive odmítnutí hovoru. Muj ˚ VoIP klient posílá zvuková data ve formátu PCMU, tedy formátu, který podporují všechny VoIP klienty. Použití PCMU je zárovenˇ zárukou dostateˇcné kvality zvuku. Muj ˚ VoIP klient nepoužívá žádnou pˇrímou možnost pˇrechodu pˇres NAT, pouze je možno specifikovat odchozí proxy server, který má používat. Tato položka však nebyla nikdy testována, a proto ji nedoporuˇcuji zatím používat.
20
4. N ÁVRH A VÝVOJ VLASTNÍHO V O IP KLIENTU
Tabulka 4.1: Muj ˚ VoIP klient
Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
Windows Linux 1.0 1.0 12 s 10,7 s 1–2% 1% 29 120 kB 22 960 kB 0% 0% 27 930 kB 22 720 kB Experimentálnˇe odchozí proxy server
21
Kapitola 5
Závˇer Výsledky cˇ ásti práce, ve které jsem se zabýval porovnáním VoIP klientu, ˚ jasnˇe ukazují, že je dostupné dostateˇcné množství kvalitních VoIP klientu˚ pro ruzné ˚ platformy. Každý z tˇechto klientu˚ je urˇcen pro mírnˇe odlišný typ uživatele a je tedy zaruˇceno, že hlasová komunikace pˇres Internet bude i nadále nabývat na oblibˇe. V praktické cˇ ásti práce se mi podaˇrilo napsat VoIP klienta, kterého je možné volnˇe pˇrenášet mezi ruznými ˚ operaˇcními systémy a beze zmˇen ve funkˇcnosti ho na nich používat. Tento jednoduchý VoIP klient reflektuje vˇetšinu kriterií pro hodnocení VoIP klientu, ˚ jak jsou popsáná v závˇeru kapitoly tˇri této práce. V budoucnu pravdˇepodobnˇe dojde k pˇresunu od bˇežného telefonování po Internetu k videohovorum. ˚ Již dnes vˇetšina VoIP klientu˚ tuto možnost podporuje, ale pˇrenosu kvalitního videa dnes vˇetšinou brání nedostateˇcná kapacita pˇrenosových linek.
22
Literatura [1] H.323 - Wikipedia, the free encyclopedia. [online], citováno 27. 4. 2008. Dostupné na WWW: http://en.wikipedia.org/wiki/H.323. [2] Session Initiation Protocol - Wikipedia, the free encyclopedia. [online], citováno 27. 4. 2008. Dostupné na WWW: http://en.wikipedia. org/wiki/Session_Initiation_Protocol. [3] Session Description Protocol - Wikipedia, the free encyclopedia. [online], citováno 27. 4. 2008. Dostupné na WWW: http://en. wikipedia.org/wiki/Session_Description_Protocol. [4] Real-time Transport Protocol - Wikipedia, the free encyclopedia. [online], citováno 27. 4. 2008. Dostupné na WWW: http://en. wikipedia.org/wiki/Real-time_Transport_Protocol. [5] SIP: Session Initiation Protocol. [online], citováno 27. 4. 2008. Dostupné na WWW: http://www.ietf.org/rfc/rfc3261.txt. [6] RTP: A Transport Protocol for Real-Time Applications. [online], citováno 27. 4. 2008. Dostupné na WWW: http://www.ietf.org/rfc/ rfc3550.txt. [7] Real-time Transport Control Protocol - Wikipedia, the free encyclopedia. [online], citováno 27. 4. 2008. Dostupné na WWW: http: //en.wikipedia.org/wiki/Real_time_control_protocol. [8] LIŠKA Miloš. Skripta k pˇredmˇetu PV188 Principy zpracování a pˇrenosu multimédií. [online], citováno 29. 4. 2008. Dostupné na WWW: https://is.muni.cz/auth/el/1433/podzim2007/ PV188/um/slides-zpracovani_audia_a_videa.pdf. [9] JavaTM 2 Platform Standard Edition 5.0 API Specification. [online], citováno 29. 4. 2008. Dostupné na WWW: http://java.sun.com/ j2se/1.5.0/docs/api/.
23
Dodatek A
Pˇríloha A Souˇcástí práce je pˇriložené CD, které obsahuje: •
zdrojový kód práce ve formátu LATEX
•
elektronickou verzi práce ve formátu PDF
•
zdrojový kód VoIP klientu vzniklého v rámci práce
•
dokumentaci zdrojového kódu VoIP klientu, vzniklého v rámci práce, ve formátu Javadoc
•
archiv s binární distribucí VoIP klientu, vzniklého v rámci práce, ve formátu ZIP archiv obsahuje: –
binární distribuci VoIP klientu, vzniklého v rámci této práce ve formátu JAR
–
knihovny potˇrebné pro bˇeh VoIP klientu, vzniklého v rámci této práce v adresáˇri lib
–
XML soubor settings.xml, obsahující nastavení VoIP klientu
–
dávkový soubor win32.bat pro spouštˇení VoIP klientu v prostˇredí Microsoft Windows
–
dávkový soubor linux.sh pro spouštˇení VoIP klientu v prostˇredí GNU/Linux
24
Dodatek B
Pˇríloha B Textová pˇríloha obsahuje: •
Tabulka celkového srovnání porovnávaných VoIP klietu˚ pro platformu Windows
•
Tabulka celkového srovnání porovnávaných VoIP klietu˚ pro platformu Linux
25
Windows Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
Windows Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
Ekiga 2.0.11 12 s 3–5% 21 860 kB 0% 21 210 kB Odchozí proxy server STUN server Pˇrímé nastavení veˇrejné IP adresy Linphone 0.5.1 3,2 s nemˇerˇ eno nemˇerˇ eno nemˇerˇ eno nemˇerˇ eno Odchozí proxy server STUN server Pˇrímé nastavení veˇrejné IP adresy WengoPhone 2.1.2 3,2 s 1–2% 38 110 kB 0% 38 060 kB Odchozí proxy server Vlastní proprietární rˇ ešení
X-Lite 3.0 4,5 s 1% 34 160 kB 0% 34 130 kB Odchozí proxy server
Tabulka B.1: Celkové srovnání klientu˚ pro platformu Windows
SIP Communicator 1.0-alpha3 26 s 1 – 3% 57 660 kB 0% 57 610 kB Odchozí proxy server
SJphone 1.65.377a 5,8 s 1% 30 260 kB 0% 30 100 kB Odchozí proxy server STUN server
ˇ B. P RÍLOHA B
26
Windows Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
Windows Verze Rychlost prvního startu Využití CPU bˇehem hovoru Využití operaˇcní pamˇeti bˇehem hovoru Využití CPU mimo hovor Využití operaˇcní pamˇeti mimo hovor Zpusoby ˚ pˇrekonávání NATu
Ekiga 2.0.12 3,2 s 8–9% 10 700 kB 0% 10 600 kB Odchozí proxy server STUN server Pˇrímé nastavení veˇrejné IP adresy Linphone 2.1.1 2,7 s 1% 8 140 kB 0% 8 110 kB Odchozí proxy server STUN server Pˇrímé nastavení veˇrejné IP adresy WengoPhone 2.1.2 3,8 s 2–5% 19 210 kB 0% 18 920 kB Odchozí proxy server Vlastní proprietární rˇ ešení
X-Lite 3.0 2,3 s 1% 14 110 kB 0% 13 700 kB Odchozí proxy server
Tabulka B.2: Celkové srovnání klientu˚ pro platformu Linux
SIP Communicator 1.0-alpha3 20,4 s 1% 47 590 kB 0% 47 520 kB Odchozí proxy server
SJphone 1.60.299 3,1 s 1% 3 650 kB 0% 3 510 kB Odchozí proxy server STUN server
ˇ B. P RÍLOHA B
27