¿Qué es SDP?

El Protocolo de Descripción de Sesión (del inglés ‘Session Description Protocol‘ – SDP) establece un estándar para definir los parámetros para el intercambio de media (llamado streaming media) entre dos (típicamente) ‘Endpoints‘. Ha sido publicado por el IETF como RFC 4566 y ha sido actualizado por el RFC 8866 en enero de 2021. El SDP es típicamente embedido o encapsulado dentro de otro protocolo, siendo su más amplia aplicación dentro del protocolo SIP en la mayoría de las aplicaciones en un sistema telefónico IP. En términos simples, el protocolo SDP es una declaración, por un ‘Endpoint‘ de media, de sus especificaciones de recepción y capacidades; una declaración típica nos dice:

  • Cuál dirección IP está preparada para recibir la transmisión de media entrante.

  • Cuál número de puerto está escuchando para la transmisión de media entrante.

  • Cuál tipo de media está esperando recibir el endpoint (típicamente audio).

  • Qué protocolo está esperando el endpoint para intercambiar información (típicamente RTP).

  • Cuál codificación de compresión puede utilizar el endpoint para decodificar (codec).

Estructura de un Mensaje SDP

En un proceso típico de establecimiento de sesión, veremos dos ‘Endpoints‘ participando en una sesión, donde cada uno de los ‘Endpoints‘ envía un SDP para informar al otro ‘Endpoint‘ de sus especificaciones y capacidades. SDP por sí mismo no entrega ningún tipo de media, simplemente se limita a la negociación de un conjunto compatible de parámetros de intercambio de medios; estas transmisiones de media por sí mismas son llevadas a cabo por un canal y protocolo diferente. Veamos un ejemplo sencillo:

v=0 – Versión del protocolo.
o=Usuario 2398026505 2307593197 IN IP4 10.20.30.40 – Información sobre el origen de la sesión, incluyendo el identificador del usuario, el identificador de sesión, la versión de sesión, la red y la dirección IP del creador.
s=MyStreamer Audio Session – Nombre de la sesión.
c=IN IP4 10.11.12.13 – Información de conexión, especificando la dirección IP y el tipo de red.
t=0 0 – Tiempo de inicio y finalización de la sesión.
m=audio 15010 RTP/AVP 0 101 – Descripción de los medios, incluyendo el tipo de medio (audio, video, etc.), el puerto, el protocolo de transporte y los formatos de codificación.
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
— a=: Atributos adicionales que proporcionan información detallada sobre la sesión o los medios. —

…podemos apreciar que el ‘Endpoint‘ está declarando que desea recibir media

  • En la dirección IP 10.11.12.13 (el parámetro “c=”)

  • En el número de puerto 15010 (declarado en el parámetro “m=”)

  • Del tipo audio (declarado en el parámetro “m=”)

  • A través del protocolo RTP, con 2 codecs posibles numerados 0 y 101 respectivamente, donde:

    • El codec 0 está definido como PCMU a 8000Hz
    • El codec 101 está definido como “telephone-event” a 8000Hz (telephone-event es el tono DTMF)
    • En modo bi-direccional (“a=sendrecv”)

Atributos Comunes en SDP

Los atributos (líneas que comienzan con “a=”) permiten especificar detalles adicionales sobre la sesión o los medios. Algunos atributos comunes incluyen:

  • a=rtpmap: Asocia un identificador de payload con un códec y su frecuencia de muestreo. Por ejemplo, a=rtpmap:0 PCMU/8000 indica que el payload 0 utiliza el códec PCMU a 8000 Hz.
  • a=sendrecv: Indica que el punto final puede enviar y recibir medios. Otros valores posibles son sendonly (solo enviar), recvonly (solo recibir) e inactive (ni enviar ni recibir).
  • a=ptime: Especifica el tamaño preferido de los paquetes de medios en milisegundos.

  • a=maxptime: Indica el tamaño máximo permitido de los paquetes de medios en milisegundos.

  • a=fmtp: Proporciona parámetros específicos del formato para ciertos códecs.

Importancia de SDP en la Negociación de Sesiones

SDP juega un papel crucial en la negociación de sesiones multimedia, especialmente en protocolos como SIP (Protocolo de Inicio de Sesión). Durante el establecimiento de una llamada o sesión, los ‘Endpoints‘ intercambian mensajes SDP para acordar parámetros compatibles de medios, como códecs, direcciones IP y puertos. Este proceso asegura que ambos extremos de la comunicación puedan manejar los formatos de medios seleccionados y facilita una comunicación efectiva.

Más Información