SDP – Session Description Protocol

Abkürzung: SDP

SDP beschreibt, über welche Adresse und mit welchem Codec der Sprachkanal laufen soll. Es wird von SIP mitgeführt.

Definition SDP

Das Session Description Protocol ist in RFC 8866 festgelegt. Es ist kein Transportprotokoll, sondern ein Beschreibungsformat. Es legt fest, wie eine Mediensitzung zu beschreiben ist, nicht wie sie zustande kommt.

Im Telefonieumfeld wird SDP im Body von SIP-Nachrichten mit übertragen. Der Anrufer legt in seiner Einladung eine Beschreibung bei, der Angerufene antwortet mit seiner. Dieses Verfahren aus Angebot und Antwort ist in RFC 3264 beschrieben.

Warum das wichtig ist: In dieser Beschreibung steht die IP-Adresse, an die der Sprachstrom geschickt werden soll. Steht dort etwas Falsches, kommt das Gespräch zustande, aber es ist nichts zu hören. Der häufigste Einzelfehler in der VoIP-Praxis steckt in dieser einen Zeile.

Aufbau SDP

Eine Beschreibung besteht aus Zeilen der Form Buchstabe gleich Wert. Die im Telefonieumfeld wesentlichen:

ZeileInhalt
c=Adresse, an die der Medienstrom gesendet werden soll
m=Medienart, Port und Liste der angebotenen Codecs
a=rtpmapZuordnung der Codecnummern zu Namen
a=sendrecvRichtung des Stroms
a=ptimeWie viele Millisekunden Sprache je Paket

Eine Zeile der Form m=audio 16384 RTP/AVP 8 0 101 bedeutet: Audio auf Port 16384, angeboten werden die Codecs mit den Nummern 8 und 0 sowie 101 für die Tastentonerkennung.

Einige Codecnummern sind fest vergeben, darunter 0 für G.711 A-Law und 8 für G.711 µ-Law sowie 9 für G.722. Nummern ab 96 werden je Sitzung frei vergeben und über a=rtpmap benannt.

Aushandlung Codec

Der Anrufer bietet alle Codecs an, die er beherrscht, geordnet nach Vorliebe. Der Angerufene antwortet mit der Schnittmenge und bestimmt damit, was verwendet wird.

Daraus ergeben sich zwei Fehlerbilder.

Keine gemeinsame Auswahl. Gibt es keine Schnittmenge, wird das Gespräch abgelehnt. Die zugehörige Antwort lautet 488. Das kommt vor, wenn ein Gerät auf einen schmalbandigen Codec festgelegt ist und die Gegenseite ihn nicht anbietet.

Einseitig unvollständige Aushandlung. Beide Seiten einigen sich, aber nur für eine Richtung kommt ein brauchbarer Strom zustande. Typisch bei Sprachcomputern, die sofort nach dem Abheben eine Ansage abspielen. Die Verbindung steht, die Ansage ist nicht zu hören.

Der Adressfehler hinter NAT

Ein Endgerät trägt in die Adresszeile ein, was es über sich selbst weiß. Hinter einem Router ist das die private Adresse.

Die Gegenstelle liest diese Adresse und sendet die Sprache dorthin. Da sie im Internet nicht erreichbar ist, gehen die Pakete verloren. Die Signalisierung läuft dabei ungestört weiter, weil sie einen anderen Weg nimmt.

Das Ergebnis ist das bekannteste Fehlerbild der IP-Telefonie: Das Telefon klingelt, das Gespräch kommt zustande, eine Richtung bleibt stumm. Häufig bricht die Verbindung nach etwa zehn Sekunden ab, weil eine Seite mangels eintreffender Pakete aufgibt.

Abhilfe schaffen dieselben Verfahren wie bei SIP: Umschreiben im Router, Ermittlung der eigenen öffentlichen Adresse, oder das Senden an die Adresse, von der die Pakete tatsächlich kamen. Das letzte Verfahren heißt im RTP-Umfeld symmetrisches RTP und ist die verbreitetste Lösung.

Was man daraus liest

In einem Mitschnitt genügen zwei Blicke für eine erste Einordnung.

Steht in der Adresszeile eine private Adresse, obwohl das Gespräch ins Internet geht, ist die Ursache gefunden.

Stimmen die Codeclisten beider Seiten nicht überein, liegt ein Aushandlungsproblem vor. Das ist unabhängig davon zu prüfen, ob überhaupt Sprache fließt.

Abgrenzung

SDP beschreibt nur. Den Auf- und Abbau übernimmt SIP, die Übertragung RTP.

Außerhalb der Telefonie wird SDP ebenso in der Kommunikation im Browser und bei Streaming eingesetzt.

Quellen

  • RFC 8866: SDP, Session Description Protocol
  • RFC 3264: An Offer/Answer Model with the Session Description Protocol
  • RFC 3551: RTP Profile for Audio and Video Conferences, mit den fest vergebenen Codecnummern
  • RFC 4961: Symmetric RTP / RTP Control Protocol

Erstellt: