analiza comunicarii intr-o retea moderna prin voip

199
Analiza comunicarii intr-o retea moderna prin VoIP Scopul lucrării În această lucrare se va face o introducere în telefonia prin Internet prezentându-se în partea teoretică modul de funcţionare a acestei tehnologi împreună cu avantajele acesteia şi dezavantajele faţă de telefonia clasică pe care cu toţii o cunoaştem. O mare atenţie se va acorda protocolului de semnalizare SIP împreună cu protocoalele adiacente. Prima Parte a lucrării reprezintă partea teoretică a acestei lucrări. Prezintă motivele pentru care se foloseşte această tehnologie, avantajele şi dezavantajele VoIP-ului, problemele care apar în transportul vocii, modul cum se realizează semnalizarea folosindu-se protocolul SIP şi caracteristicile vocii transportate. În a doua parte a lucrării se prezintă o aplicaţie software ce combină convesaţiile de tip text (“chat”) cu conversaţiile de tip voce (“VoIP”). Sunt descrise caracteristicile programului, modul de funcţionare şi modul de utilizare.

Upload: irinarusu

Post on 08-Feb-2016

14 views

Category:

Documents


0 download

DESCRIPTION

Analiza comunicarii intr-o retea moderna prin VoIPÎn această lucrare se va face o introducere în telefonia prin Internet prezentându-se în partea teoretică modul de funcţionare a acestei tehnologi împreună cu avantajele acesteia şi dezavantajele faţă de telefonia clasică pe care cu toţii o cunoaştem. O mare atenţie se va acorda protocolului de semnalizare SIP împreună cu protocoalele adiacente.

TRANSCRIPT

Page 1: Analiza comunicarii intr-o retea moderna prin VoIP

Analiza comunicarii intr-o retea moderna prin VoIP

Scopul lucrării

În această lucrare se va face o introducere în telefonia prin Internet prezentându-se în

partea teoretică modul de funcţionare a acestei tehnologi împreună cu avantajele acesteia şi

dezavantajele faţă de telefonia clasică pe care cu toţii o cunoaştem. O mare atenţie se va

acorda protocolului de semnalizare SIP împreună cu protocoalele adiacente.

Prima Parte a lucrării reprezintă partea teoretică a acestei lucrări. Prezintă motivele

pentru care se foloseşte această tehnologie, avantajele şi dezavantajele VoIP-ului, problemele

care apar în transportul vocii, modul cum se realizează semnalizarea folosindu-se protocolul

SIP şi caracteristicile vocii transportate.

În a doua parte a lucrării se prezintă o aplicaţie software ce combină convesaţiile de tip

text (“chat”) cu conversaţiile de tip voce (“VoIP”). Sunt descrise caracteristicile programului,

modul de funcţionare şi modul de utilizare.

I Introducere în VoIP

1 Prezentare generală

Telefonia prin Internet definită ca şi comunicaţia prin voce în timp real prin reţeaua cu

comutaţie de pachete nu mai este de mult o noutate. Această tehnologie datează încă de pe

vremea zilelor de început ale Internetului. Proiectul “Network Secure Communications” al

agenţiei ARPA (“Advanced Research Projects Agency”) implementa o infrastructură pentru

comunicarea prin voce în timp real încă din decembrie 1973. Protocolul ce stă la baza

implementării, “Network Voice Protocol”, avea ca scop principal să demonstreze că este

posibilă o convorbire între doua persoane prin voce în timp real, de bună calitate, sigură şi cu

Page 2: Analiza comunicarii intr-o retea moderna prin VoIP

o bandă folosită mică. Concluzia proiectului a fost că transmisia împachetată a vocii prezintă

avantaje economice şi poate fi realizată [16].

Totuşi au fost necesari aproape 20 de ani pentru ca această formă de transmisie să fie

apreciată de publicul larg. Echipamentele specializate folosite atunci nu mai sunt necesare: un

calculator personal are în mod obişnuit o placă de sunet, un microfon, boxe. Pe lângă acestea

mai este nevoie şi de un software proiectat pentru transmisia şi recepţia vocii prin reţea care

acum se găseşte foarte uşor. Având în vedere răspândirea calculatoarelor şi a conexiunilor la o

reţea de date pe scară mondială, telefonia peste reţelele de pachete este posibilă pentru un

număr foarte mare de utilizatori.

La prima vedere transmisia vocii prin reţelele de date pare o idee proastă. Deja există

o reţea telefonică ce se bazează pe comutarea de circuite şi care se extinde peste cele şapte

continente şi formează cea mai mare reţea construită vreodată de om. În plus reţele de date

sunt şi nepotrivite pentru transmisia vocii. Aceasta este o aplicaţie în timp real şi necesită

privilegii speciale din partea reţelei deoarece în prezent cele mai multe reţele nu asigură

servicii de timp real. Totuşi VoIP a găsit clienţi deoarece propunea la momentul apariţiei

tarife ce nu se comparau cu cele practicate de furnizorii de telefonie clasică pentru apelurile la

distanţă.

Popularitatea apelurilor aproape gratuite la distanţă a dovedit că şi calitatea proastă

este satisfăcătoare dacă preţul este convenabil. Astfel motto-ul “într-o piaţă competitivă şi

dezvoltată trei lucruri sunt importante: preţul, preţul şi preţul” se adevereşte încă o dată.

În viitor tarifele pentru apelurile la distanţă se vor micşora nu din cauza VoIP, ci din

cauza competiţiei din ce în ce mai acerbe între furnizorii de servicii. Avantajul din punctul de

vedere al tarifelor se va diminua, dar experţii afirmă că această tehnologie are un viitor

strălucitor. Datorită multiplexărilor statistice şi metodelor avansate de compresie, VoIP va fi

prezenta în continuare tarife mai mici decât transmisia vocii prin reţelele bazate pe comutarea

circuitelor. Alt avantaj ce impune această tehnologie pe piaţă îl reprezintă suportul pentru

conferinţe ce permite realizarea unor conversaţii între mai multe persoane într-un mod simplu

şi eficient.

Din punctul de vedere al utilizatorului, principalul avantaj al telefoniei prin Internet îl

reprezintă schema de tarifare. Aici spre deosebire de telefonia clasică nu se ţine cont de

distanţa dintre apelat şi apelant, astfel pentru distanţe medii şi mari telefonia prin Internet este

mai rentabilă decât cea tradiţională. Dar pe lângă preţurile mai reduse, calitatea convorbirii

trebuie să fie cel puţin la aceeaşi nivel cu cea oferită de telefonia clasică şi în plus să se

asigure şi alte serviciile speciale.

Page 3: Analiza comunicarii intr-o retea moderna prin VoIP

Transmisia vocii şi a datelor pe reţeaua cu comutaţie de pachete reprezintă o folosire

mai eficientă a reţelei decât în cazul telefoniei tradiţionale unde o parte din resursele reţelei se

pune la dispoziţia utilizatorului pe tot parcursul convorbirii chiar dacă acesta vorbeşte sau nu.

Telefonia clasică oferă astăzi pe lângă convorbiri de calitate înaltă şi servicii în plus

cum ar fi convorbiri la numere speciale pentru care nu se taxează, transmiterea la alte adrese a

apelurilor primite, restricţionarea unor apeluri, apeluri cu taxă inversă şi altele. O parte din

aceste servicii ar trebui suportate şi de telefonia prin Internet pentru a putea concura cu

adevărat cu telefonia clasică.

Utilizatorii de telefonie prin Internet pot profita şi de natura software a acesteia.

Soluţiile software pot fi uşor extinse şi integrate cu alte servicii şi aplicaţii cum ar fi

“whiteboard”, calendar electronic sau internet propriu-zis. Dezvoltarea de servicii noi necesită

mult mai puţine investiţii în timp şi bani decât dezvoltarea de servicii pentru reţeaua cu

comutaţie de circuite.

O aplicaţie pentru telefonia prin Internet poate fi transmisia în timp real al

facsimilelor. Calitatea transmisiilor faxurilor sunt în mod tipic afectate de întârzierile din

reţea, compatibilitatea maşinilor şi calitatea semnalului analogic. Pentru a trimite faxuri prin o

reţea cu comutaţie de pachete, o interfaţă trebuie să formeze pachete din datele ce trebuiesc

trimise, să se ocupe de conversia protocoalelor de semnalizare şi control şi să asigure livrarea

completă a datelor scanate în ordinea corectă. Pentru această aplicaţie este şi mai critic

fenomenul de pierdere a pachetelor decât pentru aplicaţiile de voce.

Multe alte aplicaţii pot implementa VoIP. De exemplu, mesajele sonore pot fi

pregătite utilizând un telefon şi apoi livrate unei căsuţe poştale ce poate conţine şi voce şi date

folosind Internetul sau serviciile intranet. Documentele ce conţin note audio, fişierele

multimedia, etc. pot uşor ajunge standarde în aplicaţiile tip “Office” în viitorul apropriat.

Principalele justificări pentru dezvoltarea VoIP pot fi concentrate după cum urmează:

Preţ redus. Cum s-a menţionat mai sus, sunt avantaje reale pentru convorbiri pe

distanţe mari, lucru de mare importanţă pentru companiile ce au legături cu alte ţări.

Simplificare. O reţea voce/date permite standardizarea mai uşoară şi reduce necesarul

de echipament.

Aplicaţii avansate. Beneficiile pe termen lung ale VoIP includ şi suportul pentru

aplicaţiile multimedia şi cu multiple întrebuinţări, cu care sistemul telefonic actual nu poate

concura.

Creşterea pieţei VoIP a fost spectaculoasă în ultimii ani şi se crede că această tendinţă

va continua. Totuşi, exista numeroase aspecte ce trebuiesc îmbunătăţite de către dezvoltatorii

Page 4: Analiza comunicarii intr-o retea moderna prin VoIP

de echipamente VoIP cum ar fi calitatea vocii, întârzierea şi pierderea pachetelor dar şi

controlul apelurilor şi managementul sistemelor [13].

Pentru interconectarea cu celelalte reţele de telefonie este folosit un “gateway” care în

română poate fi tradus ca “convertor de interconectare” sau mai simplu poartă. În continuare

am păstrat denumirea de “gateway”. Aici este locul unde semnalul de voce este pachetizat sau

unde pachetele de voce sunt transformate în semnal de voce. În cazul unui apel telefon clasic

– telefon clasic prin reţeaua IP, un “gateway” este un server la care utilizatorul sună aşa cum

ar suna la server-ul unui furnizor de Internet de la modemul calculatorului. Server-ul îi va cere

utilizatorului să introducă informaţiile privitoare la contul folosit şi numărul la care va suna,

apoi va pachetiza semnalul vocal, fiecare pachet având în antet informaţiile necesare care să-l

trimită spre un alt “gateway” unde procesul va fi inversat şi apelul va fi trimis spre un telefon

obişnuit. Pe de altă parte ultimul “gateway” care este localizat cât mai aproape de centrala

apelatului, formează numărul telefonului apelat şi când conexiunea a fost stabilită, începe să

trimită semnalul de voce al apelantului într-un sens şi în celălalt sens vocea pachetizată a

apelatului.

“Gateway-urile” permit ca apelurile de lungă distanţă sau cele internaţionale să “pară”

sistemelor de taxare ale operatorilor PSTN ca şi cum ar fi apeluri locale. Nu toate server-ele

iniţiale trimit apelurile PSTN spre Internet şi nu toate server-ele finale primesc apeluri din

Internet. “Gateway-urile” pot fi conectate la orice fel de reţea IP, şi în cazul furnizorilor de

telefonie IP comerciali acea reţea nu este Internetul public.

Mulţi furnizori, totuşi, Internetul public este folosit pentru o parte sau pentru tot

procesul de rutare a pachetelor de voce şi aceasta are implicaţii în calitatea apelului. Odată

intrate pe Internet, pachetele sunt tratate la fel cu celelalte pachete indiferent dacă conţin text,

grafice sau video. Atunci când ajung la “gateway-ul” final pachetele sunt procesate şi trimise

spre reţeaua PSTN.

Operatorii de “gateway-uri” preferă să plaseze echipamentele în marile centre

metropolitane, unde pot fi contactaţi cei mai mulţi abonaţi PSTN printr-un apel telefonic

local. Dacă un server trebuie să folosească un apel de distanţă mare pentru a stabili apelul

telefonic, avantajele economice reale se pierd. Operatorii de “gateway-uri” finale trebuie să

plătească pentru liniile de acces în reţeaua PSTN, care sunt în general aceleaşi linii cu cele

administrate de furnizorii de Internet, astfel încât utilizatorii să se poată conecta prin

conexiuni “dial-up” la ambele servicii.

Utilizatorii de telefonie IP care sunt conectaţi în permanenţă la o reţea locală nu

apelează la un “gateway”, cel puţin nu în prima fază. În schimb reţeaua lor este conectată

Page 5: Analiza comunicarii intr-o retea moderna prin VoIP

mereu la unul sau mai multe echipamente de acest tip. În reţelele de telefonie IP ce ţin de o

companie sau de un grup restrâns apelurile ar putea să nu treacă niciodată printr-un

“gateway”.

Scenariile de folosire a telefoniei prin reţelele de pachete sunt clasificate după tipul

terminalelor ce se află la capetele unui apel. Deoarece la fiecare capăt al “firului” poate fi un

telefon obişnuit sau un terminal de date, există patru clase generale. În clasificarea ce va urma

abrevierea PC se referă la orice terminal de date capabil să transmită voce prin reţea

(calculatoare personale, telefoane IP, etc.). Scenariile sunt:

Terminalul apelantului: PC, terminalul apelatului: PC. Acestă situaţie este atractivă

pentru utilizatorii privaţi care au deja o conexiune la Internet şi un calculator capabil să

înregistreze şi să redea voce. Pachetul software necesar este gratis. Acest scenariu pur IP va

beneficia de avantajele integrării serviciului de telefonie cu alte servicii Internet, ca WWW,

mesagerie instantanee, e-mail, etc. . Pentru apelant costul convorbirii îl reprezintă costul

conectării la Internet, costul achiziţionării pachetului software care deobicei este zero, plus

costurile aferente deţinerii şi întreţinerii hardware-lui necesar.

Terminalul apelantului: PC, terminalul apelatului: telefon legat la una din reţelele non-

ISDN, ISDN, GSM, …. Acest scenariu reprezintă o extensie a scenariului precedent în care

cei care folosesc un PC ca telefon pot vorbi şi cu utilizatorii reţelei PSTN. Este folosit un

“gateway” ce converteşte apelul prin Internet într-un apel PSTN. Acest gateway trebuie să fie

cât mai aproape de reşedinţa apelatului pentru ca să se minimizeze costurile conexiunii

gateway-apelant. Acest scenariu este comercializat de operatorii de gateway-uri. Pentru

apelant costurile iniţierii convorbirii şi menţinerii acesteia sunt suma costului accesului la

Internet, a costului deţinerii software-lui care este de obicei zero, a costului cerut de

operatorul gateway-ului folosit ce depinde în mare măsură de costul conexiunii gateway-

utilizator apelat şi a costului deţineri şi întreţineri hardware-lui necesar.

Terminalul apelantului: telefon ( non-ISDN, ISDN, GSM), terminalul apelatului:

telefon ( non-ISDN, ISDN, GSM). Aceast scenariu este atractiv pentru utilizatorii care vor să

economisească bani în cazul convorbirilor la mare distanţă şi nu au sau nu doresc să

folosească un PC. De exemplu, utilizatori de telefoane mobile preferă să poarte doar aparatul

propiu-zis fără alte aparate în plus. Apelul trebuie să treacă prin două gateway-uri: PSTN-

Internet şi Internet-PSTN. Această soluţie este comercializată de operatorii de gateway-uri.

Costurile se compun din tarifele percepute de cele două gateway-uri (tariful perceput de

gateway-ul de destinaţie este proporţional cu costul conexiunii gateway-utilizator apelat) şi

din costul conexiunii utilizator apelant-gateway local.

Page 6: Analiza comunicarii intr-o retea moderna prin VoIP

Terminalul apelantului: telefon ( non-ISDN, ISDN, GSM), terminalul apelatului: PC.

Aceasta formă de apel este folositoare utilizatorilor ce vor să vorbească cu utilizatori de

Internet folosind un telefon normal. Costurile conţin tariful gateway-ului folosit şi costul

apelului până la acesta [12].

Indiferent de ce se află între interlocutori, o conversaţie telefonică între două persoane

impune ca fiecare să aibă un microfon şi un difuzor. În telefonul tradiţional, microfonul şi

difuzorul sunt incluse în receptor. În telefonul analogic (pe care toţi îl cunoaştem) semnalul

vocal produs de microfon este trimis direct printr-un fir către centrala locală. Dacă se

foloseşte telefonia prin Internet, este necesar şi aici folosirea unui microfon şi a unui difuzor.

Acestea pot fi microfonul şi boxele livrate împreună cu calculatorul personal sau pot fi incluse

într-o cască ce include elemente de emisie şi recepţie. Dar acestea pot proveni şi de la un

telefon analogic care este legat la o centrală care suportă telefonia prin Internet sau de la un

telefon conectat direct la Internet care cunoaşte tehnicile VoIP. Indiferent de aparatul folosit,

mecanismul unui apel telefonic prin Internet este acelaşi.

Deci ce se întâmplă atunci când dorim să iniţiem un apel? Mai întâi, după ce am tastat

un număr de telefon sau am accesat un link conţinând numele interlocutorului dorit, este

necesar să pornească procesul de semnalizare pentru a determina starea terminalului apelat –

disponibil sau ocupat – şi să stabilească conexiunea. Apoi, când conversaţia a început,

semnalul analogic produs de microfon trebuie codat într-un format digital corespunzător

transmisiei prin reţea cu comutaţie de pachete. Reţeaua însăşi trebuie să asigure că datele

produse de conversaţia în timp real este transportată peste mediul avut la dispoziţie într-o

manieră care produce o calitate acceptabilă a vocii. În final, ar putea fi necesar ca fluxul de

date ce reprezintă vocea utilizatorului să fie convertit de un gateway într-un alt format – ori

din cauza interoperabilităţii cu o altă schemă multimedia, ori destinaţia apelului se află într-o

reţea telefonică tradiţională [11] .

Ţinând cont de ceea ce s-a scris în paragraful de mai sus se poate emite ideea că, în

mare, necesarul tehnologic al unei soluţii VoIP se poate împărţi în patru categorii –

semnalizare – prezentată pe larg în subcapitolul 3, codare – vocea şi codecurile folosite sunt

prezentate în subcapitolul 4, transport – prezentat în continuare şi controlul gateway-ului – nu

este prezentat în această lucrare, amănunte putându-se citi în cartea “IP telephony” [2] .

2. Transportul datelor

Page 7: Analiza comunicarii intr-o retea moderna prin VoIP

Semnalul analogic primit de la microfonul folosit de utilizator este eşantionat după

anumiţi parametri acceptaţi de toţi interlocutorii în faza premergătoare apelului propiu-zis. În

urma acestui proces se obţin datele ce trebuiesc trimise la aparatele ce participă la această

conversaţie. Înainte să prezint protocoalele folosite pentru transferul informaţiei voi menţiona

câteva din problemele care trebuie rezolvate pentru a avea o calitate bună.

2.1 Problemele transportului datelor în timp real

Cel mai răspândit sistem telefonic este astăzi cel analogic. Acest sistem foloseşte

modulaţia semnalelor electrice pe un fir pentru a transporta vocea.

Deşi este o tehnologie veche, transmisia analogică are multe avantaje: este simplă şi

este caracterizată de o întârziere a transmisiei foarte mică deoarece semnalul se propagă pe fir

aproape cu viteza luminii. Este de asemenea şi foarte ieftină atunci când sunt puţini utilizatori

care vorbesc în acelaşi timp, şi când sunt la mică distanţă unii faţă de alţii. Dar şi cea mai

simplă tehnologie analogică necesită o pereche de fire pentru fiecare conversaţie, fapt ce

devine rapid nepractic şi foarte costisitor. O primă îmbunătăţire a acestei tehnologii a fost să

se multiplexeze mai multe conversaţii pe acelaşi fir, folosind diferite frecvenţe de transport

pentru fiecare semnal. Dar şi această versiune are deficienţe:

dacă nu se folosesc centrale (switchboards) manuale, comutaţia automată necesită

numeroase mecanisme electromecanice care sunt costisitoare de cumpărat şi de întreţinut;

zgomotul se adaugă la fiecare etapă a transmisiei din cauză că nu se poate să se

deosebească semnalul original de zgomot şi astfel eliminarea zgomotului este aproape

imposibilă.

Pentru toate aceste motive, multe ţări folosesc o reţea telefonică digitală. În cele mai

multe cazuri linia abonatului rămâne analogică, dar semnalul este convertit la un flux digital

în prima centrală. De obicei, acest semnal are o rată de 64kb/s (un eşantion de 8 biţi la fiecare

125μs).

Acum multe canale de voce pot fi multiplexate pe aceeaşi linie de transmisiune

folosind o tehnologie numită multiplexare cu diviziune în timp (TDM). În acestă tehnologie,

fluxul digital ce reprezintă o singură conversaţie este împărţită în blocuri (de obicei în octeţi,

denumite şi eşantioane), şi blocuri de la mai multe conversaţii sunt întreţesute într-o manieră

round-robin în sloturile temporale ale liniei de transmisiune.

Page 8: Analiza comunicarii intr-o retea moderna prin VoIP

Cu această tehnologie digitală, zgomotul care se amestecă cu semnalul original nu

influeţează calitatea comunicaţiei deoarece semnalele digitale pot fi refăcute. Mai mult,

multiplexarea cu diviziune în timp face posibilă comutaţia digitală. Comutatorul trebuie să

copieze conţinutul unui slot temporal din transmisia de intrare în alt slot temporal din

transmisia de ieşire. De aceea funcţia de comutare poate fi realizată folosind calculatoare.

Totuşi o mică întârziere este introdusă de fiecare comutator deoarece pentru fiecare

conversaţie un slot temporal este disponibil numai la fiecare T microsecunde, şi în unele

cazuri ar putea fi necesar să se aştepte până la T microsecunde pentru a copia conţinutul unui

slot în altul. Tinând cont că T este 125μs în cele mai multe reţele digitale, acest timp este

neglijabil şi întârzierea depinde în principal de timpul de propagare.

Numai în cazul în care doreşte să impună un punct de vedere, un utilizator va vorbi în

mod normal în numai jumătate din timpul total al conversaţiei. Şi cum înainte de a vorbi

trebuie să se gândească puţin va utiliza numai 35% din timpul unei conversaţii normale. Dacă,

acest utilizator, ar putea să apese pe un buton de fiecare dată când are ceva de spus, el va

trimite spre reţea informaţii numai atunci când vorbeşte nu şi când tace. Cum vom vedea mai

târziu, cele mai multe tehnici folosite pentru a transforma vocea în biţi de informaţie (numite

codecuri) au acum posibilitatea să detecteze perioadele de linişte, atunci când utilizatorul nu

vorbeşte. Cu acestă metodă, cunoscută ca detecţia activităţi vocii (“voice activity detection”),

înloc să se transmită informaţii, voce sau linişte la fiecare 125 microsecunde, cum se face

astăzi, se poate transmite informaţii doar atunci când trebuie, în mod asincron.

Când este vorba de multiplexarea a mai multor conversaţii pe aceiaşi linie de

transmisiune, în loc să se ocupe banda tot timpul, această bandă poate fi folosită de altcineva

atunci când un anumit utilizator tace. Acest mod de multiplexare este cunoscută ca

multiplexare dinamică (sau statistică).

Principalul avantaj al acestei multiplexări este că permite ca banda totală a unei linii

poate fi folosită mult mai eficient, în special atunci când sunt multe conversaţii pe aceiaşi

linie. Dar multiplexarea dinamică introduce incertitudinea în reţea. Tocmai am spus că în

cazul TDM, o întârziere de până la T microsecunde poate fi introdusă la fiecare comutator;

această întârziere este constantă pe parcursul întregii conversaţii. Situaţia este total diferită la

multiplexarea dinamică: dacă linia de transmisiune este goală atunci când trebuie trimise date

prin reţea, acestea vor trece imediat. Dacă, pe de altă parte, linia este ocupată, datele trebuie să

aştepte până când va exista posibilitatea de a le trimite.

Page 9: Analiza comunicarii intr-o retea moderna prin VoIP

Acestă întârziere variabilă se numeşte jitter şi trebuie corectată de partea ce

recepţionează datele. Altfel, dacă bucăţile de date sunt redate imediat cum sunt primite, cea ce

a spus transmiţătorul mesajului poate devenii inteligibil.

Următoarea generaţie de telefonie va utiliza probabil multiplexarea dinamică şi va

mixa voce şi date pe aceeaşi linie de transmisiune. Mai multe tehnologi sunt bune candidate

pentru aceasta, ca de exemplu voce peste “Frame Relay”, voce peste ATM şi bineînţeles voce

peste IP. Se crede că voce peste IP este cea mai flexibilă soluţie deoarece nu necesită

stabilirea de canale virtuale între dispozitivele care vor comunica. Aceasta este scalabilă mai

mult decât ATM sau Frame Relay în termeni de conectivitate [2].

VoIP se confruntă cu destul de multe probleme tehnice; deoarece reţelele IP existente

nu au fost proiectate să servească aplicaţiile în timp real adică aplicaţii care au limite impuse

privind timpul de răspuns. Cerinţele pentru voce sunt dure: pentru o comunicaţie în timp real

de calitate bună este necesară o întârziere maximă dus-întors de 200 – 300 ms adică pe un

sens întârzierea nu trebuie să depăşească 100 – 150 ms. Pentru a compensa jitterul este folosit

la recepţie un buffer; lungimea acestui buffer influenţează şi el întârzierea dus-întors. De

aceea jitterul trebuie să fie mic astfel încât redarea sunetului la recepţie să rămână lină.

Pierderea pachetelor trebuie şi ea să fie mică, deoarece fluxul de voce este sensibil la

pierderea de pachete.( Pierderea unor pachete duce la pierderea unor bucăţi din semnalul

primit de la microfonului transmiţătorului şi astfel redarea la recepţie se face cu întreruperi.)

Din păcate pierderea de pachete în Internet este corelată deoarece pierderile apar în timpul

congestiilor şi aceste pierderi continue de pachete reduc substanţial inteligibilitatea vocii.

Voi face în continuare o prezentare mai detaliată a principalelor probleme:

pierderea pachetelor;

întârzierile;

jitterul.

2.1.1 Pierderea pachetelor

Este un lucru comun în reţelele cu comutaţie de pachete, deoarece pe măsură ce rutele

devin congestionate, cozile de aşteptare în elementele de rutare devin neîncăpătoare şi nu va

mai fi loc pentru alte pachete şi acestea vor fi aruncate. Pierderea de pachete poate duce la

degradarea calităţii vocii. Fiecare pachet conţine între 20 – 80ms, în funcţie de codecul folosit,

din semnalul captat de microfon. Când sunt doar câteva pachete pierdute, creierul uman este

capabil să reconstruiască zonele pierdute, dar dacă numărul pachetelor este mare vocea redată

Page 10: Analiza comunicarii intr-o retea moderna prin VoIP

este neinteligibilă. În continuare sunt prezentate tehnicile prin care se poate rezolva problema

pierderii pachetelor:

Îmbunătăţirea reţelei. Deoarece fenomenul de aruncare a pachetelor este strâns legat

de banda insuficientă a conexiunilor şi de viteza de procesare a elementelor de rutare,

îmbunătăţirea reţelei poate fi o soluţie pentru această problemă.

Înlocuirea cu pauze. La destinaţie conţinutul pachetelor este redat, apărând probleme

atunci când pachetele a căror informaţie trebuia redată nu mai sosesc fiind întârziate sau

pierdute. Înlocuirea cu pauze rezolvă această problemă prin redarea de linişte în locul

informaţiei din pachetele pierdute. Din păcate, dacă rata de pierdere a pachetelor este prea

mare sau pachetele sunt prea mari (adică conţin fragmente mari de semnalul captat) în

semnalul redat apar frânturi din semnalul original, lucru ce deteriorează semnificativ calitatea

vocii.

Înlocuirea cu zgomot. Această metodă înlocuieşte zonele fără informaţie cu zgomot.

Studiile arată că se obţin performanţe mai bune decât metoda precedentă.

Repetarea pachetelor. Redarea informaţiei din ultimul pachet recepţionat corect, atunci

când un pachet lipseşte este o altă metodă de a recupera din pagubele produse de pierderea de

pachete.

Interpolarea pachetelor. Foloseşte caracteristicile vocii din pachetele învecinate pentru

a estima informaţia audio ce s-a pierdut. Sunt câteva tehnici de interpolare şi studiile în

această privinţă au arătat că această metodă poate avea performanţe mai bune decât cele

menţionate mai sus.

Întreţesarea eşantioanelor audio pe mai multe pachete(“frame interleaving”). În

reţelele cu comutaţie de pachete fenomenul de pierdere a pachetelor este corelat şi astfel nu

numai un pachet este pierdut în cazul congestiei ci mai multe pachete consecutive. Acest fapt

degradează calitatea vocii considerabil. Întreţeserea eşantioanelor audio pe mai multe pachete

poate reduce acest efect. Dezavantajul multor eşantioane pentru a le întreţese.

Transmisie redundantă. Informaţia dintr-un pachet este în mod redundant transmisă în

pachete consecutive. În cazul în care pachetul original este pierdut, acesta poate fi refăcut din

pachetele următoare.

2.1.2 Întârzierea pachetelor

Întârzierile de lungă durată provoacă intrarea participanţilor la o conversaţie într-un

mod de comunicaţie half-duplex, adică unul dintre ei vorbeşte şi ceilalţi aşteaptă un timp

pentru ca să fie siguri că vorbitorul a terminat ce are de zis. Dacă timpul de aşteptare este ales

Page 11: Analiza comunicarii intr-o retea moderna prin VoIP

în mod eronat, pot exista doi sau mai mulţi vorbitori în acealşi timp. Întârzierile de lungă

durată este un efect păgubos şi din cauza ecoului care face ca vorbitorul să şi audă propria sa

voce după un timp după ce a terminat de vorbit. Cerinţele exacte în privinţa întârzieri nu pot fi

date din cauză că este un fenomen subiectiv, dar există anumite limite. Se spune că o redare a

vocii interlocutorului cu 150ms decalată faţă de momentul când vorbeşte, este aceptabilă

pentru cele mai multe aplicaţii. Pe măsură ce întârzierea creşte interlocutorii încep să

vorbească în acelaşi timp sau se confruntă cu un ecou deranjant, adică calitatea convorbirii

este foarte scăzută. Totuşi, întârzieri între 150 şi 400ms sunt acceptate pentru convorbiri între

persoane aflate la mare distanţă. Întârzierea este una din cele mai mari probleme cu care se

confruntă telefonia prin Internet. În reţelele cu comutaţie de pachete factorii cauzatori sunt:

Întârzierea produsă de codecuri. Funcţia principală a unui codec este de a digitaliza

semnalul vocal analog, dar şi de-a realiza o compresie pentru a reduce necesarul de bandă.

Ratele mari de compresie pot fi obţinute cu ajutorul unor algoritmi ce au ca dezavantaj timpul

de procesare destul de mare. Întârzierea este compusă din timpul necesar prelucrării

eşantioanelor ce intră într-un singur pachet şi din timpul necesar observării eşantioanelor

următoare pentru a exploata anumite corelaţii ce ar putea apare. Timpul necesar decodării este

de obicei jumate din timpul necesar codării deci la recepţie întârzierea produsă este mai mică

decât cea produsă la transmisie.

Întârzierea din cauza transmisiei. Reprezintă timpul necesar pentru a pune un pachet

pe linia de transmisiune şi este determinat de viteza liniei şi de mărimea pachetului.

Întârzierile produse de cozile de aşteptare. Acest timp pierdut reprezintă problema cea

mai important introdusă de reţelele cu comutaţie de pachete. Depinde de numărul de pachete

ce aşteaptă în coadă şi variază enorm de la un pachet la altul. Întârzierea produsă de cozile de

aşteptare este principala problemă pentru aplicaţiile în timp real deoarece este o sursă pentru

jitter.

Întârzierile cauzate de propagare. Reprezintă timpul necesar pentru ca semnalul să

ajungă de la un punct al reţelei la celălalt şi este determinată de viteza lumini. Acest timp

devine important dacă distanţele între puncte este mare cum ar fi căzut legăturilor prin satelit.

2.1.3 Jitterul

Jitterul reprezintă variaţia duratei de timp între pachetele primite la recepţie. Mai poate

fi definit ca variaţia întârzierilor la care sunt supuse pachetelor. Acest fenomen este o

problemă importantă ce trebuie depăşită în comunicaţiile prin voce. Jitterul apare mai ales din

cauza întârzierilor produse de cozile de aşteptare, dar poate proveni si din faptul că pachetele

Page 12: Analiza comunicarii intr-o retea moderna prin VoIP

pot parcurge trasee diferite. Pentru a-l compensa, la recepţie, se foloseşte un buffer în care

sunt ţinute primele pachetele sosite pentru o durată de timp definită înainte ca informaţia

conţinută să fie redată. Întârzierea produsă de acest buffer se adaugă la întârzierea totală deci

pentru a avea o comunicaţie de calitate trebuie să avem de asemenea un jitter mic. În mod

ideal, dimensiunea buffer-ului este aleasă în mod dinamic în concordanţă cu situaţia reţelei.

De obicei dimensiunea buffer-ului este de 50 – 100ms.

În figura I.1 este prezentată o situaţie ce s-ar putea întâmpla din cauza jitter-ului. O

frază rostită normal ar putea ajunge la celălalt capăt cu întreruperi.

Figura I.1 Jitter-ul

2.2 RTP (RFC 1889)

Am văzut că atunci când o reţea cu multiplexare dinamică este folosită pentru

transmisia datelor în timp real, ca de exemplu vocea, jitterul trebuie luat în consideraţie de

către receptor. Ruterele sunt exemple bune pentru dispozitive ce realizează multiplexarea

dinamică şi de aceea în tehnologiile voce şi video peste IP trebuie să fie luat în considerare

problemele cauzate de jitter.

Grupul pentru transportul informaţiilor audio şi video din cadrul IETF a început lucrul

la un protocol de transport în timp real în 1993. Scopul acestui protocol este de a oferi servicii

cerute de conferinţele multimedia interactive, ca sincronizarea redării informaţiilor primite,

demultiplexare, identificarea tipului de mediu folosit pentru transmisie şi identificarea

participanţilor activi. Totuşi, nu numai aplicaţiile pentru conferinţe multimedia pot beneficia

de RTP, ci şi stocarea de date continue, distribuţia interactivă de date cu formate multimedia,

