Uno de los componentes importantes para establecer una conexión usando el protocolo SIP es el Session Description Protocol (Protocolo de Descripción de Sesión), o SDP por sus siglas en inglés.
El protocolo SDP se mencionó por primera vez en 1998, en el RFC2327. Ocho años después, en 2006, el protocolo sufrió algunos cambios que se reflejaron en el RFC4566.
El protocolo SDP se utiliza para establecer una conexión y acordar los parámetros de transmisión y recepción de flujos de audio o video entre los dispositivos finales. Los parámetros de intercambio más importantes son las direcciones IP, los números de puerto y los códecs. ¡Veamos!
Tabla de Contenido
¿Qué es SDP?
SDP, o Session Description Protocol, es como un manual de instrucciones para los dispositivos para que sepan cómo “comunicarse” en internet, transmitiendo vídeo y audio. Es la clave para organizar reuniones multimedia en línea, sin necesidad de ser un gurú de la programación.
SDP resuelve el problema de la comprensión entre diferentes dispositivos en la red, indicando cómo debe transmitirse exactamente la información multimedia. Es como dar instrucciones precisas para montar muebles: cada paso está claramente descrito para evitar confusiones y errores.
Esto es importante porque simplifica la organización de sesiones multimedia, haciéndolas accesibles sin necesidad de conocimientos profundos de programación. Imagina que puedes configurar una compleja conferencia de audio y vídeo, simplemente siguiendo las instrucciones paso a paso, sin necesidad de saber todas las complejidades de la codificación. Esto hace que la tecnología sea accesible y comprensible para una amplia gama de usuarios.
Ejemplo de SDP en la Vida Real
Imagina que organizas una conferencia online, donde se transmitirán charlas sobre diferentes temas. Para organizar la transmisión de vídeo y audio entre los participantes y los ponentes, necesitas configurar sesiones multimedia. Aquí es donde entra en juego SDP (Session Description Protocol).
- ¿Qué es SDP? Es como una tarjeta de invitación a tu evento, que contiene toda la información importante: dónde y cuándo se llevará a cabo, quiénes participarán y qué temas se tratarán. Solo que en lugar de una invitación normal, SDP es una descripción técnica de la sesión multimedia.
- Ejemplo de uso de SDP: Imagina que tienes dos ponentes: Alicia y Bob. Alicia hablará sobre programación, y Bob sobre diseño. Quieres que los participantes puedan elegir qué charla escuchar y cambiar entre ellas.
Para cada charla, creas una descripción SDP, que incluye:
- La dirección y el puerto a los que puedes conectarte para la transmisión.
- La hora de inicio y finalización de la charla.
- El tipo de medio (audio, vídeo, texto, etc.), los códecs utilizados y otros parámetros técnicos.
¿Cómo funciona?
Cuando un participante elige la charla de Alicia, su aplicación o navegador utiliza SDP para conectarse a la dirección y el puerto correctos, configurar la decodificación de audio y vídeo de acuerdo con los parámetros especificados y comenzar la reproducción. Si el participante decide cambiar a la charla de Bob, el proceso se repite con una nueva descripción SDP.
De esta manera, SDP ayuda a organizar las sesiones multimedia, indicando cómo y cuándo deben transmitirse los datos, para que los participantes puedan cambiar sin problemas entre las diferentes transmisiones de tu conferencia online.
Ejemplo Técnico de SDP
Al establecer una sesión, los parámetros de SDP se transmiten dentro de las solicitudes SIP. Echemos un vistazo a una de esas solicitudes. En este caso, analizaremos una solicitud SIP INVITE que llega a nuestra central IP Asterisk usando la utilidad sngrep:

