Pomoc techniczna

SIP – co to takiego?


Po co jest potrzebny SIP (Session Initiation Protocol)? W sieci istnieje wiele aplikacji i usług, które potrzebują mechanizmów do tworzenia i zarządzania sesją użytkownika. Sesja jest niczym innym jak wymianą informacji między skojarzonymi ze sobą uczestnikami. Implementacja tych aplikacji jest o tyle skomplikowana, że uczestnicy sesji często moga zmieniać swoje położenie, mogą być adresowani przez wiele nazw z nimi skojarzonych, co gorsze mogą nawet porozumiewać się przez wiele różnorodnych mediów.

W związku z czym powstało wiele protokołów, których zadaniem jest dostarczanie w trybie rzeczywistym informacji w takiej sesji (czy to danych należących do głosu, wideo czy wiadomości czysto tekstowych). SIP (Session Initiation Protocol) współpracuje z tymi protokołami, dostarczając punktom końcowym w sieci Internet (nazywanych agentami użytkowników UA – user agent) odkrywanie jeden drugiego i uzgadnianie charakterystyki sesji, którą chcą przeprowadzić. Dla lokalizacji uczestników sesji, SIP umożliwia stworzenie infrastruktury hostów sieciowych (nazywanych agentami proxy – proxy agent), do których agenci użytkowników wysyłają żądania rejestracji i zaproszenia do sesji (oraz inne). SIP jest więc doskonałym narzędziem dla tworzenia, modyfikowania i zakończenia sesji, która działa niezależnie od leżących niżej protokołów transportowych oraz bez zależności od typu zestawionej sesji.

Czym jest SIP?

SIP jest protokołem sterującym warstwy aplikacyjnej modelu OSI, który może zastawić, zmodyfikować i zakończyć sesje multimedialne (np. konferencje lub wywołanie telefonii internetowej VoIP). SIP umożliwia również zaproszenie uczestników do juz zestawionej sesji, np. do konferencji multicastowej. Dane typy mediów można dodac (lub analogicznie usunąć) z istniejącej sesji. SIP przezroczyście wspiera także usługi odwzorowania nazw (name mapping) i przekierowań (redirection), które umożliwiają mobilność użytkownika, co oznacza, że może on mieć jeden identyfikator widoczny z zewnątrz niezależnie od swojej lokalizacji sieciowej.

SIP obsługuje pięć aspektów zestawienia i zakończenia komunikacji multimedialnej:

  1. Lokalizacja użytkownika – czyli określenie systemu końcowego, który będzie wykorzystany do komunikacji;
  2. Dostępność użytkownika – czyli określenie gotowości strony wywoływanej do włączenia się do komunikacji;
  3. Możliwości użytkownika – czyli określenie medium i parametrów tego medium do wykorzystania;
  4. Zestawienie sesji – czyli dzwonienie, zestawienie parametrów sesji po obu stronach wywołania, stronie wywołującej i wywoływanej
  5. Zestawienie sesji – czyli dzwonienie, zestawienie parametrów sesji po obu stronach wywołania, stronie wywołującej i wywoływanej

Szczegółowe informacje o SIP można znaleźć w RFC3261 na stronach organizacji IETF (Internet Engineering Task Force). SIP nie jest sztywno zintegrowanym systemem komunikacyjnym, jest on raczej komponentem, który można użyć z innymi protokołami IETF by zbudować kompletną architekturę multimedialną. Taka architektura będzie zawierać takie protokoły jak Real-time Transfer Protocol (RTP) dla dla transportu danych w czasie rzeczywistym i dostarczania informacji zwrotnej o QoS (jakości usług), Real-Time Streaming Protocol (RTSP) do sterowania dostarczaniem strumienia medialnego, Media Gateway Control Protocol (MEGACO) do sterowania bramami (gateways) do sieci publicznej PSTN oraz Session Description Protocol (SDP) dla opisania sesji multimedialnej. W związku z tym SIP powinien być stosowany w powiązaniu z innymi protokołami, aby dostarczyć kompletną usługę dla użytkownika. Mimo to podstawowe funkcjonalności SIP nie zależą od jakiegokolwiek protokołu.

SIP nie dostarcza usług, a jedynie dostarcza prymitywy, które mogą zostać wykorzystane do implementacji różnych usług (np. SIP dostarcza prymitywę, a w powiązaniu z nią SDP może opisać daną sesję).

SIP nie oferuje usług związanych ze sterowaniem konferencji, takich jak np. sterowanie salą debat czy głosowaniem oraz nie opisuje jak konferencja powinna być zarządzana. SIP może zostać wykorzystany do zainicjowania sesji, która wykorzystuje inny protokół steroania konferencją. Wiadomości SIP i sesje zestawione przez protokół mogą przechodzić przez wiele różnych sieci, mimo to, SIP nie ma żadnych możliwości rezerwacji zasobów sieciowych.