Page 13: Analiza comunicarii intr-o retea moderna prin VoIP

simulări realizate în paralel pe mai multe terminale şi aplicaţiile de măsură şi control pot

profita de avantajele aduse de RTP.

Scopul proiectării RTP a fost obţinerea unui protocol cu următoarele caracteristici:

Flexibil. RTP nu trebuie să fie limitat numai pentru conferinţe audio şi video;

Extensibil. RTP trebuie să permită implementarea de noi servicii;

Independent faţă de protocoalele inferioare. RTP ar trebui să lucreze cu UDP, TCP,

ATM şi altele;

Capabil să combine mai multe fluxuri media într-unul singur şi să-l transmită cu alt tip

de codare;

Eficient din punct de vedere al benzii. Dimensiunea antetului în cazul pachetelor mici

de voce poate fi chiar cât dimensiunea informaţiilor propriu-zise. De exemplu pentru

pachetele ce conţin 65ms de voce codată de o procedură ce oferă 4800bit/s dimensiunea

informaţiei transportate este 39 de octeţi. Ipv4 introduce 20 de octeţi în antet, UDP[3] încă 8

octeţi şi nivelul de transport alţi cel puţin 8 octeţi. Cu antetul RTP de 4 – 8 octeţi dimensiunea

antetului totală poate ajunge la 40 – 44 de octeţi. Acest fapt poate sta în calea folosirii RTP pe

conexiuni de mică viteză.

Internaţional. Protocolul trebuie să includă codări de tipul legea A, legea μ dar şi seturi

de caractere non ASCII.

Eficient din punct de vedere al procesării. Şi cele mai mari intervale de timp conţinute

în pachete creează o rată de 40 de pachete pe secundă pentru un singur canal de voce. La

acesta valoare procesarea pachetelor poate deveni o problemă.

Implementabil imediat. Protocolul poate să nu aibă o viaţă îndelungată şi de aceea

trebuie să fie posibil să fie implementat având la dispoziţie software-ul şi hardware-ul curent.

Protocolul pentru transportul în timp real (RTP) a fost proiectat pentru a permite

receptoarelor compensarea problemelor cauzate de jitter şi sosirea într-o altă ordine a

pachetelor decât cea în care au fost transmise. RTP poate fi folosit pentru orice flux de date în

timp real, de exemplu pentru voce şi pentru video. RTP include o modalitate de a identifica

pachetele IP ce transportă informaţii isocrone prin următoarele informaţi incluse în antet:

Informaţii referitoare la tipul datelor transportate;

Informaţii referitoare la tipul la care au fost emise (timestamps);

Numere de secvenţă.

Un alt protocol, RTCP, ce este în mod obişnuit folosit împreună cu RTP, permite

ajungerea la transmiţător a rapoartelor privind calitatea transmisiei (mărimea jitterului,

Page 14: Analiza comunicarii intr-o retea moderna prin VoIP

numărul de pachete pierdute, etc.) şi poate transporta câteva informaţii privind identitatea

participanţilor.

RTP şi RTCP nu au nici-o influenţă asupra comportării reţelei IP; acestea nu

controlează în nici-un fel calitatea seviciului. Reţeaua poate elimina, întârzia pachetele RTP

sau schimba ordinea acestora, ca orice pachet IP. RTP şi RTCP doar permit receptoarelor să

aibă o funcţionare corectă chiar dacă reţeaua produce jitter prin folosirea de buffere şi să

deţină mai multe informaţii despre reţea pentru ca măsurile de corectare corespunzătoare să

fie aplicate (redundanţă, codecuri cu rată scăzută, etc.).

Aceste două protocoale sunt proiectate de a putea fi folosite peste orice protocol de

transport. Dar de obicei se folosesc peste UDP deoarece schema de retransmisi a TCP nu este

adaptată pentru datele ce trebuiesc transportate cu întârzieri foarte mici, cum sunt

comunicaţiile interactive. În acest caz RTP este asociat în mod tradiţional unui port UDP par

iar RTCP următorului port UDP impar.

Aşa cum se poate citi din RFC-ul 1889, RTP este un protocol ce asigură servicii de

transport capăt la capăt al unor date cu caracteristici de timp real, cum ar fi audio sau video

facând parte dintr-o comunicaţie interactivă. Printre aceste servicii sunt incluse indentificarea

tipului datelor transportate, numerotarea pachetelor, ştampilarea cu informaţii de timp a

pachetelor şi monitorizarea livrării.

Aplicaţiile folosesc în mod obişnuit RTP peste UDP pentru a beneficia de serviciile

sale de multiplexare şi de verificare a corectitudini informaţiilor (prin suma de verificare).

RTP permite şi transferul datelor către destinaţii multiple folosind distribuţia de tip multicast

dacă această este furnizată de către reţeaua folosită. Amintesc din nou că acest protocol nu

furnizează nici un mecanism care să asigure transportul la timp al datelor sau alte garanţii de

calitate a serviciilor, dar se bazează pe serviciile nivelurilor inferioare să asigure aceste

garanţii. Acesta nu garantează transportul sau transportul în secvenţă şi nici nu presupune că

reţeaua folsită este sigură şi livrează pachetele în secvenţa în care au fost transmise. Numerele

de secvenţă incluse în RTP permit receptorului să reconstruiască secvenţa în care a transmis

transmiţătorul.

Acest protocol este de multe ori integrat în procesele desfăşurate de către o aplicaţie

decât să fie implementat ca un strat separat. În timpul creări protocolului nu s-au specificat

toate elementele pentru a se permite modificările. Pe lângă RTP o implementare completă

pentru o anumită aplicaţie necesită specificarea modului cum un tip de date este transportat de

acest protocol dar şi modul cum se identifică acest tip de date şi cum se codează acesta.

Voi prezenta în continuare câteva utilizări importante ale câmpurilor RTP:

Page 15: Analiza comunicarii intr-o retea moderna prin VoIP

- numărul de secvenţă şi informaţia de timp. Fiecare pachet RTP conţine un număr de

secvenţă şi o informaţie de timp. În funcţie de aplicaţie, acestea pot fi folosite în mai multe

moduri. O aplicaţie video, de exemplu, poate imediat deduce din informaţia de timp pentru ce

zonă din ecran este informaţia dintr-un anumit pachet. Chiar dacă nu a primit pachetele care

erau înaintea acestuia din cauza pierderilor sau a întârzierilor, aplicaţia poate folosi pachetul

pentru a construi imaginea ce o descrie.

O aplicaţie audio nu poate folosi această informaţie în acest mod, deoarece nu se poate

înţelege vocea cu porţiuni lipsă sau chiar cu porţiuni care nu sunt în secvenţa în care au fost

înregistrate, dar poate folosi numărul de secvenţă şi informaţia de timp pentru a controla un

buffer de recepţie. De exemplu, o aplicaţie poate decide că va păstra, într-un buffer, 100ms de

voce înainte de a le reda. De fiecare dată când un nou pachet RTP va sosi, el este plasat în

buffer în poziţia corespunzătoare în funcţie de numărul de secvenţă. Dacă un pachet nu ajunge

la timp şi încă lipseşte atunci când ar trebui redat, aplicaţia poate să copieze informaţia din

ultimul pachet care tocmai a fost redat şi să o repete destul timp pentru ca să se ajungă la o

valoare a timpului redării echivalentă cu informaţia de timp din următorul pachet primit, sau

să folosească o schemă de interpolare definiă de codecul folosit.

- tipul informaţiei transportate. Formatul informaţiei de timp real transportate este

nespecificată în RFC 1889 şi trebuie definită ori de aplicaţie ori de profilul RTP folosit.

Pentru a distinge dintre un format particular şi altul fără a analiza conţinutul pachetului,

antetul RTP conţine un identificator al tipului informaţiei.

În continuare voi prezenta câteva exemple de folosire a RTP-ului:

- O simpla audio conferinţă. Un grup de lucru se întâlneşte pentru a discuta folosind

serviciile multicast ale Internetului pentru comunicaţii de voce. Printr-un mecanism oarecare

de alocare se obţine o adresă multicast şi o pereche de porturi. Un port este folosit pentru

datele audio şi celălalt este folosit pentru pachetele de control (RTCP). Adresa de multicast şi

porturile sunt distribuite participanţilor doriţi. Dacă se doreşte ca această conferinţă să nu fie

ascultată şi de alţi participanţi nedoriţi, pachetele de date şi de control pot fi codate cu

mecanismele prezentate în RFC-ul 1889 subcapitolul 9.1, caz în care o cheie de codare trebuie

generată şi distribuită participanţilor doriţi.

Aplicaţiile de audio conferinţă folosit de fiecare participant trimite date audio în bucăţi

mici, de exemplu, de durată 20ms. Antetul RTP şi datele sunt încapsulate într-un pachet UDP.

Antetul RTP indică tipul codări (ca PCM, ADPCM sau LPC) datelor din fiecare pachet pentru

ca receptori să poate cunoaşte tipul datelor primite iar transmiţătorii să poată modifica tipul

Page 16: Analiza comunicarii intr-o retea moderna prin VoIP

codării în timpul conferinţei pentru, de exemplu, a permite recepţia de către un nou participant

ce este conectat printr-o legătură cu bandă mică sau pentru a reacţiona la congestia reţelei.

Internetul, ca orice altă reţea de pachete, ocazional pierde şi reordonează pachetele şi

le întârzie cu o durată variabilă de timp. Pentru a învinge aceste impedimente, antetul RTP

conţine informaţii de timp şi un număr de secvenţă care permit receptorilor să reconstruiască

secvenţa înregistrată de sursă, pentru ca în acest exemplu, porţiunile primite să fie redate la

fiecare 20 de milisecunde. Această reconstrucţie este aplicată pentru fiecare sursă de RTP ce

ia parte la această conferinţă. Numărul de secvenţă poate fi de altfel folosit şi la determinarea

de către receptor a numărului de pachete ce au fost pierdute.

Deoarece membrii grupului pot intra sau părăsi conferinţa în timpul conferinţei, este

necesar să se ştie cine participă la un moment dat şi cât de bine se recepţionează datele audio.

Pentru acest scop fiecare instanţă a aplicaţie audio din conferinţă, în mod periodic, trimite în

mod multicast un raport de recepţie plus numele persoanei care foloseşte această instanţă spre

portul RTCP. Raportul indică cât de bine este recepţionat vorbitorul curent şi poate fi folosit

pentru a controla codecurile adaptive. Pe lângă numele utilizatorului şi alte informaţii de

indentificare pot fi incluse. O locaţie trimite pachetul RTCP BYE când părăseşte conferinţa.

- Conferinţă audio şi video. Dacă se folosesc în aceeaşi conferinţă ambele modalităţi

(audio şi video) acestea sunt transmise ca două sesiuni RTP separate. Pachetele sunt transmise

folosind pentru fiecare modalitate două perechi de porturi diferite şi/sau adrese de multicast.

Nu există nici-o legătură la nivelul RTP între fluxurile audio şi video, cu excepţia că

utilizatorul ce participă în ambele sesiuni trebuie să utilizeze acelaşi nume în pachetele RTCP

pentru ca sesiunile să poată fi asociate.

O motivare pentru această separare o reprezintă posibilitatea ce se acordă

participanţilor să aleagă modul de primire a datelor (numai audio, numai video sau ambele).

În ciuda separării, sicronizarea redării fluxurilor audio şi video poate fi realizată folosind

informaţiile de timp transportate în pachetele RTCP pentru cele două sesiuni.

- Mixere şi translatoare. Până acum, în exemplele prezentate s-a presupus că toţi

participanţi doresc să primească fluxurile în acelaşi format. Totuşi, acest lucru nu se poate

realiza întotdeauna. Să considerăm cazul în care participanţii dintr-o zonă sunt legaţi printr-o

conexiune de viteză mică de ceilalţi participanţi care se bucură de conexiuni de mare viteză.

În loc să se impună tuturor folosirea unui codec ce produce fluxuri de calitate şi bandă

scăzută, un releu la nivelul RTP-ului numit mixer poate fi plasat lângă zona cu bandă limitată.

Acesta resincronizează pachetele audio primite, mixează fluxurile într-un singur flux, codează

datele audio din acesta folosind un codec de bandă mai mică şi trimite pachetele ce conţine

Page 17: Analiza comunicarii intr-o retea moderna prin VoIP

datele rezultate pe link-ul ce duce spre zona ce o deserveşte mixerul. Aceste pachete pot fi

trimise în mod unicast spre un singur recipient sau în mod multicast pe mai multe adrese spre

recipiente multiple. Antetul RTP include un mijloc pentru ca mixerul să identifice sursele ce

au contribuit la un pachet mixat, astfel rapotându-se corect vorbitorul curent la receptor.

Câţiva participanţi la conferinţă ar putea fi conectaţi printr-o conexiune de mare viteză

dar ar putea de asemenea să nu fie direct accesibili prin multicast prin IP. De exemplu, aceştia

ar putea fi în spatele unui firewall la nivel aplicaţie care elimină toate pachetel IP. Pentru

aceste staţii, folosirea unui mixer nu ar fi necesară, dar trebuie folosit alt obiect ce lucrează la

nivelul RTP-ului, numit translator. Doi translatori sunt instalaţi de fiecare parte a firewall-

ului, cel din exterior trimiţând pachetele de multicast primite printr-o conexiune sigură, spre

translatorul din interior. Acesta din urmă trimite pachetele din interior în mod multicast spre

grupul ce participă la conferinţă.

Mixerele şi translatorii pot fi proiectaţi pentru o gamă largă de scopuri. Un exemplu ar

fi un mixer care modifică imaginile primite prin mai multe fluxuri combinându-le într-un

singur flux video pentru a crea o imagine în care toţi participanţii sunt prezenţi.

Înainte de a prezenta câmpurile ce sunt prezente într-un pachet RTP câteva definiţii

sunt necesare:

Sesiune RTP. O sesiune RTP reprezintă un grup de participanţi ce comunică prin RTP.

Fiecare participant foloseşte două adrese de transport (în cazul IP, de exemplu, două porturi

pe calculatorul local) pentru fiecare sesiune: una pentru fluxul RTP şi cealaltă pentru

rapoartele RTCP. Dacă se foloseşte o transmisie multicast, toţi participanţii folosesc aceeaşi

pereche de adrese multicast de nivel 4 (de transport). Fluxurile media din aceeaşi sesiune ar

trebui să folosească acelaşi canal RTCP.

Sursă de sincronizare SSRC. Sursa unui flux RTP, identificată printr-un câmp de 32 de

biţi din antetul RTP. Toate pachetele RTP cu un SSRC comun au aceeaşi referinţă de timp şi

de sincronizare, deci un receptor grupează pachetele dupa sursa de sincronizare în vederea

sincronizării. Exemplele de surse includ transmiţătorul unui flux de pachete obţinute de la o

sursă de semnal cum ar fi un microfon sau o cameră, sau un mixer RTP. O sursă de

sincronizare îşi poate schimba formatul datelor trimise în timp. Identificatorul SSRC este ales

în mod aleator astfel încât această valoare să fie unică într-o sesiune RTP. Un participant nu

trebuie să folosescă acelaşi identificator pentru toate sesiunile dintr-o sesiune multimedia;

legătura dintre aceste sesiuni se face prin RTCP. Dacă un participant generează mai multe

fluxuri într-o sesiune RTP, cum ar fi fluxurile de la mai multe camere video, fiecare dintre

acestea trebuie identificat prntr-un SSRC diferit.

Page 18: Analiza comunicarii intr-o retea moderna prin VoIP

Sursă contribuitoare CSRC. Când un flux RTP este rezultatul unei combinări (mixări)

a mai multe fluxuri, lista de SSRC-uri a fiecărui flux folosit este adăugată în antetul RTP-ului

al fluxului rezultat ca CSRC. Acest flux are propriul lui SSRC.

Formatul NTP. O modalitate standard de a exprima (scrie) informaţia de timp din

fiecare pachet, prin scrierea numărului de secunde trecute din 1 ianuarie 1900, ora 0, cu

ajutorul a 32 de biţi pentru partea întreagă şi 32 de biţi pentru partea zecimală (în cazul părţii

zecimale numărul este exprimat în ½^32 secunde). O formă mai compactă există cu numai 16

biţi pentru partea întreagă si 16 pentru partea zecimală. Primi 16 biţi ce s-au omis pot fi

obţinuţi din ziua curentă, iar partea zecimală este pur şi simplu truncată la partea cea mai

semnificativă.

Pachetul RTP conţine întotdeauna toate câmpurile până la lista CSRC. Această listă

există numai după ce pachetul trece de un mixer. Câmpurile sunt:

2 biţi sunt rezervaţi pentru versiunea folosită de RTP.

Un bit ce indică adăugarea de biţi în plus din cosiderente de aliniere. Dacă pachetul a

fost modificat (P=1), atunci ultimul octet al câmpului de indică tipul datelor transportate

indică mai precis câţi octeţi au fost adăugaţi.

Un bit de extensie X indică prezenţa extensiilor după eventuala listă CSRC a antetului

fix. Extensiile au forma prezentată în figura I.2.

Figura I.2 Extensia antetului

Câmpul de 4 biţi CC indică numărul de CSRC-uri ce urmează după antetul fix.

Bit de marcaj (M). Interpretarea acestui bit este definită de un alt document ce vine

odată cu aplicaţia folosită şi numit profil RTP. A fost pus cu intenţia pentru a permite

semnalizarea unor evenimente importante cum ar fi marginile unui cadru în fluxul de pachete.

Acel document ar putea defini şi alţi biţi de marcaj sau specifica că nu există bit de marcaj

prin modificarea numărului de biţi din câmpul tipul informaţiei transportate (sarcini).

Tipul informaţiei transportate(PT). Are 7 biţi şi identifică forma informaţiei

transportate şi determină interpretarea acesteia de către aplicaţie. Documentul amintit mai sus

Page 19: Analiza comunicarii intr-o retea moderna prin VoIP

specifică o corespondenţă statică între coduri de identificare a tipului informaţiei şi diferite

formate de date. În plus se pot defini alte corespondenţe dinamice prin mijloace non-RTP. Un

emitor RTP trimite un singur identificator de sarcină la un moment dat; acest câmp nu este

destinat pentru multiplexarea a unor fluxuri media diferite. Figura I.3 prezintă o parte din

identificatori statici.

Figura I.3 Identificatori statici

Numărul de secvenţă (16 biţi). Numărul de secvenţă este incrementat pentru fiecare

pachet RTP trimis şi poate fi folosit de receptor pentru a detecta pierderea pachetelor şi a

reface ordinea pachetelor. Valoarea iniţială a numărului este aleatorie pentru a face atacurile

asupra fluxurilor codate mai dificile.

Figura I.4 Pachetul RTP

Page 20: Analiza comunicarii intr-o retea moderna prin VoIP

Informaţia de timp (32 de biţi). Aceasta reflectă momentul când s-a făcut eşantionarea

primului octet din datele conţinute în pachet. Această valoare trebuie luată de la un ceas care

este incrementat monoton şi linear în timp pentru a permite sincronizarea şi calculul jitterului.

Rezoluţia ceasului trebuie să fie suficientă pentru acurateţea dorită a sincronizării şi pentru a

măsura jitterul pachetelor la sosire. Frecvenţa ceasului este dependentă de formatul

informaţiei transportate şi este specificat în mod static în documentele ce definesc profilele şi

corespondenţa acestora cu coduri sau paoate fi definit în mod dinamic pentru formate definite

prin mijloace non-RTP. Dacă pachetele RTP sunt generate periodic, se va folosi valoarea

ceasului de eşantionare, nu valoarea ceasului sistemului. Ca exemplu, pentru flux audio cu

rată fixă, ceasul folosit va fi incrementat cu unu pentru fiecare perioadă de eşantionare. Dacă

o aplicaţie audio citeşte blocuri acoperind 160 de perioade de eşantionare de la dispozitivulde

înregistrare, valoarea informaţiei de timp va fi mărită cu 160 pentru fiecare astfel de blocuri,

indiferent dacă vor fi transmise sau elimitate din cauză că reprezintă perioade de linişte.

Valoarea iniţială a informaţiei de timp este una aleatorie, la fel ca numărul de secvenţă.

Câteva pachete RTP pot avea valori ale informaţiei de timp egale dacă aceste sunt (teoretic)

sunt generate în acelaşi timp, cum ar fi pachetele ce aparţin aceluiaşi cadru video. Pachetele

consecutive pot fi marcate cu valori nemonotone dacă datele sunt transmise în altă ordine

decât cea în care au fost înregistrate şi eşantionate, ca în cazul cadrelor video interpolate

MPEG (numerele de secvenţă sunt în continuare monotone).

SSRC (32 de biţi). Câpul SSRC identifică sursa după care se face sincronizarea. Acest

identificator este ales în mod aleator, cu intenţia ca să nu existe doua surse de sincronizare în

aceeaşi sesiune RTP cu acelaşi SSRC. Cu toate că probabilitatea ca acest lucru să se întâmple

este mică, toate aplicaţiile RTP trebuie să fie pregătite să detecteze şi să rezolva aceste

coliziuni. Dacă o sursă îşi schimbă adresa de transport sursă, trebuie să şi schimbe şi SSRC-ul

pentru a evita apariţia confuziilor.

Lista CSRC (între 0 şi 15 elemente de 32 de biţi fiecare). Acestă listă identifică sursele

ce au contribuit la datele ce sunt conţinute de pachet. Numărul surselor este dat de câmpul

CC. Dacă sunt mai mult de 15 surse, numai 15 pot fi identificate. Identificatorii CSRC sunt

inseraţi de mixere, folosind identificatorii SSRC ai surselor contribuitoare. De exemplu,

pentru pachetele audio identificatorii SSRC ai surselor care au fost mixate împreună pentru a

crea un pachet sunt listate în cadul câmpului CSRC, permiţând astfel indicarea vorbitorului la

recepţie în mod corect.

Pentru un studiu aprofundat se pot consulta următoarele materiale RFC 1889[4],

Reţele de calculatoare [1] şi IP Telephony [2]

Page 21: Analiza comunicarii intr-o retea moderna prin VoIP

2.3 RTCP (RFC 1889)

Protocolul pentru controlul RTP-ului este bazat pe transmisia periodică a pachetelor de

control către toţi participanţii unei sesiuni particulare. Pachetele de control sunt distribuite în

acelaşi mod ca şi pachetele de date. Fiecare pachet RTCP include un raport al transmiţătorului

şi/sau un raport al receptorului care prezintă statistici cum ar fi numărul de pachete trimise,

numărul de pachete pierdute, jitterul, întârzierea fată de ultimul raport, timpul de emisie al

ultimului raport, etc, utile pentru aplicaţiilor. RTCP are patru funcţii separate:

Funcţia principală este de a furniza feedback cu privire la calitatea distribuţiei de date.

Informaţiile primite prin această cale putând fi folosite la controlul unei codări adaptive

(codec adaptiv). Experimentele folosind multiplexarea IP au arătat că feedback-ul este critic

pentru diagnosticul greşelilor în distribuţie. Această funcţie este realizată prin folosirea a două

rapoarte: raportul transmiţătorului şi raportul receptorului.

RTCP identifică toţi participanţi unei sesiuni. Acest protocol face acest lucru prin

transportul unui identificator de nivel transport al fiecărei surse numit nume canonic

(CNAME) („canonical name”) şi al unui identificator de sursă de sincronizare (SSRC).

SSRC-ul se poate schimba într-o sesiune. Identificatorul CNAME este de asemenea folosit

pentru sincronizarea fluxurilor multimedia multiple. Când un participant părăseşte conferinţa

este trimis un pachet RTCP BYE.

Pachetele protocolului sunt trimise pentru a îndeplini primele două funcţii, de aceea

rata cu care sunt trimise pachetele este de asemenea controlată. Acest control al ratei este

realizat de RTCP. Numărul de participanţi observat este folosit pentru determinarea valorii

acestei rate. Cu cât numărul participanţilor este mai mare cu atât rata cu care se trimite

pachete de către fiecare participant este mai mică.

A patra funcţie (opţională) este de a transporta minimum de informaţie de control a

sesiunii, pentru, ca exemplu, să se poată face identificarea participanţilor în interfaţa grafică.

Toţi participanţi trebuie să trimită pachete RTCP, fapt ce poate crea probleme pentru

conferinţele pe bază de multicast de mari dimensiuni deoarece traficul RTCP va creaşte liniar

cu creşterea numărului de participanţi. Acceastă problemă nu există cu fluxurile RTP în

conferinţele audio ce folosesc suprimarea pauzelor, deoarece oameni nu vorbesc de regulă în

acelaşi timp.

Page 22: Analiza comunicarii intr-o retea moderna prin VoIP

Deoarece numărul de participanţi este cunoscut tuturor ce ascultă rapoartele RTCP,

fiecare din aceştia îşi poate controla rata cu care trimite aceste rapoarte. Acest fapt este folosit

pentru a limita banda folosite de RTCP la o valoare rezonabilă, de obicei nu mai mult de 5%

din banda alocată sesiunii. Această bandă trebuie împărţită de toţi participanţii. În „standarde”

se stipulează că transmiţătorilor activi le revine un sfert din această bandă deoarece

informaţiile conţinute în raportele transmiţătorilor sunt foarte importante pentru receptori. Cea

ce rămâne se împarte între receptori.

Chiar şi pentru cele mai mici sesiuni, cea mai mare rată cu care se poate transmite, de

câtre un participant, un raport RTCP este unul la fiecare 5 secunde. Rata cu care se transmite

este aleatorizată cu un factor de 0,5 până la 1,5 pentru a nu se crea sincronizări nedorite între

rapoarte. Valoarea medie a ratei este derivată, de fiecare participant, din mărimea pachetului

pe care vrea să-l trimită şi din numărul de transmiţători şi receptori din pavhetele pe care le

primeşte.

Sunt mai multe tipuri de pachete RTCP, unul pentru fiecare tip de informaţie:

SR: reprezintă raportul transmiţătorului şi conţine informaţiile de transmisie şi recepţie

despre transmiţătorii activi;

RR: reprezintă raportul receptorului şi conţine informaţiile despre ascultătorii ce nu

sunt şi transmiţători activi;

SDES: reprezintă descrierea sursei şi conţine numeroşi parametrii referitori la sursă,

incluzând şi CNAME;

BYE: reprezintă raportul trimis atunci când un participant părăseşte conferintă;

APP: prezintă funcţiile specifice unei aplicaţii.

Câteva pachete RTCP pot fi incluse într-un singur pachet al protocolului de transport.

Fiecare mesaj RTCP conţine destule informaţii pentru a fi decodat fără probleme dacă mai

multe asemenea mesaje sunt încapsulate în acelaşi pachet UDP. Acest mod de folosire este

folositor pentru a transmite eficient informaţia, ţinând cont de dimensiunile antetului

protocolului de transport.

Rapoartele receptorului şi ale transmiţătorului (figura I.5)

Fiecare SR („sender report”) conţine trei secţiuni obligatori. Prima secţiune conţine:

5 biţi pentru numărul de rapoarte conţinute în acest raport;

tipul pachetului, care în cazul SR-ului este 200;

lungimea acestui raport pe 16 biţi şi numărul de biţi introduşi ca umplutură pe 32 de

biţi;

Page 23: Analiza comunicarii intr-o retea moderna prin VoIP

SSRC-ul transmiţătorului acestui raport. Acest indentificator se va regăsi şi în

pachetele RTP ce pleacă de la acesta.

A doua secţiune conţine informaţiile despre fluxul RTP ce este trimis de acest

transmiţător:

informaţia de timp ce conţine data la care a fost trimis acest raport. Aceasta poate să

fie absolută sau relativă fată de momentul începerii sesiunii.

informaţia de timp RTP ce reprezintă acelaşi lucru ca mai sus dar folosind regulile de

la pachetele RTP;

numărul de pachete trimise de acest transmiţător de la începutul sesiunii pe 16 biţi.

Este resetat dacă SSRC-ul este schimbat;

numărul de octeţi de date ce au fost trimise de la începutul sesiunii. Aceste este de

semenea resetat cănd se schimbă SSRC-ul.

Cea de-a treia secţiune conţine un set de fragmente ale raportului de recepţie, unul

pentru fiecare sursă de care a auzit de când a trimis ultimul SR sau RR. Fiecare are acelaşi

format. Acestea conţin:

SSRC (indentificatorul sursei): 32 de biţi – identificatorul sursei despre care se face

raportul;

rata pierderilor: 8 biţi – valoarea rotunjită a raportului (pachete primite/pachete

pierdute*256);

numărul total al pachetelor pierdute (24 biţi) de la începutul recepţiei. Pachetele

întârziate nu sunt numărate ca pierdute iar pachetele duplicate sunt numărate ca primite;

cel mai mare număr de secvenţă primit, variantă extinsă: (32 biţi). Cei mai importanţi

16 biţi conţin numărul de cicluri ale numărului de secvenţă iar ultimi 16 biţi conţin cel mai

mare număr de secvenţă primit într-un pachet RTP de la sursa indicată în primul câmp;

jitterul: 32 de biţi. O estimare a variaţiei a timpului scurs între sosirile pachetelor RTP,

măsurată în unităţi în care se măsoară şi informaţia de timp şi exprimată ca un număr întreg

fără semn. Jitterul J este definit ca deviaţia medie a diferenţei între distanţele în timp de la

receptor faţă de cele la transmiţător pentru o pachete consecutive. Aşa cum este arătat în

relaţia de mai jos, definiţia este echivalentă cu diferenţa timpului de propagare relativ pentru

cele două pachete; timpul de propagare relativ este diferenţa între informaţia de timp înscrisă

în pachetul RTP şi timpul indicat de ceasul receptorului atunci la momentul sosirii pachetului,

măsurate în acelaşi unităţi. Dacă Si reprezintă informaţia de timp purtată de pachetul i şi Ri

este timpul de sosire al acestuia, atunci pentru cele două pachete i şi j, D poate fi exprimată

ca: D(i,j)=(Rj-Ri)-(Sj-Si)=(Rj-Sj)-(Ri-Si). Jitterul este calculat în mod continuu la fiecare

Page 24: Analiza comunicarii intr-o retea moderna prin VoIP

sosire a unui pachet i de la sursa SSRC_n, folosind această diferenţă D pentru acest pachet şi

pentru pachetul i-1 în ordinea sosirii (nu neapărat în secvenţă), conform formulei: J=J+(|D(i-

1,i)|-J)/16. Când se emite un raport, valoarea curentă a lui J este preluată.

informaţia de timp conţinută de ultimul raport al sursei (LSR): 32 de biţi. Se folosesc

cei 32 de biţi din mijlocul informaţiei de timp conţinută de ultimul raport primit din partea

unei surse (această formă se numeşte forma compactă).

întârzierea faţă de momentul când s-a primit ultimul raport SR (DLSR): 32 de biţi.

Exprimat în forma compactă (mai simplu în multipli de 1/65536s). Împreună cu LSR

transmiţătorul acestui ultim SR poate folosi această informaţie pentru a calcula timpul dus-

întors.

Rapotul receptorului arată ca raportul transmiţătorului, cu diferenţele că valoarea

câmpului ce indică tipul informaţiei transportate (PT) este egală cu 201 şi secţiunea a doua

lipseşte. Acest raport poate fi folosit de receptorii pasivi care nu generează fluxuri de RTP.

SDES: pachetul RTCP de descriere al sursei (figura I.6)

Un pachet SDES are câmpul PT egal cu 202 şi conţine porţiuni unde se enumeră

sursele (SC). Fiecare porţiune conţine un SSRC sau un CSRC şi o listă de informaţii. Fiecare

element din listă este prezentat folosind formatul tip, lungime, valoare.

Următoarele tipuri există dar doar CNAME trebuie să existe:

CNAME(unic în cadrul unei sesiuni) este de forma utilizator@maşină_gazdă, adresa

IP sau numele domeniului maşinii gazdă;

NAME, numele obişnuit al sursei;

EMAIL;

PHONE, numărul de telefon;

LOC, locaţia maşinii sursă.

În figura 6 se prezintă pachetul SDES.

BYE (figura I.7)

Pachetul RTCP BYE indică că unul sau mai multe surse indicate prin porţiuni de

enumerare (SC) nu mai sunt active.

Page 25: Analiza comunicarii intr-o retea moderna prin VoIP

Figura I.5 Raportul transmiţătorului

APP: pachetul RTCP definit de aplicaţie (figura I.8)

Acest pachet poate fi folosit pentru a transporta informaţii ce ţin numai de aplicaţia

folosită. Câmpul PT este setat la valoarea 204.

Detalii în plus se pot găsi în RFC 1889[4], IP telephony [2].

Figura I.6 Descrierea surselor

Page 26: Analiza comunicarii intr-o retea moderna prin VoIP

Figura I.7 Pachetul BYE

Figura I.8 Pachetul APP

2.4 RTSP (Real Time Streaming Protocol – RFC 2326)

Protocolul pentru fluxurile în timp real sau RTSP [5] este un protocol de nivel

aplicaţie pentru controlul livrării datelor cu proprietăti de timp real. RTSP furnizează o bază

extensibilă pentru a permite transportul controlat, la cerere, al datelor de timp real, cum ar fi

cele audio şi video. Sursele de date pot fi atât aparatele ce captează în momentul transmisiei

câ şi date stocate. Acest protocol este proiectat pentru a controla multiple sesiuni de transfer

de date, pentru a furniza mijloacele prin care se alege canalele de transport, cum ar fi UDP,

multicast UDP sau TCP şi pentru a furniza mijloacele pentru alegerea mecanismelor de

transport bazate pe RTP.

Page 27: Analiza comunicarii intr-o retea moderna prin VoIP

RTSP stabileşte şi controlează unul sau mai multe fluxuri sincronizate de date

continue cum ar fi audio sau video. În mod normal nu transportă el însuşi aceste fluxuri, cu

toate că interpunerea fluxurilor media cu fluxul de control este posibilă. Cu alte cuvinte,

RTSP propune un control la distanţă prin reţea al server-elor multimedia.

Setul de fluxuri ce trebuiesc controlate sunt definite de o descriere a prezentării

(presentation description). Formatul acestei descrieri se face într-un document ce trebuie să fie

specificat la implementarea protocolului.

Nu există noţiunea de conexiune RTSP, dar serverul menţine o sesiune etichetată cu

ajutorul unui identificator. O astfel de sesiune nu este legată în nici un fel de conexiunea de la

nivelul transport, cum ar fi de exemplu o conexiune TCP. În timpul unei sesiuni RTSP, un

client poate deschide şi închide mai multe conexiuni sigure de transport către server pentru a

trimite cereri RTSP sau poate folosi un protocol fără conexiune cum ar fi UDP.

