SDP (Session Description Protocol) ist ein textbasiertes Format, mit dem sich Multimedia-Sitzungen beschreiben lassen: welche Medienströme (Audio, Video), welche Codecs, welche Adressen und welche Parameter eine Sitzung verwendet. SDP überträgt selbst keine Medien – es ist ein reines Beschreibungsformat, das beim Verbindungsaufbau ausgetauscht wird. Die aktuelle Fassung ist RFC 8866 (Januar 2021), das die ältere Fassung RFC 4566 aus dem Jahr 2006 ablöste.

Aufbau einer SDP-Beschreibung

Eine SDP-Beschreibung besteht aus Zeilen mit einbuchstabigen Schlüsseln. Die wichtigsten sind:

  • v= – Protokollversion (immer 0)
  • o= – Ursprung der Sitzung (Benutzer, Session-ID, Netzeintrag)
  • s= – Sitzungsname
  • t= – Zeitraum, in dem die Sitzung aktiv ist
  • m= – Medienbeschreibung: Typ (Audio/Video), Port, Transport und Payload-Typen
  • c= – Verbindungsinformationen (IP-Adresse)
  • a= – Attribute wie rtpmap (Codec-Zuordnung), setup (DTLS-Rolle), fingerprint (Zertifikats-Fingerabdruck), ice-ufrag/ice-pwd oder sendrecv

Ein vereinfachtes Beispiel für eine Video-Sitzung:

v=0
o=alice 2890844526 2890844526 IN IP4 192.0.2.1
s=Video-Call
t=0 0
m=video 49170 RTP/AVP 96
c=IN IP4 192.0.2.1
a=rtpmap:96 VP8/90000

Rolle in WebRTC und SIP

In WebRTC erzeugt der Browser nach dem JSEP-Modell (RFC 8829) automatisch eine SDP-Beschreibung (createOffer), wenn eine Sitzung beginnen soll. Die Beschreibung wird über das WebRTC-Signaling zum Gegenüber geschickt, das mit einer eigenen SDP-Beschreibung antwortet (Answer). Dabei gilt: Wer das Angebot macht, sendet typischerweise setup:actpass, der Empfänger wählt die DTLS-Rolle. Auch die Simulcast-Ebenen einer Video-Sitzung werden über SDP-Attribute (a=simulcast, a=rid) signalisiert.

Neben WebRTC nutzen auch SIP (SDP im Body von INVITE-Nachrichten) und RTSP SDP, um Sitzungen auszuhandeln. Eine eng verwandte Spezialisierung für WebRTC ist das Angebot-Antwort-Modell aus JSEP.

Verwandte Grundlagen: WebRTC, RTP, Codec, SIP.