SIP basics
SIP (Protocolo de Inicio de Sesión, RFC 3261 ) es el protocolo de señalización de la capa de aplicación que crea, modifica y finaliza sesiones multimedia en tiempo real a través de IP , principalmente de voz y vídeo. Es fundamental destacar que SIP no transmite el contenido multimedia directamente: negocia y controla la sesión, y el audio o el vídeo fluyen por separado a través de RTP .
Su diseño se inspira deliberadamente en HTTP : mensajes de texto legibles, métodos de solicitud, códigos de respuesta de tres dígitos y direccionamiento URI (sip:alice@example.com), lo que facilita su uso para equipos familiarizados con los protocolos web. Por ello, la voz se integra a la perfección con la mensajería en una plataforma CPaaS: se trata de otro canal basado en API con una estructura de solicitud/respuesta similar.
Los principales actores son los agentes de usuario (un UAC que envía solicitudes y un UAS que responde), además de la infraestructura: los registradores registran dónde se puede contactar a un usuario y los proxies enrutan las solicitudes hacia ellos. Para un equipo de mensajería, la voz suele ser el canal de respaldo OTP y el canal de alerta urgente; por lo tanto, comprender SIP implica comprender cómo se conecta realmente ese canal.
Métodos y códigos de respuesta
SIP define un pequeño conjunto de métodos de solicitud. INVITE inicia o modifica una sesión, ACK confirma la respuesta final a una INVITE y BYE finaliza una llamada establecida. REGISTER indica al registrador dónde se puede contactar a un usuario, CANCEL cancela una solicitud pendiente y OPTIONS consulta las capacidades. RFC posteriores añaden métodos como INFO, MESSAGE, SUBSCRIBE/NOTIFY y UPDATE.
Las respuestas siguen el esquema de tres dígitos HTTP en seis clases. Las 1xx son provisionales (100 Trying, 180 Ringing); las 2xx son exitosas (200 OK); las 3xx son redirecciones; las 4xx son errores del cliente (404 Not Found, 486 Busy Here, 407 Proxy Authentication Required); las 5xx son errores del servidor; y las 6xx son fallos globales (603 Decline). Leer primero la clase y luego el código es la forma de diagnosticar rápidamente una llamada fallida.
La peculiaridad clásica que hay que tener en cuenta es el protocolo de enlace de tres vías para establecer una llamada: INVITE , luego un 200 OK y, finalmente, un ACK independiente. A diferencia de la mayoría de los protocolos de solicitud/respuesta, el ACK de un INVITE constituye una transacción propia. Un manejo incorrecto de este ACK es una de las causas más comunes de llamadas que suenan pero nunca se conectan.
SDP , RTP y SRTP
Dado que SIP solo envía señales, los parámetros de medios reales se describen mediante SDP (Protocolo de Descripción de Sesión, RFC 4566), que se transmite dentro del cuerpo de los mensajes SIP . En SDP , cada extremo anuncia los códecs que admite, la dirección IP y el puerto por el que recibirá los medios, así como otros atributos de los mismos.
SIP utiliza un modelo de oferta/respuesta (RFC 3264): la INVITE del emisor incluye una oferta SDP que detalla sus capacidades, y la respuesta del receptor incluye una respuesta SDP que selecciona el subconjunto común. Esta negociación permite que dos puntos finales acuerden un códec y una ruta de medios antes de que fluya el audio.
El contenido multimedia negociado se transmite mediante RTP (Protocolo de Transporte en Tiempo Real), que incluye los paquetes de audio y vídeo con números de secuencia y marcas de tiempo, junto con RTCP para la retroalimentación de calidad. Cuando el contenido multimedia debe ser confidencial, SRTP ( RTP Seguro) cifra y autentica dichos paquetes. En resumen: SIP y SDP establecen la llamada, mientras que RTP y SRTP la transmiten; se trata de dos rutas independientes que incluso pueden tomar caminos distintos a través de la red.
Un flujo de llamadas de principio a fin
Sigamos una llamada sencilla. El UAC del emisor envía INVITE (con una oferta SDP ) al receptor, posiblemente a través de uno o más servidores proxy. El receptor responde con 100 Trying, luego con 180 Ringing mientras el teléfono emite una alerta, y finalmente con 200 OK que transmite la respuesta SDP una vez que el receptor la acepta.
El emisor responde con ACK, y en ese momento se establece la sesión: los medios RTP fluyen directamente entre los puntos finales según el SDP negociado, independientemente de los proxies que establecen la llamada. Los cambios durante la llamada (poner una llamada en espera, agregar video, cambiar de códec) utilizan un re- INVITE o UPDATE que lleva SDP actualizado.
Cualquiera de las partes finaliza la llamada enviando BYE , que se responde con 200 OK, lo que cierra la sesión y detiene la transmisión de datos. Los fallos interrumpen el flujo: un 486 Busy Here o un 408 Request Timeout en lugar de un 200 OK significa que la llamada nunca llega a la etapa ACK. Ver toda esta secuencia es lo que permite interpretar los registros SIP cuando una llamada presenta un comportamiento anómalo.
Troncales SIP , SBC y VoLTE
Un enlace SIP es una conexión basada en SIP entre un sistema telefónico privado (PBX) o una aplicación y un operador, que reemplaza los enlaces físicos tradicionales y permite que las llamadas hacia y desde la red pública a través de IP . Es la forma en que la voz programática llega a la PSTN a gran escala.
En el límite se encuentra el controlador de borde de sesión ( SBC ), el elemento que protege y controla SIP en el extremo de la red. Realiza ocultación de topología, traducción de direcciones de red (NAT), interoperabilidad y normalización de protocolos entre diferentes dialectos SIP , control de admisión y limitación de velocidad, y a menudo anclaje y transcodificación de medios. El SBC es para SIP lo que el cortafuegos de señalización es para SS7 / Diameter : el punto de control en el límite de confianza.
VoLTE (Voz sobre LTE ) transmite voz como un servicio IMS a través de la red de datos LTE , y su control de llamadas se basa en SIP que se ejecuta dentro de IMS ; el mismo protocolo que acabas de aprender, enmarcado por las interfaces Cx / HSS y de políticas del núcleo móvil. Por lo tanto, el SIP que usa un equipo de mensajería para la voz programable y el protocolo SIP que controla una llamada VoLTE son el mismo, diferenciándose en la red circundante, no en la señalización en sí.
- SIP ( RFC 3261 ) es un protocolo similar a HTTP que señaliza las sesiones; establece las llamadas, pero nunca transmite los medios.
- Los métodos principales son INVITE /ACK/ BYE /REGISTER; las respuestas se ejecutan en clases de estilo HTTP (desde 1xx provisional hasta 6xx global).
- SDP negocia los medios mediante oferta/respuesta; los medios acordados fluyen a través de RTP , cifrados como SRTP cuando es necesario.
- Los troncales SIP conectan las aplicaciones con los operadores, el SBC protege el perímetro y VoLTE es simplemente el control de llamadas SIP dentro de IMS .