ADC

Equilibrio de carga de un grupo de servidores SIP

El Protocolo de inicio de sesión (SIP) está diseñado para iniciar, gestionar y finalizar las sesiones de comunicaciones multimedia. Se ha convertido en el estándar para la telefonía por Internet (VoIP). Los mensajes SIP se pueden transmitir a través de TCP o UDP. Los mensajes SIP son de dos tipos: mensajes de solicitud y mensajes de respuesta.

El tráfico en un sistema de comunicación basado en SIP se enruta a través de dispositivos y aplicaciones dedicados (entidades). En una sesión de comunicación multimedia, estas entidades intercambian mensajes. La siguiente ilustración muestra un sistema básico de comunicación basado en SIP:

Figura 1. Sistema de comunicación basado en SIP

SIP

Un NetScaler le permite equilibrar la carga de mensajes SIP a través de UDP o a través de TCP (incluido TLS). Puede configurar NetScaler para equilibrar la carga de las solicitudes SIP a un grupo de servidores proxy SIP. Para ello, cree un servidor virtual de equilibrio de carga con el método de equilibrio de carga y el tipo de persistencia establecidos en una de las siguientes combinaciones:

  • Método de equilibrio de carga con hash de identificador de llamada sin configuración de persistencia
  • Persistencia basada en identificadores de llamadas con mínima conexión o método de balanceo de carga por turnos
  • Persistencia basada en reglas con menos conexión o método de equilibrio de carga round robin

Además, de forma predeterminada, NetScaler agrega RPORT a través del encabezado de la solicitud SIP, de modo que el servidor devuelve la respuesta a la dirección IP de origen y al puerto desde el que se originó la solicitud.

Nota: Para que el equilibrio de carga funcione, debe configurar los proxies SIP para que no añadan direcciones IP privadas o dominios privados a la carga o cabecera SIP. Los proxies SIP deben añadir al encabezado SIP un nombre de dominio que se resuelva en la dirección IP del servidor virtual SIP. Además, los proxies SIP deben comunicarse con una base de datos común para compartir la información de registro.

Tráfico iniciado por el servidor

Para el tráfico saliente iniciado por el servidor SIP, configure RNAT en NetScaler para que las direcciones IP privadas utilizadas por los clientes se traduzcan en direcciones IP públicas.

Si ha configurado parámetros SIP que incluyen el puerto de origen o destino de RNAT, el dispositivo compara los valores de los puertos de origen y destino de los paquetes de solicitud con los puertos de origen y destino de RNAT. Si uno de los valores coincide, el dispositivo actualiza el encabezado VIA con RPORT. La respuesta SIP del cliente recorre entonces la misma ruta que la solicitud.

Para el tráfico SSL iniciado por el servidor, NetScaler utiliza un par de claves de certificado integrado. Si desea utilizar un par de claves de certificado personalizado, vincule el par de claves de certificado personalizado al servicio interno de NetScaler denominado nsrnatsip-127.0.0.0.1-5061.

Compatibilidad con directivas y expresiones

El lenguaje de expresiones predeterminadas de NetScaler contiene varias expresiones que funcionan en conexiones de Session Initiation Protocol (SIP). Estas expresiones solo pueden vincularse a servidores virtuales basados en SIP (sip_udp, sip_tcp o sip_ssl) y a puntos de enlace globales. Puede utilizar estas expresiones en las directivas de cambio de contenido, limitación de velocidad, respuesta y reescritura.

Configuración del equilibrio de carga para el tráfico de señalización SIP a través de TCP o UDP

NetScaler puede equilibrar la carga de los servidores SIP que envían solicitudes a través de UDP o TCP, incluido el tráfico TCP protegido por TLS. El ADC proporciona los siguientes tipos de servicios para equilibrar la carga de los servidores SIP:

  • SIP_UDP: se usa cuando los servidores SIP envían mensajes SIP a través de UDP.
  • SIP_TCP: se usa cuando los servidores SIP envían mensajes SIP a través de TCP.
  • SIP_SSL: se utiliza para proteger el tráfico de señalización SIP a través de TCP mediante SSL o TLS. NetScaler admite los siguientes modos:
    • Conexión TLS de extremo a extremo entre el cliente, el ADC y el servidor SIP.
    • Conexión TLS entre el cliente y el ADC y conexión TCP entre el ADC y el servidor SIP.
    • Conexión TCP entre el cliente y el ADC y conexión TLS entre el ADC y el servidor SIP.

La siguiente ilustración muestra la topología de una instalación configurada para equilibrar la carga de un grupo de servidores SIP que envían mensajes SIP a través de TCP o UDP.

Figura 2. Topología de equilibrio de carga SIP

Topología SIP LB

Tipo de entidad Name Dirección IP Puerto Tipo de servicio/Protocolo
Servidor virtual Vserver-LB-1 10.102.29.65 80 SIP_UDP/SIP_TCP/ SIP_SSL
Servicios Service-SIP-1 192.168.1.6 80 SIP_UDP/SIP_TCP/ SIP_SSL
  Service-SIP-2 192.168.1.5 80 SIP_UDP/SIP_TCP/ SIP_SSL
