Professional Documents
Culture Documents
IT330 Seminarski SIP Drasko Gajic 318
IT330 Seminarski SIP Drasko Gajic 318
Seminarski rad:
SIP protokol
Autor
Draško Gajić
drasko.gajic@fit.edu.rs
U Beogradu, Mart 2009
Dodatne napomene:
IT330 Računarske mreže - SIP Protokol
Sadržaj
Uvod .................................................................................................................................................................. 3
2 Adresiranje ................................................................................................................................................ 5
3.4 Registrar............................................................................................................................................. 8
7 Transakcije ............................................................................................................................................... 11
8 Dijalozi ..................................................................................................................................................... 12
9 Zaključak .................................................................................................................................................. 13
Draško Gajić 2
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
Uvod
SIP je skraćenica za Session Initiation Protocol, kontrolni protokol aplikacijskog sloja koji je razvijen
unutar IETF-a Internet Engineering Task Force. Dizajniran je tako da omogućava jednostavnu
implementaciju, dobru skalabilnost i fleksibilnost. Specifikacija je data u nekoliko RFC-ova. Najvažniji, RFC
3261, sadrži osnovu protokola. Postoje mnogo aplikacija na internetu koje zahtevaju kreiranje i upravljanje
sesijama, gde je sesija upotrebljena za razmenu podataka između učesnika u komunikaciji. Implementacija
ovih aplikacija je veoma komplikovana u praksi od strane učesnika: korisnici mogu da se menjaju na
krajevima, mogu da se adresiraju sa više naziva i mogu da komuniciraju preko različitih posrednika po nekad
simultano.
SIP nije zamišljen da bude sveobuhvatan, pa će za komunikaciju među uređajima biti potrebni i
drugi protokoli. Njegova namena je da omogući komunikaciju koja se nakon toga odvija na različite načine,
pa i pomoću nekog drugog protokola. Uz SIP se najčešće koriste protokoli RTP i SDP. SIP radi u skladu sa
ovim protokolima omogućujući krajnim korisnicima (user agents) da prepoznaju jedni druge i da se
dogovore za tip sesije koji žele da dele. Za pronalaženje mogućeg korisnika, i ostale funkcije, SIP uključuje
infrastrukturu proxy servera za koje korisnički agent može da pošalje registraciju, poziv za sesiju, i druge
zahteve. SIP može da uspostavi sesiju između dva korisnika (običnu telefonsku vezu), sesiju izmedu više
korisnika (od kojih svaka može da sluša i da govori) i višesmernu sesiju (između jednog pošiljaoca i više
primalaca).
SIP je dizajniran u skladu s Internet modelom. To je end-to-end tip signalnog protokola što znači da
je logika, osim usmeravanja SIP poruka, čuvanja na krajnjim uređajima. Stanje sesije je takođe sačuvano na
krajnjim uređajima, ne postoji jedinstvena tačka ispada. Mreže koje su dizajnirane na taj način dobro
skaliraju. Loša strana ovog tipa je veće zaglavlje.
Draško Gajić 3
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
1 Struktura protokola
Protokol SIP je strukturiran kao slojevit protokol, pri čemu svaki sloj definiše određen skup pravila.
Elementi koje taj protokol specificira su logički elementi. Svaki element protokola ne mora sadržati svaki od
slojeva. Nadalje, kada se kaže da neki element sadrži određen sloj, to zapravo znači da taj element poštuje
skup pravila koje taj sloj definiše.
• Najniži sloj protokola SIP je njegova sintaksa i kodiranje (syntax and encoding) koji koristi
ABNF (Augmented Backup-Naur Form) pravila
• Drugi sloj je transportni sloj (transport layer) koji definiše kako klijent i server šalje zahteve i
prima odgovore putem mreže. Sve komponente protokola SIP moraju implementirati
protokol korisničkih datagrama (UDP – User Datagram Protocol) i protokol upravljanja
prenosom (TCP – Transmission Control Protocol), ali mogu i podržavati i druge protokole,
kao što je protokol za kontrolu transmisije toka podataka (SCTP – Stream Control
Transmission Protocol). Budući da je UDP nepouzdan protokol, SIP ima vlastiti mehanizam
retransmisije koji uključuje i three-way razmenu između korisnika prilikom uspostavljanja
sesije.
• Treći sloj transakcijski sloj (transnaction layer) koji upravlja retransmisijama aplikacijskog
sloja, povezivanjem odgovora i zahteva, kao i o isteku vremena aplikacijskog sloja
(application layer timeouts). Transakcija je temeljna komponenta protokola SIP koja se
sastoji od zahteva te jednog ili više odgovora. Transakcijski sloj sadrži klijent i server
komponentu, od kojih je svaka predstavljena automatom stanja koji je konstruisan kako bi
obradio određeni zahtev. Klijent transakcija šalje zahteve i prosleđuje odgovore korisniku
transakcije pa je odgovorna za pouzdanu retransmisiju zahteva u slučajevima kada se koristi
nepouzdani transport UDP.
• Iznad transakcijskoga sloja se nalazi sloj korisnika transakcije (TU – Transaction User). Svi su
entiteti (logičke komponente) protokola SIP, osim stateless proxy servera, korisnici
transakcije TU. Kada korisnik transakcije želi poslati zahtev, mora kreirati klijent transakciju
a zatim joj prosliediti zahtev zajedno sa IP adresom, portom i transportom kojem treba
poslati zahtev.
Draško Gajić 4
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
2 Adresiranje
Umesto IP adresom, odredište u protokolu SIP može biti predstavljeno URI-jem koji ima isti format kao
i eadresa i u skladu s tim ispravna SIP adresa može biti sip:naziv@server1.com. Korišćenje URI-a implicira
upotrebu sistema imena domena (DNS – Domain Name System), kako bi se imena čvora (host) i domena
mogla mapirati u IP adrese.
Osim SIP URI-a podržan je i SIPS URI, koji podrazumeva primenu sigurnosnog mehanizma. Poziv prema
SIPS URI-u garantuje da je siguran, kriptografski zaštićen transport (TLS – Transport Layer Security) korišćen
za prenos svih SIP poruka od onoga ko zove do domena pozvanog. SIP URI i SIPS URI moraju sadržati ime
čvora pa mogu sadržati i ime korisnika i broj portova. Uz SIP URI i SIPS URI mogu se koristiti i drugi kao što
su TEL URL i TEL URI:
• sip:naziv@server1.com
• sip:+381-64-365-5555:1234@gateway.com; user=-phone
• sips:naziv@server1.com
• sip:proxy.server1.com:5060
• sip:another-proxy.server1.com; transport=UDP
• tel:+381-64-365-5555
Draško Gajić 5
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
Korisničke agente često nazivamo server korisničkog agenta (User Agent Server - UAS) i klijent
korisničkog agenta (User Agent Client - UAC). UAS i UAC su samo logičke jedinice, svaki korisnički agent,
zavisno od situacije, ima ulogu UAC-a ili UAS-a. UAC je deo korisničkog agenta koji ima zadatak slanja
zahteva (request) i primanja odgovora (response). UAS je takođe deo korisničkog agenta, ali on ima zadatak
primanja zahteva i slanja odgovora.
Budući da korisnički agent sadrži i UAC i UAS, često kažemo da se korisnički agent ponaša kao UAC ili
UAS. Na primer, korisnički agent koji poziva ponaša se kao UAC kada šalje INVITE zahteve i prima odgovore
na zahtev. Kao UAS ponaša se kad primi INVITE zahtev i pošalje odgovore.
Ali ta se situacija menja kad pozvana strana odluči poslati BYE i prekinuti sesiju. U tom se slučaju
korisnički agent pozvane strane (koji šalje BYE) ponaša kao UAC a korisnički agent koji pozivalac kao UAS.
Draško Gajić 6
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
Najvažniji zadatak proxy servera je usmeravanje poruka za kreiranje sesije prema pozvanoj strani.
Zahtev za kreiranje sesije obično prelazi nekoliko proxy servera dok ne pronađe onoga koji zna stvarnu
lokaciju pozvane strane. Tada će proxy server direktno proslediti zahtev za sesijom prema pozvanoj strani
koji će prihvatiti ili odbiti zahtev.
Postoje dve osnovne vrste SIP proxy servera - bez stanja transakcije (stateless) i sa stanjem
transakcije (stateful).
Loša stvar stateless proxy servera je to što ne mogu da prepoznaju i spreče retransmisiju poruka i
vrše naprednije rutiranje, na primer, SIP proxy server može poslati jednu SIP poruku na više destinacija
(forking) ili kada proxy server primi negativan odgovor za zahtev koji je prosledio, pa ponovo šalje zahtev
prema nekoj drugoj destinaciji usmeravanja (recursive).
Statefull proxy server upravlja dvema vrstama transakcija: serverske transakcije koje primaju
zahteve i šalju odgovore, kao i klijentske transakcije koje šalju zahteve i primaju odgovore. Dolazeći zahtev
se obrađuje serverskom transakcijom i dalje se prosleđuje uz pomoć jedne ili više klijentskih transakcija
(više transakcija se formira u slučaju račvanja). Dolazeći odgovor prima odgovarajuća klijentska transakcija i
prosleđuje se odgovarajućoj serverskoj transakciji.
Draško Gajić 7
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
3.4 Registrar
Registrar je specijalni entitet koji prihvata registracije od korisnika, izdvaja informacije o njihovoj
trenutnoj lokaciji (recimo IP adresu, port i korisničko ime) i skladišti ove informacije u bazu podataka. Zatim
se baza podataka sa lokacijama koristi da bi se odredilo gde se šalje zahtev za određenog korisnika.
Registrari obrađuju REGISTER poruke koje generišu klijenti za željom da uspostave ili prekinu
mapiranje između svoje opšte poznate SIP adrese i adrese na koju žele da budu kontaktirani. REGISTER
zahtev se može koristiti i za pregled mapiranja postavljenih za određenu adresu.
Svaki registrar obrađuje zahteve za određeni skup domena i može autentifikovati REGISTER zahteve
upotrebom odgovora 401 (Unauthenticated). Registrari su najčešće logički entiteti i zbog tesne veze sa
proxy serverima se često nalaze na istom mestu.
Draško Gajić 8
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
4 SIP poruke
Komunikacija pomoću SIP protokla, koja se često naziva i signalizacija, sastoji se od niza poruka
(messages). Uobičajeno je da se svaka poruka prenosi u posebnom UDP datagramu. Svaka se poruka sastoji
od “početne linije“, zaglavlja poruke i tela poruke. Početna linija označava vrstu poruke. Postoje dve vrste
poruka – zahtevi (request) i odgovori (response). Zahtevi se obično koriste za iniciranje neke akcije ili za
obaveštavanje pozvane strane zahteva o nečemu. Odgovori se koriste za potvrđivanje da je zahtev primljen
i obrađen pa sadrže i status obrade.
Prva linija prikazuje da se radi o INVITE poruci za kreiranje sesije. URI u prvoj liniji naziva se Request-
URI i sadrži URI sledećeg koraka poruke (next hop). U ovom slučaju to je 192.168.0.3 i port je 51660.
Iz From i To polja zaglavlja se indetifikuju pozivalac (caller) i pozvana strana (callee). From polje
zaglavlja sadrži parametar tag koji služi kao identifikator dijaloga.
Call-ID polje zaglavlja je identifikator dijaloga i njegova svrha je identifikacija poruka koje pripadaju
istom pozivu. Takve poruke imaju isti Call-ID identifikator. CSeq služi kako bi se zadržao ispravan redosled
zahteva, jer se zahtevi šalju UDP protokolom koji može promeniti redosled poruka.
Contact polje zaglavlja sadrži IP adresu i port na kojem pozvana strana čeka zahteve koje šalje
pozivalac.
Telo INVITE poruke sadrži opis tipa medija koje pozvana strana prima, kodiranih u SDPu.
5 SIP zahtevi
Postoji više vrsta SIP zahteva i svaki od njih ima određene osobine. Najvažniji zahtevi su:
• INVITE – ova poruka se koristi za uspostavljanje sesije. Takođe se sa njom mogu menjati
parametri poziva (re-INVITE).
• BYE – koristi se da bi se prekinula sesija. Strana koja želi da prekine sesiju šalje BYE drugoj
strani.
• CANCEL – koristi se za prekid još neuspostavljenih sesija. Ukoliko pozvani korisnik nije
odgovorio, a korisnik koji je inicirao poziv želi da prekine poziv (tipično kada pozvani
korisnik ne odgovara neko vreme).
Draško Gajić 9
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
• INFO – služi za slanje informacija u toku sesije koje ne menjaju stanje sesije.
6 SIP odgovori
Kad korisnički agenti ili proxy server prime zahtev, šalju odgovor. Na svaki zahtev mora se odgovoriti.
Izuzetak su ACK zahtevi na koje ne treba odgovarati.
Kôd odgovora je celi broj od 100 do 699 i ukazuje na vrstu odgovora. Postoji 6 grupa odgovora:
1xx su privremeni odgovori koji pozvanoj strani kažu da je određeni zahtev primljen ali rezultat obrade
još nije poznat. Šalju se jedino u slučaju kada se obrada ne završi odmah (npr. 100 Trying). Pozivalac mora
zaustaviti slanje zahteva kad primi privremeni odgovor.
Tipično proxy serveri odgovoraju šifrom 100 kad počnu obrađivati INVITE, a korisnički agenti šalju
odgovore sa šifrom 180 (Ringing), što znači da telefon pozvane strane zvoni.
2xx odgovori su pozitivni završni odgovori. Završni odgovor je konačni odgovor koji će pozivalac
zahteva primiti. To znači da završni odgovori označavaju rezultat obrade određenog zahteva. Završni
odgovori takođe prekidaju transakcije. Šifre od 200 do 299 su pozitivni odgovori što znači da je zahtev
obrađen uspešno. Na primer, odgovor 200 OK šalje se kad korisnik prihvati poziv za uspostavljanje sesije
(INVITE zahtev).
UAC može primiti nekoliko poruka tipa 200 kod jednog INVITE zahteva. Razlog tome je što forking
proxy server može deliti zahtev, kontaktirati nekoliko UAS-a, a svaki od njih će prihvatiti poziv. U ovom
slučaju svaki odgovor se razlikuje po tag parametru u polju To zaglavlja. Svaki odgovor predstavlja
jedinstven dijalog s jednoznačnim identifikatorom dijaloga.
4xx su negativni završni odgovori. 4xx odgovor znači da je problem na strani pozivaoca. Zahtev se nije
obradio jer sadrži pogrešnu sintaksu ili se ne može izvršiti na tom serveru.
5xx znači da je problem na strani servera. Zahtev je naizgled ispravan ali ga server nije obradio. Klijenti
bi po pravilu trebali kasnije ponoviti zahtev.
6xx znači da se zahtev ne može izvršiti ni na jednom serveru. Ovaj odgovor obično šalje server koji ima
konačnu informaciju o određenom korisniku. Korisnički agenti obično šalju odgovor 603 Decline kada
korisnik ne želi učestvovati u sesiji.
Draško Gajić 10
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
7 Transakcije
Iako smo rekli da se SIP poruke šalju nezavisno, obično ih u transakcije dele korinički agenti i određene
vrste proxy servera. Dakle, za SIP se kaže da je transakcijski protokol.
Transakcija je niz SIP poruka koje se razmenjuju između elemenata SIP mreže, a sastoji se od jednog
zahteva i svih odgovora na taj zahtev. To uključuje nula ili nekoliko privremenih odgovora, jedan ili više
završnih odgovora. Na INVITE se može odgovoriti s više završnih odgovora kad proxy server deli zahtev
(forking).
Ako je transakciju pokrenuo INVITE zahtev, tada ona uključuje i ACK, ali samo ako završni odgovor
nije bio 2xx. Ako je završni odgovor bio 2xx, tada se ACK ne smatra delom transakcije.
Kao što vidimo, radi se o prilično asimetričnom ponašanju - ACK je deo transakcija s negativnim
završnim odgovorom, ali nije deo transakcija s pozitivnim završnim odgovorima. Razlog je takvog
razdvajanja važnost isporuke svih 200 OK poruka. Ne samo da one uspostavljaju sesiju, već ih mogu
generisati i višestruki entiteti kada proxy server deli zahtev, a sve se takve poruke moraju isporučiti
korisničkom agentu koji inicira sesiju. U takvom slučaju korisnički agenti preuzimaju odgovornost i
retransmitiraju 200 OK odgovore dok ne prime ACK. Može se primetiti da se jedino odgovori na INVITE
poruke retransmisuju!
SIP entiteti koji su sposobni za praćenje transakcije nazivaju se entiteti sa stanjem transakcije
(stateful). Takvi entiteti obično stvaraju stanje povezano s transakcijom koja se čuva u memoriji za vreme
trajanja transakcije. Kad se primi zahtev ili odgovor, entitet sa stanjem transakcije pokušava povezati zahtev
(ili odgovor) s postojećim transakcijama. Za to je potrebno ekstraktovati jedinstveni identifikator transakcije
iz poruke i uporediti ga s identifikatorima svih postojećih transakcija. Ako takva transakcija postoji, tada se
stanje identifikatora ažurira iz poruke.
Draško Gajić 11
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
U prethodnom RFC 2543 identifikator transakcije izračunavao se kao hash svih polja u zaglavlju
poruke (uključujući To, From, Request-URI i CSeq). To se pokazalo sporim i komplkovanim, za vreme
sprovođenja testova interoperabilnosti takvi su identifikatori transakcija bili uobičajeni izvori problema.
8 Dijalozi
Pokazali smo šta su transakcije, da jedna transakcije uključuje INVITE poruku i njene odgovore, a druga
transakcija uključuje BYE poruku i njene odgovore kada se sesija prekida. Ali te bi dve transakcije bi trebale
na neki način da budu povezane - obe spadaju u isti dijalog (dialog). Dijalog predstavlja peer-to-peer SIP
odnos između dva korisnička agenta. Dijalog traje neko vreme pa predstavlja vrlo važan koncept za
korisničke agente. Dijalozi olakšavaju pravilno određivanje redolseda (sequencing) i usmeravanje poruka
između SIP krajnjih tačaka.
Dijalozi se identifikuju pomoću Call-ID, From etikete i To etikete (tag). Poruke u kojima ta tri
identifikatora imaju iste vrednosti, spadaju u isti dijalog. Pokazali smo da se polje CSeq u zaglavlju koristi za
slaganje poruka po redu, to jest za redosled poruka unutar dijaloga. Broj mora da raste po veličini za svaku
poruku unutar dijaloga inače će ga peer obraditi kao neispravan zahtev ili retransmisiju. Ustvari, CSeq broj
identifikuje transakciju unutar dijaloga, jer smo rekli da se zahtevi i povezani odgovori nazivaju transakcija.
To znači da unutar dijaloga može biti aktivna samo jedna transakcija u svakom pravcu. Mogli bismo takođe
reći da je dijalog sekvenca transakcija. Sledeća slika prikazuje koje poruke spadaju u isti dijalog.
Draško Gajić 12
Broj indeksa 318
IT330 Računarske mreže - SIP Protokol
Neke poruke uspostavljaju dijalog, a druge ne. Na taj se način jasno može pokazati odnos poruka i
slati poruke koje nisu povezane s ostalim porukama izvan dijaloga. To olakšava implementaciju, jer
korisnički agenti ne moraju održavati stanje dijaloga. Na primer, INVITE poruka uspostavlja dijalog, jer će
nakon nje uslediti BYE zahtev koji prekida sesiju. BYE zahtev šalje se unutar dijaloga koji je uspostavila
INVITE poruka.
9 Zaključak
SIP postaje pravi pokretač u mrežama sledeće generacije i aplikacionog inženjeringa. Njegovo
prihvatanje ipak zavisi od ekonomskih faktora iako je manji, kompaktniji i delotvorniji, bolje prilagođen
Internet tehnologiji od starijeg H.323 protokola.
Vrednost SIP-a leži u kombinovanju servisa koje podržava. Sličnosti između SIP i Internet tehnologije
pomoći će bržem razvijanju novih servisa, što će dovesti do razvoja Internet telefonije. Internet telefonija je
više od VoIP-a jer predstavlja konvergenciju IP telefonije, Interneta i različitih novih tehnologija i standarda
kao što su SIP i XML (eXtensible Markup Lenguage).
Koristeći SIP, provajderi i njihovi partneri mogu da prilagode i isporuče čitav set servisa baziranih na
SIP-u koji će klijenatima omogućiti upotrebu više servisa u okviru jedne komunikacione sesije. Servis
provajderi mogu da kreiraju jednu fleksibilnu set aplikaciju koja zadovoljava potrebe korisnika umesto
instaliranja specijalizovanih pojedinačnih aplikacija.
SIP obećava značajna poboljšanja u oblasti biznis komunikacija, prvo kao VoIP protokol, a takođe i zato
što se dobro integriše sa ostalim poslovnim komunikacionim aplikacijama. Korišćen zajedno sa ostalim
Internet tehnologijama, SIP će doneti nove komunikacione servise korisnicima kancelarijskih i mobilnih
desktopova i time povećati produktivnost zaposlenih dok u isto vreme redukuje operativne troškove.
Iako se IP telefonija sve češće vezuje uz SIP protokol, danas je u toj oblasti još uvek dominantan H. 323
skup protokola, pa je za dalji razvoj SIP-a i njegovu opštu primenu neophodno poraditi na
interoperatibilnosti sa H. 323 i naravno ISUP signalizacionim protokolom iz PSTN mreža.
Draško Gajić 13
Broj indeksa 318