Fluxurile controlate de RTSP pot folosi RTP, dar modul de funcţionare al protocolului

prezentat nu depinde de mecanismul de transport folosit pentru a duce datele în timp real.

Protocolul este intenţionat asemănător în sintaxă şi mod de operare cu HTTP versiunea 1.1

[7]. HTTP adică Hypertext Transfer Protocol este un protocol de nivel aplicaţie pentru

sistemele aflate la distanţă şi care comunică între ele. Este un protocol generic, fără stări.

Acesta a fost folosit de către iniţiativa globală informatică „World Wide Web” încă din 1990.

Prima versiune HTTP/0.9 a fost un simplu protocol pentru transferul datelor neprelucrate prin

Internet. Versiunea 1.0, cum a fost definită în RFC-ul 1495, a îmbunătăţit protocolul

prin faptul că a permis mesajelor să aibă un format asemănător cu formatul MIME

(Multipurpose Internet Mail Extensions), mesaje ce conţineau informaţii despre datele

transportate şi modificatori ai semanticii mesajelor de cerere şi răspuns.

Versiunea 1.1 include cerinţe mai dure decât versiunea anterioară cu scopul de a

furniza implementări sigure a caracteristicilor acestui protocol. HTTP asigură un set de

metode şi antete ce indică scopul unei cereri. Acesta este construit pe disciplina referinţelor

furnizate de „Uniform Resource Identifier”(URI), ca locaţie URL sau ca nume URN, pentru a

indica resursa pentru care se va aplica metoda. Mesajele sunt trimise într-un format similar cu

cel folosit în sistemele de poştă electronică din Internet definit în documentul „Multipurpose

Internet Mail Extensions” (MIME). HTTP este de altfel folosit şi ca protocol de comunicaţie

între agentul utilizatorului (aplicaţia care rulează la cererea utilizatorului), gateway-uri sau

proxy-uri şi alte sisteme din Internet, incluzând şi pe acelea ce suportă protocoalele FTP şi

SMTP. În acest mod HTTP permite acesul la resursele disponibile de la diverse aplicaţii.

Page 28: Analiza comunicarii intr-o retea moderna prin VoIP

HTTP este un protocol de tip cerere răspuns. Un client trimite o cerere către server, ce

conţine metoda cerută, un câmp URI, o versiune de protocol urmat de un mesaj de format

asemănător cu MIME ce are în componenţă modificatori de sintaxă a cereri, informaţii despre

client, şi posibil conţinutul mesajului pe o conexiune cu serverul. Acesta răspunde cu o linie

de stare, ce include versiunea protocolului şi un cod de succes sau de erore urmat de un mesaj

asemănător MIME ce conţine informaţiile despre server, informaţiile despre entitatea indicată

în cerere şi posibil corpul entităţii.

Protocolul RTSP se diferenţiază de HTTP/1.1 prin următoarele aspecte:

introduce un număr de noi metode şi are un identificator de protocol diferit;

un server RTSP trebuie să menţină o stare în toate cazurile, spre deosebire de natura

fără stări a HTTP-ului.

şi clientul şi serverul pot emite cereri.

datele sunt transportate de către un alt protocol.

setul de caractere folosite în compunerea mesajelor este altul.

identificatorul resursei URI este în cadrul unei cereri întotdeauna absolut.

Aceste modificări duc la implementarea mai uşoară a unor situaţii în care există mai

multe ierarhii de directoare pe o singură gazdă cu o singură adresă IP.

Protocolul permite următoarele operaţii:

- obţinerea de informaţii de la un server. Clientul poate cere o descriere a prezentărilor

prin HTTP sau altă metodă. Dacă prezentarea este trimisă în mod multicast atunci descrierea

conţine adresa de multicast şi porturile utilizate pentru fluxurile media. Dacă doar acest client

este vizat de prezentare, adică numai el va primi fluxurile media prin unicast atunci clientul va

oferi destinaţia din motive de securitate.

- invitarea unui server media la o conferinţă. Un server media poate fi invitat la o

conferinţă, fie pentru a reda fişiere multimedia, fie pentru a înregistra toată sau o parte din

conferinţă. Acestă operaţie este foarte utilă pentru aplicaţiile de învăţământ la distanţă.

- informarea utilizatorilor despre tipurile de date în timp real disponibile pentru o

prezentare existentă deja. În special pentru prezentările în timp real, este util să se informeze

pe cei care participă de către server ce tipuri de date în timp real au devenit disponibile.

Sunt necesare câteva precizări:

Prezentarea. Reprezintă unul sau mai multe fluxuri prezentate de către server clienţilor

ca o transmisiune multimedia completă, folosind descrierea prezentării care este definită mai

jos. În cele mai multe cazuri în contextul RTSP, aceasta implică controlul asupra acelor

fluxuri, dar nu întotdeauna este aşa.

Page 29: Analiza comunicarii intr-o retea moderna prin VoIP

Descrierea prezentării. O descriere a unei prezentări conţine informaţii asupra unuia

sau mai multe fluxuri media din cadrul prezentării, cum ar fi setul de codecuri folosit, adresele

folosite şi informaţii despre conţinut. În alte protocoale propuse de IETF ca SDP (Session

Description Protocol) folosesc termenul de sesiune pentru o prezentare în timp real.

Descrierea prezentării poate avea mai multe formate, incluzând dar nu numai formatul SDP.

Flux media. Reprezintă un singur flux de date ce pot fi audio, video sau datele

provenite de la un „whiteboard”. Când se foloseşte RTP, un flux conţine toate pachetele RTP

şi RTCP create de o sursă într-o sesiune RTP.

Mesaj. Este unitatea de bază în comunicaţia RTSP.

Entitate. Reprezintă informaţia transferată în cadrul unui răspuns sau cereri.

Sesiunea RTSP. Reprezintă o tranzacţie completă RTSP, cum ar fi vizionarea unui

film. O sesiune constă de obicei în crearea de către client a unui mecanism de transport pentru

fluxul media, pornirea redării şi închiderea fluxului.

Protocolul RTSP are următoarele proprietăţi:

Extensibil. Metode şi parametri noi pot fi foarte uşor adăugaţi la acest protocol;

Uşor de analizat. RTSP poate analizat de către analizoarele standard HTTP sau

MIME;

Sigur. RTSP reutilizează mecanismele reţelei de securitate. Toate mecanismele de

autentificare folosite în HTTP sunt direct aplicabile. Se pot folosi şi mecanismele de

securitate ale nivelurilor transport şi reţea;

Independent de modul de transport. RTSP poate folosi protocolul cu datagrame

nesigur UDP sau protocolul sigur pe bază de fluxuri ca RTP.

Capabil de lucrul cu mai multe servere. Fiecare flux media dintr-o prezentare poate fi

stocat pe diferite servere. Clientul în mod automat stabileşte mai multe sesiuni de control

concurente cu severele ce conţin fişierele media. Sincronizarea se face la nivelul transport;

Controlează aparatele ce fac înregistrarea. Protocolul poate controla atât aparatele ce

fac înregistrarea sau redarea fişierelor media cât şi a aparatelor ce fac aceste funcţi în mod

alternativ;

Separă controlul fluxului de iniţializarea conferinţei. Controlul fluxului este separat de

invitarea la conferinţă a server-elor. Singura cerinţă în acest caz este ca protocolul ce iniţiază

conferintă să furnizeze sau utilizat pentru a crea un identificator pentru conferinţă. În

particular SIP sau H.323 pot fi utilizaţi pentru invitarea unui server la o conferinţă. Prin server

se înţelege orice sistem ce doreşte sau este solicitat să trimită date în timp real.

Page 30: Analiza comunicarii intr-o retea moderna prin VoIP

Potrivit pentru aplicaţiile profesionale. RTSP furnizează o acurateţe mare, la nivelul

cadrelor ce permite editarea la distanţă;

Neutru din punct de vedere al descrierii prezentării. Protocolul nu impune un format

de descriere şi poate comunica tipul descrierii ce va fi folosit. Totuşi, descrierea trebuie să

aibă cel puţin un identificator al resursei adică un URI;

Permite folosirea sistemelor firewall şi proxy. Protocolul poate fi manevrat cu uşurinţă

atât de sistemele firewall la nivel aplicaţie cât şi de cele la nivel transport. Un astfel de sistem

trebuie să înţeleagă metoda SETUP pentru a deschide un canal de comunicaţie pentru fluxul

media de pe UDP;

Foloseşte HTTP. Acolo unde este nevoie, RTSP reutilizează conceptele HTTP pentru

ca infrastuctura existentă să nu fie modificată;

Permite controlul rezonabil al server-ului. Dacă un client poate să pornească un flux

de date, atunci el trebuie să aibă capacitatea şi să oprească fluxul. Server-ele nu trebuie să

pornească trimiterea unui flux într-un asemenea mod încât clientul să nu poată să oprească

acel flux;

Permite negocierea metodei de transport. Clientul poate negocia metoda de transport

înainte de a fi nevoit să proceseze un flux de date în timp real;

Permite negocierea capacităţilor. Dacă caracteristicile de bază nu sunt disponibile,

trebuie să existe un mecanism pentru ca clientul să determine ce metode nu vor fi

implementate. Aceasta permite clienţilor să afişeze interfaţa grafică corespunzătoare. De

exemplu, dacă sărirea unor porţiuni din film nu este permisă, atunci interfaţa grafică trebuie să

fie în stare să împiedice mişcarea indicatorului de poziţie în timp al filmului.

Fiecare prezentare şi flux media poate fi identificată de un URL. Prezentarea în sine şi

proprietăţile fluxurilor din care aceasta este formată sunt definite de un document ce conţine

descrierea prezentării. Acest document poate fi obţinut de către client folosind HTTP sau alte

mijloace cum ar fi poşta electronică şi nu este obligatorul să fie stocat pe serverul media. În

general aceast document trebuie să conţină descrierea mediilor ce formează prezentarea,

incluzând şi codecurile folosite, limbajul şi alţi parametri care permit clientului să aleagă cea

mai potrivită combinaţie. În acestă descriere a prezentării fiecare flux media controlat de

RTSP este identificat printr-un URL al protocolului RTSP, care indică spre server-ul ce

prelucrează acel flux şi poartă numele ori a fluxului ori a server-ului. Mai multe fluxuri media

pot fi localizate pe servere diferite; de exemplu, fluxurile audio şi video pot fi împărţite pe

mai multe server-e pentru ca încărcarea acestora să fie echitabilă. Descrierea enumeră şi ce

metode de transport poate folosi un server.

Page 31: Analiza comunicarii intr-o retea moderna prin VoIP

Pe lângă parametri mediilor folosite, adresa de reţea destinaţie şi portul trebuiesc

determinaţi. Câteva moduri de operare pot fi distinse:

Unicast: datele audio sau video sunt transmise spre locul de unde a fost trimisă cererea

RTSP, cu numărul portului ales de client. Este posibil ca datele să fie transmise pe acelaşi flux

sigur ca RSTP.

Multicast cu alegerea adresei de către server: aceasta alege şi adresa şi portul. Aceasta

este cazul tipic pentru o transmisie în timp real sau aproape de o transmisie la cerere.

Multicast cu legerea adresei de către client: dacă server-ul trebuie să participe la o

conferinţă deja existentă, adresa de multicast, portul şi modalitatea de codare sunt precizate de

descrierea conferinţei.

RTSP controlează un flux care poate fi trimis prin intermediul unui protocol separat,

independent de canalul de control. De exemplu, controlul RTSP se poate face prin intermediul

unei conexiuni TCP iar datele pot fi transportate cu ajutorul protocolului UDP. Astfel, livrarea

datelor continuă şi dacă nici o altă cerere RTSP nu este recepţionată de către server. Totuşi, pe

timpul vieţii unei conexiuni, un singur flux media poate fi controlat prin cereri RTSP trimise

în mod secvenţial pe diferite conexiuni TCP. De aceea, server-ul trebuie să menţină o stare a

sesiunii pentru a fi capabil să coreleze cererile cu un flux. Multe metode din cadrul RTSP nu

contribuie la modificarea stării. Totuşi următoarele joacă un rol central în definirea alocării şi

utilizării resurselor în server: SETUP, PLAY, RECORD, PAUSE şi TEARDOWN.

Metoda SETUP face ca server-ul să aloce resurse pentru un flux şi să pornească o

sesiune RTSP.

Metodele PLAY şi RECORD pornesc transmisia datelor pentru un flux alocat prin

metoda SETUP.

Metoda PAUSE opreşte temporar un flux fără a elibera resursele server-ului.

Metoda TEARDOWN eliberează resursele asociate cu fluxul media. Sesiunea

încetează să mai existe în server.

Metodele care contribuie la starea unei sesiuni conţin câmpul antet sesiune pentru a

indica starea cărei sesiuni o manipulează. Serverul generează un identificator al sesiunii în

răspuns la o cerere de tip SETUP.

Server-ul, după ce primeşte cererile cu metodele de mai sus, răspunde cu un mesaj ce

conţine în principal o linie de stare formată din versiunea protocolului, un cod de trei cifre ce

indică clientului succesul sau insuccesul acţiunii cerute prin metoda trimisă şi o frază textuală

ce indică în cuvinte ce înseamnă codul. Prima cifră din cod defineşte clasa răspunsului.

Page 32: Analiza comunicarii intr-o retea moderna prin VoIP

Ultimele două cifre nu au nici un rol în ierarhia raspunsurilor. Există 5 valori posibile pentru

prima cifră:

1xx: răspuns informaţional – răspuns primit, procesul continuă;

2xx: succes – acţiunea a fost primită cu succes, înţeleasă şi acceptată;

3xx: îndrumare către alte adrese – trebuiesc luate acţiuni în plus pentru a completa

cererea;

4xx: eroare de client – cererea conţine erori de sintaxă şi nu poate fi îndeplinită;

5xx: eroare de server – server-ul nu poate îndeplini o cerere ce pare validă.

Codurile sunt incluse în sintaxa răspunsului pentru a fi citite şi înţelese de către

automate iar frazele ce le urmează sunt destinate utilizatorilor umani.

Pentru informaţii în plus recomand RFC 2326 [5]

3 Semnalizarea

3.1 Introducere

Semnalizarea reprezită procesul ce permite iniţializarea şi controlul unei conversaţii

între două sau mai multe persoane. În cazul telefoniei prin Internet de acest lucru se ocupă

protocoalele de semnalizare. Acestea sunt folosite pentru a stabili şi controla sesiunile sau

apelurile multimedia. Aceste sesiuni includ conferinţe multimedia, telefonie, învăţământ la

distanţă şi alte astfel de aplicaţii. Protocoalele de semnalizare peste IP sunt folosite să

interconecteze clienţi software şi hardware prin reţele locale (LAN) sau prin Internet.

Principalele funcţii ale acestui tip de protocoale sunt: căutarea unui utilizator,

translaţia de adrese şi nume, stabilirea unei conexiuni, negocierea parametrilor unui apel,

schimbul parametrilor specifici aparatelor folosite în conversaţie, întreruperea unui apel şi

managementul participanţilor la o conversaţie cum ar fi invitarea de noi participanţi. Alte

servicii, cum ar fi securitatea, tarifarea, anunţarea sesiunilor pot fi incluse în aceste

protocoale. Semnalizarea este foarte strâns legată de transmisia fluxurilor de date, dar aceasta

nu face parte din semnalizare.

Astăzi două protocoale de semnalizare există pe piaţă: H.323 şi SIP. Aceste două

protocoale reprezintă două abordări diferite asupra aceleiaşi probleme: semnalizarea şi

controlul conferinţelor multimedia.

Page 33: Analiza comunicarii intr-o retea moderna prin VoIP

H.323 este un standard „umbrelă” de la „International Telecomunications Union”

(ITU) pentru comunicaţii multimedia peste reţele locale (LAN-uri) care nu furnizează nici un

fel de garanţie privind calitatea serviciilor. H.323 face parte din o serie mai mare de standarde

pentru comunicaţii numită seria H.32x, ce conţine standarde pentru conferinţe multimedia

peste tipuri diferite de reţele, incluzând ISDN şi PSTN. Specificaţia H.323 a fost aprobată în

1996, dar primele standarde din seria H.32x au fost aprobate încă din 1990. Versiunea 2 a

standardului se referă la conferinţele peste reţelele de mari dimensiuni de tipul WAN („Wide

Area Networks”) şi a fost aprobat în 1998. Această versiune a adăugat şi specificaţii pentru

comunicaţia între reţelele de pachete şi cele de circuite. Versiunea 3 a fost aprobată în anul

2000 şi conţine specificaţii pentru transmisia fax-urilor peste reţelele de pachete, pentru

comunicaţia între managerii de apeluri şi pentru mecanisme mai rapide pentru stabilirea

conexiunii telefonice. În curând va apare şi versiunea 4. H.323 reprezintă o abordare

tradiţională folosind tehnicile telefoniei prin reţelele de circuite, bazate pe protcolul de

semnalizare ISDN Q.931.

Protocolul denumit „Session Initiation Protocol” pe scurt SIP [9] este dezvoltat de

grupul de lucru „Multiparty Multimedia Session Control” (MMUSIC) ce face parte din

„Internet Engineering Task Force” (IETF). Acest protocol este mai puţin cunoscut decât

H.323 şi de aceea va fi dezbătut pe larg în următoarele pagini. SIP este un protocol mai

simplu şi se bazează pe protocolul HTTP. El a fost proiectat iniţial pentru conferinţele

multimedia ce folosesc Internetul.

3.2 SIP sau Protocolul de Iniţiere a Sesiunii (RFC 3261)

3.2.1 Introducere SIP

SIP este definit în RFC-ul 3261 din iunie 2002, document ce ia locul RFC-ului 2543

din martie 1999. Protocolul de Initializare al Sesiunii (SIP) a fost gândit pentru a se asigura un

mod avansat de control al începerii, terminării si administrării modului în care se transmit

datele într-o reţea. La dezvoltarea protocolului s-a ţinut cont de faptul ca acesta va trebui sa

ruleze eficient pe diverse variante de servicii multimedia.

Cu ajutorul SIP se pot localiza într-o maniera scalabilă resursele dintr-o reţea si,

indiferent de localizarea fizica a acestora, se pot iniţia si negocia caracteristicile sesiunii de

Page 34: Analiza comunicarii intr-o retea moderna prin VoIP

comunicare. Cateva dintre domeniile care suporta acest protocol sunt aplicatiile de telefonie

IP si videoconferinţă. Dupa cum se observă şi din denumire, Protocolul de Iniţializare al

Sesiunii iniţializează, administrează si termină o sesiune de comunicaţie într-o reţea.

Protocolul a fost proiectat pentru facilitarea oferirii serviciilor vocale pe reţele de date.

Aplicaţiile care au adoptat deja acest protocol sunt cele de telefonie IP si videoconferintă, însă

acesta poate fi utilizat cu succes si pentru servicii de mesagerie instantanee, notificare de

evenimente sau pentru administrarea altor tipuri de sesiuni de comunicare. In ceea ce priveste

realizarea unei legături pentru comunicatie, SIP este un protocol de control care ofera servicii

similare cu cele oferite de protocoalele de control existente în cazul aplicaţiilor de telefonie

clasică, însă realizeaza acestui lucru într-un context strâns legat de Internet.

Session Initiation Protocol face parte din arhitectura promovată de câţiva ani de

Internet Engineering Task Force, care mai cuprinde Real-Time Transport Protocol (RTP) -

protocolul de transport pentru date audio, video, sau alte date sensibile in ceea ce priveste

timpul de transfer prin retea, Real-Time Streaming Protocol (RTSP) - pentru controlul

fluxurilor multimedia la cerere, Session Description Protocol (SDP) - pentru descrierea

sesiunilor multimedia, Session Announcement Protocol (SAP) - pentru anunţarea sesiunilor

de comunicare de la un singur emitator la mai multi receptori, Telephony Routing over IP

(TRIP) - pentru localizarea celei mai bune căi de transmisie între Internet si reţeaua de

telefonie publică.

În principal SIP este destinat pentru asigurarea sesiunilor de comunicaţie intre

utilizatori identificaţi prin identificatori de tip e-mail sau număr de telefon. Orice echipament

care are asignat un nume de gazdă într-o reţea poate lua parte la o sesiune SIP. Procesul de

creare a unei legaturi SIP începe cu descoperirea unui utilizator indiferent de localizarea

acestuia în reţea, pentru ca descrierea sesiunii sa poata fi trimisă utilizatorului.

O caracteristică foarte importantă este dată de faptul că utilizatorul va menţine acelaşi

identificator, chiar daca se va schimba locaţia fizică sau dispozitivul cu care acesta se

conecteaza la reţea. Atribuirea acestui identificator unui utilizator va fi realizată de catre

furnizorul serviciului de conectare în reţea sau compania telefonică. In plus, identitatea unui

singur utilizator poate fi reprezentată simultan de un număr de terminale conectate la reţea. În

funcţie de elementele logice prezente in elementele de reţea SIP, se pot trimite cereri de

realizare a comunicaţiei catre oricare dintre terminalele care recunosc acelasi identificator

(unul, mai multe sau chiar toate).

Iniţierea sesiunii depinde si de abilitatea parţii apelate de a determina cantitatea de

informatii necesare despre sesiunea în sine, astfel incât aceasta sa poată decide în ceea ce

Page 35: Analiza comunicarii intr-o retea moderna prin VoIP

priveste participarea sau nu la comunicaţia care ar urma sa aibă loc. Ca urmare, un mesaj SIP

include informatii despre apelant, motivul pentru care se doreşte deschiderea unei sesiuni, cât

de urgentă este realizarea legăturii si informaţii despre parametrii sesiunii de comunicare.

3.2.2 SDP

SIP foloseşte protocolul de descriere al sesiunii (SDP) specificat în RFC-ul 2327 din

aprilie 1998, elaborat de către grupul de lucru MMUSIC. Pentru ca un receptor să poată să fie

în stare să recepţioneze o sesiune SIP, acesta trebuie să cunoască:

care adresă de multicast va fi folosită de către sesiune;

care va fi portul de destinaţie UDP;

codecurile video sau/şi audio care vor fi folosite;

câteva informaţii despre sesiune (numele, scurtă descreiere);

informaţii de contact;

orarul de activitate.

Principalul scop al descrierii sesiunii de tip SDP este să definească o sintaxă standard

pentru aceast tip de informaţie. Aceste informaţii pot fi livrate folosind o varietate de metode

de transport, depinzând de context:

protocolul pentru anunţarea sesiunilor (SAP) pentru reţelele multicast;

protocolul pentru fluxurile de date în timp real (RTSP) pentru aplicaţiile ce lucrează cu

fluxuri;

SIP pentru iniţializarea comunicaţiilor punct la punct sau multipunct.

O descripţie a unei sesiuni exprimată în format SDP este scurtă prezentare textuală a

numelui şi scopului unei sesiuni şi informaţii despre mediul, protocoalele, codecurile şi modul

de transport ce sunt necesare pentru a decide dacă o sesiune este de interes şi pentru a

cunoaşte ce aplicaţii trebuiesc pornite pentru a participa la sesiune. SDP este pur şi simplu un

format pentru descrierea de sesiune – nu incorporează un protocol de transport.

În general, SDP trebuie să asigure destule informaţii pentru ca un receptor să fie

capabil să ia parte la o sesiune şi să anunţe resursele ce vor fi folosite, elementelor de reţea ce

nu participă la sesiune dar care doresc să cunoască aceste informaţii.

Pentru o sesiune poate exista sau nu o corespondenţă în timp. Indiferent de acest lucru

o sesiune poate fi activă numai la anumite momente de timp. SDP poate transporta o listă de

date şi ore la care o sesiune începe şi se termină. Pentru fiecare dintre aceste două evenimente

Page 36: Analiza comunicarii intr-o retea moderna prin VoIP

se poate specifica momentele de timp când se vor repeta. Aceste informaţii sunt sunt

adevărate în întreaga reţea. Se pot de asemenea specifica modificatori de timp.

Descrierea unei sesiuni se compune din informaţii generale care se aplică întregii

sesiuni urmate de secţiuni ce sunt specifice fiecărui format al datelor în timp real transmise.

Fiecare secţiune conţine tipul (video, audio), protocolul de transport (RTP/UDP/IP, H.320) şi

atributele codecului folosit.

Pentru o sesiune IP de tip multicast, adresele de multicast şi porturile de transport sunt

de asemenea livrate receptoarelor. Aceastea reprezintă adresele de destinaţie şi porturile de

destinaţie ale fluxului multicast, indiferent dacă este trimis, recepţionat sau ambele. Pentru o

sesiune IP de tip multicast, sunt precizate în această descriere şi adresa distantă pentru fluxul

media şi portul de transport pentru adresa de contact. Astfel răspunsul la invitaţie ar putea

conţine informaţii similare privind locul unde apelantul să trimită fluxurile audio şi video.

Sintaxa SDP: O descriere a unei sesiuni constă într-un număr de linii de text de forma:

<tip>=<valoare>

unde <tip> este mereu un caracter şi depinde dacă este literă mare sau literă mică, iar

<valoare> este un text al cărui format depinde de <tip>. În general <valoare> este ori un

număr de câmpuri delimitate de un singur caracter spaţiu sau un sir de caractere cu un format

oarecare.

O descriere de sesiune conţine o descriere la nivelul întregii sesiuni (care se aplică

întregii sesiuni şi tuturor fluxurilor media) şi opţional mai multe descrieri la nivelul fluxurilor

ce conţine detalii ce se aplică unui singur flux. Prima parte începe cu linie ce are caracterele

’v=’ şi continuă cu prima descriere de flux media. Aceasta începe cu o linie ce are la îceput

caracterele ’m=’ şi continuă cu următoarea descriere de flux sau cu sfâşitul întregii descrieri.

În general, valorile conţinute în descrierea de nivel sesiune sunt valabile pentru toate fluxurile

cu excepţia cazului în care sunt rescrise de o valoare echivalentă existentă într-o descriere a

unui flux.

În continuare prezint un exemplu de descriere a unei sesiuni:

v=0

o=g.bell 877283459 877283519 IN IP4 132.151.1.19

s=Come here,Watson!

u=http://www.ietf.org

[email protected]

c= IN IP4 132.151.1.19

Page 37: Analiza comunicarii intr-o retea moderna prin VoIP

b=CT:64

t=3086272736 0

k=clear:manhole cover

m=audio 3456 RTP/AVP 96

a=rtpmap:96 VDVI/8000/1

m=video 3458 RTP/AVP 31

m=aplication 32416 udp wb

a=orient:portrait

Câmpurile individuale au următoarele sensuri şi trebuie să fie în această ordine cu

caracterul ’*’ indicând un câmp opţional:

v= versiunea protocolului

o= creatorul şi identificatorul sesiunii

s= numele sesiunii

i=* informaţii despre sesiune

u=* link-ul (URI) descrierii

e=* adresă de e-mail

p=* număr de telefon

c=* informaţii despre modul de conectare

b=* informaţii despre bandă

una sau mai multe informaţii de timp

z=* modificator de timp cu valoarea dependentă de fusul orar

k=* cheie de codificare

a=* zero sau mai multe atribute de sesiune

zero sau mai multe descrieri de fluxuri

Fiecare informaţie de timp este formată dintr-un câmp ce incepe cu caracterul ’t’

urmat de încă câmp opţional ’r’.

t= momentul de timp când sesiunea este activă

r=* zero sau mai multe mmente de timp când se repetă sesiunea

Fiecare descriere de flux exte formată din câmpul ce are la începutul liniei caracterul

’m’ şi din alte câmpuri opţionale ce furnizează informaţii în plus:

m= numele fluxului şi adresa de transport

Page 38: Analiza comunicarii intr-o retea moderna prin VoIP

i=* titlul fluxului

c=* informaţii despre modul de conectare

b=* informaţii despre bandă

k=* cheie de codare

a=* zero sau mai multe atribute ale fluxului

Câmpurile ’c’şi ’a’ din descrierea de nivel sesiune se aplică tuturor fluxurilor cu

excepţia cazului în care sunt rescrise de câmpurile cu acelaşi nume din descrierile fluxurilor.

3.2.3 SAP (RFC 2974)

Acest protocol este folosit pentru a face cunoscute unui public larg, conferinţele

multicast şi alte tipuri de sesiuni multicast. Un emiţător SAP trimite în mod multicast în mod

periodic pachete de informare, folosind adrese de multicast şi porturi cunoscute. Un ascultător

SAP află de utilizatorii vizaţi de transmisia multicast folosind protocolul „Multicast Scope

Zone Announcement Protocol”.

Emiţătorul SAP nu este conştient de prezenţa sau absenţa ascultătorilor SAP. Un anunţ

SAP este trimis vizând aceiaşi utilizatori ca şi sesiunea pe care o anunţă, asigurând că

receptorii anunţului pot fi receptori posibili ai sesiunii anunţate.

Dacă o sesiune foloseşte adrese în mai multe zone administrative, este necesar ce

emiţătorul SAP să trimită copii identice al anunţului pentru fiecare zonă administrativă.

Emiţătorii SAP multiplii pot anunţa aceiaşi sesiune, fapt ce ajută la robusteţea protocolului în

faţa pierderii de pachete sau defectării emitătoarelor SAP. Durata de timp ce există între două

anunţări a aceleiaşi sesiuni este aleasă astfel încât banda totală folosită de toate anunţurile

unui singur grup SAP să rămână limită preconfigurată. Fiecare emiţător SAP ar trebui să

asculte celelalte anunţuri pentru a determina numărul total de sesiuni anunţate pentru un grup

particular.

SAP conţine mecanisme pentru a asigura integritatea anunţurilor de sesiuni, pentru a

autentificarea originii unui anunţ şi pentru codarea anunţului.

Formatul pachetului SAP pentru versiunea 4 a protocolului IP este prezentată în figura

9. Câmpul tipul mesajului (T) indică dacă acest pachet anunţă o sesiune sau şterge un anunţ.

Un bit (E) indică dacă sarcina pachetului este codată sau nu şi un bit (C) indică dacă sau nu

informaţia din acest pachet este comprimată. Combinaţia informaţiilor din câmpurile

Page 39: Analiza comunicarii intr-o retea moderna prin VoIP

identificatorul mesajului şi sursa anunţului ar trebui sa furnizeze un identificator unic al

anunţului care poate fi folosit pentru a identifica o versiune particulară a unei sesiuni. Acest

lucru este binevenit în cazul în care se memorează anunţurile sau pentru a ignora pachetele

care nu au putut fi decriptate. Deoarece acest identificator nu este garantat a fi unic, trebuiesc

folosite alte metode adiţionale cum ar fi verificarea lungimi pachetelor şi chiar verificarea în

mod periodic a conţinutului pachetelor.

Anunţurile SAP pot fi autentificate folosind o semnătură digitală a informaţiei

transportate de pachet, folosind câmpul de autentificare opţional.

De asemenea acestea pot fi şi codate. Totuşi, acest lucru nu înseamnă că modul

standard de a iniţia o conferinţă privată într-o reţea de mari dimensiuni este prin anunţarea ei

cu ajutorul pachetelor SAP codate – pentru acest scop protocolul SIP este mai util. Principala

utilizare a anunţurilor SAP ar trebui să fie în reţelele de tip intranet unde pot deranja puţin

utilizatori sau pentru a sesiunile foarte mari unde utilizatori sunt facturaţi pentru aprticiparea

la conferinţă. Deoarece este uşor pentru un utilizator de rea credinţă să răspândească o cheie

SAP este necesar luarea de măsuri suplimentare pentru accesul participanţilor la conferinţă.

SAP trebuie folosit pentru sesiuni de interes public unde participanţi nu sunt cunoscuţi

în prealabil. Dacă se cunosc inviataţii un mecanism mai bun este invitarea lor explicită

folosind SIP.

Detalii se poat obţine consultând RFC 2974 [8]

Page 40: Analiza comunicarii intr-o retea moderna prin VoIP

Figura I.9 Pachetul SAP

3.2.4 Entităţile SIP şi definiţii

SIP reprezintă satndardul IETF pentru stabilirea conexiunilor VoIP. Protocolul de Iniţializare a Sesiunilor este un protocol de control la nivel aplicaţie (de semnalizare) pentru crearea, modificarea şi închiderea sesiunilor cu unul sau mai mulţi aprticipanţi. Aceste sesiuni includ conferinţe multimedia prin Internet, apeluri telefonice prin Internet şi distribuţii multimedia. Participanţii într-o sesiune pot comunica prin multicast, printr-o reţea de canale unicast sau printr-o combinaţia a acestor două moduri. Arhitectura SIP este similară cu aceea a protocolului HTTP. Cererile sunt generate de către client şi trimise serverului. Aceste procesează cererile şi trimite un răspuns clientului. O cerere şi răspunsul corespunzător formează o tranzacţie. SIP are mesajele INVITE şi ACK care definesc procesele de deschidere a de canale sigure prin care mesajele de control ale apelului pot fi trimise. Protocolul face foarte puţine presupuneri cu privire la protocolul de transport. El însuşi asigură siguranţa transportului şi nu se bazează pe TCP pentru aceasta. SIP se bazează de SDP (Protocolul de Descriere al Sesiunilor) pentru negocierea codecurilor disponibile. Protocolul de Iniţializare a Sesiunilor foloseşte descrieri de sesiuni pentru a permite participanţilor punerea de acord asupra unor tipuri de media compatibile. Acest protocol sprijină mobilitatea utilizatorului prin existenţa funcţiilor de tip proxy şi de îndrumare a răspunsurilor spre locaţia curentă a utilizatorului. SIP asigură următoarele faze din stabilirea şi închiderea unei comunicaţii (RFC 3261):Găsirea utilizatorului: determinarea terminalului care va fi folosit pentru comunicaţie;Determinarea stării utilizatorului: protocolul poate determina dacă un utilizator este disponibil să răpundă la un apel sau nu;Determinarea capacităţilor de comunicare: poate afla care sunt tipurile de media şi proprietăţile acestora, ce pot fi folosite în timpul comunicaţiei.Stabilirea sesiunii: anunţarea parţilor participante şi stabilirea parametrilor la ambele capete ale sesiunii;Managementul sesiunii: include transferul şi închiderea sesiunii, modificarea parametrilor şi invocarea de servicii.

Page 41: Analiza comunicarii intr-o retea moderna prin VoIP