W związku z naturą usług prowadzonych w sieci, sprawy bezpieczeństwa są bardzo istotne. Dlatego też SIP dostarcza zbiór usług bezpieczeństwa, które zawierają prewencję przed atakami DOS (denial-of-service), uwierzytelnienie (zarówno użytkownik do użytkownika jak i proxy do użytkownika), ochronę integralności oraz usługi szyfrowania i prywatności. SIP współpracuje z protokołem IPv4 jak i z IPv6.

Jak działa SIP

Użytkownicy dzwonią do siebie stosując identyfikację SIP URI (Uniform Resource Identifier), która jest podobna do adresu email, zawierającego nazwę użytkownika i nazwę hosta. SIP może także stosować bezpieczne URI, nazywane SIPS URI. Połączenie wykonane do SIPS URI gwarantuje, że bezpieczny, szyfrowany transport (TLS – Transport Layer Security) jest stosowane przy przenoszeniu wszystkich wiadomości SIP od wywołującego do domeny wywoływanego użytkownika, skąd żądania są wysyłane bezpiecznie do wywoływanego użytkownika, ale z mechanizmami bezpieczeństwa, które zależą od polityk jego domeny.

SIP (Session Initiation Protocol) oparty jest o model transakcyjny zapytań/odpowiedzi podobnych do HTTP. Każda transakcja składa się z żądań, które przywołują odpowiednią metodę lub funkcję na serwerze i przynajmniej jedną odpowiedź. Przykład metody INVITE w SIP, która określa akcję, w której żądający (ipnet) chce wziąć do pracy serwer użytkownika wywoływanego (nomad).

SIP (Session Initiation Protocol) zbudowany jest jako protokół warstwowy, co oznacza, że jego zachowanie jest opisane przez niezależne stany przetwarzania z luźnym powiązaniem miedzy poszczególnymi stanami (stadiami). Zachowanie protokołu jest opisane jako warstwy dla celów prezentacji, umożliwiających opisanie funkcji wspólnych dla elementów w pojedynczej sekcji. Nie narzuca on w jakikolwiek sposób implementacji. Jeśli mówimy, że element zawiera warstwę, mamy na myśli, że jest zgodny dla zbioru reguł określonych przez tą warstwę.

Nie każdy element określony przez protokół zawiera wszystkie warstwy, ponadto elementy definiowane przez SIP są elementami logicznymi, a nie fizycznymi. Najniższą warstwą SIP (Session Initiation Protocol) jest składnia i kodowanie. Kodowanie jest wykonywane przy użyciu gramatyki BNF (notacja Backus-Naur Form).

Drugą warstwą jest warstwa transportowa. Określa jak klient wysyła żądania i otrzymuje odpowiedzi oraz jak serwer wysyła/odbiera żądania/odpowiedzi poprzez sieć. Wszystkie elementy SIP zawierają warstwę transportową.

Trzecią warstwą jest warstwa transakcyjna. Transakcje są fundamentalnym komponentem SIP. Transakcja jest żądaniem wysłanym przez transakcję klienta (przy wykorzystaniu warstwy transakcyjnej) do transakcji serwera, z wszystkimi odpowiedziami na to żądanie, wysłanymi z transakcji serwera do klienta. Warstwa ta obsługuje retransmisje warstwy aplikacyjnej, dopasowanie odpowiedzi do żądań oraz timeouty warstwy aplikacyjnej.

Powyżej warstwy transakcyjnej znajduje się wartswa użytkownika transakcji (TU). Każdy z elementów SIP, oprócz bezstanowego proxy, jest użytkownikiem transakcji

Elementy SIP, takie jak user agent client UAC i user agent server UAS, stateless i stateful proxy oraz registrar, zawierają rdzeń który rozróżnia je od siebie. Wszystkie rdzenie są użytkownikami transakcyjnymi, oprócz elementu stateless proxy.

Metody SIP:

  • INVITE – zapoczątkowanie wywołania przez zaproszenie użytkownika do sesji
  • ACK – Potwierdza odebranie odpowiedzi na żądanie INVITE
  • BYE – zakończenie wywołania
  • CANCEL – anulowanie żądania trwającego
  • REGISTER – rejestrownie agenta użytkownika
  • OPTIONS – odpytanie o możliwości serwera
  • INFO – przenoszenie informacji dodatkowej, np. cyfr DTMF

Kody odpowiedzi w SIP:

  • 1xx – Wiadomości informacyjne
  • 2xx – Odpowiedzi pozytywne
  • 3xx – Odpowiedzi przekierowania
  • 4xx – Odpowiedzi błędnych żądań
  • 5xx – Odpowiedzi błędu serwera
  • 6xx – Odpowiedzi błędów globalnych

Zainteresowała Cię oferta firmy BlueNet w Lublinie?