Puerta de enlace de capa de aplicación para protocolo SIP
El uso de NAT a gran escala (LSN) con el Protocolo de inicio de sesión (SIP) es complicado, ya que los mensajes SIP contienen direcciones IP en los encabezados del SIP y en el cuerpo del SIP. Cuando se usa LSN con SIP, los encabezados SIP contienen información sobre la persona que llama y el receptor, y el dispositivo traduce esta información para ocultarla de la red externa. El cuerpo del SIP contiene la información del Protocolo de descripción de sesiones (SDP), que incluye las direcciones IP y los números de puerto para la transmisión del contenido multimedia.
SIP ALG cumple con las siguientes RFC:
- RFC 3261
- RFC 3581
- RFC 456
- FC 475
Nota
El SIP ALG es compatible con un dispositivo independiente de NetScaler, en una configuración de alta disponibilidad de NetScaler y en una configuración de clúster de NetScaler.
Cómo funciona SIP ALG
La forma en que se realiza la traducción de la dirección IP depende del tipo y la dirección del mensaje. Un mensaje puede ser cualquiera de los siguientes:
- Solicitud entrante
- Respuesta saliente
- Solicitud saliente
- Respuesta entrante
Para un mensaje saliente, la dirección IP privada y el número de puerto del cliente SIP se sustituyen por la dirección IP pública y el número de puerto propiedad de NetScaler, denominados dirección IP y número de puerto del grupo de LSN, especificados durante la configuraciónde LSN. Para un mensaje entrante, la dirección IP del grupo LSN y el número de puerto se sustituyen por la dirección privada del cliente. Si el mensaje contiene direcciones IP públicas, el SIP ALG de NetScaler las conserva. Además, se crea un orificio estenopeico en:
- LSN agrupe la dirección IP y el puerto en nombre del cliente privado, de modo que los mensajes que llegan a esta dirección IP y al puerto desde la red pública se traten como mensajes SIP.
- Dirección IP pública y puerto en nombre de los clientes públicos, de modo que los mensajes que llegan a esta dirección IP y al puerto desde la red privada se traten como mensajes SIP.
Cuando se envía un mensaje SIP a través de la red, la pasarela de capa de aplicaciones (ALG) SIP recopila información del mensaje y traduce las direcciones IP de los siguientes encabezados a direcciones IP del grupo LSN:
- Vía
- Contactar
- Ruta
- Ruta de registro
En el siguiente ejemplo de mensaje de solicitud SIP, LSN reemplaza las direcciones IP de los campos de encabezado para ocultarlas de la red externa.
INVITE adam@10.102.185.156 SIP/2.0 Via: SIP/2.0/UDP 192.170.1.161:62914 From: eve@10.120.210.3 To: adam@10.102.185.156 Call-ID: a12abcde@10.120.210.3 Contact: adam@10.102.185.156 Route: <sip:netscreen@10.150.20.3:5060> Record-Route: <sip:netscreen@10.150.20.3:5060>
<!--NeedCopy-->
Cuando llega un mensaje que contiene información de SDP, el SIP ALG recopila información del mensaje y traduce las direcciones IP de los siguientes campos en direcciones IP y números de puerto del grupo LSN:
-
c= (información de conexión)
Este campo puede aparecer a nivel de sesión o de medio. Aparece en el siguiente formato:
c=
<network-type><address-type><connection-address>
Si la dirección IP de destino es una dirección IP de unidifusión, el SIP ALG crea orificios mediante la dirección IP y los números de puerto especificados en el campo m=.
-
m= (anuncio de prensa)
Este campo aparece a nivel de medios y contiene la descripción de los medios. Aparece en el siguiente formato:
m=
<media><port><transport><fmt list>
-
a=
(information about the media field)
Este campo puede aparecer a nivel de sesión o de medio, en el siguiente formato:
a=
<attribute>
a=
<attribute>:<value>
El siguiente extracto de una sección de SDP de ejemplo muestra los campos que se traducen para la asignación de recursos.
o=usuario 2344234 55234434 EN IP4 10.150.20.3
c=en IP4 10.150.20.3
m=audio 43249 RTP/AVP 0
La siguiente tabla muestra cómo se traduce la carga SIP.
Solicitud entrante (de pública a privada) | A | Nada |
De | ||
Identificador de llamada | ||
Vía | ||
URI de solicitud | ||
Contacto | ||
Ruta de registro | ||
Recorrido | ||
Respuesta saliente (de privada a pública) | A | Nada |
De | ||
Identificador de llamada | ||
Vía | ||
URI de solicitud | ||
Contacto | ||
Ruta de registro | ||
Recorrido | ||
Solicitud saliente (de privada a pública) | A | Nada |
De | ||
Identificador de llamada | ||
Vía | ||
URI de solicitud | ||
Contacto | ||
Ruta de registro | ||
Recorrido | ||
Respuesta entrante (de pública a privada) | A | Nada |
De | ||
Identificador de llamada | ||
Vía | ||
URI de solicitud | ||
Contacto | ||
Ruta de registro | ||
Recorrido |
Limitaciones del SIP ALG
Un SIP ALG tiene las siguientes limitaciones:
- Solo se admite la carga útil de SDP.
- Estas opciones no se admiten:
- Direcciones IP de multidifusión
- SDP cifrado
- ENVIAR TLS
- Traducción de FQDN
- Autenticación de capa SI
- TD/Particionamiento
- Cuerpo multiparte
- Mensajes SIP a través de la red IPv6
- Plegado en línea
Clientes SIP y servidores proxy probados
Los siguientes clientes SIP y servidores proxy se han probado con SIP ALG:
- Clientes SIP: X-Lite, Zoiper, Ekiga. Avaya
- Servidor proxy: OpenSIPS
Escenario SIP de LSN: proxy SIP fuera de la red privada (red pública)
Registro de clientes SIP
Para una llamada SIP típica, el cliente SIP debe registrarse en el registrador SIP redactando una solicitud de REGISTRO y enviándola al registrador SIP. El SIP ALG del dispositivo NetScaler intercepta la solicitud, reemplaza la dirección IP y el número de puerto de la solicitud por la dirección IP del grupo de LSN y el número de puerto proporcionados en la configuración de LSN y reenvía la solicitud al registrador SIP. A continuación, el SIP ALG abre un orificio en la configuración de NetScaler para permitir una mayor comunicación SIP entre el cliente SIP y el registrador SIP. El registrador SIP envía una respuesta de 200 OK al cliente SIP a través de la dirección IP y el número de puerto del grupo LSN. El dispositivo NetScaler captura esta respuesta en el orificio y el SIP ALG reemplaza el encabezado SIP y vuelve a incluir los campos SIP de contacto, vía, ruta y ruta de registro originales en el mensaje. A continuación, el SIP ALG reenvía el mensaje al cliente SIP. La siguiente ilustración muestra cómo SIP ALG utiliza LSN en un flujo de registro de llamadas SIP.
Llamadas salientes
Una llamada SIP se inicia con un mensaje SIP INVITE enviado desde la red interna a la externa. El SIP ALG realiza la NAT en las direcciones IP y los números de puerto de los campos de encabezado SIP Via, Contacto, Ruta y Ruta de registro, y los sustituye por la dirección IP y el número de puerto del grupo LSN. LSN almacena estas asignaciones para los mensajes SIP posteriores en la llamada SIP. A continuación, el SIP ALG abre orificios separados en la configuración de NetScaler para permitir que el SIP y los medios pasen por el dispositivo NetScaler en los puertos asignados dinámicamente especificados en los encabezados SDP y SIP. Cuando llega un mensaje de 200 OK a NetScaler, es capturado por uno de los orificios creados. El SIP ALG reemplaza el encabezado SIP, restaura los campos SIP Contacto, Vía, Ruta y Ruta de registro originales y, a continuación, reenvía el mensaje al cliente SIP interno.
Llamadas entrantes
Una llamada entrante SIP se inicia con un mensaje SIP INVITE del cliente externo a la red interna. El registrador SIP reenvía el mensaje INVITE al cliente SIP de la red interna mediante el orificio que se creó cuando el cliente SIP interno se registró en el registrador SIP.
El SIP ALG realiza la NAT en las direcciones IP y los números de puerto de LSN en los campos de encabezado SIP Via, Contacto, Ruta y Ruta de registro, los traduce a la dirección IP y al número de puerto del cliente SIP interno y reenvía la solicitud al cliente SIP. Cuando el mensaje de respuesta de 200 OK enviado por el cliente SIP interno llega al dispositivo NetScaler, el SIP ALG ejecuta NAT en las direcciones IP y los números de puerto de los campos de encabezado SIP Via, Contacto, Ruta y Ruta de registro, los traduce a la dirección IP y al número de puerto del grupo LSN, reenvía el mensaje de respuesta al registrador SIP y, a continuación, abre un orificio en la dirección de salida para continuar la comunicación SIP.
Terminación de llamada
El mensaje BYE finaliza una llamada. Cuando el dispositivo recibe un mensaje BYE, traduce los campos del encabezado del mensaje tal como lo hace con cualquier otro mensaje. Sin embargo, dado que el receptor debe confirmar un mensaje de BYE con un 200 OK, el ALG retrasa la interrupción de la llamada durante 15 segundos para dar tiempo a la transmisión del 200 OK.
Llamada entre clientes de la misma red
Cuando tanto el cliente A como el cliente B de la misma red inician una llamada, los mensajes SIP se enrutan a través del proxy SIP en la red externa. El SIP ALG procesa la INVITACIÓN del cliente A como una llamada saliente normal. Como el cliente B está en la misma red, el proxy SIP envía el INIVITE de vuelta al dispositivo NetScaler. El SIP ALG examina el mensaje INIVITE, determina que contiene la dirección IP NAT del cliente A y la reemplaza por la dirección IP privada del cliente A antes de enviar el mensaje al cliente B. Una vez que se establece la llamada entre los clientes, NetScaler no participa en la transmisión multimedia entre los clientes.
Más casos SIP de LSN: proxy SIP dentro de la red privada
Si desea alojar el servidor proxy SIP dentro de la red privada, Citrix recomienda realizar una de las siguientes acciones:
- Configure una asignación LSN estática para el proxy SIP privado. Para obtener más información, consulte Configuración de mapas LSN estáticos. Asegúrese de que el puerto NAT es el mismo que el puerto configurado en el perfil SIP ALG.
- Configure el servidor proxy SIP dentro de una zona desmilitarizada (DMZ).
Figura 1. Registro de llamadas SIP
Figura 2. Flujo de llamadas entrantes SIP
Las ilustraciones 1 y 2 muestran los siguientes casos:
- Escenario 1: el cliente SIP de la red privada se registra con el servidor proxy SIP de la misma red. Las operaciones ALG no se realizan porque el cliente SIP y el servidor proxy SIP están en la misma red.
- Escenario 2: el cliente SIP de la red pública se registra con el servidor proxy SIP de la red privada. El mensaje REGISTER del cliente SIP público se envía al dispositivo NetScaler mediante el mapeo LSN estático configurado en el dispositivo y el dispositivo crea un orificio para futuras operaciones de SIP.
- Escenario 3: Flujo de llamadas entrantes SIP. Una llamada SIP entrante se inicia con un mensaje SIP INVITE de la red externa a la interna. El dispositivo NetScaler recibe el mensaje INVITE del cliente SIP C2, que se encuentra en la red externa, a través de los mapas LSN estáticos configurados en el dispositivo NetScaler.
El dispositivo crea un orificio estenopeico y reenvía el mensaje INVITE al proxy SIP. A continuación, el proxy SIP reenvía el mensaje INVITE al cliente SIP C1 de la red interna. A continuación, el cliente SIP C1 envía 180 y 200 mensajes OK al proxy SIP, que a su vez reenvía el mensaje al cliente SIP C2 a través del dispositivo NetScaler. Cuando el mensaje de respuesta 200 OK enviado por el cliente SIP interno C1 llega a NetScaler, el SIP ALG ejecuta la NAT en las direcciones IP y los números de puerto de los campos de encabezado SIP Via, Contacto, Ruta y Ruta de registro y en los campos SDP, sustituyéndolos por la dirección IP y el número de puerto del grupo LSN. A continuación, el SIP ALG reenvía el mensaje de respuesta al cliente SIP C2 y abre un orificio en la dirección de salida para una mayor comunicación SIP.
Soporte para registros de auditoría
Puede registrar la información de ALG como parte del registro LSN habilitando ALG en la configuración de registro de auditoría de LSN. Para obtener más información sobre el registro de LSN, consulte Registro y supervisión de LSN. Un mensaje de registro para una entrada ALG en el registro LSN consta de la siguiente información:
- Marca de tiempo
- Tipo de mensaje SIP (por ejemplo, solicitud SIP)
- Dirección IP de origen y puerto del cliente SIP
- Dirección IP de destino y puerto del proxy SIP
- Dirección IP y puerto de NAT
- Método SIP
- Número de secuencia
- Si el cliente SIP está registrado o no
- Nombre de usuario y dominio de la persona que llama
- Nombre de usuario y dominio del destinatario
Ejemplo de registro de auditoría:
Solicitud:
07/19/2013:09:49:19 GMT Informational 0-PPE-0 : default ALG ALG_SIP_INFO_PACKET_EVENT 169 0 : Infomsg: "SIP request" - Group: g2 - Call_ID: NTY0YjYwMTJmYjNhNDU5ZjlhMmQxOTM5ZTE3Zjc3NjM. - Transport: TCP - Source_IP: 192.169.1.165 - Source_port: 57952 - Destination_IP: 10.102.185.156 - Destination_port: 5060 - Natted_IP: 10.102.185.191 - Natted_port: 10313 - Method: REGISTER - Sequence_Number: 3060 - Register: YES - Content_Type: - Caller_user_name: 156_pvt_1 - Callee_user_name: 156_pvt_1 - Caller_domain_name: - Callee_domain_name: -
<!--NeedCopy-->
Respuesta:
07/19/2013:09:49:19 GMT Informational 0-PPE-0 : default ALG ALG_SIP_INFO_PACKET_EVENT 170 0 : Infomsg: "SIP response" - Group: g2 - Call_ID: NTY0YjYwMTJmYjNhNDU5ZjlhMmQxOTM5ZTE3Zjc3NjM. - Transport: TCP - Response_code 200 - Source_IP: 10.102.185.156 - Source_port: 5060 - Destination_IP: 192.169.1.165 - Destination_port: 57952 - Natted_IP: 10.102.185.191 - Natted_port: 10313 - Sequence_Number: 3060 - Content_Type: - Caller_user_name: 156_pvt_1 - Callee_user_name: 156_pvt_1 - Caller_domain_name: - Callee_domain_name: -
<!--NeedCopy-->
Configuración de SIP ALG
Debe configurar el SIP ALG como parte de la configuración LSN. Para obtener instrucciones sobre cómo configurar LSN, consulte Pasos de configuración para LSN. Al configurar LSN, asegúrese de que:
- Defina los siguientes parámetros al añadir el perfil de la aplicación LSN:
- Agrupación de IP = EMPAREJADO
- Mapeo de direcciones y puertos = ENDPOINT-INDEPENDENT
- Filtrado = ENDPOINT-INDEPENDENT
Importante: Para que el SIP ALG funcione, es obligatoria una configuración de NAT de cono completo.
Ejemplo:
add lsn appsprofile app_tcp TCP -ippooling PAIRED -mapping ENDPOINT-INDEPENDENT -filtering ENDPOINT-INDEPENDENT
<!--NeedCopy-->
- Cree un perfil SIP ALG y asegúrese de definir el rango de puertos de origen o el rango de puertos de destino.
Ejemplo:
add lsn sipalgprofile sipalgprofile_tcp -sipsrcportrange 1-65535 -sipdstportrange 5060 -openViaPinhole ENABLED -openRecordRoutePinhole ENABLED –sipTransportProtocol TCP
<!--NeedCopy-->
- Defina SIP ALG = ENABLED al crear el grupo LSN.
Ejemplo:
add lsn group g1 -clientname c1 -sipalg ENABLED
<!--NeedCopy-->
- Enlace el perfil SIP ALG al grupo LSN.
Ejemplo de configuración SIP ALG:
El siguiente ejemplo de configuración muestra cómo crear una configuración de LSN sencilla con una red de suscriptor único, una dirección IP NAT de LSN única, una configuración específica de SIP ALG y configurar SIP ALG:
add lsn pool p1
Done
bind lsn pool p1 10.102.185.190
Done
add lsn client c1
Done
bind lsn client c1 -network 192.170.1.0 -netmask 255.255.255.0
Done
add lsn appsprofile app_tcp TCP -ippooling PAIRED -mapping ENDPOINT-INDEPENDENT -filtering ENDPOINT-INDEPENDENT
Done
add lsn appsprofile app_udp UDP -ippooling PAIRED -mapping ENDPOINT-INDEPENDENT -filtering ENDPOINT-INDEPENDENT
Done
bind lsn appsprofile app_tcp 1-65535
Done
bind lsn appsprofile app_udp 1-65535
Done
add lsn sipalgprofile sipalgprofile_tcp -sipdstportrange 5060 -openViaPinhole ENABLED -openRecordRoutePinhole ENABLED –sipTransportProtocol TCP
Done
add lsn sipalgprofile sipalgprofile_udp -sipdstportrange 5060 -openViaPinhole ENABLED -openRecordRoutePinhole ENABLED -sipTransportProtocol UDP
Done
add lsn group g1 -clientname c1 -sipalg ENABLED
Done
bind lsn group g1 -poolname p1
Done
bind lsn group g1 -appsprofilename app_tcp
Done
bind lsn group g1 -appsprofilename app_udp
Done
bind lsn group g1 -sipalgprofilename sipalgprofile_tcp
Done
bind lsn group g1 -sipalgprofilename sipalgprofile_udp
Done
<!--NeedCopy-->