Seansialustusprotokoll

Allikas: Vikipeedia

Seansialustusprotokoll (Session Initiation Protocol SIP) on IETF poolt loodud signaliseerimisprotokoll multimeedia sessioonide algatamiseks ja juhtimiseks internetis.

SIP on rakendustaseme protokoll, mida kasutatakse IP-võrkudes multimeedia sessioonide algatamiseks, muutmiseks ja lõpetamiseks. SIP protokoll võimaldab juhtida kõnet (VoIP ehk Voice over Internet Protocol), videot, sõnumivahetust (IM ehk Instant Messaging), olekuinfot (presence) ja muid teenuseid.

SIP kasutab transpordikihis TCP (Transport Control Protocol, usaldusväärne transpordiprotokoll) või UDP (User Datagram Protocol, mitteusaldusväärne transpordi protokoll) protokolli ja võrgukihis IP protokolli (IPv4 või IPv6).

SIP on HTTP (Hypertext Transfer Protocol) protokollil baseeruv tekstipõhine protokoll, mille eesmärk on olla sõltumatu edastatavast meediast. SIP protokolli eeliseks on lihtsus ja loetavus, puuduseks on tekstipõhisest formaadist tulenev suur andmemaht.

SIP meetodid[muuda | redigeeri lähteteksti]

SIP on päring-vastus tüüpi protokoll (nagu HTTP). SIP päringuid nimetatakse meetoditeks. 2002. aastal kirjeldas IETF esimeses FRC-s (RFC 3261) 6 SIP meetodit:

  • REGISTER - kasutaja registreerumine SIP teenuste kasutamiseks
  • INVITE - multimeedia sessiooni (kõne, kiirsõnumite edastamise vms) algatamine
  • OPTIONS - serveri või kliendi võimaluste pärimine
  • ACK - tegevuse kinnitamine
  • CANCEL - poolelioleva tegevuse tühistamine
  • BYE - sessiooni lõpetamine

Hiljem on lisandunud mitmeid SIP meetodeid:

  • PRACK - esialgne kinnitus eelneva sõnumi kohalejõudmise kohta RFC 3262.
  • SUBSCRIBE - sündmusest teavitamiseks registreerumine RFC 3265, kasutatakse näiteks olekuinfo vaatamiseks registreerumiseks.
  • NOTIFY - kasutajate teavitamine sündmusest RFC 3265, kasutatakse näiteks kasutajate teavitamiseks olekuinfo muudatusest.
  • PUBLISH - serveri teavitamine sündmusest RFC 3903, kasutatakse näiteks olekuinfo serveri teavitamiseks kasutaja olekuinfo muudatusest.
  • MESSAGE - kiirsõnumi saatmine RFC 3428.

SIP vastused[muuda | redigeeri lähteteksti]

SIP päringutele saadetakse alati vastused, mis koosnevad kolmest numbrist ja tekstilisest selgitusest. Vastused jagunevad järgnevatesse kategooriatesse:

  • 1XX - esialgne vastus, kinnitab päringu kättesaamist (näiteks 100 Trying, 180 Ringing, 183 Session Progress).
  • 2XX - edukas vastus, päring on edukalt kättesaadud ja aktsepteeritud (näiteks 200 OK).
  • 3XX - suunamine, päringu lõpetamiseks on vaja täiendavaid tegevusi (näiteks 302 Moved Temporarily).
  • 4XX - kliendi viga, päring oli vigane või server ei suuda päringut töödelda (näiteks 487 Request Terminated).
  • 5XX - serveri viga, server ei suutnud korrektset päringut töödelda (näiteks 504 Server Time-out).
  • 6XX - globaalne viga, server ei suuda päringut töödelda (näiteks 604 Does Not Exist Anywhere).

SIP päringu formaat[muuda | redigeeri lähteteksti]

SIP sõnumi päises märgitakse järgmised väljad:

  • Algusrida - sisaldab päringu meetodit, SIP URI-t (päringu adressaati) ja protokolli versiooni.
  • To - päringu saaja URI.
  • From - päringu saatja URI.
  • Contact - sõnumi saatja või edastaja kontaktaadress.
  • Via Via väljale salvestatakse kõik proksiserverid, mida SIP päring läbib, et saata vastus tagasi läbi samade proksiserverite.
  • Cseq unikaalne sõnumi järjekorranumber, mis sisaldab meetodi nime ja mille alusel viiakse vastavusse SIP päring ja vastus.
  • Call-ID SIP sõnumi unikaalne tunnus.
  • Route/Record-route proksiserverid kasutavad neid välju selleks, et salvestada siia oma aadress ja tagada sellega kogu sessiooni käigus saadetavate päringute edastamine läbi samade proksiserverite (kasutatakse olekuga prokside korral).

