În articolul VoIP – Prezentare, am explicat în linii largi ce este VoIP. Având stabilite noţiunile de bază ale telefoniei VoIP, voi încerca să exemplific puţin câte puţin tehnologia pe care se bazează VoIP.
Pentru a putea fi transferată prin protocolul IP, vocea umană este convertită din semnal analogic în semnal digital, semnal care este transmis sub formă de pachete de date printr-o reţea fizică. Odată ajuns la destinaţie, semnalul provenit de la vocea umană este convertit înapoi în semnal analogic şi redat ca semnal audio printr-un dispozitiv adecvat (telefon, difuzor, căşti, etc.). Acest procedeu a fost descris în articolul VoIP – Prezentare. Ceea ce nu a fost descris, şi reprezintă subiectul acestui articol, este cum pot lua legătura unul cu altul doi corespondenţi. În principiu, între cei doi corespondenţi trebuie să existe, în paralel cu transmisia fluxului de date al vocii, un mecanism prin care fiecare dintre cei doi corespondenţi să fie informat de acţiunile întreprinse de către celălalt. Acţiunile care trebuie să fie controlate prin acest mecanism sunt legate de iniţierea apelului, de sistemul de rutare a fluxului de date şi de controlul apelului. Aceste acţiuni sunt controlate prin protocoale de semnalizare.
În momentul de faţă există şi sunt utilizate intens mai multe protocoale de semnalizare. Unele dintre acestea sunt standardizate de către organizaţii internaţionale precum IETF (Internet Engineering Task Force) sau ITU (International Telecommunication Union), iar altele sunt protocoale proprietare folosite de către aplicaţiile unor companii comerciale. Cele mai cunoscute protocoale de semnalizare sunt:
Session Initiation Protocol (SIP): standard definit de IETF
H.323: standard definit de ITU-T
Megaco şi MGCP: protocoale de control a gateway-urilor multimedia
Skinny Client Control Protocol: protocol al companiei Cisco
MiNET: protocol al companiei Mitel
CorNet-IP: protocol al companiei Siemens
IAX: protocol folosit de către Asterisk, o centrală telefonică software open-source
Skype: protocol folosit de aplicaţia Skype
Dintre acestea, cele mai populare protocoale folosite astăzi sunt SIP şi H.323. Iniţial, H.323 a fost cel mai răspândit şi utilizat protocol, însă datorită problemelor care apar la utilizarea H.323 între diferite reţele (rutare prin NAT, probleme cu firewall-uri, etc.), acest protocol a cedat primul loc protocolului SIP (Session Initiation Protocol). Protocolul SIP se adaptează mult mai bine cerinţelor şi problemelor diferiţilor utilizatori casnici, motiv pentru care se bucură de o răspândire tot mai largă. Protocolul H.323 este folosit acolo unde totul este sub control şi supraveghere, ca de exemplu în cadrul reţelelor de voce a diferitelor companii care furnizează servicii VoIP. SIP este aşadar util utilizatorilor mici şi mijlocii, dar marile companii de telefonie VoIP folosesc H.323 ca protocol de bază. Trebuie spus că în ultimul timp, îmbunătăţirile aduse protocolului H.323 (care de fapt este o umbrelă peste mai multe protocoale ca H.225.0, H.245, H.450, H.235, H.239), reduc problemele întâmpinate de H.323 la traversarea diferitelor reţele, ceea ce ar putea readuce utilizarea acestui protocol în prim plan.
În acest articol mă voi axa pe protocolul SIP, deoarece este mai apropiat de utilizatorii finali. Protocolul H.323 va fi menţionat doar ca o comparaţie cu protocolul SIP.
Protocolul SIP este un protocol la nivel de aplicaţie (conform nivelelor protocolului IP), utilitatea sa fiind de a iniţia, modifica, controla şi termina o sesiune interactivă între doi corespondenţi, sesiune care implică elemente multimedia: voce (audio), imagini (video), comunicare (instant messaging), jocuri online, ş.a. Protocolul SIP furnizează metodele necesare implementării caracteristicilor pe care le oferă reţeaua publică de telefonie (PSTN), ca de exemplu: formarea unui număr, înştiinţarea unui telefon că este sunat, auzirea unui sunet de sunerie sau de ocupat, terminarea unui apel, ş.a. Reţeaua PSTN foloseşte pentru aceste funcţii sistemul de semnalizare SS7 (Signalling System 7), sistem care furnizează servicii avansate de telefonie, dar SIP şi SS7 sunt diferite ca şi concept şi implementare. SS7 este un sistem puternic centralizat, funcţiile de telefonie fiind încorporate şi implementate în interiorul companiilor de telefonie, telefoanele utilizatorilor fiind reduse din punct de vedere tehnic la minim. Pe de altă parte, SIP este un protocol peer-to-peer, ceea ce înseamnă că acest protocol are nevoie de o reţea de intercomunicare foarte simplă (dar puternic scalabilă), „inteligenţa” şi tehnologia necesară funcţionării fiind implementate în punctele extreme ale reţelei, adică în telefoanele IP şi în soft-urile VoIP. Multe din funcţiile SIP sunt implementate în punctele terminale ale comunicaţiei, pe când funcţiile SS7 sunt implementate centralizat, în interiorul reţelei. Această abordare diferită se datorează probabil rădăcinilor protocolului SIP, care pornesc din comunitatea IP şi nu din industria telecomunicaţiilor.
Protocolul SIP, ca şi H.323, se foloseşte în paralel cu alte protocoale, SIP fiind folosit doar în partea de semnalizare a sesiunii de comunicaţie. SIP este purtător pentru protocolul SDP (Session Description Protocol), care este utilizat pentru a descrie conţinutul media al sesiunii (ce port-uri sunt folosite, ce tip de flux va fi transmis, ce codec trebuie folosit, etc). Fluxul de date audio sau video este transmis prin alt protocol (RTP = Real Time Protocol), separat de pachetele SIP. Din unele puncte de vedere, SIP este asemănător cu protocolul HTTP, care este folosit pentru a accesa şi transmite fişiere în World Wide Web. Asemănările majore dintre cele două protocoale sunt: orientarea cerere-răspuns, formatul lizibil pentru om şi complexitatea redusă. Cu toate că concepţia iniţială a SIP a fost orientată spre simplicitate, dezvoltările ulterioare au adus SIP la o complexitate asemănătoare cu cea a H.323. Atât SIP, cât şi H.323, nu sunt limitate la comunicare prin voce, ci pot media orice fel de comunicare (video, text sau alte metode).
Deşi SIP este descris ca un protocol peer-to-peer, în care doi corespondenţi pot comunica fără intervenţia altei infrastructuri, în cazul utilizării SIP ca un serviciu public, de răspândire largă, sunt necesare intervenţiile altor elemente în procesul comunicaţiei. SIP se foloseşte de servere proxy pentru a ruta cererile destinate unui utilizator către locaţia curentă a acestuia. După cum am menţionat în VoIP – Prezentare, un avantaj al telefoniei VoIP îl reprezintă posibilitatea de relocare a unui număr de telefon oriunde în Internet. Dar pentru aceasta trebuie ca numărul relocat să fie făcut public, astfel încât oricine încearcă să îl contacteze, să îl apeleze la locaţia corectă. Pentru aceasta se folosesc servere SIP denumite Registrar, care au scopul de a păstra un registru cu numerele de contact şi locaţia (adresa IP) unde pot fi contactate. Numerele de contact folosite de SIP au forma „Nume utilizator” . Deseori, diferenţa dintre un server proxy şi un server registrar este doar logică, aplicaţiile existând fizic pe acelaşi element de reţea.
Un utilizator SIP trebuie să-şi anunţe prezenţa către un Registrar. Acesta salvează informaţia pereche utilizator – locaţie într-o bază de date, dar pentru un timp limitat (de obicei câteva minute), după care informaţia este ştearsă. Utilizatorului îi revine sarcina de a reîmprospăta această bază de date, dacă doreşte să poată fi contactat de alţi utilizatori. Când un utilizator 1 încearcă să contacteze un utilizator 2, va trimite o cerere către un server SIP proxy, informând despre acţiunea dorită. Serverul proxy interoghează un Registrar despre utilizatorul 2, cu scopul de a afla locaţia curentă a acestuia. Odată ce a aflat locaţia, proxy-ul poate trimite cererea de conectare a utilizatorului 1 către utilizatorul 2.
Un exemplu de conectare între doi utilizatori este prezentat în figura următoare:
De observat la acest exemplu este:
invitaţia de contactare (INVITE) trece prin cel puţin un server proxy, până să ajungă la utilizatorul final (User2).
până la mesajul M11, User1 nu ştie locaţia lui User2, aceasta fiind obţinută cu ajutorul serverelor intermediare de tip proxy.
începând cu M12 (mesajul de confirmare ACK=Acknowledge), User1 poate comunica direct cu User2, fluxul de date (Media Session) fiind stabilit direct între utilizatori.
după M12, fluxul de date este transferat independent de SIP, de obicei folosindu-se protocolul RTP.
În exemplul folosit, User2 are un timp în care sună (180 Ringing M6), după care acceptă apelul prin mesajul M9. Dacă ar fi vrut să respingă acest apel, ar fi răspuns de exemplu cu 486 Busy Here (ocupat).
User2 este cel care va termina apelul prin mesajul M13 (BYE), iar User1 va confirma întreruperea apelului cu M14 (OK).
Codurile mesajelor (200 = OK, 404 = Not found) sunt similare codurilor folosite în protocolul HTTP şi reprezintă rezultatul acţiunii. Din acest exemplu se observă utilitatea protocolului SIP, anume de a iniţia (INVITE), controla (ACK) şi de a termina o sesiune (BYE) care implică transmisia unui flux de date (Media Session). Despre cum este transmis fluxul de date şi ce tehnologii sunt folosite în acest proces, voi vorbi într-un articol următor.
|