Monitores Valor predeterminado Nada 80 SIP_UDP/SIP_TCP/ SIP_SSL

A continuación se presenta una descripción general de la configuración del equilibrio de carga básico para el tráfico SIP:

  1. Configure los servicios y configure un servidor virtual para cada tipo de tráfico SIP que desee equilibrar la carga:

    • SIP_UDP : si está equilibrando la carga del tráfico SIP a través de UDP.
    • SIP_TCP : si está equilibrando la carga del tráfico SIP a través de TCP.
    • SIP_SSL : si está equilibrando la carga y protegiendo el tráfico SIP a través de TCP.

    Nota: Si usa SIP_SSL, asegúrese de crear un par de claves de certificado SSL. Para obtener más información, consulte Agregar un par de claves de certificado.

  2. Enlazar los servicios a los servidores virtuales.

  3. Si desea supervisar los estados de los servicios con un monitor que no sea el predeterminado (tcp-default), cree un monitor personalizado y vincúlelo a los servicios. NetScaler proporciona dos tipos de monitores personalizados, SIP-UDP y SIP-TCP, para supervisar los serviciosSIP**.

  4. Si utiliza un servidor virtual SIP_SSL, vincule un par de claves de certificado SSL al servidor virtual.

  5. Si utiliza NetScaler como puerta de enlace para los servidores SIP en su implementación, configure RNAT.

  6. Si desea añadir RPORT a los mensajes SIP que se inician desde el servidor SIP, configure los parámetros SIP.

Para configurar una configuración básica de equilibrio de carga para el tráfico SIP mediante la interfaz de línea de comandos

Cree uno o más servicios. En la línea de comandos, escriba:

add service <name> <serverName> (SIP_UDP | SIP_TCP | SIP_SSL) <port>
<!--NeedCopy-->

Ejemplo:

add service Service-SIP-UDP-1 192.0.2.5 SIP_UDP 80
<!--NeedCopy-->

Cree tantos servidores virtuales como sea necesario para gestionar los servicios que ha creado. El tipo de servidor virtual debe coincidir con el tipo de servicios que le vincula. En la línea de comandos, escriba:

add lb vserver <name> <serverName> (SIP_UDP | SIP_TCP | SIP_SSL) <port>
<!--NeedCopy-->

Ejemplo:

add lb vserver Vserver-LB-1 SIP_UDP 10.102.29.60 80
<!--NeedCopy-->

Enlaza cada servicio a un servidor virtual. En la línea de comandos, escriba:

bind lb vserver <name> <serverName>
<!--NeedCopy-->

Ejemplo:

bind lb vserver Vserver-LB-1 Service-SIP-UDP-1
<!--NeedCopy-->

(Opcional) Cree un monitor personalizado de tipo SIP-UDP o SIP-TCP y vincule el monitor al servicio. En la línea de comandos, escriba:

add lb monitor <monitorName> <monitorType> [<interval>]

bind lb monitor <monitorName> <ServiceName>
<!--NeedCopy-->

Ejemplo:

add lb monitor mon1 sip-UDP -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

bind monitor mon1 Service-SIP-UDP-1
<!--NeedCopy-->

Si ha creado un servidor virtual SIP_SSL, vincule un par de claves de certificado SSL al servidor virtual. En la línea de comando, escriba: En la línea de comando, escriba:

bind ssl vserver <vServerName> -certkeyName <certificate-KeyPairName> -CA –skipCAName
<!--NeedCopy-->

Ejemplo:

bind ssl vserver Vserver-LB-1 -certkeyName CertKey-SSL-1
<!--NeedCopy-->

Configure el RNAT según lo requiera la topología de red. En la línea de comandos, escriba uno de los siguientes comandos para crear, respectivamente, una entrada de RNAT que utilice una dirección de red como condición y un SNIP como dirección IP de NAT, una entrada de RNAT que utilice una dirección de red como condición y una dirección IP única como dirección IP de NAT, una entrada de RNAT que utilice una ACL como condición y un dirección IP única como dirección IP de NAT:

add rnat <name> (<network> | (<aclname> [-redirectPort <port>]))

bind rnat <name> <natIP>@ …

show rnat
<!--NeedCopy-->

Ejemplo:

add rnat RNAT-1 192.168.1.0 255.255.255.0

bind rnat RNAT-1 -natip 10.102.29.50
<!--NeedCopy-->

Si desea utilizar un par de claves de certificado personalizado, vincule el par de claves de certificado personalizado al servicio interno de NetScaler denominado nsrnatsip-127.0.0.0.1-5061.

add ssl certKey <certkeyName> -cert <string> [-key <string>]

bind ssl service <serviceName> -certkeyName <string>
<!--NeedCopy-->

Ejemplo:

add ssl certKey c1 -cert cert.epm -key key.ky

bind ssl service nsrnatsip-127.0.0.1-5061 -certkeyName c1
<!--NeedCopy-->

Si desea añadir RPORT a los mensajes SIP que inicia el servidor SIP, escriba el siguiente comando en la línea de comandos:

