Protokół SIP i jego zastosowanie dla usług multimedialnych

Protokół SIP (Session Initiation Protocol) został zdefiniowany przez organizację IETF w dokumencie [2] w roku 1996. Dokument ten zaktualizowano w roku 2002 przez publikację [1], gdzie zawarto obecnie obowiązującą specyfikację SIP.

Protokół zyskał akceptację wielu ciał standaryzacyjnych, m.in. ETSI oraz 3GPP. Jego specyfikację włączono w zbiór standardów opisujących takie architektury sieciowe jak IMS, UMTS[1], NGN[2] [3] [4].

  • Mechanizm protokołu i architektura sieci SIP

SIP jest protokołem warstwy aplikacji przeznaczonym do sterowania zestawianiem sesji multimedialnych pomiędzy różnymi elementami sieci. Samodzielnie nie stanowi jednak mechanizmu realizacji połączeń – w tym celu musi być wykorzystywany wraz z innymi protokołami sieciowymi (SDP , RTP etc).

Jest to protokół tekstowy, który do transportu wiadomości wykorzystuje protokoły TCP lub UDP. Opiera się na transakcyjnym modelu wymiany wiadomości (podobnie jako protokół HTTP, z którym wykazuje wiele innych podobieństw). Transakcje są przeprowadzane wg zasady „żądanie-odpowiedź”, co implikuje podział wiadomości protokołu na żądania (Requests) oraz odpowiedzi (Responses).

W ramach podstawowego zbioru wiadomości SIP można wymienić:

  • Żądania:

o INVITE – wiadomość oznaczająca żądanie zestawienia sesji. Innymi słowy – jest to zaproszenie adresata do zestawienia połączenia. o BYE – wiadomość kończąca ustanowioną sesję.

o CANCEL – umożliwia anulowanie rozpoczętego procesu zestawiania sesji

o REGISTER – pozwala na zarejestrowanie adresu SIP, który reprezentuje terminal użytkownika lub inny element sieci. Rejestracja powoduje, że dany adres staje się „osiągalny” w danej sieci, a wiadomości na ten adres wysyłane trafią do skojarzonej z nim lokalizacji. o ACK – wiadomość wykorzystywana do potwierdzenia otrzymanej przez stronę wywołującą zgody na połączenie przesłanej przez stronę wywoływaną

o OPTIONS – żądanie przesłania przed odbiorcę jego funkcjonalności i cech (capabilities)

  • Odpowiedzi – analogicznie jak dla HTTP, podzielone na klasy związane z typem przenoszonej informacji:

o 1xx – odpowiedzi informacyjne (np. 180 RINGING). Oznajmiają, iż realizacja żądania (Request) jest w toku o 2xx – potwierdzają pozytywne zakończenie transakcji (np. 200 OK. – oznacza akceptację sesji przez wywoływaną stronę) o 3xx – odpowiedzi opisujące przekierowania, czy też wskazujące zmianę lokalizacji adresu wywoływanego (np. 301 MOVED PERMANENTLY – strona docelowa na stałe zmieniła swoją lokalizację) o 4xx – opisują zaistniały po stronie wywoływanej błąd (np. 486 BUSY HERE – strona wywoływana jest zajęta i nie może zaakceptować wywołania)

o 5xx – błąd serwera – np. (503 SERVICE UNAVAILABLE – serwer niedostępny)

Dla protokołu SIP zdefiniowano architekturę funkcjonalną, która obejmuje następujące elementy :

  • Agent Użytkownika (User Agent, UA) – blok funkcjonalny umożliwiający inicjowanie i odbieranie sesji. Jest częścią terminala abonenta sieci (SIP UE – User Equipment). Może również stanowić część innych elementów sieci (np. serwera aplikacji, serwera mediów, Media Gatewaya, etc).
  • Serwer Proxy – serwer pośredniczący w połączeniach. Odbiera wiadomości od SIP UA i kieruje je pod właściwy adres w sieci (np. do kolejnego serwera Proxy).
  • Serwer Registrar – rejestruje adresy SIP (identyfikatory zapisywane w formie URI, np. „user@domena.com”) agenta użytkownika i przypisuje je do
    określonej lokalizacji sieciowej agenta. Udostępnia informacje o lokalizacji danego agenta na potrzeby procesu realizacji połączenia.
  • Serwer Redirect – serwer, który generuje dla klienta odpowiedzi typu 3xx, wskazujące adres, z którym klient powinien się skontaktować.

Można powiedzieć, że zarówno serwer Proxy jak i Registrar stanowią realizację usługi lokalizacyjnej dla protokołu SIP, czyli umożliwiają uzyskanie informacji o lokalizacji danego agenta SIP.

  • Back-To-Back User Agent – agent użytkownika SIP, który logicznie składa się z dwóch agentów SIP UA. Każdy z nich może inicjować lub terminować jedną sesję SIP[8]. Pomiędzy sesjami może istnieć pewna relacja logiczna i może polegać np. na nawiązywaniu drugiej sesji na podstawie parametrów pierwszej z nich Przykładowe zastosowanie B2BUA to np. transfer połączeń (call transfer) oraz 3rd Party Call Control (zestawianie połączenia pomiędzy dwiema stronami i inicjowanego przez trzecią stronę, która tym połączeniem następnie steruje).

Architekturę SIP można zilustrować w następujący sposób:

Rys. 2 Podstawowa architektura funkcjonalna SIP wg [1]

rysunek

Na rysunku przedstawiono agentów SIP UA zarejestrowanych w dwóch domenach SIP. Domeny są ustanawiane przez adresy serwerów Proxy i Registrar. Bardzo często w rzeczywistych implementacjach oba te serwery stanowią jeden blok funkcjonalny.


[1]   UniversalMobile Telecommunications System – system komórkowy trzeciej generacji (3G).

[2]     Next Generation Network – sieć następnej generacji. Sieć pakietowa, w której z usług telekomunikacyjnych abonenci korzystają niezależnie od rodzaju technologii dostępowej ich terminali.

[3]   Przez sesje multimedialne można rozumieć połączenie, w ramach którego strony połączenia przesyłają strumienie multimedialne, dane tekstowe etc.

[4]    Session Description Protocol ([3])- protokół wykorzystywany do opisu sesji multimedialnych w sieciach opartych o protokół IP.

[8]    Przez sesję SIP rozumiemy tutaj zbiór transakcji SIP skojarzonych z danym połączeniem (sesją multimedialną).