SIP - model oferty / odpowiedzi

Użycie SDP z SIP jest podane w odpowiedzi na ofertę SDP RFC 3264. Domyślny typ treści wiadomości w SIP to application/sdp.

  • Strona wywołująca wymienia możliwości multimedialne, które chce otrzymać w SDP, zazwyczaj w INVITE lub ACK.

  • Wzywana strona wymienia swoje możliwości multimedialne w odpowiedzi 200 OK na INVITE.

Typowe użycie SIP SDP obejmuje następujące pola: wersja, pochodzenie, temat, czas, połączenie oraz jeden lub więcej nośników i atrybut.

  • Pola tematu i czasu nie są używane przez SIP, ale zostały uwzględnione w celu zapewnienia zgodności.

  • W standardzie SDP pole tematu jest polem wymaganym i musi zawierać co najmniej jeden znak, sugerowany jako s = - jeśli nie ma tematu.

  • Pole czasu jest zwykle ustawione na t = 00. SIP używa pól połączenia, mediów i atrybutów do konfigurowania sesji między UA.

  • Pole pochodzenia ma ograniczone zastosowanie w przypadku protokołu SIP.

  • Identyfikator sesji jest zwykle utrzymywany na stałym poziomie przez całą sesję SIP.

  • Wersja jest zwiększana za każdym razem, gdy zmienia się SDP. Jeśli wysyłane SDP jest takie samo, jak wysłane wcześniej, wersja pozostaje taka sama.

  • Ponieważ typ sesji multimedialnej i kodek, który ma być użyty, są częścią negocjacji połączenia, SIP może używać SDP do określania wielu alternatywnych typów mediów i do selektywnego akceptowania lub odrzucania tych typów mediów.

Specyfikacja oferty / odpowiedzi, RFC 3264, zaleca użycie atrybutu zawierającego a = rtpmap: dla każdego pola mediów. Strumień mediów jest odrzucany przez ustawienie numeru portu na zero dla odpowiedniego pola mediów w odpowiedzi SDP.

Przykład

W poniższym przykładzie dzwoniący Tesla chce skonfigurować połączenie audio i wideo z dwoma możliwymi kodekami audio i kodekiem wideo w SDP przenoszonym w początkowym INVITE -

v = 0 
o = John 0844526 2890844526 IN IP4 172.22.1.102  
s = - 
c = IN IP4 172.22.1.102 
t = 0 0 
m = audio 6000 RTP/AVP 97 98 
a = rtpmap:97 AMR/16000/1 
a = rtpmap:98 AMR-WB/8000/1 
m = video 49172 RTP/AVP 32 
a = rtpmap:32 MPV/90000

Kodeki są oznaczone numerami profili RTP / AVP 97, 98.

Wzywana strona Marry odbiera połączenie, wybiera drugi kodek dla pierwszego pola multimediów i odrzuca drugie pole multimedialne, chcąc tylko sesji AMR.

v = 0 
o = Marry 2890844526 2890844526 IN IP4 172.22.1.110 
s = - 
c = IN IP4 200.201.202.203 
t = 0 0 
m = audio 60000 RTP/AVP 8 
a = rtpmap:97 AMR/16000 
m = video 0 RTP/AVP 32

Jeśli to połączenie audio jest nie do przyjęcia, Tom wyśle ​​ACK, a następnie BYE, aby anulować połączenie. W przeciwnym razie sesja audio zostałaby ustanowiona i pakiety RTP wymieniane.

Jak ilustruje ten przykład, o ile nie jest zachowana liczba i kolejność pól multimediów, strona dzwoniąca nie wiedziałaby na pewno, które sesje mediów zostały zaakceptowane i odrzucone przez stronę wywoływaną.

Zasady oferty / odpowiedzi zostały podsumowane w kolejnych sekcjach.

Zasady generowania oferty

Oferta SDP musi zawierać wszystkie wymagane pola SDP (w tym v =, o =, s =, c = i t =). To są obowiązkowe pola w SDP.

Zwykle zawiera pole multimedialne ( m = ), ale nie musi. Wiersze multimediów zawierają wszystkie kodeki wymienione w preferowanej kolejności. Jedynym wyjątkiem jest sytuacja, gdy punkt końcowy obsługuje ogromną liczbę kodeków, na liście należy wymienić te, które są najczęściej akceptowane lub preferowane. Różne typy mediów obejmują audio, wideo, tekst, MSRP, BFCP i tak dalej.

Zasady generowania odpowiedzi

Odpowiedź SDP na ofertę musi być skonstruowana zgodnie z następującymi zasadami -

  • Odpowiedź musi mieć taką samą liczbę m = wierszy w tej samej kolejności, co odpowiedź.

  • Poszczególne strumienie multimediów można odrzucić, ustawiając numer portu na 0.

  • Strumienie są akceptowane przez wysłanie niezerowego numeru portu.

  • Wymienione ładunki dla każdego typu nośnika muszą być podzbiorem ładunków wymienionych w ofercie.

  • W przypadku dynamicznych ładunków ten sam numer dynamicznego ładunku nie musi być używany w każdym kierunku. Zwykle wybierany jest tylko jeden ładunek.

Zasady modyfikowania sesji

Każda ze stron może zainicjować kolejną wymianę ofert / odpowiedzi, aby zmodyfikować sesję. Podczas modyfikowania sesji należy przestrzegać następujących zasad -

  • Numer wersji linii źródłowej ( o = ) musi być taki sam, jak ostatnio wysłany, co wskazuje, że ten pakiet SDP jest identyczny z poprzednią wymianą, lub może być zwiększany o jeden, co wskazuje na nowe SDP, które należy przeanalizować.

  • Oferta musi zawierać wszystkie istniejące linie medialne i należy je przesłać w tej samej kolejności.

  • Dodatkowe strumienie multimediów można dodać na końcu listy m = line.

  • Istniejący strumień multimediów można usunąć, ustawiając numer portu na 0. Ta linia multimediów musi pozostać w SDP i we wszystkich przyszłych wymianach ofert / odpowiedzi dla tej sesji.

Zawieś połączenie

Jedna osoba w rozmowie może tymczasowo zawiesić drugą. Odbywa się to poprzez wysłanie INVITE z identycznym SDP do oryginalnego INVITE, ale za = sendonly atrybut obecny.

Połączenie jest ponownie aktywowane przez wysłanie kolejnego ZAPROSZENIA z a = sendrecvatrybut obecny. Poniższa ilustracja przedstawia przebieg zawieszonego połączenia.