set lb sipParameters -rnatSrcPort <rnatSrcPort> -rnatDstPort<rnatDstPort> -retryDur <integer> -addRportVip <addRportVip> - sip503RateThreshold <sip503_rate_threshold_value>
<!--NeedCopy-->

Configuración de ejemplo para equilibrar la carga del tráfico SIP a través de UDP

add service service-UDP-1 10.102.29.5 SIP_UDP 80

Done

add lb vserver vserver-LB-1 SIP_UDP 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-UDP-1

Done

add lb mon mon1 sip-udp -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-UDP-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done
<!--NeedCopy-->

Ejemplo de configuración para equilibrar la carga del tráfico SIP a través de TCP

add service service-TCP-1 10.102.29.5 SIP_TCP 80

Done

add lb vserver vserver-LB-1 SIP_TCP 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-TCP-1

Done

add lb mon mon1 sip-tcp -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-TCP-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done
<!--NeedCopy-->

Ejemplo de configuración para el equilibrio de carga y la protección del tráfico SIP a través de TCP

add service service-SIP-SSL-1 10.102.29.5 SIP_SSL 80

Done

add lb vserver vserver-LB-1 SIP_SSL 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-SIP-SSL

Done

add lb mon mon1 sip-tCP -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-SIP-SSL

Done

bind ssl vserver Vserver-LB-1 -certkeyName CertKey-SSL-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done
<!--NeedCopy-->

Para configurar una configuración básica de equilibrio de carga para el tráfico SIP mediante la GUI

  1. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtualesy agregue un servidor virtual de tipo SIP_UDP, SIP_TCP o SIP_SSL.

  2. Haga clic en la sección Servicio y agregue un servicio de tipo SIP_UDP, SIP_TCP o SIP_SSL.

  3. (Opcional) Haga clic en la sección Supervisar y agregue un monitor del tipo: SIP-UDP o SIP-TCP.

  4. Enlazar el monitor al servicio y enlazar el servicio al servidor virtual.

  5. Si ha creado un servidor virtual SIP_SSL, vincule un par de claves de certificado SSL al servidor virtual. Haga clic en la sección Certificados y vincule un par de claves de certificado al servidor virtual.

  6. Configure el RNAT según lo requiera la topología de red. Para configurar RNAT:

    1. Vaya a Sistema > Red > Rutas.
    2. En la página Rutas, haga clic en la ficha RNAT .
    3. En el panel de detalles, haga clic en Configurar RNAT.
    4. En el cuadro de diálogo Configurar RNAT, realice una de las siguientes acciones:
      • Si desea utilizar la dirección de red como condición para crear una entrada RNAT, haga clic en Red y establezca los siguientes parámetros:
        • Red
        • Máscara de red
      • Si desea utilizar una ACL extendida como condición para crear una entrada RNAT, haga clic en ACL y establezca los siguientes parámetros:
        • Nombre de ACL
        • Puerto de redireccionamiento
    5. Para configurar una dirección SNIP como dirección IP de NAT, vaya al paso 7.
    6. Para establecer una dirección IP única como IP NAT, en la lista IP NAT disponible (s), seleccione la dirección IP que quiere establecer como IP NAT y, a continuación, haga clic en Agregar. La IP NAT que ha seleccionado aparece en la lista de IP NAT configuradas.
    7. Haga clic en Creary, a continuación, en Cerrar.

    Si desea utilizar un par de claves de certificado personalizado, vincule el par de claves de certificado personalizado al servicio interno de NetScaler denominado nsrnatsip-127.0.0.0.1-5061. Para unir el par:

    1. Vaya a Administración del tráfico > Equilibrio de carga > Servicios y haga clic en la ficha Servicios internos.
    2. Seleccione nsrnatsip-127.0.0.1-5061 y haga clic en Editar.
    3. Haga clic en la sección Certificados y vincule un par de claves de certificado al servicio interno.
  7. Si desea añadir RPORT a los mensajes SIP que inicia el servidor SIP, configure los parámetros SIP. Vaya a Administración del tráfico > Equilibrio de carga y haga clic en Cambiar configuración de SIP, establezca los distintos parámetros SIP.

Ejemplo de directiva y expresión SIP: compresión habilitada en las solicitudes de los clientes

Un NetScaler no puede procesar las solicitudes SIP de cliente comprimidas, por lo que se produce un error en la solicitud SIP del cliente.

Puede configurar una directiva de respuesta que intercepte el mensaje SIP NEGOCIATE del cliente y busque el encabezado de compresión. Si el mensaje incluye un encabezado de compresión, la directiva responde con “400 solicitudes incorrectas” para que el cliente vuelva a enviar la solicitud sin comprimirla.

En la línea de comandos, escriba los siguientes comandos para crear la directiva de respuesta:

add responder action sipaction1 respondwith q{"SIP/2.0 400 Bad Requestrnrn"}

Done

add responder policy sippol1

add responder policy sippol1 "SIP.REQ.METHOD.EQ("NEGOTIATE")&&SIP.REQ.HEADER("Compression").EXISTS" sipaction1
<!--NeedCopy-->