Aşa cum am mai spus SIP nu este un sistem de comunicaţie complet. Acesta este mai degrabă o componentă care poate fi folosită împreună cu alte protocoale IETF pentru a forma o arhitectură multimedia completă. În mod normal această arhitectură va cuprinde protocoale ca RTP (RFC 1889) pentru transportul datelor de timp real şi pentru a furniza un feedback în privinţa calităţii serviciilor, RTSP (RFC 2326) pentru controlul transportului fluxurilor media, Protocolul pentru controlul gateway-urilor media (MEGACO – Media Gateway Control Protocol RFC 3015) pentru controlul gateway-urilor ce sunt la marginea reţelelor de pachete şi fac legătura cu reţelele cu comutaţie de circuite şi SDP (RFC 2327) pentru descrierea sesiunilor multimedia. De aceea, SIP trebuie folosit în conjuncţie cu alte protocoale pentru a furniza servicii complete utilizatorilor. Totuşi, funcţionarea protocolului nu depinde de nici-un protocol. SIP nu furnizează servicii. În schimb, SIP foloseşte primitive care pot fi folosite pentru a implementa diferite servicii. De exemplu SIP poate localiza un utilizator şi trimite la acea locaţie câteva pachete de date. Dacă această primitivă este folosită pentru a trimite o descriere de sesiune atunci, de exemplu, cele două terminale pot conveni asupra parametrilor sesiunii. Dacă aceeaşi primitivă este folosită pentru a trimite o fotografie a apelantului în acelaşi mod ca descrierea sesiunii, atunci un serviciu de identificare a apelantului poate fi uşor de implementat. Cum a arătat acest exemplu, o singură primitivă este folosită pentru a furniza diferite servicii.

SIP nu oferă servicii de control a conferinţelor cum ar fi controlul vorbitorului curent

(”floor control”) sau votare şi nu indică cum ar trebui „condusă” o conferinţă. Acest protocol

poate fi folosit pentru a iniţia o sesiune care foloseşte un alt protocol de control al

conferinţelor. Deoarece mesajele SIP şi sesiunile stabilite cu acestea nu pot trece prin reţele

complet diferite, SIP nu poate şi nu oferă nici o modaliate prin care să se asigure rezervare de

resurse.

Din cauza naturi informaţiilor transmise siguranţa acestora este importantă. În acest

scop, protocolul poate fi folosit pentru a se implementa servicii de securitate ce includ

prevenirea atacurilor de tip ”denial-of-service”, autentificarea, protecţia integrităţii şi codarea.

Înainte de a prezenta entităţile şi modul de operare al protocolului este necesar

precizarea unor noţiuni:

Client: un program aplicaţie care trimite cereri SIP. Clienţii pot sau nu pot interacţiona

cu un utilizator uman.

Server: Un server este un program aplicaţie care acceptă cereri pentru ale prelucra şi

trimite înapoi răspunsuri la aceste cereri.

Apel: un apel constă din toţi participanţii dintr-o conferinţă invitaţi de o sursă comună.

Un apel SIP este identificat de către un identificator unic. Astfel, dacă un utilizator este invitat

la acceaşi sesiune multicast de către persoane diferite, fiecare din aceste invitaţii este un apel

unic. O conversaţie telefonică prin Internet punct la punct reprezintă un singur apel SIP.

Conexiune: o conexiune ce serveşte o conversaţie este identificată printr-o combinaţie

de câmpuri: identificatorul apelului, adresele participanţilor şi valorile câmpurilor „From”(De

Page 42: Analiza comunicarii intr-o retea moderna prin VoIP

la) şi „To”(Spre). Având aceeaşi identificator al apelului, cererile ce au câmpurile cu valorile

„Spre” A şi „De la” B aparţin aceleiaşi conexiuni ca şi cererile ce au câmpurile cu valorile

„Spre” B şi „De la” A, din direcţie opusă.

Sesiune: în specificaţia SDP o sesiune multimedia reprezintă un set de transmiţători şi

receptori şi fluxurile de date ce sunt între aceştia. O conferinţă multimedia este un exemplu de

sesiune. După cum s-a mai spus un apelat poate fi invitat la aceeaşi sesiune de mai multe ori.

Dacă se foloseşte SDP, o sesiune este definită de concatenarea numelui utilizatorului,

identificatorul sesiunii, tipul reţelei, tipul adresei şi elementele de adresă din câmpul

„Origine” din antet.

Tranzacţie SIP: are loc între un client şi un server şi conţine toate mesajele de la prima

cerere trimisă de client server-ului până la ultimul răspuns trimis de server către client. O

tranzacţie este identificată, într-o conexiune, de numărul de secvenţă „Cseq”.

Componentele arhitecturii SIP sunt:

Agentul utilizatorului: este o aplicaţie ce conţine atât un agent client cât şi un agent

server. Clientul este agentul ce trimite apelurile iar serverul este cel care le primeşte.

Server proxy: este un program intermediar ce funcţionează atât ca server cât şi ca

client cu scopul de a face sau retrimite cereri din partea altor clienţi.

Server de îndrumare: reprezintă server-ul care acceptă o cerere SIP şi asociază unui

client mai multe adrese la care poate fi găsit. Spre deosebire de server-ul proxy, acesta nu

trimite mesajul mai departe. În schimb, trimite noua adresă găsită clientului cerându-i acestuia

să retrimită mesajul acolo.

Server de localizare: este folosit de către un server proxy sau de îndrumare pentru a

obţine informaţii despre locaţiile posibile ale unui apelant.

Proxy „outbound” : este proxy-ul ce este localizat aproape de originea unei cereri.

Primeşte toate cererile unui agent client, incluzând şi acelea care nu îi sunt adresate. Proxy-ul

trimite aceste cereri, după procesări locale, la adresele din antete.

Registrator: este un server ce acceptă cererile de înregistrare „REGISTER”.

Monitorizează utilizatorii în interiorul domeniului de reţea asignat. Este în mod tipic pus în

aceaşi locaţie cu un server proxy sau de îndrumare şi poate face ca informaţiile ce le deţine să

fie disponibile.

Acestea sunt elemente separate logic şi nu sunt implementări fizice distincte. Nu este

deloc un fenomen neobişnuit de a găsi servere proxy, de îndrumare şi registratori care rulează

în cadrul unei singure conversaţii.

Page 43: Analiza comunicarii intr-o retea moderna prin VoIP

În cazul unei sesiuni SIP tipice, mesajele trimise de un agent trec prin unul sau mai

multe servere proxy, după care ajung la unul sau mai mulţi agenţi SIP. Cu toate acestea, nu

este exclusă nici realizarea unei comunicaţii directe (fără intermediari) între agenţii SIP. De

fapt este un fenomen de comunicaţie foarte normal acela în care doar prima cerere de

comunicaţie trece prin serverele proxy, după care toate celelalte mesaje vor fi schimbate

direct între agenţi.

3.2.5 Modul de operare SIP

Apelanţii şi apelaţi sunt identificaţi prin adrese SIP. Când realizează un apel SIP, un

apelant trebuie să localizeze mai întâi server-ul corespunzător şi să-i trimită o cerere. Pentru a

fi invitată şi identificată partea apelată trebuie să aibă un nume.

SIP foloseşte un identificator de tip e-mail de forma utilizator@domeniu,

utilizator@gazdă, utilizator@adresă IP sau număr de telefon@ „gateway” din cauză că acest

mod de adresare este cel mai răspândit în Internet. Folosind o adresă de e-mail ca o adresă

SIP, acest protocol furnizează metode scalabile prin care un agent client al utilizatorului poate

furniza o cerere către un server SIP. Apelantul poate afla unde să trimită cererea folosind

serverele DNS. Prin realizarea unei serii de interogări DNS (Domain Name Server) de către

cel ce vrea să iniţieze o convorbire se poate determina adresa server-ului ce are sub control un

anumit domeniu. Adresa de tip e-mail permite ca adresele SIP să fie uşor transformate în

informaţii de tip URI (Uniform Resource Identifiers) cum ar fi sip: teodor@constantin .

Avantajul acestui fapt este că aceste informaţii pot fi uşor introduse în pagini Web, astfel încât

plin apăsarea cu mouse-ul pe link-ul corespunzător iniţiază un apel către acea adresă, într-un

mod asemănător cu link-urile pentru trimiterea unui e-mail de genul „mail to : URL”.

Un server de reţea SIP poate trimite apelul către alte servere, ajungând într-un final la

unul care ştie sigur adresa IP unde utilizatorul poate fi găsit. Procesul de determinare a

următorului hop se numeşte rutare „next hop”. Ca un rezultat al deciziilor luate în urma

rutării, un server de reţea SIP poate ajunge la concluzia că la un utilizator se poate ajunge prin

mai multe servere adiacente. În aceste cazuri, SIP permite unui server proxy să creeze mai

multe copii dintr-o cerere recepţionată şi să o trimită pe mai multe căi paralele spre serverele

adiacente. În condiţii normale, fiecare server va genera un răspuns; SIP are reguli definite

pentru concatenarea răspunsurilor şi trimiterea acestora la agentul client.

Odată ce localizarea server-ului s-a încheiat, clientul poate trimite cereri către acesta.

O cerere împreună cu răspunsul corespunzător formează o tranzacţie SIP. Cererea poate fi

Page 44: Analiza comunicarii intr-o retea moderna prin VoIP

trimisă prin canale TCP sigure sau prin UDP. Dacă se foloseşte un protocol sigur, cererea şi

răspunsurile dintr-o singură tranzacţie SIP sunt transportate pe aceeaşi conexiune.

Mai multe cereri SIP de la acelaşi client către acelaşi server pot fi transmise pe aceeaşi

conexiune sau se poate folosi câte o conexiune pentru fiecare cerere. Dacă un client trimite

cererea printr-un protocol de datagrame în mod unicast de tipul UDP-ului, agentul ce o

recepţionează trimite răspunsul conform informaţiei conţinută în câmpul „Via” din antetul

cereri. Fiecare server proxy de pe calea urmată de cerere trimite răspunsul folosind acelaşi

câmp „Via”. Pentru protocoalele de datagrame, siguranţa transmisiei se obţine prin

retransmisii.

O invitaţie SIP încununată cu succes constă din două cereri: una INVITE urmată de

ACK. Cererea INVITE cere apelatului să intre într-o conferinţă anume sau să stabilească o

conversaţie. După ce apelatul a acceptat să participe, apelantul confirmă că a primit răspunsul

prin trimiterea unei cereri ACK. Cererea INVITE conţine o descriere a sesiunii care îi

furnizează apelatului destule informaţii pentru a se intra în sesiune. Dacă apelatul doreşte să

accepte apelul, răspunde invitaţiei prin trimiterea unui răspuns cu o descriere similară a

sesiunii. După ce apelatul a acceptat să participe, apelantul confirmă că a primit răspunsul

prin trimiterea unei cereri ACK.

Un apelat poate să şi schimbe poziţia în timp. Aceste locaţii pot fi în mod dinamic

înregistrate la un server SIP. Când un server SIP este interogat despre poziţia apelatului,

acesta întoarce o listă cu posibilele locaţii. De fapt un server de localizare din siestemul SIP

generează lista şi o pasează serverului SIP.

Ar putea exista situaţia în care suntem nevoiţi să schimbăm parametrii unei sesiuni

existente. Aceasta se poate realiza prin retrimiterea cererii INVITE folosind acelaşi

identificator de apel (câmpul „Call ID” acelaşi) dar cu un nou corp al mesajului. Cererea

trebuie să aibă un număr de secvenţă „Cseq” mai mare decât cel avut de ultima cerere a

clientului către server.

3.2.6 Proprietăţile protocolului SIP

Este un protocol cu stări de durată mică. O sesiune în care avem o conferinţă sau un

apel constă una sau mai multe tranzacţii cerere-răspuns SIP. Fiecare dintre acestea pot

parcurge rute diferite prin server-ele din reţea. Într-un apel obişnuit, cererea este de tipul

INVITE şi poate parcurge mai multe server-e de reţea în drumul ei până la apelat. Răspunsul

Page 45: Analiza comunicarii intr-o retea moderna prin VoIP

la această cerere conţine o adresă amănunţită care poate fi folosită de agentul client pentru a

trimite cererile următoare direct către agentul server.

Deoarece server-ele de reţea SIP nu trebuie să menţină starea apelului şi după ce o

tranzacţie s-a încheiat, acestea nu deţin informaţii despre apelant sau apelat. Această

caracteristică facilitează scalabilitatea şi siguranţă unui server SIP, deoarece se poate bloca

fără ca să afecteze tranzacţiile iniţiate prin el. Durata şi numărul stărilor menţinute într-un

server sunt mici în comparaţie cu acelea din reţeaua de telefonie clasică, unde o centrală

trebuie să menţină starea unui apel pentru întreagă durată a acestuia. Totuşi un server ce

doreşte să cunoască starea unui apel poate menţine starea unui apel pe întrega durata a

acestuia. Prin intermediul câmpurilor „Route”(rută) şi „RecordRoute”(rută inregistrată) din

antetul mesajelor SIP, fiecare proxy poate ,în mod individual, insista să fie pe calea urmată de

tranzacţiile următoare. Mai mult, proxy-ul se poate răzgândi şi se poate scoate de pe calea de

semnalizare.

Un server de reţea SIP nu trebuie să aibă stări nici chiar pe durată tranzacţiilor. Un

server proxy sau de îndrumare poate fi complet fără stări. După ce primeşte o cerere, acesta

ori generează un răspuns ori trimite cererea mai departe şi uită tot. Mesajele conţin toate

informaţiile necesare pentru ca un server proxy să le proceseze şi să la ruteze. Aceast mod de

funcţionare corespunde arhitecturii bazate pe datagrame din Internet, unde pachetele conţin

informaţii suficiente pentru a fi rutate în mod individual. În plus, un proxy cu stări poate

deveni fără stări în orice moment fără a afecta modul de funcţionare al protocolului.

Administratorul decide în privinţa fiecărui apel dacă un proxy va fi cu stări sau fără. Această

flexibilitate permite existenţa unor servere de mari dimensiuni poziţionate central în reţea care

sunt fără stari. Pemite şi existenţa unor servere mai mici cu stări poziţionate spre periferia

reţelei.

Protocolul este neutru din punctul de vedere al protocoalelor de nivele inferioare. SIP

face presupuneri minime asupra protocolalelor de transport şi de nivel reţea. Nivelele

inferioare pot furniza servicii ce se bazează pe pachete sau fluxuri de octeţi şi pot fi sau nu

sigure. În contextul Internetului, SIP poate utiliza şi UDP şi TCP ca protocoale de transport.

UDP permite aplicaţiei să controleze mai uşor momentul trimiteri mesajelor şi retransmisia

acestora, să realizeze căutări paralele şi să folosească transmisie în mod multicast. Ruterele

pot lucra mai repede cu pachete SIP UDP. TCP permite trecerea cu uşurinţă prin

componentele de tip „firewall” existente. Când este folosit TCP, SIP poate folosi una sau mai

multe conexiuni pentru a încerca să contacteze un utilizator sau să modifice parametri unei

conferinţe deja existente. Cereri diferite SIP pentru acelaşi apel SIP pot folosi conexiuni TCP

Page 46: Analiza comunicarii intr-o retea moderna prin VoIP

diferite sau una singură, după preferinţă. SIP poate fi folosit cu protocoalele din Internet la fel

cum poate fi folosit şi cu protocoale ca AAL5 de la ATM, IPX, Frame Relay sau X.25.

Agenţii utilizatorului ar putea implementa şi UDP şi TCP. Serverele proxy, de îndrumare,

registratoarele trebuie să implementeze şi UDP şi TCP.

Protocolul se bazează pe text. SIP foloseşte ca formă de codare UTF-8. Acest fapt

permite o implementare uşoară în limbaje cum ar fi Java, Tcl sau Perl, permite găsirea şi

corectarea greşilor de programare cu uşurinţă şi cel mai important face ca SIP să fie un

protocol flexibil şi extensibil. Cum SIP este folosit în principal pentru iniţierea conferinţelor

multimedia decât pentru transferul datelor multimedia, se consideră că procesarea în plus

existentă din cauza folosirii unui protocol bazat pe text nu este importantă.

3.2.7 Mesajele SIP

Aşa cum am mai spus mai devreme SIP este un protocol bazat pe text. Sintaxa

mesajelor şi câmpurile din antet sunt identice cu specificaţia HHTP/1.1. Un mesaj SIP este

sau o cerere sau un răspuns. O cerere este generată de un client şi un răspuns este generată de

un server. Mesajele cerere şi răspuns folosesc formatul mesajului generic din RFC-ul 822

pentru transferul corpului unui mesaj. Ambele tipuri de mesaje constă dintr-o linie de start,

unul sau mai multe linii de antet, o linie goală (adică o linie ce nu ere nimic înaintea

caracterului CRLF ce indică terminarea unei linii) ce avertizează că s-au terminat liniile din

antet şi opţional corpul mesajului.

Formatul mesajului cerere este expus în continuare:

Cerere: linie de cerere

*(antet general | antet cerere | antet corp mesaj)

CRLF

[corpul mesajului]

unde linia de cerere este formată din câmpurile:

linie de cerere : metoda SP identificatorul de tip URI al sursei SP Versiunea SIP CRLF

cu următoarele semnificaţii:

Câmpul metoda poate următoarele valori: „INVITE” | „ACK” | „OPTIONS” | „BYE” |

„CANCEL” | „REGISTER” | metodă extinsă

Câmpul versiunea SIP : „SIP/2.0”

Câmpul SP: „ ” (spaţiu liber)

Page 47: Analiza comunicarii intr-o retea moderna prin VoIP

Mesajele SIP foloseşte câmpurile antetului pentru a specifica diferite informaţii despre

participanţi, calea de urmat şi altele. Aceste câmpuri sunt asemănătoare cu cele de la HTTP în

sintaxă şi semantică. Ordinea în care apar nu are în general nici-o importanţă, cu excepţia

câmpurilor ce sunt introduse între server-e. Unele câmpuri din antet sunt folosite în toate

mesajele şi altele doar când sunt necesare. O aplicaţie ce implementează SIP nu trebuie să

înţeleagă toate câpurile, dar ar fi de dorit să o poate face. Dacă un participant SIP nu înţelege

un antet îl poate ignora. Numărul total de câmpuri în antetul SIP este 44 şi pot fi împărţite în

patru grupuri:

Câmpurile antetului general ce există şi în cereri şi în răspunsuri.

Câmpurile antetului corp mesaj ce definesc informaţia despre corpul mesajului sau

dacă acesta nu este prezent atunci despre resursa identificată de cerere.

Câmpurile antetului cerere ce permit clientului să trimită informaţii în plus despre

cerere şi despre el însuşi, server-ului.

Câmpurile antetului răspuns ce conţin informaţiile despre server şi despre accesul la

resursa identificată de URI din cerere.

În cadrul antetului general se află următoarele câmpuri mai importante:

Call-ID (identificatorul apelului; de exemplu CallID:[email protected])

este folosit în multe scopuri. În cadrul cererilor de înregistrare şi de obţinere a parametrilor

unui server este folosit pentru a recunoaşte răspunsurile corespunzătoare cererilor. Pentru

cererile de invitare şi de înregistrare este folosit şi pentru a detecta copiile acestor

cereri.Cererile INVITE succesive cu acelaşi CallID dar cu parametrii diferiţi pot fi folosite

pentru a schimba în mod dinamic parametri într-o conferinţă. Prima parte din identificator

trebuie sa fie unică pentru fiecare gazdă iar ultima parte, un domeniu sau o adresă IP a gazdei,

îl face unic în toată reţeaua. Un nou CallID trebuie generat pentru fiecare nou apel.

Cseq („Command Sequence”, de exemplu Cseq: 1234 INVITE) trebuie să existe în

fiecare cerere. Este format din un număr de secvenţă fără semn şi numele metodei. Într-un

apel, numărul de secvenţă este incrementat cu fiecare nouă cerere (cu excepţia situaţiei în care

cererea este retransmisia unei alte cereri) şi are la început o valoare aleatoare. Server-ul

trebuie să copieze valoarea acestui câmp în toate răspunsurile ce sunt determinate de cererea

ce îl conţine.

From (de exemplu From: teo<sip:[email protected]>). Acest câmp trebuie să fie prezent în

toate cererile şi răspunsurile. Conţine numele utilizatorului ce poate fi afişat în interfaţa

grafică (parte ce poate să lipsească) şi adresa de unde a plecat cererea. Informaţii în plus pot fi

Page 48: Analiza comunicarii intr-o retea moderna prin VoIP

adăugate. Trebuie spus că acest câmp este copiat în răspunsuri şi astfel câmpul From din

râspuns nu-l indică pe cel ce la trimis.

To (de exemplu To: mihai<sip:[email protected]>; tag=287747). Acest câmp trebuie

să fie prezent şi în cereri şi în răspunsuri şi indică destinaţia dorită a cereri. Este copiat în

răspuns. Valoarea câmpului „tag” identifică destinaţia în cazul în care un identificator URI

SIP se indică mai multe terminale posibile. În cazul acestei situaţii în răspunsuri se introduce

acest câmp „tag” cu o valoare aleatoare pentru a se putea distinge între mai multe terminale.

Via (de exmplu Via: SIP/2.0/UDP/PXY1.furnizor.ro; received 10.0.0.3). Câmpul Via

este folosit pentru a înregistra ruta urmată de către o cerere, pentru a permite server-elor SIP

intermediare să trimită răspunsurile pe aceeaşi rută. Pentru a realiza acest lucru fiecare server

proxy adaugă în antet un nou câmp Via la cele existente. Receptorul unei cereri poate adăuga

parametri opţionali, de exeplu pentru a indica că a primit o cerere de la o adresă care nu se

află în ultimul câmp Via. Folosind această informaţie un server proxy poate trimite răspunsul

către transmiţătorul original, chiar dacă pe ruta dintre ei se află un dispozitiv NAT ce

translatează adresele de reţea. Când parametrul „maddr” ce indică existenţa unei adrese

multicast este prezent în câmpul Via, răspunsul este trimis folosind o transmisie multicast la

adresa specificată după „maddr” şi timpul de viaţă este stocat în parametrul ttl. Existenţa

acestui câmp arată că SIP a fost proiectat având în vedere problemele IP.

Encryption (de exemplu: Encryption: PGP version=2.6.2,encoding=ascii). Acest câmp

indică că corpul mesajului şi posibil anumite mesaje din antet sunt codate.

Antetul ce se referă la corpul mesajului conţine următoarele câmpuri:

Content-Type (de exemplu Content-Type: application/sdp). Acesta descrie tipul

informaţiei din corpul mesajului. În eemplul dat, antetul este urmat de o descriere a unei

sesiuni în format SDP. Un alt exemplu de valoare posibilă este text/html.

Content-length. Indică numărul de octeţi al corpului mesajului.

Câmpurile ce apar numai în mesajele de cerere sunt conţinute în antetul cerere şi au

următoarea semnificaţie:

Accept (de exemplu Accept: application/sdp, text/html). Acest câmp opţional indică ce

tipuri de informaţii sunt permise în răspuns. Sintaxa este specificată în RFC-ul 1288.

Accept-Language (de exemplu Accept-Language: fr, en-gb; q=0.8, en; q=0.7). Acesta

indică în ce preferă apelantul să se vorbească. Sintaxa este de asemenea prezentată în RFC

1288.

Expires (folosit la mesajele INVITE şi REGISTER; de exemplu Expires: Thu, 01 Dec

2004 16:00:00 GMT sau Expires: 5 în secunde). Pentru un mesaj de înregistrare, acest câmp

Page 49: Analiza comunicarii intr-o retea moderna prin VoIP

indică pentru cât timp înregistrarea va fi validă. Înregistratorul poate scurta această perioadă

în râspunsul său. Pentru un mesaj de invitare, acest cămp poate fi folosit pentru limitarea

duratei de căutare.

Priority (de exemplu Priority: emergency). Valorile posibile sunt cele indicate în RFC

2076 plus „emergency”.

Record-Route (folosit de asemenea şi în mesajele de răspuns; de exemplu Record-

Route:

sip:centrală.home.ro;maddr=192.190.123.234;sip:facturare.firma.ro;maddr=192.194.126.23).

Unele server-e proxy pot adăuga elemente noi la acest câmp dacă vor să fie pe calea urmată

de semnalizări. În exemplul dat cererea a trecut printr-un proxy de facturare şi apoi printr-o

centrală. Asemenea entităţi trebuie să monitorizeze starea apelurilor pentru a-şi indeplini

scopul.

Subject (de exemplu Subject:’Conferinţă despre SIP’). Acest conţine text fără o

sintaxă bine definită şi are ca scop informarea apelatului despre ce va fi vorba în apel.

Metodele SIP sunt listate mai jos:

INVITE: o cerere INVITE invită un utilizator sau un serviciu să participe într-o

sesiune. Corpul mesajului conţine o descriere a mesajului.

ACK: cererea ACK confirmă că apelantul a primit un răspuns final la o cerere

INVITE, confirmă un răspuns afirmativ.

OPTIONS: această metodă se ocupă cu informaţiile privind caracteristicile

participanţilor şi află caracteristicile receptorului.

BYE: cererea BYE închide un apel sau termină o cerere de apel, putând fi trimisă şi de

apelant şi de apelat.

CANCEL: cererea CANCEL termină o cerere de apel nerezolvată dar nu afectează

apelurile ce sunt în desfăşurare.

REGISTER: metoda REGISTER este folosită pentru a înregistra locaţia curentă a

utilizatorului. Această metodă este folosită şi atunci când sunt mai multe server-e SIP pe un

singur calculator. În acest caz doar un singur server poate folosi portul asociat SIP.

INFO: reprezintă informaţia din timpul apelării cum ar fi tonurile DTMF.

PRACK: este o confirmare provizorie.

Alte metode ar mai putea fi COMET, SUBSCRIBE şi NOTIFY. Metodele care nu

sunt recunoscute de server-ele proxy sau de îndrumare sunt tratate ca fiind metoda OPTIONS

şi trimise ca atare. Metodele care nu sunt recunoscute de un agent server sau un registrator

provoacă un răspuns de tipul 501 Server Failure (eroare server).

Page 50: Analiza comunicarii intr-o retea moderna prin VoIP

Antetul poate fi urmat de un corp al mesajului separat de acesta printr-o linie goală

(albă). Pentru cererile ACK, INVITE şi OPTIONS corpul este mereu o descriere a unei

sesiuni. Câmpul Content-Type trebuie să conţină tipul informaţiei. În eemplele date tipul

corpului mesajului este Sessiun Description Protocol.

După ce a primit şi a interpretat mesajul, sistemul răspunde cu un mesaj de răspuns

SIP. Linia de stare a acestuia este formată din versiunea SIP, codul ce indică răspunsul şi o

frază de motivare a răspunsului. Această frază este o descriere textuală scurtă a codului.

Formatul răspunsului este arătat în continuare:

Răspuns: linie de stare

*(antet general | antet răspuns | antet al corpului mesajului)

CRLF

[corpul mesajului]

Linie de stare= versiunea SIP SP codul SP frază de motivare CRLF

Codul= Informaţional | Succes | Îndrumare catre alte adrese| Eroare client | Eroare

server | Eroare globală | Cod extins (3 cifre) Fraza de motivare= text codat UTF-8, fără CR,

LF

Codul este un număr întreg format din trei cifre, prima cifră indicând tipul

răspunsului:

1XX : Informaţional: indică că s-a primit cererea şi procearea acesteia continuă.

Acesta nu este un răspuns definitiv spre deosebire de restul. Exemplu: 180 RINGING (Sună).

2XX : Succes: răspunsul arată că s-a primit cererea, a fost înţeleasă şi acceptată.

Exemplu: 200 OK.

3XX :Îndrumare către alte adrese: trebuie să se facă operaţii în plus pentru ca cererea

să fie îndeplinită. Eemplu: 302 MOVED TEMPORARILY (mutat temporar).

4XX : Eroare client: cererea conţine greşeli de sintaxă sau nu poate fi îndeplinită la

acest server. Exemplu: 404 NOT FOUND (nu s-a găsit destinaţia dorită).

5XX : Eroare server: serverul nu poate să îndeplinească o cerere ce pare validă.

Exemplu: 501 NOT IMPLEMENTED (nu este implementată acţiunea cerută)

6XX : Eroare globală: Cererea nu s-a putu îndeplini la nici un server. Exemplu: 600

BUSY EVERYWHERE (ocupat peste tot).

Acest mod de clasificare permite adăugarea de noi coduri foarte uşor. Când un

terminal mai vechi primeşte un răspuns ce are un cod CXX pe care nu-l cunoaşte, acesta îl

tratează ca fiind C00. Astefel şi cele mai vechi terminale pot reacţiona inteligent atunci când

Page 51: Analiza comunicarii intr-o retea moderna prin VoIP

se confruntă cu coduri necunoscute. Acestea pot da informaţii adiţionale utilizatorului dacă

fraza de motivare este prezentă.

3.2.8 Exemple de apeluri SIP

3.2.8.1 Apel propriu-zis

În exemplul următor se va prezenta mesajele schimbate între două terminalele atunci

când Teo vrea să-l sune pe Mihai. Teo indică faptul că poate primi prin RTP audio codat 0

(PCM), 3(GSM) şi 4(G.723). Partea scrisă cu italic reprezintă corpul mesajului.

C->S: INVITE sip:[email protected] SIP/2.0

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

To: Adi<sip:[email protected]>

Call-ID: [email protected]

CSeq: 1 INVITE

Contact: <sip:[email protected]>

Subject: Adi, vino repede.

Content-Type: application/sdp

Content-Length: ...

v=0

o=rom 53655765 2353687637 IN IP4 128.3.4.5

s= Adi, vino repede.

t=3149328600 0

c=IN IP4 cell.rom-tel.com

m=audio 3456 RTP/AVP 0 3 4

a=rtpmap:0 PCMU/8000

a=rtpmap:3 GSM/8000

a=rtpmap:4 G723/8000

S->C: SIP/2.0 100 Trying

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

Page 52: Analiza comunicarii intr-o retea moderna prin VoIP

To: Adi<sip:[email protected]> ;tag=37462311

Call-ID: [email protected]

CSeq: 1 INVITE

Content-Length: 0

S->C: SIP/2.0 180 Ringing

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

To: Adi<sip:[email protected]> ;tag=37462311

Call-ID: [email protected]

CSeq: 1 INVITE

Content-Length: 0

S->C: SIP/2.0 182 Queued, 2 callers ahead

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

To: Adi<sip:[email protected]> ;tag=37462311

Call-ID: [email protected]

CSeq: 1 INVITE

Content-Length: 0

S->C: SIP/2.0 182 Queued, 1 caller ahead

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

To: Adi<sip:[email protected]> ;tag=37462311

Call-ID: [email protected]

CSeq: 1 INVITE

Content-Length: 0

S->C: SIP/2.0 200 OK

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

To: Adi <sip:[email protected]> ;tag=37462311

Call-ID: [email protected]

CSeq: 1 INVITE

Contact: sip:[email protected]

Content-Type: application/sdp

Content-Length: ...

Page 53: Analiza comunicarii intr-o retea moderna prin VoIP

v=0

o=adi 4858949 4858949 IN IP4 192.1.2.3

s=vin în curând

t=3149329600 0

c=IN IP4 cell.rom-tel.com

m=audio 5004 RTP/AVP 0 3

a=rtpmap:0 PCMU/8000

a=rtpmap:3 GSM/8000

C->S: ACK sip:adi@ bucuresti.rom-tel.com SIP/2.0

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

To: Adi<sip:[email protected]> ;tag=37462311

Call-ID: [email protected]

CSeq: 1 ACK

C->S: BYE sip:adi@ bucuresti.rom-tel.com SIP/2.0

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

To: Adi <sip:[email protected]> ;tag=37462311

Call-ID: [email protected]

CSeq: 2 BYE

S->C: SIP/2.0 OK

Via: SIP/2.0/UDP cell.rom-tel.com

From: Teo<sip:[email protected]>;tag=3

To: Adi <sip:[email protected]> ;tag=37462311

Call-ID: [email protected]

CSeq: 2 BYE

Exemplul ilustrează folosirea răspunsurilor informaţionale. Aici, recepţia apelului este

confirmată imediat (100), apoi, după întârzieri datorate unor procesări în baza de date, se

indică sunarea celuilalt participant (180) şi apelul este pus într-o coadă, cu anunţări periodice

ale situaţiei. Adi nu poate să primească decât audio PCMU şi GSM. De observat că lista de

codecuri ale lui Adi poate să diferere de cea a lui Teo deoarece fiecare parte trimite lista cu

codecuri pe care le poate folosi la recepţie. Adi va trimite datele audio la portul 3456 al

Page 54: Analiza comunicarii intr-o retea moderna prin VoIP

terminalului craiova.rom-tel.com iar Teo la portul 5004 al terminalului bucuresti.rom-

tell.com.

Se consideră că sesiunea media este o sesiune RTP. Astfel Adi va primi pachete RTCP

pe portul 5004 iar Teo le va primi pe portul 3457. Deoarece cele două părţi au convenit asupra

setului de codecuri ce vor fi folosite, Teo confirmă apelul fără a trimite o nouă descriere de

sesiune (ACK). Pentru a încheia conversaţia, Teo trimite un mesaj BYE către Adi.

3.2.8.2 Înregistrarea

Un utilizator la maşina saturn.rom-tell.com se înregistrează prin multicast la serverul

local SIP numit rom-tell.com. În exemplu, agentul utilizatorului de pe saturn se aşteaptă să

primească cereri SIP pe portul UDP 3890. Înregistrarea expiră peste două ore. Toate invitaţiile

ulterioare primite pe adresa [email protected] sosite la server-ul SIP rom-tel.com vor

fi redirecţionate către [email protected], portul UDP 3890.

C->S: REGISTER sip:rom-tel.com SIP/2.0

Via: SIP/2.0/UDP saturn.rom-tel.com

From: <sip:[email protected]>;tag=19

To: sip:[email protected]

Call-ID: [email protected]

CSeq: 1 REGISTER

Contact: <sip:[email protected]:3890;transport=udp>

Expires: 7200

3.2.9 Modul de operare

Page 55: Analiza comunicarii intr-o retea moderna prin VoIP

Figura I.10. Modul de operare proxy

În figurile I.10 şi I.11 se prezintă cele două moduri în care poate lucra protocolul SIP.

Astfel comunicaţia între un server şi un client se poate face direct între acestea două aşa cum

se prezintă în figura 11 sau prin intermediul unui „proxy” cum este prezentat în figura 10.

Ultima situaţie este folosită atunci când se doreşte tarifarea utilizatorilor pentru

serviciile oferite, mesajele toate trecând prin server-ul proxy, dar şi când se doreşte folosirea

serviciilor mai complexe [15].

Page 56: Analiza comunicarii intr-o retea moderna prin VoIP

Figura I.11 Modul de operare direct

3.2.10 Servicii avansate SIP

Fără extensii SIP oferă numeroase servicii de management ale apelului. Multe din

