Citrix ADC

Equilibrio de carga de un grupo de servidores SIP

El Protocolo de Iniciación de Sesión (SIP) está diseñado para iniciar, administrar y terminar sesiones de comunicaciones multimedia. Ha surgido como 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 (entidades) dedicados. En una sesión de comunicación multimedia, estas entidades intercambian mensajes. La siguiente figura muestra un sistema básico de comunicación basado en SIP:

Ilustración 1. Sistema de comunicación basado en SIP

sip

Un Citrix ADC le permite equilibrar la carga de mensajes SIP a través de UDP o a través de TCP (incluido TLS). Puede configurar Citrix ADC para equilibrar la carga de las solicitudes SIP en 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 establecido en una de las siguientes combinaciones:

  • Método de equilibrio de carga hash de ID de llamada sin configuración de persistencia
  • Persistencia basada en ID de llamada con menos conexión o método de equilibrio de carga de round robin
  • Persistencia basada en reglas con menos conexión o método de equilibrio de carga round robin

Además, de forma predeterminada, Citrix ADC anexa RPORT al encabezado via de la solicitud SIP, de modo que el servidor envíe 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 agregar al encabezado SIP un nombre de dominio que se resuelva a la dirección IP del servidor virtual SIP. Además, los proxies SIP deben comunicarse con una base de datos común para compartir información de registro.

Tráfico iniciado por el servidor

Para el tráfico saliente iniciado por el servidor SIP, configure RNAT en Citrix ADC 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 RNAT, el dispositivo compara los valores de los puertos de origen y destino de los paquetes de solicitud con el puerto de origen RNAT y el puerto de destino RNAT. Si uno de los valores coincide, el dispositivo actualiza el encabezado VIA con RPORT. A continuación, la respuesta SIP del cliente atraviesa la misma ruta que la solicitud.

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

Compatibilidad con directivas y expresiones

El lenguaje de expresiones predeterminadas de Citrix ADC contiene varias expresiones que operan en conexiones SIP (Protocolo de inicio de sesión). 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 directivas de conmutación de contenido, limitación de velocidad, respuesta y reescritura.

Configuración de Equilibrio de carga para Tráfico de Señalización SIP a través de TCP o UDP

Citrix ADC puede equilibrar la carga de 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 servicio para equilibrar la carga de los servidores SIP:

  • SIP_UDP: Se utiliza cuando los servidores SIP envían mensajes SIP a través de UDP.
  • SIP_TCP: Se utiliza 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. Citrix ADC 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 figura 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.

Imagen 2. Topología de equilibrio de carga SIP

sip-lb-topología

Tipo de entidad Nombre 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 Ninguno 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 utiliza SIP_SSL, asegúrese de crear un par de claves de certificado SSL. Para obtener más información, consulte Adición de un par de claves de certificado.

  2. Enlazar los servicios a los servidores virtuales.

  3. Si quiere supervisar los estados de los servicios con un monitor distinto del predeterminado (tcp-default), cree un monitor personalizado y vincularlo a los servicios. Citrix ADC proporciona dos tipos de monitor personalizados, SIP-UDP y SIP-TCP, para supervisar los servicios SIP.

  4. Si utiliza un servidor virtual SIP_SSL, vincule un par de certificados SSL con el servidor virtual.

  5. Si utiliza Citrix ADC como Gateway para los servidores SIP de la implementación, configure RNAT.

  6. Si quiere anexar 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 el símbolo del sistema, escriba:

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

Ejemplo:

add service Service-SIP-UDP-1 192.0.2.5 SIP_UDP 80

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 se vinculará a él. En el símbolo del sistema, escriba:

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

Ejemplo:

add lb vserver Vserver-LB-1 SIP_UDP 10.102.29.60 80

Enlazar cada servicio a un servidor virtual. En el símbolo del sistema, escriba:

bind lb vserver <name> <serverName>

Ejemplo:

bind lb vserver Vserver-LB-1 Service-SIP-UDP-1

(Opcional) Cree un monitor personalizado de tipo SIP-UDP o SIP-TCP y vincule el monitor al servicio. En el símbolo del sistema, escriba:

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

bind lb monitor <monitorName> <ServiceName>

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

Si ha creado un servidor virtual SIP_SSL, vincule un par de claves de certificado SSL al servidor virtual. En el símbolo del sistema, escriba: En el símbolo del sistema, escriba:

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

Ejemplo:

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

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

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

bind rnat <name> <natIP>@ …

show rnat

Ejemplo:

add rnat RNAT-1 192.168.1.0 255.255.255.0

bind rnat RNAT-1 -natip 10.102.29.50

Si quiere utilizar un par de claves de certificado personalizado, vincule el par de claves de certificado personalizado al servicio interno de Citrix ADC denominado nsrnatsip-127.0.0.1-5061.

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

bind ssl service <serviceName> -certkeyName <string>

Ejemplo:

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

bind ssl service nsrnatsip-127.0.0.1-5061 -certkeyName c1

Si quiere anexar RPORT a los mensajes SIP que inicia el servidor SIP, escriba el comando siguiente en el símbolo del sistema:

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

Ejemplo de configuración 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

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

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

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

  1. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales y 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 Monitor 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 RNAT según lo requiera su 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 acciones siguientes:
      • Si quiere 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 quiere 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 establecer una dirección SNIP como dirección IP 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 seleccionada aparece en la lista (s) IP (s) NAT configurada (s).
    7. Haga clic en Crear y, a continuación, en Cerrar.

    Si quiere utilizar un par de claves de certificado personalizado, vincule el par de claves de certificado personalizado al servicio interno de Citrix ADC denominado nsrnatsip-127.0.0.1-5061. Para enlazar 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 Modificar.
    3. Haga clic en la sección Certificados y vincule un par de claves de certificado al servicio interno.
  7. Si quiere anexar 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 del SIP, establezca los distintos parámetros del SIP.

Ejemplo de directiva y expresión SIP: Compresión habilitada en solicitudes de cliente

Un Citrix ADC no puede procesar solicitudes SIP de cliente comprimido, por lo que se produce un error en la solicitud SIP de cliente.

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

En el símbolo del sistema, 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