ADC

Équilibrage de charge d’un groupe de serveurs SIP

Le protocole SIP (Session Initiation Protocol) est conçu pour lancer, gérer et terminer des sessions de communication multimédia. Elle est devenue 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 d’un système de communication basé sur SIP est acheminé via des appareils et des applications (entités) dédiés. Lors d’une session de communication multimédia, ces entités échangent des messages. La figure suivante montre un système de communication SIP de base :

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

SIP

Un NetScaler vous permet d’équilibrer la charge des messages SIP via UDP ou TCP (y compris TLS). Vous pouvez configurer NetScaler 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éfinis selon l’une des combinaisons suivantes :

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

De plus, par défaut, NetScaler ajoute RPORT via l’en-tête de la demande SIP, de sorte que le serveur renvoie la réponse à l’adresse IP source et au port d’où provient la demande.

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 correspondant à l’adresse IP du serveur virtuel SIP. De plus, les proxys SIP doivent communiquer avec une base de données commune pour partager les informations d’enregistrement.

Trafic initié par le serveur

Pour le trafic sortant initié par le serveur SIP, configurez RNAT sur NetScaler afin 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 de destination des paquets de demande 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 emprunte alors le même chemin que la demande.

Pour le trafic SSL initié par le serveur, NetScaler 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 au service interne de NetScaler nommé nsrnatsip-127.0.0.1-5061.

Prise en charge des stratégies et expressions

Le langage d’expressions par défaut de NetScaler contient plusieurs expressions qui fonctionnent sur les 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 politiques de changement de contenu, de limitation de débit, de réponse et de réécriture.

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

Le NetScaler peut équilibrer la charge des serveurs SIP qui envoient des demandes via UDP ou TCP, y compris le trafic TCP sécurisé par TLS. L’ADC fournit les types de services 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 via TCP à l’aide de SSL ou TLS. NetScaler prend en charge les modes suivants :
    • Connexion TLS de bout en bout entre le client, l’ADC et le serveur SIP.
    • Connexion TLS entre le client et l’ADC et connexion TCP entre l’ADC et le serveur SIP.
    • Connexion TCP entre le client et l’ADC et connexion TLS entre l’ADC et le serveur SIP.

La figure suivante montre la topologie d’une configuration configurée 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

Topologie SIP LB

Type d’entité Nom 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 Valeur par défaut Aucun 80 SIP_UDP/ SIP_TCP/ SIP_SSL

Vous trouverez ci-dessous un aperçu 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 pour lequel vous souhaitez équilibrer la charge :

    • SIP_UDP — Si vous équilibrez la charge du trafic SIP via UDP.
    • SIP_TCP — Si vous équilibrez la charge du trafic SIP via TCP.
    • SIP_SSL — Si vous équilibrez la charge et sécurisez le trafic SIP via TCP.

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

  2. Liez les services aux serveurs virtuels.

  3. Si vous souhaitez surveiller l’état des services à l’aide d’un moniteur autre que celui par défaut (tcp-default), créez un moniteur personnalisé et liez-le aux services. NetScaler fournit deux types de moniteurs personnalisés, SIP-UDP et SIP-TCP, pour la surveillance des servicesSIP**.

  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 NetScaler comme passerelle pour les serveurs SIP dans votre déploiement, configurez RNAT.

  6. Si vous souhaitez ajouter RPORT aux messages SIP initiés depuis le 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 commande, tapez :

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

Exemple :

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

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 liez. À l’invite de commande, tapez :

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

Exemple :

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

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

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

Exemple :

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

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

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

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

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
<!--NeedCopy-->

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
<!--NeedCopy-->

Exemple :

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

Configurez le RNAT en fonction de 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 ACL comme condition et un SNIP comme adresse IP NAT, ou une entrée RNAT qui utilise une ACL comme condition et adresse IP unique en tant qu’adresse IP NAT :

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

bind rnat <name> <natIP>@ …

show rnat
<!--NeedCopy-->

Exemple :

add rnat RNAT-1 192.168.1.0 255.255.255.0

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

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

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

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

Exemple :

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

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

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>
<!--NeedCopy-->

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

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

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
<!--NeedCopy-->

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

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuelset 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 du 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 le RNAT en fonction de la topologie de votre réseau. Pour configurer RNAT :

    1. Accédez à Système > Réseau > Routes.
    2. Sur la page Routes, cliquez sur l’onglet RNAT .
    3. Dans le volet d’informations, cliquez sur Configurer le 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 de l’ACL
        • Port de redirection
    5. Pour définir une adresse SNIP en tant qu’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 que vous avez sélectionnée apparaît dans la liste IP NAT configurée.
    7. Cliquez sur Créer, puis sur Fermer.

    Si vous souhaitez utiliser une paire de clés de certificat personnalisée, liez-la au service interne de NetScaler 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 politique SIP : compression activée dans les demandes des clients

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

Vous pouvez configurer une politique de réponse 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 politique répond par « 400 demandes erronées », 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
<!--NeedCopy-->