Citrix ADC

Équilibrer la charge d’un groupe de serveurs SIP

Le protocole SIP (Session Initiation Protocol) est conçu pour initier, gérer et mettre fin à des sessions de communication multimédia. Il est devenu la norme pour la téléphonie Internet (VoIP). Les messages SIP peuvent être transmis via TCP ou UDP. Les messages SIP sont de deux types : les messages de demande et les messages de réponse.

Le trafic dans un système de communication basé sur SIP est acheminé par des périphériques et des applications (entités) dédiés. Dans une session de communication multimédia, ces entités échangent des messages. La figure suivante montre un système de communication basé sur SIP de base :

Figure 1. Système de communication basé sur SIP

gorgée

Un Citrix ADC vous permet d’équilibrer la charge des messages SIP sur UDP ou sur TCP (y compris TLS). Vous pouvez configurer Citrix ADC pour équilibrer la charge des demandes SIP vers un groupe de serveurs proxy SIP. Pour ce faire, vous créez un serveur virtuel d’équilibrage de charge avec la méthode d’équilibrage de charge et le type de persistance défini sur l’une des combinaisons suivantes :

  • Méthode d’équilibrage de la charge de hachage d’ID d’appel sans paramètre de persistance
  • Persistance basée sur l’ID d’appel avec la méthode d’équilibrage de charge de connexion minimale ou d’arrondi
  • Persistance basée sur des règles avec une méthode d’équilibrage de charge de connexion minimale ou d’arrondi

En outre, par défaut, le Citrix ADC ajoute RPORT à l’en-tête via de la requête SIP, de sorte que le serveur renvoie la réponse à l’adresse IP source et au port à partir desquels la demande est originaire.

Remarque : Pour que l’équilibrage de charge fonctionne, vous devez configurer les proxys SIP afin qu’ils n’ajoutent pas d’adresses IP privées ou de domaines privés à l’en-tête/charge utile SIP. Les proxys SIP doivent ajouter à l’en-tête SIP un nom de domaine qui se résout à l’adresse IP du serveur virtuel SIP. En outre, les mandataires SIP doivent communiquer avec une base de données commune pour partager les informations d’inscription.

Trafic initié par le serveur

Pour le trafic sortant initié par le serveur SIP, configurez RNAT sur Citrix ADC de sorte que les adresses IP privées utilisées par les clients soient traduites en adresses IP publiques.

Si vous avez configuré des paramètres SIP qui incluent le port source ou de destination RNAT, l’appliance compare les valeurs des ports source et destination des paquets de requête avec le port source RNAT et le port de destination RNAT. Si l’une des valeurs correspond, l’appliance met à jour l’en-tête VIA avec RPORT. La réponse SIP du client traverse ensuite le même chemin que la demande.

Pour le trafic SSL initié par le serveur, Citrix ADC utilise une paire de clés de certificat intégrée. Si vous souhaitez utiliser une paire de clés de certificat personnalisée, liez la paire de clés de certificat personnalisée au service interne Citrix ADC nommé nsrnatsip-127.0.0.1-5061.

Prise en charge des stratégies et expressions

Le langage des expressions par défaut Citrix ADC contient un certain nombre d’expressions qui fonctionnent sur des connexions SIP (Session Initiation Protocol). Ces expressions peuvent être liées uniquement aux serveurs virtuels SIP (sip_udp, sip_tcp ou sip_ssl) et aux points de liaison globaux. Vous pouvez utiliser ces expressions dans les stratégies de commutation de contenu, de limitation de débit, de répondeur et de réécriture.

Configuration de l’équilibrage de charge pour le trafic de signalisation SIP sur TCP ou UDP

Citrix ADC peut équilibrer la charge des serveurs SIP qui envoient des demandes via UDP ou TCP, y compris le trafic TCP sécurisé par TLS. ADC fournit les types de service suivants pour équilibrer la charge des serveurs SIP :

  • SIP_UDP — Utilisé lorsque les serveurs SIP envoient des messages SIP via UDP.
  • SIP_TCP — Utilisé lorsque les serveurs SIP envoient des messages SIP via TCP.
  • SIP_SSL — Utilisé pour sécuriser le trafic de signalisation SIP sur TCP à l’aide de SSL ou TLS. Le Citrix ADC prend en charge les modes suivants :
    • Connexion TLS de bout en bout entre le client, ADC et le serveur SIP.
    • Connexion TLS entre le client et ADC, et connexion TCP entre ADC et le serveur SIP.
    • Connexion TCP entre le client et ADC, et connexion TLS entre ADC et le serveur SIP.

