Vyšlo v měsíčníku Click, č. 4/2006
Vytištěno z adresy: http://www.earchiv.cz/b06/b0401004.php3

Pohled dovnitř (VOIP)

Vytvořit fungující systém, využívající VOIP technologie a nabízející možnosti telefonování obdobné tomu, co nabízí klasické telefonní síť , není až tak jednoduché. Rozhodně to neobnáší jenom digitalizaci lidského hlasu a schopnost přenášet tento hlas v digitální podobě po datové síti. To je, svým způsobem, na celé záležitosti možná to úplně nejjednodušší.

Pokud má být výsledek srovnatelný s klasickou telefonii, nebo dokonce nabízet ještě více služeb a uživatelského komfortu, musí být úspěšně vyřešena celá řada dalších věcí. Zejména:

  • jak nalézt volaného účastníka, po zadání telefonního čísla nebo nějakého jiného identifikátoru - jak najít jeho momentální umístění, jak najít cestu k němu atd.
  • jak iniciovat hovor s volaným účastníkem - jak mu ukázat, kdo mu volá (analogie funkce CLIP), a jak mu dát možnost přicházející hovor přijmout nebo naopak odmítnout
  • jak se mají použitá zařízení domluvit na potřebných parametrech pro vedení hovoru - třeba na tom, jaké kodeky budou používat? Snad netřeba připomínat, že to mohou být jen takové, které podporují obě zařízení současně.
  • jak zajistit možnost účtování hovoru? Tak aby poskytovatel služby věděl, kolik má volajícímu naúčtovat (pokud neplatí paušálem).

V neposlední řadě, pokud výsledkem nemá být jen nějaký izolovaný systém, ze kterého nejde volat "ven", do jiných telefonních sítí, musí být nějak vyřešena právě tato návaznost na jiné sítě. To znamená jednak vytvoření vhodných bran, schopných průběžně převádět hovor z jedné sítě do druhé, ale vyžaduje to také vymyslet a implementovat převod mezi pravidly, postupy a metodami různých systémů telefonie (formou vhodné brány). Například když bude chtít účastník nějaké sítě na bázi VOIP chtít volat někomu ve veřejné síti, mělo by to pro něj být stejně lehké jako volání kterémukoli jinému účastníkovi: pouze vytočí (zadá) jeho telefonní číslo, a o více se již nemusí starat. Ve skutečnosti ale mezi oběma systémy telefonie musí dojít k poměrně složité a rozsáhlé interakci, která zajistí mj. výběr cílové sítě volaného účastníka, jeho nalezení, sestavení a vedení hovoru, správné účtování hovoru atd. To není až tak triviální.

Standardní, nebo proprietární řešení?

V praxi přitom existují dva základní přístupy k tomu, jak vše řešit. První je "udělat si vše po svém", podle vlastních představ o tom, co a jak je nevhodnější. Výsledkem pak ale je proprietární řešení, neboli takové, které je plně v rukou svého autora, resp. provozovatele. Pokud on nechce, nikdo nemá šanci jej převzít, či do něj i jen "vidět" (jak funguje, co vyžaduje atd.). Také jakékoli propojení, mezi proprietárním systém a jakýmkoli jiným telefonním systémem, je problematické. Ne že by bylo z principu nemožné, ale vyžaduje aktivní spoluúčast autora/provozovatele proprietárního řešení, a obecně bývá mnohem dražší a náročnější než propojení mezi dvěma systémy, realizovanými na otevřených standardech. Ty jsou druhou variantou, jak vše realizovat.

Významným příkladem proprietárního řešení ze zahraničí je dodnes služba Skype. Ta je ale tak velká, resp. má tak velký počet uživatelů, že se její technické řešení v některých směrech chová jako standard (například se mu přizpůsobují výrobci koncových zařízení, kteří vyrábí speciální telefony pro Skype). Ale stále do něj "není vidět".

Standard H.323

Standardy pro telefonní služby na bázi VOIP existují dva. Starší se jmenuje H.323, a pochází "ze světa spojů" (od Mezinárodní telekomunikační unie, ITU.T). Jde o rozsáhlý a poměrně složitý standard, který kromě telefonie řeší například i videopřenosy, a zabývá se všemi aspekty, které s tím jsou spojeny. Samozřejmě pamatuje také na možnost propojení s klasickou veřejnou sítí, skrze příslušné brány. Dnes je sice již na ústupu, ale přesto si alespoň naznačme jeho celkovou architekturu. Ta totiž předznamenala i ostatní řešení a standardy.

Představa architektury H.323

Z pohledu uživatele jsou nejvýznamnější koncová zařízení, označovaná jako terminály. To mohou být buď specializovaná zařízení, uzpůsobená pro připojení k datové síti (tzv. IP telefony), nebo klasické (analogové) telefony, které s připojují k datové síti (IP síti) přes tzv. terminálové adaptéry). Nebo to mohou být běžné počítače, na kterých běží vhodné programy (tzv. SW telefony). Všechna tato koncová zařízení jsou sice značně inteligentní, ale přesto řadu funkcí nezvládnou samy.