Lisaks päisele on SIP sõnumil ka sisu. Iga SIP sõnum ei pruugi sisaldada sisu. Sessiooni algatamise päringu (INVITE) sisu osa on reeglina SDP (Session Description Protocol) formaadis ja sisaldab infot algatatava sessiooni meedia kohta. SDP on spetsifitseeritud dokumendis RFC 2327, mida on hiljem täiendatud dokumendis RFC 3264. INVITE sõnumi SDP osa sisaldab muuhulgas järgmist infot:

  • sessiooni omaniku aadress;
  • edastatava meedia tüüp, port ja helistaja poolt toetatavate koodekite loetelu (videokõne korral võivad video ja audio koodekid ja pordid olla erinevad);
  • QoS (Quality of Service, teenuse kvaliteet) indikaatorit.

SIP päringu näide:

INVITE sip:user1@10.100.202.55:5060;transport=UDP SIP/2.0

Via: SIP/2.0/UDP 195.250.168.178:5060;branch=z9hG4bKo9k1h800cg2ggakqv1g1.1

To: "Testkasutaja" <sip:kasutaja2@domeen.ee;transport=udp>;

From: <sip:kasutaja1@domeen.ee>;

tag=745694714-1203317338417-

Call-ID: BW0848584171802081154935902@192.168.26.4

CSeq: 363247769 INVITE

Max-Forwards: 7

Content-Length: 131

Contact: <sip:kasutaja1@123.456.789.0:5060;transport=udp>

Content-Type: application/sdp

Allow: ACK, BYE, CANCEL, INFO, INVITE, OPTIONS, PRACK, REFER, NOTIFY

Accept: multipart/mixed

Accept: application/media_control+xml

Accept: application/sdp

Accept: application/x-hotsip-FileTransfer+xml

Privacy: none

Session-Expires: 1800

Min-SE: 900

v=0

o=BroadWorks 721590 1 IN IP4 123.456.789.0

s=-

c=IN IP4 123.456.789.0

t=0 0

m=audio 50402 RTP/AVP 8 18 4

a=ptime:20

SIP serverid[muuda | redigeeri lähteteksti]

Kuigi SIP terminalid suudavad omavahel suhelda ilma muude seadmete vahenduseta (P2P SIP ehk peer-to-peer SIP), käib reaalselt enamik suhtlusest siiski läbi serverite. SIP servereid on erinevat tüüpi:

  • SIP Registrar - tegeleb kasutaja registreerumisega ehk sälitab seose kasutajatunnuse ja kasutaja terminali IP-aadressi vahel.
  • SIP Proxy - server, mis suunab SIP päringu edasi. Võib muuta päringu adressaati, salvestada enda andmed Route välja vms.
  • SIP Redirect Server - kasutatakse suunamiste korral. Redisrect server edastab sessiooni algatajale kasutaja uue asukoha, mille alusel algatatakse sessioon uuele aadressile.
  • SIP UA (User Agent) - server, mis käitub nagu SIP terminal ehk vastab päringule lõpliku vastusega.
  • SIP B2BUA (Back-to-back User Agent) - server, kus on kaks SIP User Agentit kokku ühendatud. Vastab sisenevale päringule lõpliku vastusega ja algatab ise täiesti uue päringu. Kasutatakse olukordades, kus on vaja rakendada keerulist teenusloogikat ja muuta mitmeid SIP päringu välju (To, From, Call-ID jne) või SIP meetodit.

SIP URI[muuda | redigeeri lähteteksti]

SIP URI (Uniform Resource Identifier) on unikaalne kasutajatunnus, mille alusel kasutajat identifitseeritakse. Igal kasutajal on SIP URI, mida kasutatakse sessioonide ühendamisel sellele kasutajale. SIP URI formaat on sama, mis e-maili formaat ja see koosneb kasutajatunnusest ning domeenist (näiteks kasutaja@domeen.ee). Päringute marsruutimiseks võib kasutada SIP URI-t kujul sip: kasutaja@domeen.ee või sip:kasutaja@193.214.150.100. Esimene variant vajab päringu marsruutimiseks DNS päringuid, teine variant ei vaja, sest sisaldab juba domeeni IP-aadressi. SIP-URI võib sisaldada ka telefoninumrit (näiteks päringute marsruutimiseks telefonivõrgust või mobiilivõrgust). Sellisel juhul on SIP URI kujul sip: +3721234567@domeen.ee;useer=phone. Lisaks SIP URI-le võib kasutajal olla ka TEL URI. Sellisel juhul väljendub kasutajatunnus telefoninumbri kujul, näiteks tel: +3721234567. See on vajalik sessioonide ühendamiseks telefonivõrgust või mobiilivõrgust.