acestea fiind implementate cu ajutorul registratorilor SIP, server-elor proxy şi de îndrumare.

Registratorul. Un registrator este un server care acceptă cereri REGISTER. Acelaşi

server poate implementa şi alte funcţii SIP cum ar fi un server proxy. Registratorul este folosit

pentru a păstra locaţia curentă a unui utilizator.Adresa IP a unui utilizator se poate schimba în

mai multe situaţii – este conectat printr-un furnizor de Internet ce asigură adrese dinamice,

este conectat printr-o reţea LAN unde adresele se stabilesc prin DHCP (Dynamic Host

Configuration Protocol) sau un utilizator ce foloseşte serviciul roaming. Pentru a apela acest

utilizator folosind adresa lui SIP, o entitate din reţeaua SIP trebuie să menţină corespondenţa

între adresele SIP şi adresele IP. Acesta este scopul registratorului.

Pentru a facilita mobilitatea utilizatorului şi pentru a evita configurarea manuală cât

mai mult, SIP defineşte o adresă de multicast prin care se pot contacta toate serverele SIP

(sip.mcast.net 224.0.1.75). Un client poate înregistra adresa IP curentă folosind un mesaj de

înregistrare multicast. Din mai multe motive, SIP limitează timpul de viaţă a acestui mesaj

(TTL) la 1, astfel putându-se descoperi registratori numai în reţeaua locală.

Page 57: Analiza comunicarii intr-o retea moderna prin VoIP

Acest mod de înregistrare este asemănător cu metoda de descoperire a „gatekeeper”-

elor prezentată în H.323. Totuşi, în H.323, „gatekeeper”-ele care doresc să preia apelul pot

răspunde , permiţând clientului să-l selecteze pe cel mai apropriat şi să-l contacteze în mod

direct mai târziu. În prezent, server-ele SIP nu pot răspunde la un mesaj cerere de înregistrare,

de aceea clientul nu are şansa să afle adresa celui mai apropriat server, sau chiar să ştie dacă

există un server care ia acceptat înregistrarea.

Registratorul poate fi de asemenea contactat în mod direct dacă se cunoaşte adresa

acestuia. În acest caz procedura este asemănătoare ca în cazul oricărei cereri SIP.

Starea registratorului nu este permanentă. Dacă înregistrarea nu este reactualizată

aceasta va fi eliminată după o oră prin convenţie (această valoare poate fi modificată cu

ajutorul câmpului ‚expires’). Pentru a menţine o înregistrare, un terminal trebuie să trimită

mesaje de înregistrare în mod periodic. Dacă terminalul sau utilizatorul se mută şi doresc să

modifice parametrii înregistrării, aceştia pot elimina înregistrarea prin trimiterea unui mesaj

cu valoarea câmpului ‚contact’ egală cu caracterul * şi apoi prin trimiterea unui nou mesaj de

înregistrare.

Server proxy. Un server proxy se comportă ca un server pe o parte (acceptând cereri)

şi ca un client pe cealaltă parte (trimiţând cereri). Un proxy poate trimite un mesaj fără să-i

schimbe destinaţia finală, sau poate să-i schimbe câţiva parametrii înainte să- de-a drumul.

Acesta chiar poate să trimită un răspuns generat local.

O cerere de la A către B poate fi rutată prin mai multe server-e proxy. Este de dorit ca

răspunsul să parcurgă aceeaşi rută. De exemplu, un proy se poate ocupa de facturarea apelului

sau de controlul unui firewall şi trebuie să cunoască situaţia apelului.

Când este folosită o conexiune TCP pentru o tranzacţie SIP, în mod obişnui nu sunt

probleme deoarece răspunsul ajunge la celălalt capăt în mod automat datorită modului de

operare al protocolului TCP. Pe de altă parte, când se foloseşte UDP anumite informaţi

trebuie să existe pentru a permite receptorului unei cereri să cunoască unde să trimită

răspunsul.

Deoarece protocolul SIP nu depinde de protocolul folosit, acesta conţine câmpul „Via”

pentru a rezolva problema de mai sus. Existenţa acestui câmp ajută şi la evitarea buclelor

deoarece fiecare proxy verifică dacă nu este deja pe lista din câmpul „Via”. În fiecare moment

când un proxy SIP trimite o cerere din partea unui utilizator, acesta adaugă numele său în lista

de server-e proxy străbătute de cerere. Când un proxy trimite un răspuns, realizează procesul

invers şi se şterge de pa acea listă.

Page 58: Analiza comunicarii intr-o retea moderna prin VoIP

Dacă nu numai cererile şi răspunsurile ci şi toate cererile trebuie să parcurgă aceeaşi

cale, câmpul „Via” nu este suficient şi server-ele proxy trebuie să folosească câmpul

„Recorded Route”. Aceasta din cauză ca clienţi SIP pot adăuga un câmp „Contact” care

permite server-elor să le trimită răspunsurile direct şi astfel nu este garantată poziţia server-

elor proxy pe rută tuturor cererilor. Când acestea rescriu câmpul „Recorded Route”, adaugă

identificatorul propriu SIP URL cu o adresă de tip multicast (având parametrul maddr) în

prima poziţie a listei.

Când server-ele proxy sunt folosite pentru rutarea mesajelor de semnalizare, modelul

de apelare este asemănător cu cel de la H.323 când se folosesc entităţile „gatekeeper” pentru

rutare, cu excepţia că mesajele SIP conţin destule informaţii pentru a se putea construi server-

e proxy fără stări (totuşi nu toate funcţiile de bază pot fi implementate folosind entităţi făra

stări, cum ar fi de exemplu facturarea, caz în care trebuie să se ţină sub observare mesajele

schimbate şi stările comunicaţiei pentru a verifica coerenţa semnalizării).

Există anumite servere care numite „forking proxy” ce trimit copii a unei cereri la

diferite adrese pentru a încerca să contacteze mai multe terminale aparţinând aceleiaşi

persoane. Acestea nu sunt transparente şi pot filtra unele răspunsuri înainte să la trimită înapoi

clientului. Acestea pot determina situaţia în care un terminal primeşte copii ale aceluiaşi

mesaj cu acelaşi „CallID”, caz în care terminalul în cauză trebuie să răspundă la fiecare

cerere.

Server de îndrumare. Un astfel de server răspunde la o cerere INVITE cu un mesaj de

tipul 3XX sau rejectează apelul cu un mesaj de tipul eroare client sau eroare server.

Răspunsul 300 multiple choices (posibilităţi multiple) poate fi folosit atunci când

utilizator identificat prim SIP URL-ul ce se află în cerere poate fi contactat la mai multe

adrese. Aceste posibilităţi sunt trecute în câmpul „Contact” al răspunsului. Un exemplu poate

fi: Contact: sip: [email protected],sip:[email protected];

Răspunsul 301 moved permantely (mutat definitiv) indică că utilizatorul identificat

prin URL-ul din cerere nu mai poate fi contactat la această adresă. Clientul ar trebui să încerce

la adresa furnizată în câmpul „Contact” al răspunsului. Acest câmp poate conţine de asemenea

mai multe adrese;

Răspunsul 302 moved temporarily (mutat temporar) trimite (îndrumă) clientul către

noua locaţie, la fel ca răspunsurile precedente, dar pentru o perioadă limitată de timp, indicată

prin valoarea câmpului „Expires”;

Răspunsul 380 alternative service (serviciu alternativ) este mai complex şi poate părea

redundant faţă de răspunsurile precedente. Pe lângă faptul că furnizează noua locaţie în

Page 59: Analiza comunicarii intr-o retea moderna prin VoIP

câmpul „Contact”, răspunsul conţine de asemenea şi o descriere de sesiune în corpul

mesajului ce reprezintă capacităţile de emisie a noi locaţii. De la apelant se aşteptă ca să

trimită un mesaj INVITE la această nouă locaţie şi să ofere în descrierea de sesiune conţinută

de mesaj nişte capacităţi asemănătoare (posibil o copie a parametrilor SDP din răspunsul 380,

cu excepţia portului RTP pentru recepţie).

Server-ul de îndrumare poate fi folosit în conjuncţie cu un registrator pentru a îndruma

apelurile către locaţia curentă a utilizatorului apelat. Poate fi folosit ca şi o formă primitivă a

unui sistem de distribuţie a apelurilor.

Un server de îndrumare poate fi şi un mijloc de a îmbunătaţii scalabilitatea distribuirii

apelurilor sau a server-elor agent de apel. Introdus pe ruta folosită de mesaje poate distribui

apelurile la mai multe servere secundare astfel obţinându-se o încarcare egală a acestora.

Aceasta se poate realiza folosind parametru „maddr” in câmpul „Contact” astfel:

<sip:adresăoriginală@callcenter.com:9999;maddr=adresăcentrală3.callcenter.com>

Prin întoarcerea acestei linii, server-ul indică apelantului că trebuie să trimită un mesaj

INVITE un mesaj cu aceeaşi destinaţie (adresăoriginală@callcenter), dar la adresa indicată de

paramatrul „maddr”. Acest parametrul indică apelantului să sară peste procedura normală de

identificare a unui server SIP corespunzător ce se ocupă de domeniul din adresă şi să

folosească server-ul a cărui domeniu a fost furnizat cu adresa „maddr”.

Funcţionarea server-ului de îndrumare este similară cu rolul jucat de către

„gatekeeeper”ul H.323 în modul de lucru direct.

Materialul consultat pentru realizarea acestui subcapitol a fost cartea IP telephony [2].

3.2.10.1 Localizarea utilizatorilor şi mobilitatea

Adresele SIP sunt numite „uniform resource locators” (URL). Acestea sunt defapt

texte ce indică nume de utilizatori sau de server-e multimedia, cu excepţia cazului în care

adresele SIP folosesc adrese IP. Adresele SIP nu se referă la adresele de transport ce vor fi

folosite ci la o entitate abstractă. Cea mai simplă formă este utilizator@maşină dar pot exista

forme în care apar numere de telefon, porturi, nume de domeniu şi adrese de IP. Aceste forme

sunt prezentate în tabelul următor:

[email protected]:1234 Adresă SIP obişnuită

Domeniuutilizator.com Nu există partea referitoare la utilizator,

Page 60: Analiza comunicarii intr-o retea moderna prin VoIP

portul va fi 5060

[email protected]:2345;

transport=UDP

Se specifică portocolul de transport

192.190.234.3:8001 Server-ul vrea sa fie contactat la această

adresă

[email protected];

maddr=239.255.255.1;ttl=32

Se indică folosirea adresei de transport în

locul adresei SIP

[email protected];

user=phone

Număr de telefon valabil în toată reţeaua

0231759329;isub=10;postd=

[email protected]; user=

phone

Număr de telefon local cu subadresa ISDN

aşteaptă pentru ton, formează numărul 11

(pauză) 11 folosind tonuri DTMF

[email protected] priority=

high&customercode=1234

Indică folosirea antetelor extinse pentru

controlarea priorităţii

[email protected].

com METHOD=REGISTER

URL-urile precedente declanşau treimiterea

unui mesaj de invitare; acesta iniţiază o

înregistrare la registratorul grupului de

utilizatori reg.grupdeutilizatori.com

În cele mai multe situaţii adresa SIP a unui utilizator va fi aceeaşi cu adresa sa de e-

mail. Cele mai multe extensi (antete, maddr, etc.) nu sunt permise în câmpurile „To” şi

„From”, dar pot fi folosite în câmpul „Contact”.

SIP defineşte o modaliate de a localiza un terminal fizic pornind de la un nume, adică

de la un URL. Aceasta se face în două faze:

În primul rând URL-ul SIP permite teminalului ce doreşte stabilirea unei legături să

localizeze server-ul SIP. Acesta va fi destinaţia mesajului iniţial INVITE. Acest server poate

fi destinaţia finală a apelului; dacă nu se presupune că ştie adresa de transport a terminalului

dorit;

Dacă sever-ul SIP nu este destinaţia finală a apelului, acesta va îndruma cererea

INVITE către terminalul căutat. Aceasta poate fi făcută ori prin instruirea terminalului apelant

să trimită o nouă invitaţie la altă locaţie folosind răspunsul 302, ori transmiţând invitaţia în

mod transparent la adresa de transport corespunzătoare. Primul model este asemănător cu

modelul H.323 de apel direct iar al doilea cu modelul de apel rutat prin „gatekeeper”.

Pentru a găsi server-ul SIP, un terminal va folosi sistemul DNS (Domain Name

Server). Orice identificator SIP URL trebuie să aibă o înregistrare în acest sistem. Folosind

acelaşi mod de lucru în care de exemplu browser-ul Internet Explorer translatează adresele

Page 61: Analiza comunicarii intr-o retea moderna prin VoIP

textuale în adrese IP, terminalul face rost de aceste înregistrări. Folosindu-le pe acestea poate

deduce adresa de transport a server-ului. Ţinând minte adresa server-ului sau URL-ul acestuia

în loc de cele ale terminalului cu care se doreşte comunicarea, este posibilă mutarea

terminalului apelat şi chiar salvarea în memorie de tip cache a URL-urilor. Dacă adresa

terminalului apelat s-ar menţine direct în DNS atunci ar apare probleme la salvarea în

memorii de tip cache a înregistrărilor. În mod normal toate înregistrările DNS pot fi salvate de

către rezolvatorul DNS. Acestea expiră după valoarea în secunde exprimată de parametru

TTL ce este conţinut de înregistrări. De aceea dacă terminalul apelat se mişcă, apelantul va

avea încă în memorie adresa greşită şi apelul va eşua. Singura soluţie este de a pune

parametrul TTL la 0 şi să se facă interogări DNS atunci când terminalul se mişcă. Soluţie nu

foarte uşoară.

Pe de altă parte, server-ul SIP este foarte improbabil să se mute şi menţinerea adresei

în înregistrări DNS nu pune nici-o problemă. Server-ul este anunţat despre noua locaţie a

terminalului şi poate îndruma cererea INVITE către locaţia corespunzătoare.

Un agent de apel este un serviciu care se ocupă apelurile spre şi de la un utilizator în

locul acestuia. În telefonia tradiţională acest tip de serviciu este realizată de către infrastuctura

inteligentă a operatorului sau de către „Private Branch Echange”(PBX) aflat în posesia unei

companii.

Un agent de apel poate realiza următoarele sarcini:

Încearcă să găsească utilizatorul prin îndrumarea mesajelor de iniţializare a apelurilor

(H.323 Setup sau SIP INVITE) către locaţiile corespunzătoare sau către mai multe locaţii

simultan.

Implementează regurile de îndrumare a apelurilor cum ar fi trimiterea apelului către

alte locaţii atunci cănd sună ocupat, atunci când nu se răspunde sau în mod necondiţionat;

Implementează filtrarea apelurilor folosind reguli dependente de originea apelului

şi/sau dependente de momentul iniţierii acestuia.

Înregistrează încercările nereuşite;

realizează orice alte sacini privind managementul apelului din partea utilizatorului.

Toate aceste funcţii pot fi implementate de către un proxy SIP. Îndrumarea simplă a

apelurilor şi filtrarea pot fi implementate şi de către un server de îndrumare. Server-ele proxy

SIP oferă cea mai mare flexibilitate deoarece pot alege să primească şi să trimită mai departe

toate mesajele de semnalizare şi astfel să monitorizeze şi să controleze toate aspectele legate

de un apel. Pentru a fi capabil să folosescă toate aceste servicii un utilizator trebuie să forţeze

Page 62: Analiza comunicarii intr-o retea moderna prin VoIP

toate apelurile ce vin spre el să treacă prin server-ul proxy. Cel mai bun mod de a face acest

lucru este de a configura înregistrarea DNS să indice spre acest server.

Agentul de apel poate fi şi o caracteristică a software-ului de utilizator, această situaţie

fiind mai puţin practică decât cea care presupune existenţa unui server proxy separat şi

centralizat din cauză că terminalul unui utilizator poate fi stins în orice moment şi poate avea

o adresă IP dinamică.

Prin accesul bazei de date a unui registrator, un server proxy poate rezolva toate

problemele legate de mobilitetea utilizatorului sau schimbarea adresei IP dacă terminalele

sunt configurate să folosească înregistrările dinamice. De exemplu, de fiecare dată când un

utilizator se conectează la Internet folosind serviciile unui furnizor, primeşte o adresă nouă IP.

Dar dacă sotfware-ul SIP pe care îl foloseşte înregistrează această nouă adresă, proxy-ul va

putea să trimită toate apelurile către această adresă.

3.2.10.2 Conferinţa

SIP poate fi folosit pentru stabilirea unei conferinţe. Totuşi acesta nu oferă nici o

formă de control al susccesiunii vorbitorilor în acest moment (sursa acestui material este RFC

3261 emis în Iunie 2002).

O conferinţă de tip multicast reprezintă conferinţa în care fluxul media este trimis

folosind transmisia de tip multicast. Semnalizarea corespunzătoare acestui flux poate fi

transmisă folosind multicast sau unicast.

În cazul în care se foloseşte semnalizarea multi-unicast (mai multe semnalizari de tip

unicast), nu există mari diferenţe faţă de cazul conversaţiei punct la punct, cu excepţia

faptului că descrierile de sesiune SDP indică adrese multicast.

Când se foloseşte semnalizarea multicast pentru stabilirea unei conferinţe, cererile SIP

sunt transportate folosind UDP deoarece acesta este singurul protocol care poate folosi

transportul multicast peste IP. Cererile multicast vor fi folosite mai ales pentru iniţializarea

unor conferinţe şi de aceea în câmpul „destinaţie” se va afla mai degrabă numele unei

conferinţe decât al unei persoane. Totuşi, este posibil să se folosească o cerere multicast care

să folosească URL-ul unei persoane în câmpul „destinaţie”, de exemplu pentru căutări de tip

multicast. Răspunsurile la o cerere SIP sunt trimise înapoi către portul UDP care a fost folosit

pentru transmisie şi la aceeaşi adresă de tip multicast. Pentru a reduce traficul pe reţea şi

Page 63: Analiza comunicarii intr-o retea moderna prin VoIP

pentru a evita posibilele fluxuri de răspunsuri sincronizate, s-au făcut anumite modificări faţă

de cazul procedurii de invitare multi-unicast, ce includ:

răspunsurile 2XX nu sunt trimise;

răspunsurile 6XX sunt trimise numai dacă URL-ul din câmpul „destinaţie” este acelaşi

cu a unui utilizator ce foloseşte terminalul în cauză (adică dacă cererea este o interogare

multicast şi nu o invitaţie la conferinţă multicast);

răspunsurile sunt trimise după o întârziere aleatoare de 0-1 secunde.

Dacă toate mesajele INVITE sunt trimise de o unitate centrală în unicast, aceasta poate

furniza un mecasnism simplu de control al vorbitorului prin trimiterea unui nou mesaj

INVITE cu parametrul ‚c’ având valoarea 0.0.0.0 (valoare zero) unui terminal pentru a-i

indica că nu mai are dreptul să vorbească şi mai târziu să-i trimită un mesaj INVITE cu

parametrul ‚c’ cu altă valoare decât cea nulă pentru a-i indica dreptul la microfon.

SIP în mod nativ suportă codarea în mai multe straturi. Această clasă de codecuri

codează informaţia media folosind mai multe fluxuri de date simultane. Un flux contţine

informaţiile de bază (suficiente pentru o redare de calitate proastă) şi celelalte fluxuri având

informaţii în plus ce permit reconstruirea semnalului pentru o redare de calitate superioară.

Astfel un receptor poate alege raportul calitate/bandă cel mai bun prin luarea deciziiei de a

primi unu, două sau mai multe fluxuri de date. Acest lucru este convenabil pentru conferinţele

multicast, permiţând tuturor receptorilor să adapteze recepţia conform caracteristicilor

terminalelor aflate la dispoziţie, astfel transmiţător nefiind obligat să trimită fluxuri

modificate pentru fiecare receptor. SDP descrie un flux codat în mai multe straturi astfel:

c= <adresă multicast de bază>/<ttl>/<număr de adrese>

De exemplu: c=IN IP4 224.2.1.1/127/3. Adresele multicast trebuie să fie continue

(224.2.1.1, 224.2.1.2, 224.2.1.3).

Suportul protocolului SIP pentru conferinţele multi-unicast este limitat. O entitate

centrală poate fi configurată astfel încât să funcţioneze ca un element MCU din H.323 care să

mixeze sau să comută fluxurile media ce intră în acest aparat. În momentul de faţă singurul

mod de a face comutare ar fi să se trimită o invitaţie SIP cu parametrul SDP ‚c’ pus pe zero

deoarec acesta va semnaliza terminalului să oprească transmisia şi să reactiveze transmisia

prin trimiterea unui mesaj INVITE cu parametru ‚c’ nenul.

SIP furnizează un mod simplu şi elegant de a transforma un apel punct la punct (de la

A la B) într-o conferinţă (A, B şi C). Persoana (de exemplu A) care doreşte să invite un nou

participant să ia parte la conferinţă trimite un mesaj INVITE şi persoanei deja existente (B) şi

participantului invitat (C) cu parametrii noi sesiunii (cum ar fi adresa multicast şi eventual un

Page 64: Analiza comunicarii intr-o retea moderna prin VoIP

alt set de codecuri spre deosebire de adresa unicast a sesiunii existente între A şi B) dar cu

acelaşi CallID. Menţinând valoarea parametrului CallID se semnalizează participantului B că

aceasta nu reprezintă o invitaţie la o altă sesiune ci doar se schimbă parametrii sesiuni

existente.

Controlul apelurilor pot fi activate pe o maşină proxy sau registrator intr-un mod

simplu prin trimiterea de mesaje de înregistrare. De exemplu un utilizator care doreşte să

trimită temporar apelurile, cei sunt destinate, la altă locaţie trimite doar un mesaj REGISTER

cu numele acestuia în câmpul „To” şi noua locaţie în câmpul „Contact”, având o valoarea

dorită în câmpul „Expires”.

Caracteristici mai complicate privind controlul apelurilor nu intră în obiectivul

protocolului SIP şi probabil vor fi configurate folosind alte protocoale, cum ar fi HTTP.

Terminalele SIP vor fi de obicei calculatoare personale multimedia şi „browser-ele web”

reprezintă interfaţa perfectă pentru a configura un proxy complex.

3.2.10.3 Facturarea apelurilor

Prin definiţie, toţi participanţi invitaţi de o sursă comună se află în acelaşi apel SIP.

Acest apel este identificat printr-un identificator unic în toată reţeaua, CallID. Cu această

definiţie, oconferinţă (cunoscută în termeni SIP ca o sesiune multimedia) poate fi formată din

mai multe apeluri SIP- fiecare utilizator care a contactat direct controlerul multipunct are un

CallID unic.

Într-un apel fiecare conexiune poate fi identificată prin combinaţia informaţiilor din

câmpurile „To”, „From” şi „CallID”. Toate conexiunile pot fi grupate într-o sesiune

multimedia comună cu ajutorul descrieri sesiunii.

În PSTN un apel este de obicei plătit de persoana cere-l iniţiază. Un proxy ce este un

releu pentru semnalizările de la un terminal poate crea bazele de date pentru facturare în care

se înregistrează momentele în care se trimit mesajele INVITE, CANCEL şi BYE, precum şi

răspunsurile. Durata unei conexiuni se poate determina ca durata în timp între prima cerere

INVITE acceptată şi prima cerere BYE.

Pentru a forţa ca semnalizarea unui utilizator să trecă printr-un proxy, o cale

convenabilă de a face acest lucru este ca proxy-ul să controleze un „firewall” din reţea. Astfel

se micşorează posibilitaţile ca un utilizator să ocolească proxy-ul ce este folosit pentru

facturare.

Page 65: Analiza comunicarii intr-o retea moderna prin VoIP

În tabelul asociat figuri I.12 este prezentat baza de date completată de către un server

proxy SIP în urma mesajelor ce au trecut prin acesta. Pe baza acestor informaţii poate afla

cine a sunat, cu cine a vorbit, ce servicii s-au folosit şi cât a durat convorbirea şi astfel poate

implementa un serviciu de facturare şi de autorizare. Cu ajutorul echipamentului firewall se

pot închide apelurile celor care şi-au depăşit creditul sau nu au dreptul de a folosi serviciile de

telefonie.

Figura I.12 Facturarea cu ajutorul unui proxy

Identificatorul apelului De la Spre Operaţia Informaţia de timp

[email protected] Teo@home Adi@home1 INVITE 15/05/2003 11:11:12

[email protected] Teo@home Adi@home1 200 15/05/2003 11:11:23

[email protected] Teo@home Adi@home1 BYE 15/05/2003 11:12:45

[email protected] Teo@home Marius@home2 INVITE 15/05/2003 11:16:17

[email protected] Teo@home Marius@home2 200 15/05/2003 11:16:31

[email protected] Teo@home Marius@home2 BYE 15/05/2003 11:32:15

[email protected] Teo@home Andreea@home3 INVITE 15/05/2003 11:45:12

[email protected] Teo@home Andreea@home3 486 15/05/2003 11:45:33

[email protected] Teo@home George@home4 INVITE 15/05/2003 12:33:12

[email protected] Teo@home George@home4 200 15/05/2003 12:33:35

[email protected] Teo@home George@home4 BYE 15/05/2003 14:11:55

3.2.11 SIP şi telefonia tradiţională (RFC 3372, septembrie 2002)

Page 66: Analiza comunicarii intr-o retea moderna prin VoIP

SIP este un protocol ce poate stabili, modifica şi opri sesiuni multimedia. Aceste

sesiuni includ conferinţe multimedia, telefonie prin internet şi alte aplicaţii similare. SIP este

unul din protocoalele de bază folosit pentru implementarea „Vocii peste IP” (VoIP) Cu toate

că realizarea semnalizări corespunzătoare apelurilor telefonice şi transportul fluxurilor media

peste IP au destule avantaje faţă de telefonia tradiţională, o reţea VoIP nu poate exista izolată

de reţelele de telefonie existente. Este vital ca reţeaua telefonică ce foloseşte SIP să fie

capabilă să interacţioneze cu PSTN.

O caracteristică importantă a oricărei reţele de telefonie SIP o reprezintă transparenţa

faţă de serviciile PSTN. Aceste servicii, ca de exemplu menţinerea unui apel în aşteptare,

numere de telefon gratuite, etc. implementate în protocoale cum ar fi „Signalling System

No.7” (SS7) trebuie să fie oferite de o reţea SIP într-o manieră în care diferenţele să fie mici

în timp ce flexibilitatea protocolului SIP să nu fie limitată. Pe de altă parte, este necesar ca

SIP să aibă primitivele pentru transportul acestor servicii şi pentru terminalele SIP nu numai

pentru cele ce cunosc SS7. Totuşi, este esenţial ca informaţia SS7 să fie disponibilă la

„gateway”-uri, puncte de interconectare SS7-SIP, pentru a asigura transparenţa trăsăturilor ce

sunt suportate în SIP. Dacă e posibil, informaţia SS7 trebuie să fie disponibilă fără pierderi în

reţeaua SIP; acest lucru este necesar deoarece unele reţele folosesc parametri SS7 extinşi

pentru a transmite informaţii prin aceste reţele.

O altă importantă caracteristică a reţelei telefonice SIP o reprezintă rutarea cererilor

SIP – astfel o cerere SIP ce iniţializează un apel telefonic trebuie să conţină destule informaţii

în antelul ei pentru a fi rutată în mod corespunzător de către serverele proxy prin reţea.

Aceasta duce la faptul că este necesar ca numărul format de către un utilizator trebuie luat din

semnalizarea SS7 şi pus în cererea SIP.

RFC-ul 3372 asigură un cadru pentru integrarea semnalizării din telefonia tradiţională

în mesajele SIP. Acesta asigură caracteristicile de care s-a vorbit mai devreme prin tehnici

cunoscute ca „încapsulare” şi respectiv „translatare”. La „gateway”-urile SIP-SS7, mesajele

de semnalizare din telefonia tradiţională sunt încapsulate în mesajele SIP pentru ca

informaţiile necesare serviciilor să nu fie pierdute în cererile SIP. Totuşi, intermediari ca

server-ele proxy ce iau deciziile de rutare nu trebuie să li se ceară să înţeleagă mesajele SS7 şi

astfel simultan anumite informaţii critice sunt traslatate în câmpurile corespunzătoare din

antetele SIP.

În timp ce SIP are toate mecanismele pentru stabilirea şi oprirea apelurilor, acesta nu

are nici un fel de mecanism pentru a transporta informaţiile din timpul apelului pe calea de

semnalizare în tipul sesiunii. Aceste informaţii nu schimbă starea apelurilor SIP sau

Page 67: Analiza comunicarii intr-o retea moderna prin VoIP

parametrii sesiunilor pe care SIP le iniţiază. Un mecanism de a realiza acest lucru este de

asemenea necesar.

Problemele care trebuiesc depăşite şi modul de a face acest lucru este prezentat în

următorul tabel:

Transparenţa la semnalizările SS7 Încapsularea acestora în mesajele SIP

Rutarea mesajelor ţinând cont de

semnalizarea încapsulată

Translatarea informaţiei în antetulul

SIP

Transferul semnalizărilor din timpul

apelului

Folosirea metodei INFO pentru

transportul informaţiilor din timpul

sesiunii

De observat că există multe moduri de semnalizare în telefonie (SS7 ISUP:ISDN User

Part, BTNUP, Q.931, MF, etc.). RFC-ul 3372 se referă numai la SS7 şi ţinteşte să specifice

numai comportarea numai a interfaţelor ISUP-SIP. Este posibil ca pe viitor să existe

documente care să se ocupe cu alte sisteme de semnalizare.

RFC-ul descris în acest subcapitol introduce noţiunea de SIP-T adică SIP pentru

telefoane ce reprezintă un set de mecanisme ce sunt folosite pentru interconectarea reţelelor

SIP cu cele ce folosesc SS7. Scopul acestui set de mecanisme este de a asigura codificarea

informaţiei transportate prin semnalizare SS7 în mesaje SIP şi transparenţa serviciilor dincolo

de punctele de interconectare PSTN-SIP. SIP-T este recomandat a fi folosit acolo unde o reţea

VoIP este legată de o reţea PSTN.

Folosind SIP-T, există trei modele simple pentru modul cum apelurile interacţionează

cu „gateway”-urile. Apelurile ce sunt originare dintr-o reţea PSTN pot traversa „gateway”-ul

pentru a avea ca ţintă un terminal SIP, cum ar fi un telefon IP. În mod asemănător, un telefon

IP poate iniţia un apel prin care să se poarte o conversaţie cu cineva legat la o reţea PSTN.

Ultima posibilitate de interes din punct de vedere al protocolului SIP este aceea ca o reţea IP

ce foloseşte SIP să fie doar o reţea de tranzit între „gateway”-uri. În acest caz pentru a putea

interconecta reţeaua IP cu PSTN trebuie ca informaţia SS7 primită sa fie păstrată în cererile

SIP la „gateway”-ul ce iniţiază apelul SIP şi să fie refolosită această informaţie atunci când la

„gateway”-ul ce se află la celălalt capăt al apelului SIP, se reconstruieşte semnalizarea PSTN.

Prin încapsularea informaţiilor ISUP în semnalizarea SIP, o reţea telefonică ce foloseşte

protocolul SIP asigură păstrarea tuturor informaţiilor critice SS7 atunci când aapelul SIP este

folosit pentru a face legătura între două segmente PSTN.

Page 68: Analiza comunicarii intr-o retea moderna prin VoIP

Dacă ar fi fost vorba numai de schimbul de informaţii între „gateway”-uri, orice

protocol pentru transportul acestora ar fi fost bun, ne fiind nevoie neapărată de SIP şi de SIP-

T. SIP-T este folosit pentru a beneficia de avantajele utilizării SIP: rutarea cererilor şi

controlul apelurilor realizate de server-ele proxy, uşurinţa în realizarea serviciilor SIP şi

altele. Introducerea de informaţii din mesajele ISUP primite în antetul cererilor, permite

intermediarilor să considere aceste informaţii atunci când procesează cererile. SIP astfel

facilitează stabilirea de apeluri şi crearea de servicii pentru reţeaua IP şi în acelaşi timp prin

SIP-T asigură metodele de interconectare cu PSTN.

În continuare voi detalia fluxurile mesajelor de semalizare atunci când avem una din

situaţiile prezentate mai devreme:

Originea apelului PSTN, ţinta PSTN: „gateway”-ul de unde se iniţiază apelul SIP

primeşte informaţiile ISUP de la reţeaua de telefonie PSTN, le introduce în mesajele SIP pe

care le transmite către „gateway”-ul unde se termină apelul SIP. Acesta extrage informaţiile

ISUP pe care le foloseşte în semnalizarea către reţeaua PSTN. Se foloseşte rutarea SIP pentru

a determina punctul de ieşire din reţea şi pentru a a iniţia negocierea unei sesiuni media între

capete. Mesajele schimbate sunt prezentate în figura I.13.

Originea PSTN şi ţinta apelului reţeaua IP: „gateway”-ul ce iniţiază apelul SIP

primeşte informaţii ISUP de la PSTN şi le introduce în mesaje SIP ce sunt direcţionate către

agentul SIP. Terminalul nu are nevoie de informaţiile ISUP încapsulate şi le ignoră. (figura

I.14)

Originea IP şi ţinta apelului reţeaua PSTN: un telefon SIP iniţiază apelul VoIP care

este rutat de unul sau mai multe server-e proxy către „gateway”-ul corespunzător. Acesta

produce din informaţiile date, semnalizarea ISUP şi direcţionează apelul către interfaţa PSTN

disponibilă. (figura I.14)

Page 69: Analiza comunicarii intr-o retea moderna prin VoIP

Figura I.13 PSTN-PSTN

Figura I.14 PSTN-IP

Page 70: Analiza comunicarii intr-o retea moderna prin VoIP

Figura I.15 IP-PSTN

Mesajele ce sunt schimbate în reţelele PSTN au următoarea semnificaţie: IAM: Initial

Address Message, mesaj trimis pentru a se indica pornirea unui apel şi pentru a se cere

rezervarea unei părţi din linia telefonică până la abonatul apelat, ACM – Address Complete

Message, trimis pentru a indica disponibilitatea părţi apelate şi faptul că linia a fost rezervată,

ANM – Answer Message, trimis atunci când partea apelată a ridicat receptorul, REL –

Release Message, indică faptul că partea apelantă a închis telefonul şi a terminat convorbirea,

RLC – Release Complete Message, confirmă închiderea convorbirii şi eliberarea liniei

rezervate.

Din punct de vedere funcţional există trei elemente distincte într-o reţea VoIP ce

foloseşte SIP şi interacţionează cu PSTN:

Iniţiatorul apelului SIP

Terminalul ce este apelat de apelul iniţiat

