Protocole SDP

1. Introduction

Le protocole Session Description Protocol (SDP) est un protocole de communication de description de paramètres d’initialisation d’une session de diffusion en flux (streaming). L’Internet Engineering Task Force (IETF) a publié une première spécification comme une proposition de standard Internet en avril 1998 et a publié une spécification révisée comme le standard Internet RFC 4566 en juillet 2006.

Le protocole SDP a été créé pour décrire des sessions de communication multimédia, par exemple pour l’annonce de la session, l’invitation à une session et la négociation de paramètres. Le protocole SDP ne livre pas le média lui-même. Il est utilisé par l’émetteur et le destinataire pour la négociation du type et du format du média, et les propriétés associées. L’ensemble des paramètres d’une session est souvent appelé un profil de session. Le SDP a été conçu pour être extensible et soutenir les nouveaux types et formats de médias.

SDP a commencé comme une composante du protocole Session Announcement Protocol (SAP), mais a trouvé d’autres utilisations en conjonction avec le protocole Real-time Transport Protocol (RTP), le protocole Real-Time Streaming Protocol (RTSP), le protocole Session Initiation Protocol (SIP) et même comme un format autonome pour décrire des sessions de Multicast.

Source : https://fr.wikipedia.org/wiki/Session_Description_Protocol

SDP avec SIP fonctionne selon un modèle Offre/Réponse où chacun des protagonistes d’un dialogue indique ses capacités en terme de codage du media utilisé (voix, vidéo, …) et choisissent les paramètres qui leur correspondent pour le placement du trafic RTP.

Une charge SDP est embarquée dans le corps d’un message INVITE SIP ou un Re-INVITE SIP et dans la réponse 200 OK conséquente.

2. Sections SDP

SDP est composé d’une série de lignes <caractère>=<valeur>, où <caractère> est un caractère alphabétique sensible à la casse et <valeur> est un texte structuré.

SDP se compose de trois sections principales:

  • la session,
  • le timing
  • et les descriptions des médias.

Chaque message peut comporter plusieurs descriptions de synchronisation et de média, mais seulement une description de session.

La définition de ces sections et leurs contenus possibles sont les suivantes.

Toutes ces entrées peuvent être présentes dans un message SDP.

2.1. Description de la session

  • v= (numéro de version du protocole, actuellement seulement 0)
  • o= (identificateur d’origine et de session: nom d’utilisateur, identifiant, numéro de version, adresse réseau)
  • s= (nom de la session: obligatoire avec au moins un caractère codé UTF-8)
  • i=* (titre de la session ou information courte)
  • u=* (URI de description)
  • e=* (zéro ou plus adresse e-mail avec le nom facultatif des contacts)
  • p=* (zéro ou plus numéro de téléphone avec le nom optionnel des contacts)
  • c=* (informations de connexion - pas nécessaire si inclus dans tous les médias)
  • b=* (zéro ou plus de lignes d’information de bande passante)
  • Une ou plusieurs descriptions de temps (lignes “t=” et “r=” , voir ci-dessous)
    • z=* (ajustements du fuseau horaire)
    • k=* (clé de chiffrement)
    • a=* (zéro ou plus de lignes d’attribut de session)
    • Zéro ou plus de descriptions de média (chacune commençant par une ligne “m=”, voir ci-dessous)

2.2. Description du timing (obligatoire)

  • t= (time the session is active)
  • r=* (zéro ou plus de répétition)

2.3. Description du média (si présent)

  • m= (nom du média et adresse du transport)
  • i=* (titre du média ou champ d’information)
  • c=* (informations de connexion - facultatif si inclus au niveau de la session)
  • b=* (zéro ou plus de lignes d’information de bande passante)
  • k=* (clé de chiffrement)
  • a=* (zéro ou plus de lignes d’attribut multimédia - surpassant les lignes d’attributs)

3. Interprétation

Session Description Protocol
    Session Description Protocol Version (v): 0
    Owner/Creator, Session Id (o): linphone 1108 2378 IN IP4 192.168.1.7
    Session Name (s): Talk
    Connection Information (c): IN IP4 192.168.1.7
    Time Description, active time (t): 0 0
    Session Attribute (a): rtcp-xr:rcvr-rtt=all:10000 stat-summary=loss,dup,jitt,TTL voip-metrics
    Media Description, name and address (m): audio 7078 RTP/AVP 96 97 98 99 0 8 101 100 102
        Media Type: audio
        Media Port: 7078
        Media Protocol: RTP/AVP
        Media Format: DynamicRTP-Type-96
        Media Format: DynamicRTP-Type-97
        Media Format: DynamicRTP-Type-98
        Media Format: DynamicRTP-Type-99
        Media Format: ITU-T G.711 PCMU
        Media Format: ITU-T G.711 PCMA
        Media Format: DynamicRTP-Type-101
        Media Format: DynamicRTP-Type-100
        Media Format: DynamicRTP-Type-102
    Media Attribute (a): rtpmap:96 opus/48000/2
    Media Attribute (a): fmtp:96 useinbandfec=1
    Media Attribute (a): rtpmap:97 SILK/16000
    Media Attribute (a): rtpmap:98 speex/16000
    Media Attribute (a): fmtp:98 vbr=on
    Media Attribute (a): rtpmap:99 speex/8000
    Media Attribute (a): fmtp:99 vbr=on
    Media Attribute (a): rtpmap:101 telephone-event/48000
    Media Attribute (a): rtpmap:100 telephone-event/16000
    Media Attribute (a): rtpmap:102 telephone-event/8000
    Media Description, name and address (m): video 9078 RTP/AVP 96 97
    Media Attribute (a): rtpmap:96 VP8/90000
    Media Attribute (a): rtpmap:97 H264/90000
    Media Attribute (a): fmtp:97 profile-level-id=42801F

Source : https://www.cloudshark.org/captures/f22c8443205b

On retiendra trois lignes qui ont leur importance dans une analyse SDP :

  • c= indique l’adresse du User Agent à utiliser pour le transport de média ici IN IP4 192.168.1.7.
  • m= indique le type de media (voix, vidéo, …), une ligne pour chaque media suivie de lignes a= d’attribut (codec supporté, entre autres).
  • a=rtpmap:<payload type> <encoding name>/<clock rate> [/<encoding parameters>] indique ligne par ligne pour un type de media le codec supporté (voir SDP Attributes Section 6 du RFC 4666).

Ces différentes charges, leur codes et leurs RFC de référence sont recensés par l’IANA en tant que paramètres RTP sur cette page.