TEL-URI korral on vaja telefoninumbri ja kasutajatunnuse vastavuse leidmiseks DNS/ENUM funktsiooni (TElephone NUmber Mapping).

DNS päringud[muuda | redigeeri lähteteksti]

Selleks, et kasutajatunnuse või telefoninumbri alusel päringuid marsruutida, on vaja teada servereid, mis antud teenuse või kasutajaga tegelevad. Seda infot hoiavad DNS (Domain Name System) serverid. NAPTR (NAming Authority Pointer) päringut kasutatakse, et leida millist teenust ja protokolli võrk toetab. Näiteks päring NAPTR domeen.ee annab vastuseks _sip._udp.domeen.ee Järgmisena tehakse SRV (Service Record) päring, et leida server/port, kuhu päring ühendada. Näiteks päringule SRV _sip._udp.domeen.ee tuleb vastus proxy.domeen.ee:5060 (5060 on vaikimisi SIP port). Edasi tehakse päring proxy.domeen.ee IP-aadressi leidmiseks.

Juhul kui päringus kasutatakse TEL URI-t, tehakse esmalt NAPTR päring telefoninumbrile vastava kasutajatunnuse leidmiseks. Selleks viiakse telefoninumber E.164 kujule (+3721234567), pööratakse numbrite järjestus ümber ja lisatakse lõppu e164.arpa. Näiteks numbrist +3721234567 saadakse 7.6.5.4.3.2.1.7.3.2.e164.arpa. Selle alusel tehakse NAPTR päring, millega saadakse teada telefoninumbrile vastav kasutajatunnus (näiteks kasutaja@domeen.ee).

SIP sõnumite marsruutimine[muuda | redigeeri lähteteksti]

SIP teenuste kasutamiseks peab kasutaja alati registreeruma. Selleks saadab kasutaja REGISTER päringu SIP Registrar serverisse, mis salvestab kasutaja oleku (registreerinud) ning seob kasutaja SIP URI ja terminali IP-aadressi.

Kui kasutaja a@domeen1.ee tahab ühendust võtta kasutajaga b@domeen2.ee, siis saadab kasutaja a päringu (INVITE) enda domeeni (domeen1.ee) teenindavale proksi serverile. Juhul kui SIP sõnumis puudub Route väli, vaatab proksi päringu URI-t. DNS päringutega leitab proksi kasutaja b domeeni teenindava serveri (domeen2.ee) ja edastab selle vastava võrgu proksile. domeen2.ee proksi küsib registrar serverilt kasutaja b asukohta (IP-aadressi) ja ühendab päringu kasutajale b.

SIP päringuid marsruuditakse:

1. Route välja järgi, selle puudumisel

2. SIP-URI järgi kasutades DNS (Domain Name System) päringuid.

Vastused marsruuditakse Via päise järgi:

  • proksi lisab päringus enda aadressi Via väljale esimeseks
  • vastuse marsruutimisel vaadatakse esimest Via päist: kui seal on antud proksi aadress, siis see eemaldatakse, seejärel saadetakse vastus järgmise Via päisega proksile.

Juhul kui proksi ei soovi jääda päringuid vahendama, siis ta ei lisa enda aadressi päringus Via väljale. Sellisel juhul marsruuditakse päringud vastavalt Contact väljas olevale infole. Selliseid proksisid nimetatakse olekuta proksideks. Proksid, mis jäävad päringuid vahendama kogu sessiooni ajaks, nimetatakse olekuga proksideks.

Viited[muuda | redigeeri lähteteksti]

1. IETF. SIP: Session Initiation Protocol. RFC 3261. [1].

2. Reliability of Provisional Responses in the Session Initiation Protocol (SIP). RFC 3262. [2].

3. Session Initiation Protocol (SIP)-Specific Event Notification. RFC 3265. [3].

4. Session Initiation Protocol (SIP) Extension for Event State Publication. RFC 3903. [4].

5. Session Initiation Protocol (SIP) Extension for Instant Messaging. RFC 3428. [5].

6. SDP: Session Description Protocol. RFC 2327. [6].

7. An Offer/Answer Model with the Session Description Protocol (SDP). RFC 3264. [7]

Kirjandus[muuda | redigeeri lähteteksti]

  • Sinnreich, Henry ja Johnston, Alan B. Internet Communications using SIP. Indianapolis : Wiley, 2006
  • Camarillo, Gonzalo ja Miguel, Garcia-Martin A. The 3G IP Multimedia Subsystem (IMS) : merging the Internet anf cellular worlds. 3rd. West Sussex : John Wiley & Sons Ltd, 2008.

Välislingid[muuda | redigeeri lähteteksti]