Intermediarii ce rutează cererile SIP

Funcţionarea acestor elemente este precizată în continuare:

Iniţiatorul. Funcţiile agentului ce iniţiază apelul este de a genera cererile SIP de creare

a unei sesiuni cum ar fi INVITE. Când un apel are originea în PSTN, un „gateway” reprezintă

un iniţiator. Altfel, acesta este un terminal SIP obişnuit. În orice caz, se poate observa că nu se

poate anticipa tipul de element căruia apelul îi este destinat, adică nu se poate şti dacă

terminalul dorit a fi apelat se află legat la reţeaua SIP sau la PSTN. În cazul cănd un apel îşi

Page 71: Analiza comunicarii intr-o retea moderna prin VoIP

are originea în PSTN, „gateway”-ul ce iniţiază apelul ia necesari paşi să păstreze informaţia

ISUP primită intactă prin încapsularea acesteia în mesajele pe care le crează. Acesta este

trebuie să recunoască versiunea ISUP pe care a recepţionat-o şi să includă această informaţie

în mesajul creat. Apoi crează antetul cereri INVITE din parametrii ISUP primiţi. Aceasta

poate însemna ca în câmpul „To” să treacă un URL care să trimită la numărul format de către

utilizator. În alte cazuri, un telefon SIP este iniţiatorul unui apel VoIP. În mod normal,

telefonul trimite cererea unui proxy SIP care este responsabil pentru rutarea acesteia către

destinaţia corespunzătoare. Aici nu există nici-o informaţie ISUP care să fie încapsulată. Cu

toate că apelul poate avea ca ţintă un terminal din reţeaua de telefonie clasică şi trebuie

generată semnalizare ISUP, terminalul nu are de unde să ştie aceasta şi ar fi nepotrivit ca toate

terminalele să genereze informaţie ISUP încapsulată. Astfel un iniţiator trebuie să genereze

semnalizare SIP şi să realizeze încapsularea şi modificarea formatului semnalizării atunci

când este posibil.

Terminalul apelat în reţeaua SIP. Acesta este un agent SIP standard care poate fi ori un

„gateway” ce interacţionează cu PSTN ori un terminal SIP. În cazul în care un apelul are ca

ţintă un terminal din reţeaua PSTN, „gateway”-ul de ieşire se află la capătul apelului SIP.

Acesta generează informaţiile ISUP corespuzătoare pentru semnalizarea prin reţeaua PSTN.

Valorile pentru parametrii ISUP pot fi extrase din antetul cereri SIP primite sau din

informaţiile ISUP încapsulate în mesaj. În cazul în care ţinta unui apel este un terminal SIP,

agentul server care primeşte cererile cu informaţiile încapsulate în mod normal nu ţine cont de

acestea.

Intermediarii. Acestora le este încredinţată sarcina de a ruta mesajele de la unul la

celălalt către terminalele SIP şi „gateway”-uri. Fiecare server proxy ia o decizie în privinţa

direcţiei în care o să trimită un mesaj, bazată pe mai multe câmpuri din antet. SIP-T introduce

anumite consideraţii în plus pentru acţiune de trimitere a mesajelor care pot aduce noi

caracteristici şi condiţii de îndeplinit pentru intermediari. Asigurarea transparenţei faţă de

ISUP este principalul scop urmărit de SIP-T. Compabilitatea între variantele ISUP cunoscute

de interfeţele PSTN ce se află la capetele unui apel SIP poate să influenţeze transparenţa fată

de serviciile PSTN. Din cauza aceasta server-ele proxy pot ţine cont de varianta folosită în

luarea deciziilor de rutare. Un alt element important ce trebuie luat în considerare atunci când

se iau deciziile de rutare o reprezintă locul unde este amplasat „gateway”-ul unde se termină

un apel SIP. Această locaţie trebuie să fie cât mai aproape de utilizatorul apelat.

Page 72: Analiza comunicarii intr-o retea moderna prin VoIP

SIP-ul definit în RFC-ul 3261 nu are mijlocele pentru a transporta informaţia de

control care este generată în timpul unei sesiuni. Metoda INFO ce a fost definită în RFC-ul

2976 şi adăugată la SIP trebuie folosită pentru transportul informaţiei din timpul sesiunii.

3.2.12 Securitatea apelurilor

Cererile şi răspunsurile SIP conţin informaţii importante despre modul şi conţinutul

comunicaţiei între utilizatori. Corpul mesajului poate conţine chei de codare pentru sesiunea

ce se iniţializa. De aceea SIP poate utiliza două metode complementare de codare pentru a

proteja dreptul la intimitate:

Codare cap la cap: se bazează pe cheia de codare cunoscută de cei doi agenţi ai

utilizatorilor implicaţi în tranzacţie. În mod normal, mesajul este trimis codat cu cheia publică

a receptorului, astfel încât numai acesta să poată citi mesajul. Toate implementările trebuie să

poată folosi codarea bazată pe PGP, dar pot folosi şi alte scheme de codare. O cerere sau un

răspuns SIP este codată cap la cap prin împărţirea mesajului într-o parte care este codată şi un

antet mic care rămâne necodat. Unele părţi ale mesajului SIP, cum ar fi linia de cerere, linia

de răspuns şi alte câmpuri trebuie citite de server-ele proxy şi de aceea nu trebuiesc codate.

Toate aceste câmpuri trebuie să fie poziţionate înaintea celor codate. Mesajul este codat

începând cu primul caracter al primului câmp care este codat şi până la sfârşitul mesajului.

Codare între servere: nu toate cererile sau răspunsurile SIP pot fi codate cap la cap din

cauză că sunt câteva câmpuri ca „To” sau „Via” care trebuie să fie vizibile pentru server-ele

proxy, astfel încât cererile să fie rutate în mod corespunzător. Pentru ca utilizatorii reţelei

răuvoitori să nu poată citi aceste câmpuri se aplică o codare între server-e. Acest tip de codare

se poate aplica şi cererilor sau răspunsurilor care au fost deja codate cap la cap. De observat

că prin acest mod de codare server-ele proxy pot afla cine pe cine sună dar aceste informaţii

se pot afla şi din realizarea unei analize atraficului reţelei, astfel această tehnică aduce un grad

de protecţie limitat dar care merită efortul. În mod normal proxy-urile nu au voie să modifice

câmpurile antetelor şi corpurile mesajelor. Acestea pot, totuşi, să codeze mesajele nemarcate

cu cheia de codare a apelatului. Proxy-urile trebuie să codeze mesajele SIP dacă terminalul ce

le emite nu are această funcţie sau pentru a impune politici de securitate.

Măsuri de protecţie trebuie luate pentru a împiedica un atacator să modifice şi să

retransmită cereri şi răspunsuri SIP. Aceleaşi măsuri de codare ce se aplică pentru a asigura

autenticitatea unui mesaj SIP sunt folosite şi pentru a autentificarea celui care a transmis

Page 73: Analiza comunicarii intr-o retea moderna prin VoIP

mesajul. Totuşi acestea mecanisme nu asigură integritatea mesajului. Mecanismele de

autentificare de la nivelul transport şi de la nivelul reţea pot fi folosite între server-e. SIP

poate folosi şi schemele HTTP de autentificare. Toate implementările SIP trebuie să permită

folosirea autentificării de tip PGP. Cel mai simplu mod de autentificare include o parolă

trimisă sub formă textuală într-o cerere repetată ce este trimisă ca urmare a unui răspuns

neautorizat sau unui răspuns a unui proxy ce doreşte autentificare la o cererea originală.

Schemele mai complicate presupun trimiterea unui răspuns la cererea unei entităţi ce doreşte

se ocupă cu autentificările, răspuns ce conţine un secret comun.

PGP adică „Pretty Good Privacy” este bazat pe modelul în care clientul îşi dezvăluie

identitatea prin trimiterea unei cereri semnată cu o cheie privată. Server-ul poate în acest fel

să determine originea cereri numai dacă are acces la o cheie publică, de preferabil semnată de

o a treia entitate de încredere.

Aceste măsuri nu sunt perfecte. Chiar şi cu mesajele codate, o persoană rău voitoare

poate să citească mesajele trimise şi poate introduce răspunsuri neautentificate ce modifică

desfăşurarea normală a unui apel. [2]

3.3 H.323 şi SIP

3.3.1 Introducere

Date fiind cele două protocoale de semnalizare ce se află în competiţie pentru

dominarea semnalizări în cadrul telefoniei prin reţelele IP, se pune problema care este mai

bun? Vestea bună este că cele două standarde par să conveargă – luând ideile bune unul de la

celălalt. În particular versiunea 3 a standardului H.323 a adăugat elemente care iau crescut

performanţa (s-a umblat la întârzierea în iniţializarea unui apel şi la procesarea fără stări

pentru folosirea UDP-ului), elemente care iniţial erau avantaje importante ale SIP-ului.

Mai important, fiecare standard în aceeaşi măsură permit folosirea majorităţii

funcţiilor cerute de către utilizatori, printe acestea aflându-se: iniţializarea apelului, închiderea

unui apel, menţinerea unui apel în starea de aşteptare, transferarea unui apel la altă locaţie,

conferinţa şi iniţializarea apelului de pe o pagină Web. Singurele diferenţe funcţionale sunt

indicarea unui apel în aşteptare (care este utilizat numai în H.323), controlul apelului de către

Page 74: Analiza comunicarii intr-o retea moderna prin VoIP

o a treia persoană (de exemplu o secretară care dă un telefon din partea directorului, funcţie

utilizată numai în SIP) şi câteva funcţii referitoare la conferinţe. În timp ce funcţiile ce pot fi

folosite sunt asemănătoare, standardul H.323 (prin intermediul protocolului H.245) furnizează

un mecanism mai robust pentru procesul în care se schimbă informaţiile referitoare la

capacităţile terminalelor, decât oferă SIP.

Totuşi, funcţionalitatea nu este singurul punct în dezbaterea H.323 vs SIP. La fel de

important sunt şi calitatea serviciilor (QoS), scalabilitatea, flexibilitatea şi interconectarea cu

alte reţele. În timp ce la capitolul funcţionalitate cele două standarde sunt similare în

domeniile tocmai prezentate sunt foarte diferite. În următorul tabel sunt prezentate

caracteristicile celor două protocoale:

Asemănări H.323 mai bun SIP mai bun

Calitatea

serviciilor

şi managementul

Durata iniţializării

apelului

Recuperarea pachetelor

pierdute

Lipsa posibilităţilor de

rezervare a resurselor

Toleranţa la defecţiuni

(H.323 permite

gatekeeper-i

şi terminale redundante )

Controlul admisiei (SIP

se bazează pe alte

protocolale pentru

managementul benzii,

managementul apelului

şi pentru controlul benzii)

Detecţia buclelor

(folosind câmpul

„Via” din antet

buclele sunt

identificate mai

bine decât folosind

parametrul

„PathValue” de la

H.323)

Stabilitatea şi

flexibilitatea

Procesarea fără stări

Folosirea UDP-ului

Comunicaţiile între

server-e pentru

localizarea terminalelor

Localizarea terminalelor

în alte

domenii administrative

(SIP nu defineşte o

metodă dar sugerează

folosirea DNS-ului)

Complexitatea (SIP

este mai simplu)

Extensibilitatea

(folosirea numelor

de

caracteristici şi de

coduri organizate

într-o structură

ierarhică care pot fi

înregistrate de catre

organizaţia IANA

reprezintă o metodă

de extindere mai

flexibilă decât

singurul parametru

Page 75: Analiza comunicarii intr-o retea moderna prin VoIP

folosit pentru extensie

„NonStandardParam”)

Uşurinţa în modificare

(este mai simplu şi

are o metodă de

codare bazată pe text)

Interconectarea Interconectarea cu

reţeaua PSTN (H.323

foloseşte mesaje de tipul

Q.931 ce sunt compatibile

cu standardul SS7)

3.3.2 Unde SIP este mai bun

SIP este simplu. Acesta face într-o tranzacţie ce face H.323 versiunea 1 în patru sau

cinci schimburi de mesaje, fiecare dintre acestea specificate în documente ITU diferite. În

plus SIP poate folosi UDP, spre deosebire de versiunile 1 şi 2 ale standardului H.323 ce

puteau folosi numai TCP. Combinaţia acestor deosebiri a dus la timpi mult mai mici pentru

iniţializarea unui apel în cazul folosirii SIP. Această situaţia a dus la modificările apărute în

versiunea 2 a standardului H.323, printre care şi procedura numită „Fast Connect” ce

scurtează timpul necesar pentru iniţializarea unui apel. În versiunile ulterioare s-a adăugat şi

posibilitatea de a lucra cu UDP.

Organizaţia IETF a dobândit o mare experintă în transmisia datelor în mod multicast.

SIP a fost creat pentru o reţea ce permite transmisia în mod multicast nu numai pentru

fluxurile media ci şi pentru semnalizare. De exemplu un mesaj INVITE poate fi trimis unui

grup prin transmisie de tip multicast. Acest mod de operare este folositor unei instituţii ce se

ocupă cu rezolvarea prin telefon a unor probleme dar şi unui utilizator care încearcă să

găsească pe cineva într-o instituţie. Versiunile 1 şi 2 ale H.323 trebuie să folosească

transmisia în mod multi-unicast pentru a realiza acelaşi lucru.

Folosirea URL-urilor ca identificatori este un lucru foarte important. La o primă

privire pare să nu existe o mare diferenţă între un alias de tip e-mail de la H.323

([email protected]) şi un URL de tip SIP (sip: [email protected]). în realitate există doar una: un

alias H.323 presupune că protocolul folosit este H.323, iar SIP specifică protocolul chiar în

Page 76: Analiza comunicarii intr-o retea moderna prin VoIP

URL. Din această cauză un server SIP poate direcţiona un apel către un server non-SIP într-o

manieră foarte flexibilă. Un terminal SIP, atunci când este apelat de un alt terminal SIP, poate

direcţiona apelul către o pagină Web sau către un URL de e-mail.

Procedura din SIP poate fi realizată şi de către H.323 folosindu-se tipul

identificatorilor de tip URL atunci când se specifică o adresă alias, disponibil din versiunea 2

a protocolului H.225. Dar prin această adăugare schema identificatorilor începe să devină

foarte complicată.

Mulţi furnizori de servicii doresc să aibă posibilitatea să marcheze unele apeluri ca

fiind prioritare. Câmpul „Priority” din antetul SIP aduce acestuia o funcţie care nu există în

H.323.

Trimiterea mesajelor sub formă de text poate fi si un avantaj şi un dezavantaj.

Avantejele sunt: metodă simplă, se pot depista foarte uşor greşile şi se pot corecta la fel de

uşor şi problemele de interconectare se depistează repede. Dezavantajul principal este acela că

această metodă de codare crează mesaje de dimensiuni mai mari decât dacă s-ar fi folosit

mesaje codate binar.

3.3.3 Unde este H.323 mai bun

H.323 face o distincţie clară între tipurile de media ce pot fi folosite şi tipurile de

media ce sunt în mod efectiv transmise în reţea. SIP nu face o asemenea distincţie, terminalele

prezentând doar codecurile pe care le poate folosi la recepţie şi nu există nici o procedură

pentru deschiderea conexiunii media în afară de trimiterea efectivă a datelor. Aceasta pare o

simplificare a semnalizării şi poate apărea ca un avantaj pentru SIP. Totuşi în unele cazuri, în

particlar în cazul în care se implementează un server care va fi folosit foarte mult şi resursele

trebuiesc menţinute sub control, acest mod de lucru poate cauza probleme deoarece fiecare

server care îşi prezintă capacitatea de recepţie trebuie să asculte un port pentru a recepţiona

datele. Un client H.323 trebuie să înceapă procesul de ascultare doar când primeşte mesajul

„OpenLogicalChannel”. Aceast mod de funcţionare al protocolului SIP poate duce la

existenţa a mai multor procese ce nu primesc nimic şi deoarece cele mai multe codecuri

implementează funcţia de detecţie a pauzelor aceste procese pot să nu primească nimic chiar

dacă conferinţa se desfăşoară în mod normal, aşa că închiderea proceselor care nu fac nimic

din cauză că partenerul de conversaţie a dispărut este foarte greu de realizat.

Page 77: Analiza comunicarii intr-o retea moderna prin VoIP

H.323 singur sau în combinaţie cu H.332 conţine elemente foarte puternice de control

al conferinţei. SIP nu a fost creat pentru controlul modului de desfăşurare al conferinţei şi de

aceea multe din elementele necesare pentru control nu există, încă.

Mesajele H.323 ce aparţin protocolului H.225, fiind preluate de la Q.931, sunt codate

conform standardului Q.931. Celelalte mesaje ca şi mesajele ce sunt extinderea mesajelor

Q.931 sunt codate conform regulilor de codare a pachetelor (PER) folosind sintaxa abstractă 1

(ANS.1). Acest mod de codare a generat foarte discuţii privind complexitatea H.323-ului.

Folosirea a două codări cu reguli diferite duce la eforturi mari de programare din partea

companiilor care nu au implementat standardul Q.931 şi nu au un compilator ANS.1.

Rezolvarea problemelor de interconectare între terminalele H.323 necesită monitorizarea

reţelelor cu programe ce cunosc metodele de codare Q.931 şi PER ANS.1 şi care sunt mai

greu de găsit.

Pornirea de la zero este dificilă, dar după ce o compania are un ANS.1 şi o

implementare Q.931, sunt câteva advantaje în folosirea acestei codări:

unităţile de date ce sunt transferate între terminale sunt optimizate din punct de vedere

al dimensiunii

(posibil) performanţa este mai bună.

În reţelele moderne dimensiunea pachetelor nu mai este o problemă, dar dacă H.323

va fi utilizat în reţelele de telecomunicaţii mobile atunci acest aspect va fi un avantaj.

Performanţa este discutabilă în cazul standardului H.323. Este adevărat că cele mai

multe protocoale ce folosesc mesaje codate binar sunt foarte rapide deoarece structurile de

date folosite în program pot fi trimise imediat la buffere şi invers. Dar Q.931 şi PER sunt

foarte complexe şi performanţa depinde mult de omplementare.

În stadiul actual de dezvoltare a celor două standarde, descoperirea entităţii care se

ocupă de apeluri este mai bine realizată la H.323 unde un terminal poate cunoaşte ce

„gatekeeper” se ocupă de apeluri spre deosebire de situaţia de la SIP. În orice caz, acest fapt

se poate fixa foarte uşor în versiunile următoare.

3.3.4 Interconectarea SIP - H323

Cele două protocale se ocupă cu iniţierea, controlul şi terminarea conversaţiilor

multimedia. Deoarece fiecare dintre acestea au o arhitectură separată şi mesaje distincte care

numai în aceste arhitecturi funcţionează, pentru legarea unei reţele SIP cu o reţea H.323 este

nevoie de un echipament numit „gateway” ce trebuie să implementeze cele două protocoale,

Page 78: Analiza comunicarii intr-o retea moderna prin VoIP

pentru a face schimbul de informaţii între cele două reţele. Acest echipament poate juca

următoarele roluri:

pe partea cu reţeaua H.323 joacă rolul de terminal H.323 şi pe partea cu reţeaua SIP

joacă rolul de agent server sau client;

pe partea cu H.323 joacă rolul unui Gatekeeper iar pe partea cu SIP a unui registrator

şi/sau server proxy.

O imagine a unei interconectări simple între cele două reţele este prezentată în figura

următoare:

Figura I.16 Interconectarea reţelelor SIP şi H.323

Deoarece H.323 foloseşte în semnalizare mesaje din mai multe protocoale (de

exemplu RAS, H.255 şi H.245) şi în mai multe etape, timpul de iniţializare a apelurilor este

mare în comparaţie cu SIP. Dacă se foloseşte modul de semnalizare denumit „FastStart” acest

timp se reduce ajungând comparativ cu cel al protocolului cu care este in competiţie. Folosind

acest mod în tabelul următor se prezintă mesajele ce sunt folosite pentru iniţializarea unei

sesiuni şi cum sunt ele transformate din mesaje de semnalizare H.323 în mesaje SIP.

Nr. Partea H.323 Partea SIP Comentarii

1 -> Iniţializare cu FastStart Conţine informaţiile despre canalele

logice folosite pentru sensul invers

2 <- Call proceeding „Gatway”-ul indică primirea

informaţiilor

3 INVITE -> Conţine informaţiile despre porturile

pentru sensul invers în format

SDP

Page 79: Analiza comunicarii intr-o retea moderna prin VoIP

4 180 Ringing <-

5 <- Alerting

6 200 OK <- Utilizatorul a răspuns apelului

7 <- Connect

8 ACK ->

N BYE <- Utilizatorul a închis

N+1 <- Release

N+2 200 OK ->

N+3 -> Release complete

Pentru deschiderea unui nou flux de date se folosesc mesajele din tabelul ce urmează

-> OpenLogicalChannel

INVITE -> Acelaşi identificator de apel ca mesajul

INVITE precedent dar cu valoarea

câmpului Cseq incrementată.

Informaţia SDP conţinută descrie lista

modificată a canalelor media

200 OK <- Se confirmă lista modificată prin

informaţia SDP conţinută

<- OpenLogicalChannelAck

3.3.5 Concluzii

Pe piaţă există echipamente ce suportă H.323 sau SIP dar puţine ştiu sa folosească

ambele protocoale. În prezent echipamentele ce lucrează cu H.323 sunt mai numeroase decât

cele ce folosesc SIP.

În practică, vor exista companii ce vor produce echipamente ce vor folosi unul din cele

două protocoale până va fi sigur că unul dintre acestea va dispărea sau până se vor uni într-un

alt protocol. Dacă se doreşte o funcţionare stabilă cu alte implementări atunci se pot alege

echipamente ce folosesc H.323 deoarece acest protocol este mai stabil din punct de vedere al

standardelor decât SIP. Altfel, cele două protocoale furnizează aceleaşi servicii. Singura zonă

în care se observă o diferenţă, este iniţializarea conferinţelor. Deoarece SIP poate fi folosit

pentru a invita mai multe persoane să se alăture la un apel, conferinţele pot fi iniţiate fără

existenţa în mod obligatoriu a unui server pentru conferinţe. În practică totuşi, dacă aceste

Page 80: Analiza comunicarii intr-o retea moderna prin VoIP

amănunte sunt avantaje sau nu depinde de soluţia implementată de vânzătorul echipamentului

şi nu de protocoalele ce sunt folosite.

Materialele din care au fost consultate pentru a realiza acest subcapitol au fost: Reţele

de calculatoare [1], IP telephony [2], RFC 2327 [6], RFC 2616 [7], RFC 2974 [8], RFC 3261

[9], RFC 3272 [10], Voice over IP [15]. Acestea ar putea fi consultate pentru a se aprofunda

noţiunile prezentate aici.

4. Vocea în VoIP

Aceasta reprezintă un factor important în diferenţierea reţelelor noi apărute ce oferă

sevicii VoP (voce peste reţele de pachete) dar şi a echipamentelor folosite. De aceea

măsurarea calităţii vocii într-un mod obiectiv, sigur şi ieftin devine foarte importantă.

Calitatea poate însemna mai multe lucruri depinzând de punctul de vedere. Pe de o parte,

calitatea vocii este un mod de a descrie şi a evalua fideliatea vocii, inteligibilitatea şi

caracteristicile semnalului vocal analog. Pe de altă parte, calitatea vocii poate descrie

performanţele mecanismului de transport folosit.

Reţeaua PSTN tradiţională a rezolvat problema calităţii prin optimizarea circuitelor

pentru banda folosită de voce şi pentru ritmul conversaţiei.Această reţea a ajuns să furnizeze

servicii de bună caliatate pentru aplicaţii în timp real ce au nevoie de întârzieri mici, jitter mic

şi bandă constantă dar mică. Cu toate că PSTN nu prezintă o calitate a vocii excepţională,

utilizatorii s-au obişnuit cu acesta şi compară celelalte servicii folosind PSTN ca reper.

Spre deosebire de reţeaua de telefonie tradiţională, reţele IP au fost proiectate să ofere

servicii aplicaţiilor ce nu au cerinţe de timp real, cum ar fi transferul fişierelor sau e-mail.

Aceste aplicaţii crează un trafic în rafale şi uneori cer bandă însemnată dar nu sunt afectate de

întârzieri sau variaţia acestora. Pentru a putea folosi aplicaţiile de timp real, reţelele IP trebuie

să aibă şi mecanisme care să asigure calitatea serviciilor (QoS) necesară pentru transportul

datelor. Utilizatorii PSTN s-au obişnuit cu o calitate foarte bună a vocii. Furnizând o calitate

comparabilă a serviciilor va duce la acceptarea şi succesul aplicaţiilor de voce prin reţelele de

pachete.

VoIP, prin introducerea de codecuri neliniare şi prin impunerea de termeni privind

livrarea pachetelor unor reţele ce nu au fost proiectate pentru cerinţe de acest gen, face ca

menţinerea calităţi vocii dificilă. Transmisia, folosind acest tip de reţele, care nu pune nici o

problemă traficului de date care nu este în timp real poate pune probleme serioase traficului în

Page 81: Analiza comunicarii intr-o retea moderna prin VoIP

timp real. Transmisia este afectată de: banda în timp real, întârzierile datorate proceselor din

“gateway”-uri, pierderea pachetelor, întârzierile şi codecurile neliniare.

Multe tipuri de reţele de date nu pot să asigure banda necesară pentru transportul vocii.

Reţele de date nu asigură o întârziere mică şi nici măcar constantă. Introducerea semnalului

vocal în aceste reţele necesită folosirea de metode care să asigure transportul în timp real,

calitatea vocii putând avea de suferit dacă aceste metode nu funcţionează cum trebuie. Cu

toate că vocea în timp real necesită o bandă rezonabilă, necesarul efectiv este ori o bandă

constantă pentru codecurile liniare ori o bandă oarecare pentru codecurile cu rată mică. Cu

toate că furnizorii de servicii asigură o bandă suficientă pentru aplicaţiile de voce fără a afecta

traficul de date obişnuit, se folosesc şi tehnici de compresie în particular pentru traficul în

timp real ce are ca destinaţie un calculator personal. Compresia neliniară poate fi o cauză

majoră pentru scăderea calităţi vocii.

Reţele VoIP se bazează pe procesele care de multe ori sunt realizate în “gateway”-uri

pentru a prevenirea unor probleme de calitate. De exemplu, eliminarea perioadelor de linişte

poate preveni crearea şi transmiterea de pachete pe perioadele dintre frazele vorbite. La fel,

suprimatoarele de ecou sunt necesare pentru a elima ecoul atunci când devine perceptibil

atunci când reţeaua introduce întârzieri. Dacă procesele de acest timp nu funcţionează cum

trebuie calitatea vocii are de suferit.

Aplicaţiile compensează pierderea pachetelor prin retransmiterea pachetelor pierdute

folosind TCP. Aplicaţiile de date cum ar fi transferul de fişiere şi e-mail sunt mai puţin

afectate de timpul în care această retransmisie are loc , dar traficul de voce în timp real nu

poate accepta această întârziere. În plus VoIP foloseşte UDP care nu garantează livrarea

pachetelor. Pachetele pierdute înseamnă informaţie pierdută.

Întârzierea percepută de către utilizator poate fi proveni din timpul în care sistemul sau

reţeaua trensformă semnalul analog în semnal digital, crează pachetele, transmite, rutează şi

stochează într-un buffer un semnal de voce. Această întârziere poate să creeze probleme într-o

conversaţie şi poate să mărească stricăciunile provocate de alte probleme cum ar fi ecoul.

Un motiv important pentru măsurarea calităţi vocii este dezvoltarea şi folosirea

codecurilor neliniare ce comprimă vocea astfel încât se transmite informaţia importantă fără a

se transmite tot semnalul vocal. Cu alte cuvinte aceste codecuri conservă cum sună vocea fără

a păstra toate frecvenţele semnalului.

În general, se poate exprima şi măsura calitatea vocii în funcţie de ascultătorul şi

vorbitorul ce au luat parte la conversaţie. Calitatea trebuie măsurată capăt la capăt. Adică

indiferent de sisteme, aparate şi metode de transmisie, acesta trebuie examinată din punctul de

Page 82: Analiza comunicarii intr-o retea moderna prin VoIP

vedere al utilizatorului. Dar natura subiectivă a acestui tip de evaluare calitativă însoţeste

orice aspect al calităţi vocii.

O definiţie clară a calităţii vocii este necesară înainte de a discuta caracteristicile şi

componentele acesteia. Mulţi factori influenţează percepţia calităţi unui apel telefonic – de la

uşurinţa cu care acesta este efectuat până la calitatea sunetului din receptor. La un nivel mai

ridicat calitatea unui apel este compusă din calitatea serviciului, calitatea sunetului şi calitatea

conversaţiei. Acestea sunt interdependente atunci când un utilizator trebuie să-şi spună

părerea despre calitatea unui apel. De exemplu acesta poate tolera, ignora sau poate să nu

observe o calitate mai proastă a sunetului atunci când calitatea serviciilor este foarte bună.

Utilizatorii telefoanelor mobile sau cei care poartă conversaţii prin satelit la mare distanţă pot

tolera sau ignora problemele de sunet din cauza avantajelor aduse de apel. Un alt exemplu

este şi calitatea conversaţiei. Când există o întârziere perceptibilă între frazele ascultătorului şi

a vorbitorului, mulţi utilizatori percep această situaţie ca o problemă de calitate a serviciului

sau a sunetului.

Multe aspecte ale calităţi serviciilor sunt strâns legate de problemele şi deciziile luate

de furnizorul de servicii şi mai puţin legate de performanţa reţelei şi funcţionarea

echipamentelor de reţea. Totuşi, calitatea sunetului şi a conversaţiei par stâns legate de

dispunerea reţelei şi performanţa acesteia. Din această cauză, calitatea vocii este rezultatul

masurării calitative şi cantitative a calităţi sunetului şi a conversaţiei.

Calitatea vocii este afectată de trei factori principali: claritatea, întârzierea şi ecoul.

Claritatea este o măsură a fidelităţii, lipsei distorsiunilor şi inteligibilităţi unui semnal de voce.

Întârzierea este timpul necesar unui semnal vocal să ajungă de la vorbitor la ascultător. Ecoul

este sunetul produs de vorbitor ce ajunge la urechea acestuia. În perceperea calităţii un factor

îi afectează pe ceilalţi, utilizatorii neputând să distingă între diferitele efecte cauzate de reţea.

Distorsiunile şi fidelitatea sunt nu sunt afectate de întârziere, astfel un semnal vocal poate fi

întârziat oricât şi tot va suna bine la redare. Pentru ca un utilizator să perceapă calitatea vocii

ca acceptabilă trebuie ca claritatea să fie rezonabil de bună iar întârzierea rezonabil de scurtă.

Se mai observă că ecoul depinde de întârziere şi ecoul afectează claritatea.

Claritatea descrie fidelitatea percepută şi natura nedistorsionată a unui semnal de voce.

De asemenea această mai poate fi descrisă şi ca inteligibilitatea vocii, indicând cantitatea de

informaţie care poate fi extrasă dintr-o conversaţie. Totuşi este posibil ca să se înţeleagă ce

spune vorbitorul chiar dacă la recepţie există o claritate proastă a semnalului, cum ar fi o voce

distorsionată sau greu de auzit. Claritatea şi evaluarea acesteia depinde de mai mulţi factori.

De exemplu unele benzi de frecvenţă sunt mai importante pentru percepţia clarităţii decât

Page 83: Analiza comunicarii intr-o retea moderna prin VoIP

altele. Acultătorii sunt mai sensibili la distorsiunile sau atenuările ce au loc în bnda de

frecvenţă 1000- 1200 Hz decât la cele ce au loc în banda 250-800 Hz. Un alt exemplu este că

frazele complete sunt mai uşor de înţeles decât o secvenţă de cuvinte fără nici o legătură, chiar

dacă fraza completă este mai distorsionată decât secvenţa de cuvinte. De aceea utilizatorii

percep frazele complete ca având o calitate mai bună.

Într-un apel telefonic ce este iniţiat în reţeaua PSTN şi are ca ţintă un terminal dintr-o

reţea de pachete mai mulţi factori contribuie la afectarea claritaţii sunetului

transmis.Telefonul PSTN influenţează prin calitatea receptorului şi a microfonului, prin

nivelul semnalului şi prin ecoul generat între microfon şi receptor. Reţeaua PSTN foloseşte

semnalul digital. Transformarea semnalului analog în semnal digital de multe ori afectează

claritatea vocii. “Gateway”-ul ce interconectează reţeaua PSTN cu reţeaua IP afectează

claritatea din cauza codecurilor folosite, a componentelor ce elimină perioadele de linişte şi a

generatoarelor de zgomot. Reţeaua IP, deşi nu are componente de voce active, afectează

claritatea prin tendinţa de a pierde pachete şi de a adăuga jitter livrării de pachete. Terminalul

IP afectează şi el prin codecul folosit, prin mecanismul de eliminare a perioadelor de linişte şi

prin calitatea microfonului şi a receptorului (boxelor).

Pierderea pachetelor nu este un fenomen rar în reţelele IP. Pe măsură ce reţeua sau

unele link-uri devin congestionate, bufferele din rutere încep să nu mai primească pachete şi

acestea sunt aruncate. O altă cauză a pierderi pachetelor o reprezintă schimbarea rutelor atunci

când unele link-uri nu mai funcţionează. Un efect similar cu pierderea pachetelor este acela

când un pachet este întârziat foarte mult şi ajunge prea târziu pentru a fi folosit în

reconstrucţia semnalului de voce.

Pentru aplicaţiile ce nu sunt de timp real pierderea pachetelor nu are prea mare

importanţă. Protocoalele asigură mecanisme de retransmisie pentru a recupera pachetele

pierdute. Totuşi în cazul aplicaţiilor de timp real, pachetele trebuie să sosească într-un interval

bine definit de timp pentru a putea fi folosite la reconstrucţia semnalului de voce.

Retransmisia nu poate fi folosită în acest caz deoarece face ca vocea să devină inteligibilă.

Pentru a evita pierderile de pachete, sunt necesare mecanisme speciale care să

minimum de bandă pentru aceste aplicaţii. Aceste mecanisme minimizează pierderile de

pachete şi întârzierea pentru traficul prioritar cum este vocea. Aceste mecanisme includ

scheme de priorităţi folosite la controlul fluxului printr-un ruter, în protrocolul MLSP sau la

setarea bitului “type of sevice” din antetul IP. O alternativă mai dinamică pentru rezervarea de

resurse este protocolul RSVP, ce permite unui terminal sau unu “gateway” să ceară o anumită

calitate a serviciului IP. Indiferent de metoda folosită există totuşi o problemă importantă.