INVITE sip:74996491913@192.168.x.xxx:5061;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 80.xx.yy.zz:5060;branch=z9hG4bK-524287-1-MThkZjMzNzMyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;rport
Via: SIP/2.0/UDP 80.xx.yy.zz:5077;branch=z9hG4bK-XXXXXXXXXXXXXXXX;rport=5077
Max-Forwards: 69
Record-Route: <sip:80.xx.yy.zz:5060;lr;transport=UDP>
Contact: <sip:80.xx.yy.zz:5077>
To: <sip:74996491913@80.xx.yy.zz>
From: <sip:7925XXXXXXX@80.xx.yy.zz>;tag=qdpxhe2avyyjcqfn.o
Call-ID: fb9909e8fYYYYYYYYYYYYYYYYYYYYYY
CSeq: 479 INVITE
Expires: 300
Allow: INVITE, ACK, BYE, CANCEL, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS, UPDATE
Content-Disposition: session
Content-Type: application/sdp
User-Agent: Sippy
P-Asserted-Identity: <sip:7925XXXXXXX@80.xx.yy.zz>
Remote-Party-ID: <sip:7925XXXXXXX@80.xx.yy.zz>;party=calling
h323-conf-id: 4133864240-4217115111-2706418710-XXXXXXXXX
Portasip-3264-action: offer 1
cisco-GUID: 4133864240-4217115111-2706418710-XXXXXXXXX
Content-Length: 278
v=0
o=Sippy 1011212504475793896 1 IN IP4 80.xx.yy.zz
s=-
c=IN IP4 80.xx.yy.zz
t=0 0
m=audio 57028 RTP/AVP 0 8 18 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=yes
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=sendrecv
Cuerpo SDP:
- v=0: Versión del protocolo SDP.
- o=Sippy 1011212504475793896 1 IN IP4 80.xx.yy.zz: Identificador de la sesión, incluyendo el usuario, la sesión ID, la versión, el tipo de red e IP.
- s=-: Nombre de la sesión (opcional).
- c=IN IP4 80.xx.yy.zz: La dirección IP y el tipo de conexión.
- t=0 0: El intervalo de tiempo de la sesión.
- m=audio 57028 RTP/AVP 0 8 18 101: Especifica los detalles de la transmisión multimedia (audio) con el puerto RTP 57028 y los códecs soportados (G.711 uLaw, G.711 ALaw, G.729, eventos de teléfono).
- a=rtpmap: Define los mapas de códecs con información sobre la frecuencia de muestreo y otros parámetros.
- a=fmtp: Proporciona parámetros adicionales para los códecs.
- a=sendrecv: Indica que la sesión es bidireccional.
En este ejemplo, puedes ver que la parte principal del mensaje SIP está separada del segmento SDP por una línea en blanco. Además, el campo Content-Type indica que el mensaje es compatible con los parámetros SDP.
Campos SDP
Cada uno de los parámetros del mensaje SDP se puede clasificar en una de las siguientes categorías:
- Nombre de la sesión;
- Tiempo durante el cual la sesión está activa;
- Parámetros de medios;
- Información sobre el ancho de banda;
- Información de contacto;
Hablemos de los parámetros principales. Siempre tienen la siguiente designación: <campo> = <valor>
. El campo siempre se designa con 1 letra.
Campo | Valor | Formato |
---|---|---|
v= | versión del protocolo | v=0 |
o= | iniciador de la sesión y los identificadores correspondientes | o= <nombre_de_usuario> <identificador_de_sesión> <versión> <tipo_de_red> <tipo_de_dirección> <dirección>. En nuestro ejemplo el campo es o=Sippy 1011212504475793896 1 IN IP4 80.xx.yy.zz (IN – tipo de red, internet, IP4 – tipo de dirección, IPv4; |
s= | nombre de la sesión | en nuestro ejemplo un guión (“-“), el nombre de la sesión no está especificado; |
c= | información de conexión; | Sintaxis: c= <tipo_de_red> <tipo_de_dirección> <dirección>. En nuestro ejemplo IN IP4 80.xx.yy.zz. Los parámetros IN/IP4 se explicaron anteriormente. |
t= | tiempo de actividad de la sesión | Sintaxis del campo: t= <tiempo_de_inicio> <tiempo_de_fin>. Este es un campo obligatorio, pero es importante tener en cuenta que es bastante subjetivo, ya que es imposible predecir la hora exacta de inicio y finalización. En nuestro ejemplo t=0 0 |
m= | tipo de transmisión de datos multimedia, formato y direccionamiento | m= <tipo_de_medio> <puerto> <transporte> <formato_de_transmisión>. Vamos a entender: tenemos m=audio 57028 RTP/AVP 0 8 18 101, esto significa la transmisión de audio (puede ser el valor video, o la transmisión de ambos tipos), el puerto de transmisión se indica como 57028, el transporte, indicado como RTP/AVP, significa la transmisión a través del protocolo RTP dentro del estándar Audio and Video Conferences with Minimal Control, que se describe en RFC3551. Después, el primer 0 significa el protocolo G.711 uLaw, 8 significa G.711 ALaw, 18 significa G.729. Es decir, en términos generales, se nos ha ofrecido la preferencia de códecs primero G.711 uLaw, luego G.711 ALaw, y como tercera prioridad G.729. 101 significa soporte para el tipo de datos dinámico, como DTMF. |
a= | parámetros de la sesión | a= <parámetro>o a= <parámetro> <valor>. La sesión SDP puede contener varios atributos de transmisión adicionales. Más adelante los veremos con más detalle. |
Además de los parámetros indicados, a menudo se encuentran parámetros como k=
, dentro del cual se describe el método de encriptación, o i=
, que contiene información adicional sobre la sesión. Hablemos de los parámetros del campo a=
:
Parámetro | Sintaxis y descripción |
---|---|
rtpmap | a=rtpmap: <tipo> <nombre_de_codificación>/ <frecuencia_de_muestreo>[/<parámetros_de_codificación>]. Este parámetro indica los nombres de los códecs, la frecuencia y otros parámetros de codificación para los datos indicados en el parámetro m=. Por ejemplo, tenemos a=rtpmap:0 PCMU/8000, lo que significa el uso de G.711 con modulación de código de pulso según la ley U con una frecuencia de muestreo de 8000 Hz. |
sendrecv | a=sendrecv Este parámetro indica que vamos a enviar y recibir datos multimedia. Por ejemplo, es posible la opción de enviar (sendonly), solo recibir (recvonly) y deshabilitar el medio (inactive); |
ptime | a=ptime: <duración_del_paquete> Duración del paquete RTP (en milisegundos). En términos generales, qué duración de fragmento de voz transporta un paquete RTP; |
fmtp | a=fmtp: <formato> <parámetros_especiales> Este parámetro describe los parámetros adicionales de la sesión, como el modo de supresión de silencio (VAD) y otros; |
Ventajas y Desventajas del uso de SDP
Las ventajas y limitaciones de SDP son importantes para entender cómo utilizar este protocolo de manera efectiva.
Entre las ventajas se encuentran la simplificación del proceso de configuración de sesiones multimedia, la posibilidad de describir detalladamente los parámetros de la sesión, garantizar la compatibilidad entre diferentes dispositivos y programas.
Sin embargo, SDP en sí mismo no incluye mecanismos para acordar los parámetros de la sesión o proteger los datos. Para estos fines se requieren protocolos adicionales, como SIP (Session Initiation Protocol) para VoIP, lo que puede complicar la configuración del sistema.
Alternativas a SDP y su Comparación
Comparando SDP con otras tecnologías, se puede observar que, aunque existen métodos alternativos para organizar sesiones multimedia, SDP sigue siendo la opción preferida en muchos casos gracias a su flexibilidad y soporte de estándares. Por ejemplo, en comparación con los esquemas de transmisión de datos codificados de forma rígida, SDP ofrece un enfoque más flexible y versátil, lo que permite adaptarse fácilmente a diferentes tipos de redes y dispositivos.
En conclusión, SDP juega un papel clave en las aplicaciones multimedia y VoIP modernas, proporcionando la flexibilidad y la capacidad de gestión necesarias para organizar las sesiones multimedia. Su simplicidad y versatilidad hacen que SDP sea una herramienta indispensable en el arsenal de los desarrolladores e ingenieros que trabajan con tecnologías multimedia.
Preguntas Frecuentes
SIP (Session Initiation Protocol, Protocolo de Iniciación de Sesión) es un protocolo de señalización que se utiliza para iniciar, modificar y finalizar sesiones multimedia. SDP (Session Description Protocol, Protocolo de Descripción de Sesión) describe el contenido multimedia de la sesión, como los códecs y los tipos de medios. Mientras SIP se encarga de la configuración y el control de las sesiones, SDP proporciona los detalles técnicos para el intercambio real de medios.
En RTSP (Real-Time Streaming Protocol, Protocolo de Transmisión en Tiempo Real), SDP (Session Description Protocol, Protocolo de Descripción de Sesión) se utiliza para transmitir detalles de transmisión multimedia. SDP proporciona las especificaciones técnicas, como códecs y protocolos de transporte, para las transmisiones multimedia. RTSP utiliza SDP para garantizar que tanto el servidor como el cliente comprenden y acuerdan los parámetros de transmisión.
SDP (Session Description Protocol, Protocolo de Descripción de Sesión) se incrusta dentro de los mensajes SIP para transmitir los parámetros de negociación multimedia, como los códecs, los formatos de medios y los protocolos de transporte. Incluir SDP en SIP garantiza que los puntos finales puedan negociar y acordar los detalles técnicos para un intercambio de medios exitoso.