Resumen

  • RFC 3388 convirtió las líneas de medios de SDP en miembros identificables de relaciones ejecutables, pero prohibió aplicar cualquier agrupación si faltaba el nombre de una sola línea.
  • La decisión conservaba las descripciones básicas y evitaba que una relación aparentemente razonable sincronizara, eligiera o duplicara el medio equivocado.

La respuesta SIP conserva el orden de dos líneas m=, pero cambia sus etiquetas. La primera posición llevaba mid:1 en la oferta y ahora lleva mid:2; la segunda hace lo contrario. Si se siguieran las etiquetas, todo parecería recuperable. Si se siguieran las posiciones, las identidades entrarían en conflicto.

RFC 3388 resolvió el conflicto descartando toda la capa de mid y group. No intentó escoger la interpretación más cómoda. La negociación básica por posición seguía vigente; las relaciones añadidas ya no tenían autoridad.

El documento se publicó en diciembre de 2002 en la Standards Track. El SDP original podía enumerar varias líneas de audio, vídeo u otras aplicaciones, pero no expresaba una relación normalizada entre ellas. Las aplicaciones dependían de conocimiento externo o de decisiones propias.

RFC 3388 añadió a=mid como identificador único de una línea dentro de la descripción y a=group como relación de sesión entre identificadores. Definió dos semánticas iniciales: LS para sincronización de reproducción y FID para varias sesiones RTP que formaban un flujo lógico.

La novedad no era simplemente poder dibujar una agrupación. Era poder ejecutarla. LS obligaba a recuperar la relación temporal entre medios. RTP solía apoyarse en RTCP para convertir marcas de tiempo diferentes a un reloj común. La declaración no aportaba por sí sola medidas del reloj ni demostraba que la imagen coincidiera con la voz ante el usuario.

FID podía modificar los destinos. Un terminal celular necesitaba puertos distintos para codecs distintos; un servidor podía recibir DTMF mientras otro equipo recibía voz. Sólo se usaba un codec a la vez, pero si varias líneas miembros admitían el codec activo, el emisor debía enviar copias a varias sesiones.

Esa consecuencia explica la severidad de la identidad. Cada mid tenía que ser único. Si una línea de grupo citaba un identificador inexistente, la línea completa se ignoraba. Y si se usaba agrupación en la descripción, todas las líneas de medios debían estar etiquetadas, incluso las que no aparecían en ese grupo. Una línea sin nombre podía ser realmente independiente, pero también podía ser el resto de una descripción truncada o dañada.

La especificación prefirió no decidir. Los medios básicos seguían disponibles bajo las reglas de SDP. Sólo se retiraba la interpretación relacional. Así separó fallo de datos y fallo de autoridad: una descripción podía ser sintácticamente útil sin autorizar la conducta que dependía de un enlace semántico.

En oferta-respuesta, RFC 3264 mantenía el alineamiento ordinal. La primera línea de la oferta correspondía a la primera de la respuesta. mid no introducía una segunda negociación capaz de reordenar silenciosamente esas posiciones. La etiqueta de la respuesta debía coincidir; si no, todas las etiquetas y grupos se ignoraban.

El respondedor que entendía una semántica devolvía los mismos miembros o un subconjunto. Una línea rechazada con puerto cero debía salir del grupo. El subconjunto de la respuesta era el grupo efectivo. Así, solicitud y aceptación quedaban registradas por separado.

Tampoco se permitía que el respondedor inventara un grupo nuevo en la respuesta. No tendría un tercer mensaje SDP que confirmara que el oferente lo había aceptado. Si quería proponer la relación, debía enviar otra oferta. La dirección de autoridad seguía la posibilidad de obtener recibo.

La compatibilidad hacia atrás no garantizaba interpretación. No había un encabezado SIP Require; un equipo antiguo podía ignorar group y mid. Ante FID, podía considerar varias corrientes independientes, mezclarlas, rechazar la sesión o provocar un nuevo intento sencillo. Un 200 OK no certificaba que el peer hubiese aplicado la agrupación.

La amenaza era concreta. Si alguien modificaba FID durante la señalización, podía obligar a enviar una copia del medio a otro destino. La integridad de la descripción protegía qué relaciones podían ordenar una transmisión. El cifrado del medio reducía la utilidad de una copia desviada, pero no corregía la asociación alterada.

RFC 5888 sustituyó después a RFC 3388 y eliminó la prohibición original de que un medio apareciera en más de un grupo de la misma semántica. Esa revisión distingue una restricción de cardinalidad mejorable de la regla fundamental: no ejecutar relaciones sobre identidades incompletas o contradictorias.

La primacía del código en ejecución de Lu Heng aporta la conclusión. Las reglas comunes deben ser mínimas y comprobables: nombres únicos, cobertura completa, estabilidad entre oferta y respuesta y selección positiva del subconjunto. Cuando falta una prueba, la aplicación no debe fabricar mandato con proximidad visual o intuición.

Una etiqueta ausente anulaba todos los grupos porque el coste de suspender una relación era menor que el de aplicar una instrucción válida al medio equivocado. Las líneas permanecían. La suposición era lo que se descartaba.

Fuentes