Page 84: Analiza comunicarii intr-o retea moderna prin VoIP

Dacă se presupune că există resurse suficiente, rezervarea şi controlul acestora pe întregul

drum al apelului este foarte dificilă din cauza domeniilor cu administrare distinctă străbătute

şi din cauza tipurilor diferite de rutere întâlnite care pot oferi sau nu serviciul cerut.

Un codec transformă semnalul de voce analog într-un flux digital de biţi şi vice-versa.

Unele codecuri folosesc şi tehnici de compresie, îndepărtând informaţia redundantă sau mai

puţin importantă pentru a reduce banda necesară pentru transmisie. Cu alte cuvinte, multe

codecuri comprimă semnalul de voce prin păstrarea numai acelor părţi din semnalul de voce

care sunt importante din punct de vedere al percepţiei. Acest lucru înseamnă păstrarea acelor

părţi care au cel mai mare impact din punct de vedere al modului cum urechea umană aude

acel semnal, mai ales dacă acele părţi sunt distorsionate sau omise. Depinzând de tipul de

codec folosit, partea receptoare a unei conversaţii VoIP poate să nu reproducă semnalul

original. Câteva codecuri, ca G.711, sunt numite liniare deoarece acestea reproduc aproape în

întregime semnalul original. Alte codecuri, ca G.729 sau G.723.1, încearcă să reproducă

sunetul subiectiv auzit de urechea umană şi nu semnalul original captat de microfon. Aceste

codecuri sunt în general numite neliniare.

Compresia este un proces ce pune în balanţă calitatea vocii, puterea de calcul locală,

întârzierea şi banda necesară pentru transmisie. Cu cât este mai mare reducerea de bandă

necesară cu atât este mai mare cererea de putere de calcul pentru o claritate percepută a

semnalului. În plus cu cât este mai mare reducerea benzi necesare cu atât întârzierea produsă

de procesul de calcul este mai mare astfel crescând întârzierea globală. Alţi factori care

influenţează efectul codecului asupra calităţii vocii sunt lungimea pachetului, pierderea

pachetelor şi orice mecanism de corecţie a erorilor pe care codecul îl foloseşte el însuşi.

Pe lângă pierderea pachetelor şi codecuri mulţi alţi factori afectează claritatea vocii,

incluzând şi zgomotul, componentele ce detectează dacă se vorbeşte sau nu pe conexiune

(detectoare de voce), ecoul şi factori de mediu.

Zgomotul, indiferent de sursa lui, poate reduce claritatea unui semnal de voce.Dacă

zgomotul este introdus înainte ca semnalul să fie transformat într-un semnal digital, codecul

transformă şi zgomotul împreună cu semnalul. Dacă zgomotul este introdus după ce semnalul

este adus la forma analogică, acesta distorsionează şi mai mult semnalul. Detectoarele de voce

degradează claritatea prin tăierea din greşeală a unor porţiuni din semnal. Vocea care ajunge

înapoi la vorbitor şi este perceptibilă în timpul conversaţiei poate afecta claritatea percepută.

În final, un receptor poate avea o calitate excelentă dar zgomotul din cameră, starea

utilizatorului, cerinţele acestuia precum şi alţi factori pot influenţa un utilizator să creadă că

Page 85: Analiza comunicarii intr-o retea moderna prin VoIP

calitatea audio percepută este inacceptabilă. Aceşti factori de mediu afectează metodele de

testare şi fac testele subiective ce folosesc oameni mai dificile.

Întârzierea reprezintă timpul necesar unui semnal să parcurgă reţeaua. În contextul

telefonic întârzierea reprezintă timpul necesar ca semnalul generat la gura vorbitorului să

ajungă la urechea ascultătorului. Întârzierea este suma întârzierilor provocate de

echipamentele de reţea şi de link-urile reţelelei prin care trece traficul corespunzător vocii.

Mulţi factori contribuie la întârzierea globală incluzând întârzierea generată în reţeaua PSTN,

în reţeaua IP şi de către echipamentele VoIP.

Întârzierea datorat transmisiei pe apelurile de distanţă mare este de aproximativ 250

ms atunci când aceasta trece printr-un satelit geostaţionar şi reprezintă principala cauză a

întârzierilor în reţeaua PSTN. În plus întârzierile datorate comutaţiei în nodurile de reţea este

mică în comparaţie cu întârzierea datorată transmisie. În cele mai multe cazuri întârzierea în

reţelele PSTN este relativ mică şi depinde în principal de distanţa între capetele apelului.

Întârzierea în reţelele IP este în principal datorată de stocării în buffere, în cozi de

aşteptare şi comutării sau rutării în ruterele IP. În special întârzierea în reţeaua de pachete este

formată din întârzierea datorată procesului capturări pachetelor, comutări/rutări a acestora şi

aşteptări în cozi de aşteptare.

Întârzierea datorată capturări pachetelor reprezintă timpul necesar ce trebuie aşteptat

până cănd tot pachetul este primit înainte a de fi procesat şi trimis spre următorul ruter.

Lungimea pachetului şi viteza de transmisie detremină valoarea acestei întârzieri. Folosind

pachete de dimensiuni mici pe link-uri de viteze mari se poate micşora întârzierea dar

eficienţa reţelei ar putea scădea. Întârzierea datorată comutării/rutării reprezintă timpul în care

un ruter îl foloseşte pentru a comuta un pachet. În acest timp echipamentul analizează antetul

pachetului, verifică tabelul de rutare şi trimite pachetul către portul corespunzător. Această

întârziere depinde de arhitectura echipamentului de reţea şi de mărimea tabelei de rutare. Cele

mai noi rutere pot face lua unele decizii de rutare prin hardware şi nu prin software micşorând

astfel întârzierea. Datorită multiplexării statistice şi a sosirilor asincrone a pachetelor este

necesară folosirea de cozi de aşteptare la porturile de intrare şi de ieşire din rutere. Acest fapt

produce o întârziere care este dependentă de încărcarea reţelei, lungimea pachetelor şi

distribuţia statistică a pachetelor pe porturi. Proiectarea de rutere şi de link-uri de mari

capacităţi poate micşora întârzierea dar nu o poate elimina.

“Gateway”-urile şi terminalele contribuie şi ele în mod semnificativ la întârzierea

globală din cauza procesării semnalului la ambele capete ale link-ului. În timpul necesar

procesării este inclus timpul în care codecul codează semnalul analogic în semnal digital şi

Page 86: Analiza comunicarii intr-o retea moderna prin VoIP

decodează semnalul digital într-unul analogic. Unele codecuri fac şi o compresie a semnalului

ceea ce face ca întârzierea să crească.

În partea transmiţătoare, întârzierea de pachetizare – timpul necesar pentru a forma un

pachet din informaţia audio – este un alt factor. Cu cât este mai mare pachetul cu atât se

aşteaptă mai mult pentru formarea unui pachet. Folosind pachete mici poate micşora

întârzierea dar eficienţa suferă deoarece este nevoie să se trimită mai multe pachete în reţea

fiecare având un antet care nu transportă informaţie.

În partea receptoare, trebuie să se întârzie pachetele pentru a se compensa variaţiile

duratelor între sosirile pachetelor sau pe scurt jitter. Chiar şi pachetele care sunt transmise cu

durate în timp constante între ele ajung la receptor cu durate variabile din cauza aşteptărilor în

cozile de aşteptare şi din cauza transmisiei pe căi diferite a pachetelor. Pentru a elimina

efectul jitterului se foloseşte un buffer în care sunt puse pachetele înainte de decodare

deoarece acestea necesită pentru a funcţiona corespunzător un fux de pachete constant fără

găuri. Întârzierea produsă de acest buffer poate fi diminuată prin micşorarea jitterul în fiecare

nod şi reducerea numărului de noduri din reţea. Se poate optimiza şi dimensiunea bufferului

pentru a fi cât mai mic pentru jitterul existent. Folosind mecanismele ce fac traficul în timp

real prioritar faţă de celelalte fluxuri reţeaua poate micşora considerabil jitterul.

Întârzierea nu afectează în mod direct calitatea vocii dar, în schimb, afectează

caracterul conversaţiei. Cei mai mulţi utilizatori nu observă o întârziere mai mică de 100 de

milisecunde. Când aceasta este între 100 şi 300 de milisecunde, utilizatorii observă doar o

mică ezitare în răspunsul partenerului de conversaţie. După 300 de milisecunde, întârzierea

este clară pentru utilizatori şi conversaţia devine din ce în ce mai dificilă. În mod evident, o

întârziere mică duce la o conversaţie de o calitate mai bună şi la o percepţie mai bună a

urilizatorului asupra calităţii generale a vocii.

Pentru a elimina ecoul nedorit, proiectanţi de reţea introduc componente funcţionale

numite suprimatoare de ecou în centralele locale, în “gateway”-urile VoIP şi în terminalele

VoIP posibil cât mai aproape de locul unde se produce ecoul.

Pentru a utiliza cât mai eficient banda, reţelele VoIP folosesc o funcţie numită

eliminarea duratelor în care nu se vorbeşte sau detecţia vocii. Această funcţie este realizată de

un element care se află în “gateway”-uri sau în terminale şi care elimină pachetele

corespunzătoare momentelor când nu se vorbeşte. Acestea operează pe partea de ieşire a unui

“gateway” şi se pot adapta la nivele diferite de zgomot. Deoarece conversaţiile sunt de obicei,

pe un termen mai lung, de tipul half-duplex folosind o astfel de funcţie se poate realiza o

reducere de 50% a necesarului de bandă pe cele două canale folosite luate împreună. Deşi

Page 87: Analiza comunicarii intr-o retea moderna prin VoIP

funcţionarea acestora nu afectează claritatea, în cazul în care nu funcţionează corect descreşte

în mod sigur inteligibilitatea semnalului şi calitatea per ansamblu a conversaţiei. La recepţie,

pentru ca cel ce ascultă să nu creadă că nu mai este nimeni pe linie în momentele în care

pachetele corespunzătoare momentelor de pauză au fost eliminate, există o funcţie ce

generează un zgomot de fundal care trebuie să fie cât mai apropriat de zgomotul de fundal de

la transmisie.

Materialele consulate pentru a scrie acest subcapitol au fost The Quality of voice over

IP [14] şi Voice quality in converging telephony and IP networks [17].

II Aplicaţie software

1. Prezentare generală

Pentru a înţelege cât mai bine funcţionarea protocolului de semnalizare prezentat în

lucrarea de faţă am realizat o aplicaţie care să folosescă acest protocol pentru a iniţia şi

termina o sesiune de comunicaţie prin voce printr-o reţea de date.

De la început am impus anumite limitări. Nu s-au folosit sisteme mai complicate cum

ar fi server-e proxy, server-e de redirectare, “gateway-uri”. Aplicaţia trebuia să funcţioneze

numai într-o reţea locală de mici dimensiuni şi de aceea am trecut cu vederea problemele

legate de asigurarea calităţii serviciilor (QoS). Transmisia vocii prin reţea a fost într-un fel pe

planul doi, important fiind modul de comunicare între aplicaţii folosind protocolul SIP.

Deoarece semnalizările se realizau pe un LAN fără alte sisteme aparţinând arhitecturii SIP, s-

a folosit modelul de comunicaţie între două terminale care îşi cunosc adresele de reţea şi

comunică direct fără intervenţia altor sisteme.

Aplicaţia este şi un exemplu cum foarte uşor se poate integra VoIP cu alte forme de

servicii, doarece integrează un sistem de “chat” cu unul de VoIP. Dezvoltarea programului s-a

realizat în două etape. Mai întâi sau pus bazele comunicaţiei pe bază de mesaje scrise şi după

aceea s-au dezvoltat mecanismele de comunicaţie prin voce.

În realizarea părţii de “chat”, obiectivele propuse au fost implementarea unei aplicaţii

care să permită transmiterea mesajelor scrise prin metoda multicast, să prezinte lista celor care

folosesc această aplicaţie şi să permită folosirea de imagini grafice inserate în text care să

exprime anumite stări emoţionale (emoticoane) fără a avea o componentă centrală care să

realizeze aceste lucruri. Aplicaţiile discută între ele folosind un set de mesaje text trimise sub

Page 88: Analiza comunicarii intr-o retea moderna prin VoIP

forma “/” ”cuvant cheie” ”informaţie”. Prin acestea ele indică intrarea unui nou utilizator,

trimiterea unui nou mesaj, schimbarea nickname-ului şi ieşirea unui utilizator.

Partea care este responsabilă cu implementarea VoIP a avut ca scop principal

realizarea unei aplicaţii care să permită asigurarea comunicaţii prin protocolul SIP cu celelalte

aplicaţii. Au fost implementaţi agenţii server şi client care se ocupă de trimiterea mesajelor,

recepţionarea şi procesarea acestora. Transmiterea vocii s-a realizat într-un mod foarte simplu.

Pachetela care sosesc de la placa audio sunt pur şi simplu introduse şi pachete UDP şi trimise

şin reţea. S-a adoptat această soluţie deoarece s-a doreşte folosirea aplicaţiei într-o reţea locală

de mici dimensiuni care nu este foarte mult. În acest caz rata de pierdere a pachetelor este

mică şi cum s-a implementat doar un singur codec, folosirea protocoalelor RTP şi RTCP

pentru transmisia pachetelor audio nu ar fi făcut decât să complice aplicaţia, fără să aducă

contribuţii importante.

Partea grafică a aplicaţiei foloseşte ferestre, butoane şi zone de text cu informaţii

despre funcţionare pentru a permite o intracţiune cât mai uşoară cu un utilizator. Fereastra

principală prezintă zona unde se scriu mesajele scrise de utilizatori, unde se pot scrie mesaje

noi, unde se schimba numele de apelare al utilizatorului (nickname) şi de unde se poate ieşi

din conversaţie. Mesajul scris de un utilizatori ajunge la toţi cei care au aplicaţia pornită şi

sunt conectaţi, deoarece se foloseşte o comunicaţie multicast. Tot în această fereastră sunt

trecute şi informaţii despre utilizatorii ce sunt în conversaţie la un anumit moment dat. Aceste

informaţii cuprind numele şi adresa de reţea a terminalului folosit. Acestea pot fi folosite

pentru a iniţia o conversaţie prin voce cu persoana respectivă.

Pe lângă această fereastră principală mai sunt ferestra pentru vizualizarea unei pagini

cu informaţii despre modul de folosire, pentru vizualizarea mesajelor trimise şi recepţionate,

pentru conectare, pentru vizualizarea informaţiilor despre aplicaţie, pentru iniţierea unei

sesiuni SIP şi pentru terminarea unei sesiuni SIP.

Aşa cum s-a precizat mai devreme această aplicaţie are posibilitatea de a înregistra

mesajele trimise între utilizatori. Dacă un utilizator ia parte la o conversaţie acesta poate

vizualiza mesajele trimise în cadrul acelei conversaţii din momentul intrării acestuia prin

intermediul unei ferestre. Dacă doreşte vizualizarea mesajelor din alte zile poate citi fisierul

log.txt în care sunt trecute mesajele de la prima folosire a programului.

În continuare se vor prezenta paşi necesari care trebuiesc făcuţi pentru a utiliza acest

program. Apoi se vor prezenta mai detaliat modul de funcţionare al programului în general şi

apoi pe cele două direcţii: partea de “chat” şi partea de VoIP.

Page 89: Analiza comunicarii intr-o retea moderna prin VoIP

2. Modul de utilizare

După pornirea programului apare fereastră principală ce conţine elementele toate

elementele necesare pentru realizarea în bune condiţii a unei conversaţii chat. Pentru a intra

într-o discuţie cu alţi utilizatori trebuie să ca programul să fie conectat la reţea.

Folosind bara de meniuri se selectează butonul “Actions” ce deschide un sub domeniu

şi de acolo se alege butonul “Connect” ce va deschide o fereastră în care se scrie adresa de

multicast şi portul ce va fi folosit pentru comunicaţia prin mesaje text şi numele sub care vrea

utilizatorul să fie cunoscut în conversaţie. Se apasă butonul şi în acest moment utilizator va fi

în modul conversaţie dacă toate informaţiile au fost corecte. Succesul sau insuccesul acestei

acţiuni este indicat în textul din josul ferestrei principale. Tot aici se indică o posibilă eroare

întâlnită în realizarea acţiunii dorite de utilizator.

Dacă în lista utilizatorilor prezentată în dreapta apare numai numele utilizatorului

înseamnă că programul funcţionează dar numai el are programul de chat pornit.

Schimbarea numelui cu care apare în această listă se face folosind butonul “Change

Nick”ce este plasat în fereastra principală. Succesul sau insuccesul acestei acţiuni este indicat

în zona din josul ferestrei.

Pentru a trimite mesaje este deajuns să se selecteze zona destinată acestui lucru, să se

scrie mesajul şi să se apese tasta “Enter”. În acest moment acest mesaj împreună cu numele

utilizatorului apar în zona de text din centrul ferestrei.

În această fereastră pot fi reprezentate şi imagini ce indică anumite stări emoţionale ale

utilizatorului numite “emoticoane”. Pentru aceasta utilizatorul trebuie să tasteze un anumit

cod format din două sau trei caractere text. Aceste coduri specifice plus descrierea imaginii

asociate sunt prezentate în continuare:

fericit :) foarte fericit :d surprins :o