Například v IP sítích jim mohou být přidělovány různé dynamické IP adresy, pod kterými jsou tyto terminály následně přístupné. Takže kdyby jim uživatel nějakého jiného terminálu chtěl volat, nevědělo by se, kam (na kterou IP adresu) směrovat slušné volání.

Proto pro určitou skupinu terminálů (tzv. zónu) vždy existuje jedno zařízení, v roli tzv. gatekeeperu (jakéhosi správce). Jeho funkce lze přirovnat i k funkcím telefonní ústředny - která "ví" o umístění jednotlivých terminálů, a zprostředkovávání sestavování hovorů vedoucích jak od těchto terminálů, tak směřující k nim.

Představa vedení hovoru v H.323

Přesto je zde ale jeden zásadní rozdíl oproti klasické telefonní ústředně: přes ni totiž prochází i vlastní telefonní hovory. Zde, v prostředí IP telefonie, zajišťuje gatekeeper pouze "počáteční fáze" hovoru (vyhledání volaného, tzv. signalizaci a řízení hovoru), ale vlastní hovor již probíhá přímo, bez jeho účasti. Jinými slovy: průběžný přenos dat, představujících přenášený hlas v rámci hovoru, již neprochází přes gatekeeper, ale přímo mezi koncovými terminály (stylem "peer-to-peer"). Vše naznačuje obrázek.

Standard H.323 samozřejmě pamatuje i na to, že se telefonní hovory mohou směřovat i mimo danou zónu. V takovém případě jednotlivé gatekeepery vzájemně spolupracují na sestavování hovorů. Pokud ale má hovor vést do úplně jiné telefonní sítě (například do klasické veřejné telefonní sítě, POTS, resp. PSTN), pak musí být k dispozici i vhodná hlasová brána (gateway), která zajišťuje potřebný přechod z/do jiného systému - a to jak pro potřeby vlastního hovoru ("hlasová data"), tak i pro potřeby jeho sestavení a řízení (řídící data).

Představa vedení hovoru v H.323

Do celkového obrázku o architektuře, kterou předpokládá standard H.323, nám schází ještě zmínka o zařízení MCU (Multipoint Control Unit). To má na starosti služby typu multicastu a broadcastu (kdy "na příjmu" je více zařízení současně).

Z tuzemských služeb na bázi VOIP vycházela ze standardu H.323 například služba Fayn. Časem se ale i ona přizpůsobila novějšímu standardu SIP.

SIP, Session Initiation Protocol

Místo standardu H.323, který pochází ze světa spojů a telekomunikací, se dnes jednoznačně prosazuje standard SIP, pocházející ze světa Internetu. Jde vlastně o aplikační protokol (Session Initiation Protocol, zkratkou SIP), který je součástí rodiny protokol TCP/IP - a také může sloužit i potřebám jiných služeb, než jen telefonování. Například potřebám služeb charakteru tzv. instant messagingu.

Oproti H.323, které bylo "hodně velké", je SIP podstatně odlehčený a menší. Je to vlastně jen signalizační protokol, jehož úkolem (už podle jeho názvu) je "iniciovat relace". Řečeno s určitým zjednodušením dělá to, co je potřeba, aby se dvě strany vzájemně našly. No a když už se najdou, tak se na všem potřebném mohou již dále dohadovat samy, a protokol SIP k tomu již nepotřebují. To je významnou odlišností od H.323, který se snažil toho dělat co možná nejvíce - například včetně zprostředkovávání výběru vhodných kodeků na obou stranách. Důsledkem bylo to, že bez gatekeeperu (správce) se dva terminály mezi sebou nedomluvily.

V případě SIP-u se dva terminály dokáží domluvit přímo, pokud znají svou přesnou polohu. Tedy pokud volající zná aktuální síťovou adresu volaného. V takovém případě si vše potřebné vyřizují mezi sebou.

Teprve v případě, kdy volající nezná přesnou polohu volaného, obrací se o pomoc na další prvky sítě - na specializované servery, které dohromady tvoří analogii správce (gatekeeperu) v H.323.

Funkce těchto serverů předpokládá, že každý terminál, který chce být přístupný pro příchozí volání, oznámí svou existenci (a "polohu") k tomu určenému serveru (tzv. registračnímu serveru, register server). Tomu pošle zprávu s příznačným názvem Register. Příslušný registrační server pak uloží údaje o aktuálním umístění nového terminálu do databáze, ke které má kromě něj přístup (na čtení) jiný server - tzv. location server. Ten pak odpovídá na dotazy o tom, kde se určitý terminál nachází.

Představa navazování spojení v rámci SIP-u