La figure suivante illustre la topologie d’un programme d’installation configuré pour équilibrer la charge d’un groupe de serveurs SIP envoyant des messages SIP via TCP ou UDP.

Figure 2. Topologie d’équilibrage de charge SIP

sip-lb-topologie

Type d’entité Name Adresse IP Port Type de service/Protocole
Serveur virtuel Vserver-LB-1 10.102.29.65 80 SIP_UDP / SIP_TCP / SIP_SSL
Services 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
Moniteurs Défaut Aucun 80 SIP_UDP / SIP_TCP / SIP_SSL

Voici une vue d’ensemble de la configuration de l’équilibrage de charge de base pour le trafic SIP :

  1. Configurez les services et configurez un serveur virtuel pour chaque type de trafic SIP que vous souhaitez équilibrer la charge :

    • SIP_UDP — Si vous équilibrez la charge du trafic SIP sur UDP.
    • SIP_TCP — Si vous équilibrez la charge du trafic SIP sur TCP.
    • SIP_SSL — Si vous êtes en train d’équilibrer la charge et de sécuriser le trafic SIP sur TCP.

    Remarque : Si vous utilisez SIP_SSL, veillez à créer une paire de clés de certificat SSL. Pour plus d’informations, voir Ajout d’une paire de clés de certificat.

  2. Liez les services aux serveurs virtuels.

  3. Si vous souhaitez surveiller les états des services avec un moniteur autre que le moniteur par défaut (tcp-default), créez un moniteur personnalisé et liez-le aux services. Le Citrix ADC fournit deux types de moniteurs personnalisés, SIP-UDP et SIP-TCP, pour la surveillance des services SIP.

  4. Si vous utilisez un serveur virtuel SIP_SSL, liez une paire de clés de certificat SSL au serveur virtuel.

  5. Si vous utilisez Citrix ADC comme Gateway pour les serveurs SIP dans votre déploiement, configurez RNAT.

  6. Si vous souhaitez ajouter RPORT aux messages SIP initiés à partir du serveur SIP, configurez les paramètres SIP.

Pour configurer une configuration d’équilibrage de charge de base pour le trafic SIP à l’aide de l’interface de ligne de commande

Créez un ou plusieurs services. À l’invite de commandes, tapez :

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

Exemple :

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

Créez autant de serveurs virtuels que nécessaire pour gérer les services que vous avez créés. Le type de serveur virtuel doit correspondre au type de services que vous lui lierez. À l’invite de commandes, tapez :

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

Exemple :

add lb vserver Vserver-LB-1 SIP_UDP 10.102.29.60 80

Liez chaque service à un serveur virtuel. À l’invite de commandes, tapez :

bind lb vserver <name> <serverName>

Exemple :

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

(Facultatif) Créez un moniteur personnalisé de type SIP-UDP ou SIP-TCP et liez le moniteur au service. À l’invite de commandes, tapez :

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

bind lb monitor <monitorName> <ServiceName>

Exemple :

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 vous avez créé un serveur virtuel SIP_SSL, liez une paire de clés de certificat SSL au serveur virtuel. À l’invite de commandes, tapez : À l’invite de commandes, tapez :

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

Exemple :

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

Configurez RNAT comme requis par la topologie de votre réseau. À l’invite de commandes, tapez l’une des commandes suivantes pour créer, respectivement, une entrée RNAT qui utilise une adresse réseau comme condition et SNIP comme adresse IP NAT, une entrée RNAT qui utilise une adresse réseau comme condition et une adresse IP unique comme adresse IP NAT, une entrée RNAT qui utilise une liste ACL comme la condition et un SNIP comme adresse IP NAT, ou une entrée RNAT qui utilise une liste ACL comme condition et une adresse IP unique comme adresse IP NAT :

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

bind rnat <name> <natIP>@ …

show rnat

Exemple :

add rnat RNAT-1 192.168.1.0 255.255.255.0

bind rnat RNAT-1 -natip 10.102.29.50