supărat(limba):p smecher ;) supărat:(

dezorientat :s ruşinat :$ ochelari de soare (s)

nedecis :| da (y) nu (n)

fată (x) băiat (z) te iubesc (l)

nu te iubesc (u) poză (p) cadou (g)

cătuşi (%) floare (f) băutură (d)

floare ofilită (w) bere (b) liliac :[

messenger (m) email (e) telefon (t)

sărut (k) idee (i) adormit (s)

Page 90: Analiza comunicarii intr-o retea moderna prin VoIP

muzică (8) zi de naştere (^) furios :@

plâng :'( caţel (&) film (~)

curcubeu (r) soare (#) înger (a)

ceas (o) drac (6) pisică (@)

pahar (c) stea (*)

Deoarece zona de afişare permite vizionarea numai a mesajelor cele mai recente se

permite citirea tuturor mesajelor trimise şi recepţionate în cadrul sesiunii curente prin

intermediul ferestrei “Log”. Pentru a o deschide trebuie apăsate butoanele “View” şi “Current

Log” din bara de meniuri. Pentru a vizualiza mesajele din cadrul altor conversaţii trebuie să se

deschidă fişierul log.txt aflat în acelaşi director unde se află şi fişierele în java.

Pentru a iniţia o conversaţie prin voce trebuie să se selecteze din bara de meniuri

domeniul “Actions” subdomeniul “VoiceChat” care va deschide o fereastră în care se vor

introduce numele utilizatorului şi adresa de reţea acestuia care va fi invitat să participe şi o

scurtă descriere a motivului pentru care se realizează această invitaţie. După apăsarea

butonului “Dial” la partea apelată va apare o fereastră care va prezenta sursa şi motivul

acestui apel. Dacă se apasă butonul “Yes” atunci apelul este acceptat şi se poate începe

conversaţia. Dacă se apasă butonul “No” atunci partea care a iniţiat apelul este informată că

apelul nu se poate realiza. Conversaţia se poate termina şi din partea apelată şi din partea

apelantă prin apăsarea butonului “Kill VoiceChat” din domeniul “Acţiuni” din bara de meniu.

Situaţia apelului în toate momentele sale este prezentată în zona din josul ferestrei principale,

utilizatorul putând astfel să acţioneze în cunoştinţă de cauza.

În orice moment se poate purta doar o sigură conversaţie prin voce, sosirea unei

invitaţii noi sau trimiterea uneia va avea ca raspuns în mod automat un refuz.

Menţionez că cele două aplicaţii sunt independente adică se poate purta o conversaţie

prin voce chiar dacă utilizatorul nu se află conectat la sistemul de transmitere şi recepţie a

mesajelor scrise dar unele informaţii necesare pentru realizarea unei conversaţii prin voce pot

fi extrase din informaţiile prezentate de program atunci când se află într-o conversaţie prin

text. De exemplu dacă nu se indica disponibilitatea pentru purtarea unei conversaţii de tip

“chat” prin conectare atunci nu se poate şti dacă utilizatorul dorit pentru o conversaţie prin

voce are programul pornit. Tot prin conectare se poate afla numele şi adresa de reţea a

utilizatorului necesare pentru iniţiarea unei conversaţii.

Pentru ieşirea din program ori se apasă butonul “X” din dreapta sus a ferestrei

principale care va deconecta programul din conversaţia chat şi va termina conversaţia activă

Page 91: Analiza comunicarii intr-o retea moderna prin VoIP

prin voce sau poate să apese butonul “Exit” din domeniul “Actions” din bara de meniuri

moment în care se vor executa aceleaşi acţiuni ca mai sus.

3. Descrierea claselor constituente

Acest program este format dintr-o clasă principală numită “Client” ce iniţiază celelalte

clase şi constriueşte fereastra principală şi din mai multe clase secundare. Acestea sunt în

general de două tipuri: clase folosite numai la partea grafică a aplicaţiei („About”, „Help”,

„Connect”, ”VoIP”, “VoipT”, ”VRing”) şi clase folosite în funcţionarea aplicaţiei („Client”,

„ChatArea”, „Conectare”, „Conversaţie”, „Recepţie”, „Transmisie”, “UserAgentSIP”,

“UserAgentServerSIP”, “UserAgentClientSIP”). Pe lângă acestea mai sunt prezente clase

(„Packet”, „AbsoluteLayout”, „AbsoluteConstraints”, ”MesajSIP”) care pot fi numite utilitare

doarece sunt folosite în funcţionarea celorlalte clase. Clasele „AbsoluteLayout” şi

„AbsoluteConstraints” sunt folosite pentru poziţionarea elementelor grafice în ferestre şi au

fost preluate de la Sun Microsystems. Au fost introduse în pachetul „Client” deoarece ele nu

sunt în Java 2 SDK 1.4.1 . Fiind folosite de toate clasele ce definesc ferestre, ele pot fi

considerate ca făcând parte din standard şi nu au mai fost desenate în diagrama de clase.

> Clasa principală o reprezintă clasa numită „Client” care defineşte fereastra

principală dar conţine şi codul ce determină modul de funcţionare al întregii aplicaţii. Această

clasă porneşte un fir de execuţie care în funcţie de anumite stări (conectare, deconectare,

conectat) se instaţiază celelate clase necesare pentru comunicaţii. Din această clasă se

iniţializează şi clasa ce porneşte firele de execuţie ce trimit şi recepţionează pe portul SIP

(ales în standard ca fiind 5060)

Dacă utilizatorul cere să fie conectat (posibil numai în cazul în care nu avem o

conexiune stabilită) atunci această clasă crează o instanţă a unei clase ce încearcă să se

conecteze, numită „Conectare”. În funcţie de rezultatul acestei acţiuni continuă cu crearea

unei clase ce se ocupă cu conversaţia, numită „Conversaţie”, sau informează utilizatorul că,

conexiunea nu se poate realiza.

Dacă utilizatorul doreşte deconectarea (posibil numai în cazul în care avem o

conexiune stabilită) clasa „Client” comandă clasei „Conversaţie” să se oprească şi cere

deconectarea clasei „Conectare”.

Mesajele ce trebuiesc trimise sunt pasate clasei „Conversaţie” de la care primeşte

mesajele primite de la celelate aplicaţii. Aceste mesaje primite sunt pasate clasei care le

afişează pe ecran (clasa „ChatArea”).

Page 92: Analiza comunicarii intr-o retea moderna prin VoIP

Metodele şi atributele clasei „Client” pot fi văzute în figura IV.1 ( pe lângă atributele

arătate mai sunt şi referinţele la celelalte clase prezentate precum şi la obiectele grafice).

> Clasa „Conectare” este folosită la conectarea şi deconectarea de la reţea în ambele

situaţii aceasta trimiţând celorlalte aplicaţii mesaje specifice. Are metode prin care returnează

o referinţă la socketul de tip multicast pe care îl crează.

Metodele şi argumentele sunt prezentate în figura IV.2.

Figura IV.1 Clasa Client

Page 93: Analiza comunicarii intr-o retea moderna prin VoIP

Figura IV.2 Clasa Conectare

> Clasa „Conversaţie” se ocupă cu transmiterea şi primirea mesajelor, pentru aceasta

folosind două fire de execuţie plasate în două clase denumite „Receptie” şi „Transmisie”.

Pentru partea de transmisie se întreţine o listă de mesaje pentru a exista siguranţa că mesajele

nu se pierd şi pentru folosirea firului de execuţie numai atunci când sunt mesaje în aşteptare în

listă. Clasele „Recepţie” şi „Transmisie” folosesc metodele clasei „Conversaţie” pentru a

prelua şi pasa mesajele. Clasa „Conversaţie ” foloseşte la rândul ei metodele clasei „Client”

pentru a-i da secvenţele de caractere primite de la celelalte aplicaţii şi pentru a prelua

caracterele scrise de utilizator.

Mesajele şi situaţiile în care se schimbă acestea sunt prezentate mai jos:

- conectare. Se trimite din partea aplicaţiei care se conectează mesajul “/connect” la

care fiecare aplicaţie ce primeşte acest mesaj răspunde cu “/nick nume(adresaIP)” unde nume

reprezintă apelativul ales de fiecare utilizator iar adresaIP reprezintă adresa de reţea a

terminalului folosit de utilizator.

- schimbarea apelativului. Aplicaţia care a primit cererea de schimbare a apelativului

trimite în reţea prin transmisie de tip multicast mesajul “/chgnick apelativ vechi: apelativ nou”

după ce în prealabil a verificat că apelativul nou nu este deja folosit în reţea.

- trimiterea de mesaje. Aplicaţia al cărui utilizator a scris un mesaj trimite mesajul

“/msg apelativ: mesaj”. Aplicaţia care primeşte acest mesaj tipăreşte mesajul primit.

- deconectare. Aplicaţia care primeşte comanda de deconectare trimite mesajul

“/disconnect apelativ(adresaIP)”

Metodele şi variabilele claselor sunt prezentate în figura IV.3( în clasa „Conversaţie”

pe lângă atributele arătate mai sunt şi referinţele către clasele Receptie şi Transmisie):

> Clasa „ChatArea” reprezintă clasa prin care se afişează mesajele de la server

înlocuindu-se aici codurile cu imagini. Din punct de vedere al implementării această clasă

Page 94: Analiza comunicarii intr-o retea moderna prin VoIP

crează o imagine care este apoi desenată în fereastra principală apelându-se metoda „paint()”

a acestei clase. Aici se definesc codurile şi emoticoanele desenate şi se face asocierea între

ele.

Deoarece ceea ce se desenează în fereastra principală este o imagine, funcţia „scroll”,

care se găseşte la un „TextArea”, nu este suportată şi de aceea a fost nevoie de creerea unei

noi clase „Log” care poate afişa discuţia dar fără a înlocui codurile cu emoticoane şi care

bineînţeles suportă funcţia „scroll”. Clasa „Packet” este o clasă care este folosită numai de

clasa „ChatArea” în cadrul metodei „paint()” şi furnizează informaţii despre ce emoticon

trebuie desenat, unde a fost găsit şi câte caractere trebuie să înlocuiască. Metodele şi

argumentele acestei clase precum şi cele ale clasei „Packet” sunt prezentate în figura IV.4.

> Clasa „Log” se ocupă pe lângă afişarea discuţiei din sesiunea curentă şi cu

menţinerea unui fişier „log.txt” în care se scriu toate mesajele primite plus ora şi ziua la care a

fost o conectare la server. Acest fişier poate fi şters de către utilizator prin intermediul unui

buton pus la dispoziţia acestuia. Metodele şi argumentele acestei clase sunt prezentate în

figura IV.5.

> „Help” afişează într-o fereastră porţiuni din acest document aflat într-un fişier numit

„help.txt”.

> „About” afişează, într-o fereastră, informaţii despre aplicaţie.

> „Connect” defineşte o fereastră unde sunt amplasate câmpurile unde se introduc

informaţiile despre adresa de multicast, portul şi apelativul utilizator. Tot în această fereastră

se află un buton „Connect” care acţionat pasează informaţiile, aflate în câmpuri, clasei

„Client” şi o informează pe această că se doreşte conectarea la calculatorul indicat.

> “VoIP” defineşte fereastra unde sunt trecute informaţiile despre utilizatorul ce va fi

invitat să participe la o conversaţie prin voce. Tot în acea fereastră este trecut motivul

conversaţiei. Atunci când se apasă butonul “Dial” aceste infomaţii sunt pasate clasei

“UserAgentClientSIP”.

Page 95: Analiza comunicarii intr-o retea moderna prin VoIP

Figura IV.3 Clasele Conversatie, Transmisie şi Recepţie

Page 96: Analiza comunicarii intr-o retea moderna prin VoIP

Figura IV.4 Clasa Packet

Figura IV.5 Clasa ChatArea şi Packet

Figura IV.6 Clasa Log

> “VRing” defineşte fereastra ce apare atunci când se primeşte din reţea o invitaţie la

conversaţie. Această fereastră prezintă utilizatorului informaţii despre cel ce îl invită şi

motivul acestei invitaţii. Două butoane îî sunt puse la dispoziţie pentru a alege dacă aceptă

această invitaţie sau nu. Indiferent de alegere se apelează metode din clasa

“UserAgentServerSIP” pentru a se trimite răspunsul.

Page 97: Analiza comunicarii intr-o retea moderna prin VoIP

> “VoipT” defineşte fereastra care apare atunci când un utilizator doreşte să termine o

conversaţie. Dacă se confirmă terminarea conversaţiei atunci se apelează metode care să

trimită mesajul “BYE” parţi interlocutoare.

> “UserAgentSIP” reprezintă clasa în care se pornesc firele de execuţie ce trimit

mesajele SIP şi recepţionează aceste mesaje. După o scurtă procesare mesajele primite sunt

trimise ori clasei “UserAgentServerSIP” dacă sunt cereri, ori clasei “UserAgentClientSIP”

dacă sunt răspunsuri.

Figura IV.7 Clasa UserAgentSIP

> “MesajSIP” este folosită pentru extragerea valorilor câmpurilor dintr-un mesaj SIP

şi pentru crearea de mesaje SIP.

Figura IV 8 Clasa UserAgentClientSIP

Page 98: Analiza comunicarii intr-o retea moderna prin VoIP

> “UserAgentClientSIP” reprezintă clasa ce procesează răspunsurile primite de la

servere prin intermediul clasei “UserAgentSIP” şi care trimite clasei “MesajSIP” informaţiile

necesare pentru crearea de cereri SIP. Aceste cereri sunt pasate clasei “UserAgentSIP”.

> “UserAgentServerSIP” este clasa ce procesează cererile primte de la clienţi şi trimite

înapoi raspunsuri create cu ajutorul clasei “MesajSIP”.

Figura IV. 9 Clasa MesajSIP

Page 99: Analiza comunicarii intr-o retea moderna prin VoIP

Figura IV. 10 Clasa UserAgentServerSIP

> “SDP” reprezintă clasa ce crează şi descifrează informaţiile SDP.

Figura IV.11 Clasa SDP

> “CapturePlayback” reprezintă clasa ce se ocupă cu primirea informaţiei audio de la

placa de sunet, trimiterea acestei informaţii folosind pachete UDP, recepţionarea şi trimiterea

acesteia spre placa audio. Firele de execuţie sunt pornite ori de server, ori de client iar

închiderea acestora se realizează de clasa care le-au pornit. Firele de execuţie sunt încapsulate

în două clase interioare acestei clase. Codecul folosit este unul dintre cele suportate de mediul

Java adică frecvenţa de eşantionare 8000Hz, cu 8 biţi pe eşantion, fără semn, stereo.

Page 100: Analiza comunicarii intr-o retea moderna prin VoIP

Figura IV. 12 Clasa CapturePlayback

Diagrama de clase este următoarea:

Figura IV. 13 Diagrama de clase

4. Modul de funcţionare

Page 101: Analiza comunicarii intr-o retea moderna prin VoIP

La pornirea aplicaţiei, clasa „Client” se ocupă cu instanţarea claselor „Help”, „About”,

„Connect” şi „ChatArea” dar şi cu pornirea firului de execuţie propriu. Diagrama de

colaborare din figura următoare va prezenta acest caz:

Figura IV. 14 Digrama de colaborare în cazul: pornire execuţie

Dacă se doreşte conectarea, prin intermediul ferestrei definită de clasa „Connect” se

aduce la cunoştinţa clasei „Client” că se doreşte conectarea. În acest moment în interiorul

firului de execuţie al clasei principale se verifică dacă mai există o conexiune, caz în care

acţiunea se ignoră. Dacă nu există connexiune atunci se instanţiează clasa „Conectare”, care

prin crearea unui socket către server încearcă deschiderea unui conexiuni cu acesta. Dacă

această acţiune se desfăşoară fără probleme se instanţiază clasa „Conversaţie” cu fluxurile de

intrare şi ieşire de pe socket-ul creat. La rândul ei această clasă instanţează două clase care

conţin fiecare câte un fir de execuţie ce se ocupă cu unul cu recepţia clasa “Receptie” şi

celălalt cu transmisia clasa “Transmisie”. Dacă instanţa clasei „Conectare” indică că,

conexiunea nu se poate realiza atuci se închide tot procesul cu un mesaj de eroare către

utilizator.

Diagrama de colaborare pentru cazul în care procesul de conectare se desfăşoară fără

probleme este prezentată în figura IV.15.

Page 102: Analiza comunicarii intr-o retea moderna prin VoIP

Figura IV. 15 Diagrama de colaborare în cazul conectării fără probleme

Dacă avem o conexiune şi utilizatorul scrie un mesaj sau doreşte să-şi schimbe nick-

ul, comanda ajunge la instanţa clasei „Conversaţie” unde este pus într-o listă de mesaje. Din

această listă de mesaje este luat de către instanţa clasei „Transmisie”. Digrama de colaborare

este:

Figura IV.16 Diagrama de colaborare în cazul în care se trimite un mesaj

Page 103: Analiza comunicarii intr-o retea moderna prin VoIP

După tipul mesajelor primite de către instanţa clasei „Recepţie” putem avea

următoarele diagrame de colaborare:

cazul când se primeşte un text scris de alţi utilizatori;

Figura IV. 17 Diagrama de colaborare în cazul recepţionării unui mesaj

cazul când se primeşte apelativele utilizatori conectaţi;

Figura IV.18 Diagrama de colaborare în cazul primiri unui apelativ al unui utilizator

conectat

cazul în care utilizatorul doreşte deconectarea;

Page 104: Analiza comunicarii intr-o retea moderna prin VoIP

Deconectarea poate surveni în cazul în care apar erori la citirea sau transmiterea

mesajelor sau în cazul în care utilizatorul apasă butonul „Disconnect”. Dacă apare cel puţin

una din aceste situaţii instanţa clasei „Client” trimite comanda de deconectare către instanţa

clasei „Conectare”, opreşte firele de execuţie din instanţele claselor „Recepţie ” şi

„Transmisie”, şterge aria utilizatorilor conectaţi la acelaşi server, trimite comanda ce închide

fişierul unde se înscriau mesajele primite, şterge aria unde se afişează mesajele primite, şterge

câmpul „Nickname” şi alte acţiuni ce ţin de fereastra de afişare.

Figura IV. 19 Diagrama de colaborare în cazul în care utilizatorul comandă

deconectarea

Pentru iniţierea unei sesiuni VoIP utilizatorul trebuie să deschidă fereastra definită de

clasa “VoIP” şi să scrie acolo informaţiile necesare pentru identificarea părţi interlocutoare şi

să confirme acest lucru prin apăsarea butonului. Aceste informaţii sunt pasate clasei

“UserAgentClientSIP” care cu ajutorul claselor “MesajSIP” şi “SDP” crează mesajul SIP

INVITE pe care îl pasează clasei “UserAgentSIP” împreună cu portul şi adresa unde trebuie

să trimită pachetul UDP. Cealaltă aplicaţie primeşte pachetul cu ajutorul clasei

“UserAgentSIP” care după ce observă că este o cerere îl trimite clasei “UserAgentServerSIP”.

Aceasta cu ajutorul claselor “MesajSIP” şi “SDP” decodifică mesajul SIP şi observând că

Page 105: Analiza comunicarii intr-o retea moderna prin VoIP

reprezintă o invitaţie deschide fereastra construită de clasa “VRing”. Aici utilizatorul indică

dacă acceptă sau nu invitaţie şi presupunând că acceptă clasa “UserAgentServerSIP” porneşte

firele de execuţie din clasa “CapturePlayback” care încep să primească pachete audio de la

placa audio şi le trimit spre cealaltă aplicaţie şi trimit pachetele primite din reţea spre placa

audio. Clasa “UserAgentServerSIP” trimite prin intermediul clasei “UserAgentSIP” mesajul

SIP OK care odată ajuns la “UserAgentClientSIP” determină pornirea firelor de execuţie ale

clasei “CapturePlayback” şi trimiterea spre cealaltă aplicaţie a mesajului SIP ACK. Diagrama

din figura 20 prezintă succesiunea etapelor prezentate mai sus.

Figura IV. 20 Trimiterea unui mesaj INVITE

Metodele reprezentate prin cifre sunt:

1: Utilizatorul apasă butonul “VoiceChat” care apelează metoda voipAction

(ActionEvent)

2: show() - se afişează fereastra; aici utilizatorul introduce informaţiile şi apasă

butonul “Dial”

Page 106: Analiza comunicarii intr-o retea moderna prin VoIP

3: sendInvite(String,String,String,String,String,InetAddress) – se crează mesajul SIP

cu ajutorul claselor “MesajSIP” (metoda createRequest()) şi “SDP” (metoda createMesaj())

4: putMesaj(String,int,InetAddress) – se trimite mesajul clasei “UserAgentSIP”

5: send(DatagramPacket) – trimitere într-un pachet UDP

6: receive(DatagramPacket) – recepţionarea pachetului

7: mesajNou(String) – după ce a determinat că mesajul este o cerere acesta este trimis

clasei “UserAgentServerSIP”

8: show() - deschide fereastra care informează sosirea invitaţiei

9: yesAction(ActionEvent) – utilizatorul răspunde afirmativ şi variabilele “răspuns” şi

“click” sunt trecute pe valoarea “true”

10: clicked(), raspunsul() – se testează variabila “click” pană când este “true”

(utilizatorul a apasat pe un buton) şi apoi se cere răspunsul (presupunem ca acceptă invitaţia)

11: start() – se pornesc firele de execuţie

12: putMesaj(String,int,InetAddress) – se trimite mesajul SIP OK

13: send(DatagramPacket)

14: receive(DatagramPacket)

15: mesajNou(String)

16: start() – se pornesc firele de execuţie ale clasei “CapturePlayback”

17: putMesaj(String,int,InetAddress) – se trimite mesajul SIP ACK

18: send(DatagramPacket)

19: receive(DatagramPacket)

20: mesajNou(String)

Pentru terminarea unei sesiuni SIP trebuie să se apese butonul din domeniul “Actions”

din bara de meniuri numit “Kill VoiceChat”. Acesta va dechide o fereastră în care se doreşte

confirmarea utilizatorului pentru a trimite mesajul BYE care va închide sesiunea. Deoarece

sesiunea poate fi închisă de oricare din cei doi participanţi adică din punctul de vedere al

aplicaţiei poate fi închisă ori de server-ul SIP ori de clientul SIP. Deoarece clasa

“CapturePlayback” a fost instanţiată la nivelul acestor componente, clasa “VoipT” ce

defineşte şi fereastra trimite ambelor clase comanda să trimită mesajul BYE. La nivelul

acestor clase se decide cine a instanţiat clasa “CapturePlayback”, o opreşte şi trimite în reţea

spre cealaltă aplicaţie mesajul SIP BYE. Acolo acest mesaj este pasat celor două clase care

dacă au instanţiat clasa de captare şi redare a vocii o opresc iar dacă nu au făcut acest lucru

ignoră mesajul. Figura 21 prezintă etapele prezentate mai devreme.

Page 107: Analiza comunicarii intr-o retea moderna prin VoIP

Metodele reprezentate prin cifre sunt:

1: voipTAction(ActionEvent) – utilizatorul apasă butonul “Kill VoiceChat”

2: show() – se afisează fereastra care cere confirmarea acţiunii

3: sendBYE() – se trimite comada de închidere a conversaţiei şi de trimitere a

mesajului BYE

4: sendBYE() – se trimite comada de închidere a conversaţiei şi de trimitere a

mesajului BYE

5: putMesaj(String,int,InetAddress) – se trimite mesajul după ce a fost creat cu

ajutorul claselor “MesajSIP” şi “SDP”

sau

7: putMesaj(String,int,InetAddress)

6: kill() – se comandă oprirea firelor de execuţie ce se ocupă cu captarea/redarea şi

trimiterea/recepţionarea pachetelor audio

sau

8: kill()

9: send(DatagramPacket) – se trimite în reţea pachetul

10: receive(DatagramPacket) – se recepţionează pachetul

11: mesajNou(String) – se pasează mesajul din pachetul recepţionat

12: mesajNou(String) – se pasează mesajul din pachetul recepţionat

13: kill() -se comandă oprirea firelor de execuţie ce se ocupă cu captarea/redarea şi

trimiterea/recepţionarea pachetelor audio

sau

14: kill()

Page 108: Analiza comunicarii intr-o retea moderna prin VoIP

Figura IV. 21 Trimiterea mesajului BYE

5. Modul de configurare

Importante pentru aplicaţia de faţă sunt porturile prin care se trimit şi se recepţionează

mesajele scrise, pachetele SIP şi pachetele audio. Două dintre acestea au fost alese şi integrate

în implementare. Astfel mesajele SIP se trimit şi se recepţionează prin portul 5060 valoare

preluată din RFC ce se ocupă cu descrierea SIP. Pachetele audio se trimit şi se recepţionează

prin portul 3234, valoare aleasă de mine. La dispoziţia utilizatorilor rămâne alegerea valorii

portului prin care se trimit şi se recepţionează mesajele scrise. Pentru funcţionarea corectă

Page 109: Analiza comunicarii intr-o retea moderna prin VoIP

trebuie ca portul ales să fie acelaşi pentru toţi utilizatorii. Există şi posibilitatea să se creze

camere private prin alegerea de către un grup a unui port diferit de cel ales de restul

utilizatorilor astfel acest grup putând trimite mesaje între ei fără ca restul să-le recepţioneze

(prin folosirea acestei aplicaţii)

6. Modalităţi de extindere

Felul cum a fost implementată acestă aplicaţie îi conferă proprietatea de a fi extinsă

foarte uşor. Deoarece a fost creată din mai multe module unele complet independente, se

poate schimba comportamentul acestei aplicaţii cu puţine modificări ale claselor. De exemplu

partea de conversaţie depinde numai de metodele ce există în clasa „Client” şi de cele ce

există în clasa „Conversaţie” şi o schimbare a comportamentului în timpul conversaţiei

schimbă doar metodele din „Conversaţie” ce apelează pe cele din „Client”.

Schimbarea protocolului ce este folosit de aplicaţii pentru conectare, deconectare duce

numai la schimbarea clasei „Conversaţie” deoarece numai aici se ţine cont de acest protocol.

De asemenea şi modalitatea de afişare a mesajelor se poate schimba uşor deoarece se

foloseşte pentru acest lucru o singură metodă din clasa “Client” şi clasa “ChatArea”, iar

modificarea acestora se poate realiza fără dificutăţi. Se poate realiza fără mare eforturi

scrierea mesajelor aşa cum sosesc într-un element grafic numit “TextArea”, dar în modul

acesta nu se mai pot prezenta imaginile codificate. Se poate realiza şi modificarea imaginilor

într-un mod simplu prin înlocuirea vechilor imagini cu noile imagini în “folder-ul Images”, cu

condiţia să se păstreze aceleaşi denumiri. Setul de imagini se poate îmbunătăţii, puţându-se

adăuga noi imagini şi codurile aferente dar pentru aceasta trebuie modificate clasele “Pachet”

unde sunt procesate codurile şi “ChatArea” unde sunt încărcate imaginile.

O extindere necesară pentru această aplicaţie este implementarea protocoalelor RTP şi

RTCP pentru transmisia pachetelor audio, pentru a respecta standardele în totalitate. Aceasta

se poate realiza cu scrierea de clase asemănătoare cu “MesajSIP” care să creeze şi să

proceseze mesajele protocoalelor RTP şi RTCP.

O altă extindere o reprezintă implementarea de codecuri în plus. Aceasta depinde de

ce oferă mediul Java şi de ce permite placa audio din calculatorul pe care rulează aplicaţia. Se

poate realiza prin crearea unei liste înlănţuite care să conţină parametrii codecurilor şi care să

fie folosită atunci când se iniţiază clasa “CapturePlayback”. Printr-o formă de indexare să va

indica ce zonă a listei trebuie folosită. O altă posibilitate este crearea unei clase care să se

ocupe cu implementarea unui codec specific. Aici trebuie menţionat că programele realizate

Page 110: Analiza comunicarii intr-o retea moderna prin VoIP

în Java au timpi de execuţie mai mari decât programele realizate în alte limbaje şi din această

cauză întârzierile globale produse transmisiei de voce prin reţeaua de pachete sunt mai mari

decât cele preconizate în teorie. Folosirea unor codecuri mai complicate va duce cu siguranţă

la întârzieri mult mai mari.

Pentru utilizarea în condiţi bune într-o reţea foarte intens folosită trebuie să se adauge

mecanismele IntServ, adică aplicaţia să fie capabilă să trimită şi să proceseze mesajele PATH

şi RESV prin care se poate rezerva resursele necesare transmisiei în condiţii bune a vocii prin

LAN. Pentru mecanismul de conversaţiei prin mesaje scrise acest lucru nu e necesar deoarece

nu este o aplicaţie în timp real. Implementarea mecanismelor IntServ se poate realiza prin

adăugarea de clase care să ştie să citească şi să creeze mesajele şi clase care să realizeze

comunicaţia prin reţea.

Partea de “chat” poate fi îmbunătăţită prin adăugarea de camere private în care să se

poată discuta fără ca mesajele să ajungă la cei din “afara” camerei. O modalitate ar putea fi

introducerea în mesaj şi a numelui camerei şi aplicaţiile să afişeze mesajele primite în funcţie

de camera unde se află utilizatorul şi de numele camerei din mesaj.

7. Concluzii

În urma testelor funcţionale s-a observat că serviciile furnizate de această aplicaţie nu

sunt dependente de puterea de calcul a terminalului pe care rulează. Dacă se folosesc un

terminal cu un procesor cu frecvenţa de lucru de peste 1 GHz şi un terminal cu un procesor cu

frecvenţa de lucru sub 500 MHz pe care rulează această aplicaţie se observă că avem aceeaşi

calitate audio în ambele sensuri.

Această aplicaţie este o marturie în plus asupra uşurinţei cu care se poate intergra o

aplicaţie VoIP cu alte aplicaţii. În cazul de faţă nu a fost nevoie decât de scrierea unor clase în

plus. Nu a fost nevoie deloc modificarea claselor deja existente.

În dezvoltarea acestei aplicaţii s-a remarcat uşurinţa cu care protocolul SIP a fost

implementat. După cum se va observa din listarea codului s-a lucrat numai cu siruri de

caractere şi operaţii cu acestea, lucru foarte uşor de realizat. Şi dimensiunea clasei este o

mărturie în acest sens. Chiar dacă au fost implementate numai o parte din cererile şi

răspunsurile SIP, totuşi se observă simplitatea claselor care i-au deciziile în privinţa acestora.

Este nevoie numai de cunoaşterea metodei sau a tipului cereri pentru a lua o decizie.

Page 111: Analiza comunicarii intr-o retea moderna prin VoIP

Calitatea serviciilor oferite depinde în mare măsură (dacă terminalul este unul potrivit)

de serviciile oferite de reţeaua pe care funcţionează aplicaţia prezentată deoarece nu s-a

implementat protocoalele RTP şi RTCP, mecanismele de rezervare a resurselor şi codecuri de

bandă mai mică. Dacă este folosit pe o reţea de mici dimensiuni cu încărcare medie atunci

calitatea serviciilor este bună. Dacă avem reţele de mari dimensiuni sau încărcări mari atunci

calitatea este mult mai scăzută.

Aşa cum se observă şi din codul prezentat în anexele de la şfârşitul lucrării, această

aplicaţie prezintă o interfaţă care este uşor de învăţat şi de folosit. Fiecare buton are asociat un

text de tip “tooltip” care explică ce se va întâmpla dacă va fi folosit. Desfăşurarea unei acţiuni

importante cum ar fi conectarea sau trimiterea unei invitaţii este urmată cu scrierea unui mesaj

explicativ în partea de jos a ferestrei principale. Erorile care apar sunt de asemenea afişate în

partea de jos a ferestrei. În ferestrele unde utilizatorul trebuie să introducă informaţii, fiecare

câmp are asociat un “tooltip” care îi indică sub ce formă sau ce tip de informaţie este cerută

de program. Dacă introduce o informaţie necorespunzătoare (de exemplu litere în loc de

cifrele ce indică portul folosit) acţiunea eşuează şi în zona din partea de jos a programului i-se

spune unde a greşit. În plus toate aceste zone de introducere a informaţiei sunt trecute

informaţii care ori sunt cele propuse spre a fi folosite (cum ar fi adresa si portul de multicast)

ori dau informaţi în plus despre ceea ce se cere de la utilizator.

Această aplicaţie a fost un exerciţiu util pentru mine deoarece m-a ajutat să învăţ

modul cum funcţionează şi cum se poate implementa protocolul SIP.

Anexa 1 Codul aplicaţiei explicat

În această secţiune voi prezenta şi explica codurile unor clase importante cum ar fi

„ChatArea” care se ocupă cu partea de scriere a mesajelor şi emoticoanelor,

“CapturePlayback” care se ocupă cu captarea şi redarea vocii şi clasele

“UserAgentServerSIP” şi “UserAgentClientSIP” ce procesează şi trimit cererile şi

răspunsurile SIP. Restul de cod este prezentat în Anexa 2.

„ChatArea” este responsabilă cu afişarea textului primit de la server în fereastra

principală a aplicaţiei. Ea crează o imagine în care pun textele plus emoticoanele primite care

apoi, prin apelarea metodei „paint(Graphics g)” a acestei clase, din clasa „Client”, această

imagine este desenată. Prin constructor i-se precizează unde o să deseneze imaginea.

Implementarea clasei începe aşa:

Page 112: Analiza comunicarii intr-o retea moderna prin VoIP

package Client;

import java.awt.*;

import java.awt.geom.*;

import java.awt.Graphics2D;

import java.awt.image.*;

import java.util.LinkedList;

import java.util.StringTokenizer;

import javax.swing.*;

class ChatArea extends JPanel {

private boolean first;

private BufferedImage bimg;

private Graphics2D big;

private Image angel,angry,asleep,bat,birthday,boy,cat,clock,confused;

private Image cry,cup,devil,dog,dontlove,drink,email,embarrassed,gift;

private Image girl,handcuffs,idea,kiss,love, messenger,movie,music,no;

private Image picture,rainbow,rose,star,sun,sunnyface,telephone,undecided;

private Image wiltflower,yes,happy,verryhappy,surprized,tongue,wink,sad,beer;

private LinkedList mesajePrimite;

private int width,heigth,x,y;

În această secţiune sunt definite imaginea ce va fi desenată (bimg), (big) o instanţă ce

va pune la dispoziţie metodele necesare pentru a desena în bimg, lista de mesaje

(mesajePrimite) ce va conţine mesajele date de clasa „Client”, zona şi dimensiunile imaginii

ce va fi desenate şi imaginile ce vor fi puse în bimg atunci când se întâlneşte codul unui

emoticon. În continuare este scris constructorul care iniţializează atributele de mai sus:

public ChatArea(int x,int y,int w,int h)

{

mesajePrimite=new LinkedList();

first=false;

this.x=x;

this.y=y;

width=w;

Page 113: Analiza comunicarii intr-o retea moderna prin VoIP

heigth=h;

angel=Toolkit.getDefaultToolkit().getImage("Images/angel.gif");

angry=Toolkit.getDefaultToolkit().getImage("Images/angry.gif");

asleep=Toolkit.getDefaultToolkit().getImage("Images/asleep.gif");

wink=Toolkit.getDefaultToolkit().getImage("Images/wink.gif");

yes=Toolkit.getDefaultToolkit().getImage("Images/yes.gif");

bimg=new BufferedImage(w,h,BufferedImage.TYPE_3BYTE_BGR);

big=bimg.createGraphics();

}

Se observă crearea unei imagini (bimg) cu dimensiunile date prin constructor şi

iniţializarea variabilei big cu o instanţa tip Graphics2D fapt ce îi dă dreptul de a fi folosită

pentru a desena în bimg.

În continuare se scrie metoda cea mai importantă a acestei clase, metoda care

formează imaginea bimg şi o desenează acolo unde i-a fost indicat prin constructor:

public void paint(Graphics g)

{

Se definesc variabila ce va conţine secvenţa de caractere ce trebuie desenată şi

variabila ce va fi folosită într-un ciclu for pentru desenarea tuturor mesajelor din listă.

String s=null;

int cont;

Se definesc variabilele ce indică de unde începe desenarea textului în cadrul imaginii.

int pozImgY=5;

Page 114: Analiza comunicarii intr-o retea moderna prin VoIP

int pozImgX=10;

Deoarece s-a observat că pentru desenarea pentru prima dată a unei imagini trebuie

apelată metoda „drawImage(..)” de două ori s-a folosit următorul cod ce este rulat doar o

singură dată pe parcusul vieţii clasei „ChatArea”. Problema cu afişarea imginilor a fost

observată şi rezolvată pe parcursul creării versiunilor anterioare şi de atunci codul nu a mai

fost schimbat. Motivul pentru care o imagine, care este folosită pentru prima oară, nu se

desenează decât după apelul de două ori a metodei „drawImage(..)” îmi este necunoscut dar

cred că are legătură cu încărcarea imaginii în memorie.

if(first==false)

{

big.drawImage(angel,0,0,this);

big.drawImage(angry,0,0,this);

big.drawImage(wiltflower,0,0,this);

big.drawImage(wink,0,0,this);

big.drawImage(yes,0,0,this);

first=true;

}

Se alege acum culoarea de fundal şi se desenează marginile imaginii principale:

big.setColor(Color.white);

big.fillRect(0,0,width,heigth);

big.setColor(Color.black);

big.drawRect(1,1,width-1,heigth-1);

Se scrie ciclul for care este folosit pentru a desena toate mesajele din listă. Metoda

„dim()” întoarce dimensiunea listei, metoda „get(int)” preia mesajul de la poziţia indicată:

Page 115: Analiza comunicarii intr-o retea moderna prin VoIP

for(cont=0;cont<dim();cont++)

{

s=get(cont);

String str=null;

int n;

while ((lengthG(s,big))>=(width-pozImgX-6))

{

n=lengthG(s,big,width,pozImgX);

str=s.substring(0,n);

s=s.substring(n);

pozImgY=drawS(str,big,pozImgX,pozImgY,pozImgY);

}

if(lengthG(s,big)<(width-pozImgX-6))

{

pozImgY=drawS(s,big,pozImgX,pozImgY,pozImgY);

}

}

Metoda „lengthG(String, Graphics2D, int, int )” întoarce numărul maxim de caractere

care se pot desena dintr-un mesaj dat astfel încât să nu se depăşească lăţimea imaginii

desenate şi primind ca parametrii secvenţa de caractere, variabila folosită pentru desenare,

lăţimea şi poziţia de pe axa X de unde începe afişarea secvenţei. Ciclul while este folosit

pentru a împărţi mesajul dat în secvenţe de caractere ce pot fi desenate într-un singur rând.

Din ciclul while se iese numai dacă lungimea secvenţei de caractere rămase de desenat nu

depăşeşte lăţimea imaginii din care se scade poziţia de unde se începe scrierea secvenţei şi un

spaţiu ales de mine egal cu 6 pentru a nu se scrie exact până la marginea zonei de afişare.

Metoda „length(String s, Graphics2D)” întoarce dimensiunea grafică a secvenţei , secvenţă ce

a fost dată ca parametru. Metoda „drawS(String,Graphics2D,int,int,int)” desenează secvenţa

dată ca parametru începând desenarea pe axa X din poziţia indicată de primul parametru

întreg iar desenarea pe axa Y începe din poziţia indicată de unul din ultimii parametrii şi

întoarce poziţia pe axa Y unde a fost desenată secvenţa. După ce se iese din ciclul while se

desenează cea mai rămas din mesajul iniţial. În continuare se scot mesaje din listă dacă

desenarea lor se face aproape de limita de jos a imaginii desenate:

Page 116: Analiza comunicarii intr-o retea moderna prin VoIP

if(pozImgY>(heigth-10))

{

rmv();

rmv();

rmv();

}

else if(pozImgY>(heigth-20))

{

rmv();

rmv();

}

else if(pozImgY>(heigth-40))

{

rmv();

}

Se scot din ce în ce mai multe mesaje dacă desenarea acestora ajunge periculos de

aproape de marginea inferioară a imaginii. Metoda „rmv()” elimină mesaje din listă. Acum se

desenează imaginea principală, fiind şi ultima instrucţiune din metoda „paint”:

g.drawImage(bimg,x,y,this);

}

Pentru a face redesenarea se apelează metoda „repaint()” în clasa principală metodă

care apelează aici metoda „update(Graphics g)” :

public void update(Graphics g)

{

paint(g);

}

În continuare se scrie metoda „drawS()” care desenează mesajul primit ca parametru

desenând totodată şi emoticoanele corespunzătoare codului. Această metodă verifică dacă

Page 117: Analiza comunicarii intr-o retea moderna prin VoIP

mesajul are emoticoane sau nu. Dacă nu are, desenează direct mesajul. Dacă are, desenează

mesajul până la primul emoticon, desenează imaginea emoticonului şi apoi metoda se

apelează pe ea însăşi pentru mesajul de după emoticon.

private int drawS(String s, Graphics2D big,int pX, int pY, int pY1)

{

int x;

int nr;

Image img;

int temp;

Packet pck=trad(s);

String str;

S-a început cu declararea unor variabile cum ar fi: x-> poziţia pe axa X unde s-a găsit

codul emoticonului; nr-> numarul de caractere ce constituie codul; img-> va conţine imaginea

emoticonului; temp-> variabilă folosită pentru desenarea textului cu marginea de jos la acelaşi

nivel cu marginea de jos a imaginii; pck-> iniţializată cu instanţa unei clase ce are ca

parametrii atribute de genul x, nr, img ; str-> variabilă folosită pentru desenarea mesajului

până la emoticon.

Metoda „trad(String)” returnează instanţa unei clasei „Packet” dacă secvenţa pasată ca

parametru are emoticoane sau „null” dacă nu există emoticoane în secvenţă.

if(pck==null)

{

if(pY==pY1)

{

pY+=15;

big.drawString(s,pX,pY);

return pY;

}

else

{

big.drawString(s,pX,pY1);

return 0;

Page 118: Analiza comunicarii intr-o retea moderna prin VoIP

}

}

În cazul secvenţei fără emoticoane textul poate fi desenat în două variante posibile.

Varianta a doua de desenare se foloseşte pentru afişarea textului după ce s-a desenat o

imagine a unui emoticon. În prima variantă se adaugă 15 (dimensiunea maximă aproximativă

a unui caracter pe axa Y plus spaţiul lăsat între rânduri) deoarece dimensiunea pasată când se

apelează metoda reprezintă poziţia unde s-a desenat ultimul rând.

else

{

pY+=2;

x=pck.getx();

nr=pck.getnr();

img=pck.getImg();

str=s.substring(0,x);

temp=pY+img.getHeight(this);

big.drawString(str,pX,temp);

big.drawImage(img,(pX+lengthG(str,big)),pY,this);

if((x+nr)<s.length())

{

drawS(s.substring(x+nr),big,((pX+lengthG(str,big))

+img.getWidth(this)),pY-=2,temp);

}

return temp;

}

}

Observaţie: dacă o imgine se desenează în punctul A, acest punct va reprezentă colţul

stânga sus al imaginii; dacă un text se desenează în punctul A, acest punct va reprezenta colţul

stânga jos al textului. În cazul secvenţei cu emoticoane poziţia de unde se desenează imaginea

se mută mai în jos cu 2 pentru ca imaginea să nu fie desenată peste litere care au elemente

grafice sub marginea de jos normală a unui text (cum ar fi: g, y, j, q, etc.). Apoi se încarcă în

Page 119: Analiza comunicarii intr-o retea moderna prin VoIP

variabilele x, nr şi img rezultatul metodei „trad()”, în str secvenţa până la primul emoticon iar

în temp locul unde va fi desenat textul (se observă că textul se va desena astfel încât marginea

de jos a textului să coincidă cu marginea de jos a imaginii). După aceste atribuiri se desenează

textul şi apoi imaginea, folosindu-se pentru poziţionarea imaginii metoda lengthG(String,

Graphics2D) ce întoarce lungimea secvenţei desenate. Dacă mai sunt caractere se reia metoda.

Se întoarce poziţia unde a fost desenat textul.

Acum se scrie implementarea metodei ce întoarce dimensiunile grafice a unei secvenţe

de caractere:

private int lengthG(String s,Graphics2D big)

{

return big.getFontMetrics().stringWidth(s);

}

În continuare se scrie implementarea metodei ce întoarce numărul de caractere maxim

pe care a-l trebui să-l aibă secvenţa dată ca parametru pentru a putea încăpea pe lăţimea dată

şi ea ca parametru:

private int lengthG(String s,Graphics2D big,int w,int pX)

{

int strW=0;

int i=0;

Packet pck=trad(s);

for(i=0;i<s.length();i++)

{

strW+=big.getFontMetrics().charWidth(s.charAt(i));

if(pck!=null)

{

if(strW>(w-pX-48))

{

break;

}

}

else

Page 120: Analiza comunicarii intr-o retea moderna prin VoIP

{

if(strW>(w-pX-6))

{

break;

}

}

}

return i;

}

Această metodă verifică dacă sunt emoticoane sau nu. Dacă nu sunt calculează

dimensiunea grafică a caracterelor adăugând câte o dimensiune a unui caracter şi dacă se

ajunge aproape de margine atunci se opreşte calculul şi se întoarce indexul caracterului la care

s-a ajuns. Dacă sunt emoticoane se urmează acelaşi algoritm dar limita este mult mai drastică

deoarece trebuiesc luate în considerare şi lăţimea imaginii emoticoanelor care vor fi desenate

în cadrul aceluiaşi mesaj. La fel şi în acest caz se întoarce indexul caracterului la care s-a

ajuns.

Acum se arată cum s-a implementat metoda care întoarce o instanţă a clasei „Packet”

dacă s-a găsit în secvenţa de caractere care i s-a pasat ca argument, un cod al unui emoticon:

protected Packet trad(String s)

{

int x;

Packet pck=new Packet();

Packet temp;

if((x=s.indexOf("(a)"))!=-1)

{

temp=new Packet(angel,x,3);

if(temp.getx()<pck.getx()) pck=temp;

}

if((x=s.indexOf("(A)"))!=-1)

{

temp=new Packet(angel,x,3);

if(temp.getx()<pck.getx()) pck=temp;

}

Page 121: Analiza comunicarii intr-o retea moderna prin VoIP

if((x=s.indexOf(":@"))!=-1)

{

temp=new Packet(angry,x,2);

if(temp.getx()<pck.getx()) pck=temp;

}

if((x=s.indexOf("(s)"))!=-1)

{

temp=new Packet(asleep,x,3);

if(temp.getx()<pck.getx()) pck=temp;

}

if((x=s.indexOf("(S)"))!=-1)

{

temp=new Packet(asleep,x,3);

if(temp.getx()<pck.getx()) pck=temp;

}

if((x=s.indexOf("(w)"))!=-1)

{

temp=new Packet(wiltflower,x,3);

if(temp.getx()<pck.getx()) pck=temp;

}

if((x=s.indexOf("(W)"))!=-1)

{

temp=new Packet(wiltflower,x,3);

if(temp.getx()<pck.getx()) pck=temp;

}

if((x=s.indexOf(";)"))!=-1)

{

temp=new Packet(wink,x,2);

if(temp.getx()<pck.getx()) pck=temp;

}

if((x=s.indexOf("(y)"))!=-1)

Page 122: Analiza comunicarii intr-o retea moderna prin VoIP

{

temp=new Packet(yes,x,3);

if(temp.getx()<pck.getx()) pck=temp;

}

if((x=s.indexOf("(Y)"))!=-1)

{

temp=new Packet(yes,x,3);

if(temp.getx()<pck.getx()) pck=temp;

}

if(pck.getx()==100)

return null;

else

return pck;

}

Se face comparaţia cu 100 deoarece atunci când se foloseşte constructorul fără

parametrii se iniţializează xCaract (atribut al clasei „Packet”) cu 100. Se observă că se

returnează instanţa care are cea mai mică poziţie în cadrul secvenţei date, deoarece ne

interesează primul emoticon din secvenţă, nu primul în ordine alfabetică. Se mai observă ca

această aplicaţie suportă diferite coduri pentru acelaşi emoticon (de exemplu imaginea înger

se poate afişa scriind codul (a) sau (A)).

În continuare se scriu implementările ultimelor metodelor, acestea fiind folosite pentru

lucrul cu lista de mesaje:

synchronized public void put(String s)

{

mesajePrimite.addLast(new String(s));

}

synchronized public String rmv()

{

return new String((String)mesajePrimite.removeFirst());

}

Page 123: Analiza comunicarii intr-o retea moderna prin VoIP

synchronized public String get(int i)

{

return new String((String)mesajePrimite.get(i));

}

synchronized public int dim()

{

return mesajePrimite.size();

}

synchronized public void del()

{

mesajePrimite.clear();

}

}

Listă de abrevieri

VoIP – Voice over IP

IP – Internet Protocol

SIP – Session Initiation Protocol

QoS – Quality of Service

GW – Gateway

SDP – Session Description Protocol

TDM – Time Divizion Multiplexing

RTP – Real-time Transport Protocol

RTCP – RTP Control Protocol

RTSP – Real Time Streaming Protocol

ISUP – ISDN User Part

UDP – User Datagram Packet

TCP - Transmission Control Protocol

IntServ – Integrated Services

DiffServ – Differentiated Services

Page 124: Analiza comunicarii intr-o retea moderna prin VoIP

Bibliografie

Andew S. Tannenbaum: “Reţele de calculatoare”, ediţia a patra, editura Byblos s.r.l.,

2003

Olivier Hersent, David Gurle, Jean-Pierre Petit: “IP Telephony”, editura Pearsons

Educations Limited, 2000

RFC 768, J. Postel :“User Datagram Protocol”, august 1980,

http://ww.ietf.org/rfc/rfc768.txt

RFC 1889, Audio-Video transport Working group, H. Schulzrinne şi alţii: “RTP:

A Transport Protocol for Real-Time Applications”, ianuarie 1996,

http://www.ietf.org/rfc/rfc1889.txt

RFC 2326, H. Schulzrinne, Columbia U. şi alţii: “Real Time Streaming Protocol

(RTSP)”, aprilie 1998, http://www.ietf.org/rfc/rfc2326.txt

RFC 2327, M. Handley, V. Jacobson: “SDP: Session Description Protocol”,

aprilie 1998, http://www.ietf.org/rfc/rfc2327.txt

RFC 2616, R. Fielding, UC Irvine şi alţii: “Hypertext Transfer Protocol --

HTTP/1.1”, iunie 1999, http://www.ietf.org/rfc/rfc2616.txt

RFC 2974, M. Handley, ACIRI şi alţii: “Session Announcement Protocol”,

octombrie 2000, http://www.ietf.org/rfc/rfc2974.txt

RFC 3261, J. Rosenberg, Dynamicsoft, H. Schulzrinne şi alţii: “SIP: Session

Initiation Protocol”, iunie 2002, http://www.ietf.org/rfc/rfc3261.txt

RFC 3272, A. Vermuri, Qwest Communications, J. Peterson: “Session Initiation

Protocol for Telephones (SIP-T)”, septembrie 2002,

http://www.ietf.org/rfc/rfc3272.txt

Carden, Philip : “Building Voice over IP”, publicat pe Internet

http://www.networkcomputing.com/netdesign/1109voip.html

“What is Internet telephony?”, publicat pe Internet, http://www.iptel.org/info/

“Voice over IP(VoIP)”, publicat pe Internet,

http://www.protocols.com/papers/voip.htm

Tomi Yletyinen: “The Quality of voice over IP”, publicat pe Internet,

http://keskus.hut.fi/tutkimus/ipana/paperit/tomidt.pdf

Page 125: Analiza comunicarii intr-o retea moderna prin VoIP

Anshul Kundaje şi alţii: “Voice over IP”, publicat pe Internet,

http://www.cs.columbia.edu/~abk2001/voip.pdf

Roch H. Glitho şi alţii: “Advanced Services Arhitectures for Internet Telephony:

A critical Overview”, material publicat de către IEEE Network

Stefan Pracht şi alţii : “Voice quality in converging telephony and IP networks”,

publicat pe Internet http://e-insite.net/ednmag/contents/images/47172.pdf