Trunking SIP
Este documento cubre la configuración de pares SIP, la monitorización de keepalive OPTIONS, la negociación de códecs SDP, el manejo de re-INVITE en diálogo, los temporizadores de sesión, el relé DTMF y los estados de llamada de trunk SIP en OmniMSC.
Para el enrutamiento relacionado con SIP, consulte Configuración de Enrutamiento. Para SIP con ISUP encapsulado, consulte Trunking SIP-I. Para la solución de problemas de trunk SIP, consulte Guía de Solución de Problemas. Para secuencias de flujo de llamadas que muestran la señalización SIP en contexto, consulte Diagramas de Flujo de Llamadas. Para la negociación de códecs de puerta de enlace multimedia, consulte Control de Medios. Para los parámetros de configuración del par SIP, consulte Referencia de Configuración.
Configuración de Par SIP
Cada par SIP representa un punto final remoto, como una puerta de enlace VoIP, SBC, nodo IMS o proveedor de trunking SIP. Los pares se definen en el bloque de configuración :sip y se referencian por nombre en la tabla de enrutamiento.
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
name | string | -- (requerido) | Nombre lógico del par. Referenciado en las entradas de la tabla de enrutamiento. |
address | string | -- (requerido) | Dirección IP o nombre de host del par. |
port | integer | 5060 | Puerto SIP del par. |
transport | atom | :udp | Protocolo de transporte: :udp, :tcp o :tls. |
codecs | list(atom) | [:pcmu, :pcma] | Códecs de audio soportados para la negociación SDP. |
max_channels | integer | 100 | Máximo de llamadas concurrentes a este par. |
options_interval | integer o nil | nil | Intervalo en segundos para las sondas de keepalive SIP OPTIONS. |
OmniMSC se identifica con el encabezado User-Agent OmniMSC/0.1 en todas las solicitudes y respuestas SIP salientes.
Keepalive SIP OPTIONS
Cuando se configura options_interval para un par, el Gestor de Pares SIP envía solicitudes SIP OPTIONS periódicas para monitorear la salud del par. El estado del par determina si es elegible para el enrutamiento de llamadas.
Estados de Salud del Par
Cada par rastrea un estado de :up, :down o :unknown. Al inicio, todos los pares comienzan en el estado :unknown.
| Evento | Transición | Efecto |
|---|---|---|
| OPTIONS 200 OK recibido | Cualquiera -> up | Par elegible para enrutamiento |
| Tiempos de espera OPTIONS consecutivos | up/unknown -> down | Par excluido del enrutamiento, alarma activada |
| OPTIONS 200 OK después de down | down -> up | Par re-elegible, alarma despejada |
max_channels alcanzado | up -> up (límite suave) | Nuevas llamadas rechazadas para este par, llamadas existentes no afectadas |
Para la monitorización de pares SIP en el panel de control, consulte Guía del Panel de Control.
Flujo de Llamada SIP MO
Cuando OmniMSC enruta una llamada de origen móvil a un par SIP, se produce el siguiente intercambio de señalización SIP entre OmniMSC y el par remoto.
El INVITE lleva una oferta SDP con códecs basados en la configuración del par y las capacidades del BSC. El 200 OK contiene la respuesta SDP con el códec seleccionado y la dirección RTP remota. Después de ACK, la ruta de medios RTP se establece a través de la puerta de enlace multimedia.
Manejo de Re-INVITE en Diálogo
Un par SIP puede enviar un re-INVITE dentro de un diálogo establecido para varios propósitos: retención de llamada, cambio de códec o actualización de sesión. OmniMSC procesa los re-INVITE y responde con 200 OK utilizando el SDP de la sesión actual.
| Propósito del Re-INVITE | Indicador SDP | Comportamiento de OmniMSC |
|---|---|---|
| Retención de llamada | a=sendonly | Reconocer la retención, actualizar el modo MGW a recvonly |
| Reanudación de llamada | a=sendrecv | Reanudar medios, actualizar el modo MGW a sendrecv |
| Cambio de códec | Línea m= modificada | Renegociar códec si es soportado, rechazar con 488 si no |
| Actualización de sesión | Sin cambio SDP | Responder con 200 OK, reiniciar temporizador de sesión |
Cuando OmniMSC recibe un re-INVITE que no puede aceptar (códec no soportado, SDP faltante), responde con 488 No Aceptable Aquí. El diálogo existente y la sesión de medios permanecen sin afectar.
Temporizador de Sesión (RFC 4028)
OmniMSC soporta temporizadores de sesión SIP según la RFC 4028 para detectar y limpiar sesiones SIP huérfanas. Los temporizadores de sesión aseguran que ambos puntos finales refresquen periódicamente la sesión, previniendo un estado de llamada obsoleto después de fallos en la red.
| Parámetro | Valor | Descripción |
|---|---|---|
| Session-Expires | 1800s (predeterminado) | Tiempo máximo entre refrescos de sesión |
| Min-SE | 90s | Valor mínimo aceptable de Session-Expires |
| Refresher | UAC o UAS | Determinado durante la negociación |
Negociación del Temporizador de Sesión
OmniMSC incluye los encabezados Session-Expires y Min-SE en las solicitudes INVITE salientes y en las respuestas 200 OK. Cuando un par propone un valor de Session-Expires por debajo del Min-SE configurado, OmniMSC responde con 422 Intervalo de Sesión Demasiado Pequeño e incluye el encabezado Min-SE indicando el valor mínimo aceptable.
El refresco de sesión se realiza a través de re-INVITE. Si no llega un refresco antes de que la sesión expire, OmniMSC envía BYE para finalizar la llamada y libera todos los recursos asociados.
Relé DTMF
OmniMSC retransmite tonos DTMF utilizando mensajes SIP INFO según el tipo de contenido application/dtmf-relay. Este método se utiliza cuando el par no soporta la carga útil RTP de evento telefónico RFC 2833 o cuando se prefiere DTMF fuera de banda.
| Campo | Descripción | Ejemplo |
|---|---|---|
| Content-Type | Tipo MIME para relé DTMF | application/dtmf-relay |
| Signal | Dígito DTMF (0-9, *, #, A-D) | Signal=5 |
| Duration | Duración del tono en milisegundos | Duration=160 |
Cuando se detectan eventos DTMF desde el lado de la radio (a través de la puerta de enlace multimedia), OmniMSC genera un mensaje SIP INFO hacia el par SIP con la señal y duración correspondientes. En la dirección inversa, los eventos DTMF SIP INFO entrantes se reenvían a la puerta de enlace multimedia para su reproducción hacia la estación móvil.
Negociación de Códecs SDP
OmniMSC genera ofertas SDP basadas en la intersección de la lista de códecs configurados del par y las capacidades de códec de voz reportadas por el BSC. Los códecs se ofrecen en orden de preferencia.
Códecs Soportados
| Códec | Tipo de Carga RTP | Ancho de Banda | Parámetros fmtp |
|---|---|---|---|
| AMR | dinámico (96) | 4.75-12.2 kbps | octet-align=1 |
| GSM-EFR | dinámico (97) | 12.2 kbps | -- |
| GSM-FR | 3 | 13 kbps | -- |
AMR se ofrece con octet-align=1 (RFC 4867) para interoperabilidad con redes de acceso 3GPP. GSM-EFR y GSM-FR se ofrecen cuando el BSC indica soporte para estos códecs en la lista de versiones de voz durante la asignación.
Selección de Códec
La selección de códec sigue el modelo de Oferta/Respuesta SDP (RFC 3264):
- OmniMSC construye la oferta SDP a partir de la lista de códecs del par, filtrada por las capacidades de voz del BSC.
- El par remoto responde con una respuesta SDP que contiene uno o más códecs aceptados.
- OmniMSC selecciona el primer códec común del orden de la oferta original.
- Se instruye a la puerta de enlace multimedia (a través de MDCX) con el códec seleccionado y los parámetros RTP.
Si no existe un códec común, OmniMSC responde o recibe 488 No Aceptable Aquí.
Estados de Llamada de Trunk SIP
Estados de Llamadas Salientes
Estados de Llamadas Entrantes
Referencias
| Referencia | Título | Relevancia |
|---|---|---|
| RFC 3261 | SIP: Protocolo de Inicio de Sesión | Señalización SIP central |
| RFC 4028 | Temporizadores de Sesión en SIP | Session-Expires, Min-SE, mecanismo de refresco |
| RFC 2833 | Carga RTP para Dígitos DTMF | Tipo de carga RTP de evento telefónico |
| RFC 3264 | Modelo de Oferta/Respuesta con SDP | Negociación de códecs SDP |
| RFC 4867 | Formato de Carga RTP para AMR y AMR-WB | Parámetro octet-align de AMR |
| RFC 3326 | Campo de Encabezado de Razón | Código de causa en BYE/CANCEL |