Si vous souhaitez utiliser une paire de clés de certificat personnalisée, liez la paire de clés de certificat personnalisée au service interne Citrix ADC nommé nsrnatsip-127.0.0.1-5061.

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

bind ssl service <serviceName> -certkeyName <string>

Exemple :

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

bind ssl service nsrnatsip-127.0.0.1-5061 -certkeyName c1

Si vous souhaitez ajouter RPORT aux messages SIP initiés par le serveur SIP, tapez la commande suivante à l’invite de commandes :

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

Exemple de configuration pour l’équilibrage de charge du trafic SIP sur 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

Exemple de configuration pour l’équilibrage de charge du trafic SIP sur 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

Exemple de configuration pour l’équilibrage de charge et la sécurisation du trafic SIP sur 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

Pour configurer une configuration d’équilibrage de charge de base pour le trafic SIP à l’aide de l’utilitaire de configuration

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels et ajoutez un serveur virtuel de type SIP_UDP, SIP_TCP ou SIP_SSL.

  2. Cliquez sur la section Service et ajoutez un service de type SIP_UDP, SIP_TCP ou SIP_SSL.

  3. (Facultatif) Cliquez sur la section Moniteur et ajoutez un moniteur de type : SIP-UDP ou SIP-TCP.

  4. Liez le moniteur au service et liez le service au serveur virtuel.

  5. Si vous avez créé un serveur virtuel SIP_SSL, liez une paire de clés de certificat SSL au serveur virtuel. Cliquez sur la section Certificats et liez une paire de clés de certificat au serveur virtuel.

  6. Configurez RNAT comme requis par la topologie de votre réseau. Pour configurer RNAT :

    1. Accédez à Système > Réseau > Itinéraires.
    2. Sur la page Itinéraires, cliquez sur l’onglet RNAT.
    3. Dans le volet d’informations, cliquez sur Configurer RNAT.
    4. Dans la boîte de dialogue Configurer RNAT, effectuez l’une des opérations suivantes :
      • Si vous souhaitez utiliser l’adresse réseau comme condition pour créer une entrée RNAT, cliquez sur Réseau et définissez les paramètres suivants :
        • Réseau
        • Masque réseau
      • Si vous souhaitez utiliser une ACL étendue comme condition pour créer une entrée RNAT, cliquez sur ACL et définissez les paramètres suivants :
        • Nom ACL
        • Port de redirection
    5. Pour définir une adresse SNIP comme adresse IP NAT, passez à l’étape 7.
    6. Pour définir une adresse IP unique comme IP NAT, dans la liste IP NAT disponible (s), sélectionnez l’adresse IP que vous souhaitez définir comme IP NAT, puis cliquez sur Ajouter. L’IP NAT sélectionnée apparaît dans la liste IP NAT configurée (s).
    7. Cliquez sur Créer, puis sur Fermer.

    Si vous souhaitez utiliser une paire de clés de certificat personnalisée, liez la paire de clés de certificat personnalisée au service interne Citrix ADC nommé nsrnatsip-127.0.0.1-5061. Pour lier la paire :

    1. Accédez à Gestion du trafic > Équilibrage de charge > Services, puis cliquez sur l’onglet Services internes.
    2. Sélectionnez nsrnatsip-127.0.0.1-5061 et cliquez sur Modifier.
    3. Cliquez sur la section Certificats et liez une paire de clés de certificat au service interne.
  7. Si vous souhaitez ajouter RPORT aux messages SIP initiés par le serveur SIP, configurez les paramètres SIP. Accédez à Gestion du trafic > Équilibrage de charge, puis cliquez sur Modifier les paramètres SIP, définissez les différents paramètres SIP.

Exemple d’expression et de stratégie SIP : compression activée dans les demandes client

Un Citrix ADC ne peut pas traiter les demandes SIP client compressées, de sorte que la demande SIP client échoue.

Vous pouvez configurer une stratégie de répondeur qui intercepte le message SIP NEGOTIATE du client et recherche l’en-tête de compression. Si le message inclut un en-tête de compression, la stratégie répond avec « 400 Bad Request », de sorte que le client renvoie la demande sans la compresser.

À l’invite de commandes, tapez les commandes suivantes pour créer la stratégie de répondeur :

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