Když pak uživatel jednoho terminálu volá jinému uživateli (na jeho terminál), a zná jeho přesné umístění, pošle mu jinou zprávu, Invite (doslova: pozvání). Pokud jeho přesnou polohu nezná, mohl by se nejprve obrátit přímo na location server s příslušným dotazem na polohu volaného. Architektura SIP-u však nabízí takovému terminálu jiné řešení: nabízí mu dva specializované servery (proxy server a redirect server), kterým může svou pozvánku předat. Způsob, jakým s ní tyto servery naloží, se ale liší:

  • proxy server v SIP-u sám zajistí správné předání pozvánky (zprávy INVITE). Nejspíše se tedy sám dotáže příslušného location serveru na umístění volaného terminálu, a pak pozvánku předá v příslušném směru.
  • redirect server nejprve přijme pozvánku (zprávu Invite), a také si zjistí vše potřebné o umístění volaného terminálu (od location serveru). Pak se ale zachová odlišně od proxy serveru - pozvánku (zprávu Invite) vrátí jejímu odesilateli, spolu s informacemi o tom, kam je třeba ji poslat, aby se dostala ke svému cíli.
Architektura dle standardu SIP

Pro běžné praktické použití je nejdůležitější hlavně proxy server SIP-u. Každý terminál by totiž měl "znát" polohu (adresu) alespoň jednoho SIP proxy serveru. Přes něj pak realizuje všechna svá volání (zasílá zprávy Invite), a skrze tento proxy server se může do sítě i registrovat posílat zprávu Register, určenou registračnímu serveru).

Nastavení proxy brány u SW telefonu (X-Lite)

Zařízení, která si koncový zákazník koupí od poskytovatele svých VOIP služeb (na bázi SIP-u) už bývají předem nakonfigurována tak, aby "znala" proxy server poskytovatele služby a věděla, jak přesně naformulovat zprávu Register, kterou se přihlašuje do sítě a oznamuje svou aktuální polohu (včetně jména a hesla účtu svého uživatele). Pokud terminál takto předem nakonfigurován není, poskytovatel služby často nabízí svému zákazníkovi dopředu připravený a "individualizovaný" konfigurační soubor, který stačí jen stáhnout a do zařízení nahrát.

V případě, že ani tato možnost není k dispozici, je nutné "ruční" nastavení potřebné konfigurace. Zde ale musí uživatel znát potřebné údaje, minimálně na úrovni svého uživatelského jména, hesla a adresy nejbližšího SIP proxy serveru. Dozví se je například z mailu, který mu poskytovatel pošle v rámci zřízení služby.

Příklad emailového oznámení s údaji pro nastavení terminálu.

Průchodnost skrze firewally

Se zprovozněním konkrétního terminálu v konkrétní IP síti mohou v praxi nastat některé problémy. Vynecháme-li nesprávnou konfiguraci terminálu (špatně zadanou adresu proxy brány, či uživatelského jména a hesla), je nejčastějším zdrojem problémů umístění terminálu za tzv. firewallem, a někdy i za směrovačem který zajišťuje překlad adres (tzv. NAT).

Důvodem bývá nejčastěji to, že přístup na některé konkrétní porty bývá v rámci firewallu (či NAT-u) zablokován nebo alespoň nějak omezen. Případně v tom, že firewall nepovolí žádosti o navázání spojení, přicházející "z vnějšku" (protože je považuje za pokusy o napadení).

Nejčastěji jsou na problémy tohoto druhu náchylné služby na bázi H.323, a nejméně pak řešení na bázi standardu SIP. Někde mezi nimi oscilují proprietární řešení, protože ta mohou být řešena opravdu různě.

Obecný a vždy účinný návod na řešení těchto problémů bohužel neexistuje. Ve hře je totiž příliš mnoho faktorů, než aby se daly všechny dopředu odhadnout a zvážit. V praxi, pokud se problémy přeci jen vyskytnou, lze doporučit:

  1. pokusit se překonfigurovat terminál (telefon) tak, aby se přizpůsobil existujícímu firewallu. V některých případech to jde - buď zadáním, že se terminál nachází za firewallem (a jakého typu), nebo změnou portů, skrze které oslovuje vnější servery (za firewallem). Toho lze dosáhnout buďto explicitním zadáním portů, které mají být použity, nebo změnou způsobu jejich automatické volby.
Příklad výběru z podporovaných typů firewallů (SW telefon X-Lite)

Příklad explicitního zadání portu (SW telefon X-Lite)
  1. Pokud všechna opatření na straně terminálu selžou, může pomoci vytvoření tunelu skrze firewall. Tedy takové jeho nastavení, které umožní volný průchod skrze firewall pro taková data, která směřují k terminálu (telefonu) v chráněné hlasové síti. Takovéto nastavení firewallu ale může znamenat významný zásah do zabezpečení chráněné sítě, takže je vhodné jej svěřit někomu dostatečně znalému, a to skutečně až v situaci, kdy ostatní pokusy selžou.