Configurer l’équilibrage de charge de Diameter

Le protocole Diameter est un protocole de signalisation AAA (Authentication, Authorization and Accounting) de nouvelle génération utilisé principalement sur les appareils mobiles tels que les ordinateurs portables et les téléphones mobiles. Il s’agit d’un protocole peer-to-peer, par opposition au modèle client-serveur traditionnel utilisé par la plupart des autres protocoles. Toutefois, dans la plupart des déploiements de Diameter, les clients sont à l’origine de la demande et le serveur répond à la demande.

Lorsque les messages Diameter sont échangés, le serveur Diameter effectue généralement beaucoup plus de traitement que le client Diameter. Avec l’augmentation du volume de signalisation du plan de contrôle, le serveur Diameter devient un goulot d’étranglement. Par conséquent, les messages de Diameter doivent être équilibrés de charge sur plusieurs serveurs. Un serveur virtuel effectuant l’équilibrage de charge des messages de Diameter offre les avantages suivants :

  • Charge plus légère sur les serveurs Diameter, ce qui se traduit par un temps de réponse plus rapide pour les utilisateurs finaux.
  • Surveillance de l’intégrité du serveur et meilleures capacités de basculement.
  • Meilleure évolutivité en termes d’ajout de serveur sans modifier la configuration du client.
  • Haute disponibilité.
  • Déchargement de Diameter SSL.

La figure suivante illustre un système Diameter dans un déploiement de Citrix ADC :

système Diameter

Un système Diameter comporte les composants suivants :

  • Client Diameter. Prend en charge les applications clientes Diameter en plus du protocole de base. Les clients de Diameter sont souvent implémentés dans des périphériques situés à la périphérie d’un réseau et fournissent des services de contrôle d’accès pour ce réseau. Des exemples typiques de clients Diameter sont un serveur d’accès réseau (NAS) et l’agent étranger (FA) Mobile IP.
  • Agent Diameter. Fournit des services de relais, de proxy, de redirection ou de traduction. L’appliance Citrix ADC (configurée avec un serveur virtuel d’équilibrage de charge de Diameter) joue le rôle d’agent de Diameter.
  • Serveur Diameter. Gère les demandes d’authentification, d’autorisation et de comptabilisation pour un domaine particulier. Un serveur de Diameter doit prendre en charge les applications de serveur de Diameter en plus du protocole de base.

Dans une topologie Diameter typique, lorsqu’un périphérique utilisateur final (tel qu’un téléphone mobile) a besoin d’un service, il envoie une demande à un client Diameter. Chaque client de Diameter établit une connexion unique (connexion TCP — SCTP n’est pas encore pris en charge) avec un serveur de Diameter tel que spécifié par le protocole de base de Diameter RFC 6733. La connexion est longue durée et tous les messages entre les deux nœuds de Diameter (client et serveur) sont échangés sur cette connexion. Citrix ADC utilise l’équilibrage de charge basé sur les messages.

Exemple :

Un fournisseur de services mobiles utilise Diameter pour son système de facturation. Lorsqu’un abonné utilise un numéro prépayé, le client Diameter envoie plusieurs fois des demandes au serveur pour vérifier le solde disponible. Le protocole Diameter établit une connexion entre le client et le serveur, et toutes les demandes sont échangées sur cette connexion. L’équilibrage de charge basé sur la connexion serait inutile, car il n’y a qu’une seule connexion. Cependant, avec le grand nombre de messages sur la connexion, l’équilibrage de charge basé sur les messages accélère le processus de facturation de l’abonné mobile prépayé.

Fonctionnement de l’équilibrage de la charge de Diameter

Une demande d’homologue de déconnexion (DPR) indique l’intention de l’homologue de fermer la connexion, avec la raison de la fermeture de la connexion. L’homologue répond avec un DPA (TCP fournit toujours un DPA réussi).

  • Lorsque l’appliance reçoit un DPR du client, elle diffuse le DPR sur tous les serveurs et répond immédiatement avec un DPA au client. Les serveurs répondent avec des DPA, mais l’appliance les ignore. Le client envoie un FIN que l’appliance diffuse à tous les serveurs.
  • Lorsque l’appliance reçoit un DPR du serveur, elle répond avec un DPA à ce serveur seul et ne supprime pas le serveur du pool de réutilisation. Lorsque le serveur envoie un FIN, l’appliance répond avec FIN/ACK et supprime les connexions du pool de réutilisation.
  • Si l’appliance reçoit un FIN du client, elle lui envoie un FIN/ACK, diffuse le FIN et supprime immédiatement la connexion au serveur du pool de réutilisation.
  • Si l’appliance reçoit un FIN du serveur, elle envoie un FIN/ACK et le supprime du pool de réutilisation. Tout nouveau message pour ce serveur est envoyé sur une nouvelle connexion.

Trafic de Diameter d’équilibrage de charge

Lorsqu’un client envoie une demande à l’appliance Citrix ADC, l’appliance analyse la demande et l’équilibre contextuellement de la charge vers un serveur Diameter sur la base d’un AVP persistant. L’appliance a annoncé l’identité du client sur le serveur, de sorte qu’elle n’ajoute pas d’entrées de routage, car le serveur attend des messages directement du client.

Les demandes initiées par le serveur ne sont pas aussi fréquentes que les demandes client. Les demandes initiées par le serveur sont similaires aux demandes initiées par le client, sauf :

  • Étant donné que les messages sont reçus de plusieurs serveurs, l’appliance maintient l’état de la transaction en ajoutant un numéro HBYH (Hop by Hop) unique à chaque message de demande transféré. Lorsque la réponse du message arrive (avec le même numéro HBYH), l’appliance convertit ce numéro HBYH en numéro HBYH reçu sur le serveur lorsque la demande est arrivée.
  • L’appliance Citrix ADC ajoute une entrée de routage en mettant son identité, car le client voit l’appliance comme un agent de relais.

Remarque : si un message de diamètre couvre plusieurs paquets, l’appliance accumule les paquets dans une file d’attente d’en-tête incomplète et les transmet au serveur lorsque le message complet est accumulé. De même, si un seul paquet contient plusieurs messages de Diameter, l’appliance divise le paquet et transmet les messages aux serveurs, comme déterminé par le serveur virtuel d’équilibrage de charge.

Déconnecter une session

Une demande d’homologue de déconnexion (DPR) indique l’intention de l’homologue de fermer la connexion, avec la raison de la fermeture de la connexion. L’homologue répond avec un DPA (TCP fournit toujours un DPA réussi).

  • Lorsque l’appliance Citrix ADC reçoit un DPR du client, il diffuse le DPR sur tous les serveurs et répond immédiatement avec un DPA au client. Les serveurs répondent avec des DPA, mais l’appliance les ignore. Le client envoie un FIN que l’appliance diffuse à tous les serveurs.
  • Lorsque l’appliance reçoit un DPR du serveur, elle répond avec un DPA à ce serveur seul et ne supprime pas le serveur du pool de réutilisation. Lorsque le serveur envoie un FIN, l’appliance répond avec FIN/ACK et supprime les connexions du pool de réutilisation.
  • Si l’appliance reçoit un FIN du client, elle lui envoie un FIN/ACK, diffuse le FIN et supprime immédiatement la connexion au serveur du pool de réutilisation.
  • Si l’appliance reçoit un FIN du serveur, elle envoie un FIN/ACK et le supprime du pool de réutilisation. Tout nouveau message pour ce serveur est envoyé sur une nouvelle connexion.

Configurer l’équilibrage de charge pour le trafic de Diameter

Pour configurer l’appliance Citrix ADC pour équilibrer le trafic de Diameter, vous devez d’abord définir les paramètres de Diameter sur l’appliance, puis ajouter le moniteur de Diameter, ajouter les services de Diameter, lier les services au moniteur, ajouter le serveur virtuel d’équilibrage de charge de Diameter et lier les services au serveur virtuel virtuel virtuel virtuel serveur.

Pour configurer l’équilibrage de charge pour le trafic de Diameter à l’aide de l’interface de ligne de commande

Configurez les paramètres de Diameter.

set ns diameter -identity <string> -realm <string> -serverClosePropagation <YES|NO>

Exemple :

set ns diameter -identity mydomain.org -realm org -serverClosePropagation YES

Ajoutez un moniteur de Diameter.

add lb monitor <monitorName> DIAMETER -originHost <string> -originRealm <string>

Exemple :

add lb monitor diameter_mon DIAMETER -originHost mydomain.org -originRealm org

Créez les services Diameter.

add service <name> <IP> DIAMETER <port>

Exemple :

add service diameter_svc0 10.102.82.86 DIAMETER 3868

add service diameter_svc1 10.102.82.87 DIAMETER 3868

add service diameter_svc2 10.102.82.88 DIAMETER 3868

add service diameter_svc3 10.102.82.89 DIAMETER 3868

Liez les services Diameter au moniteur Diameter.

bind service <name>@ monitorName <monitorName>

Exemple :

bind service diameter_svc0 -monitorName diameter_mon

bind service diameter_svc1 -monitorName diameter_mon

bind service diameter_svc2 -monitorName diameter_mon

bind service diameter_svc3 -monitorName diameter_mon

Ajoutez un serveur virtuel d’équilibrage de charge de Diameter avec persistance de Diameter.

add lb vserver <name> DIAMETER <IPAddress> <port> -persistenceType DIAMETER -persistAVPno <positive_integer>

Exemple :

add lb vserver diameter_vs DIAMETER 10.102.112.152 3868 -persistenceType DIAMETER -persistAVPno 263

Liez les services Diameter au serveur virtuel d’équilibrage de charge Diameter.

bind lb vserver <name> <serviceName>

Exemple :

bind lb vserver diameter_vs diameter_svc0

bind lb vserver diameter_vs diameter_svc1

bind lb vserver diameter_vs diameter_svc2

bind lb vserver diameter_vs diameter_svc3

Enregistrez la configuration.

save ns config

Remarque : Vous pouvez également configurer l’équilibrage de charge du trafic de diamètre sur SSL à l’aide du type de service SSL_DIAMETER.

Pour configurer l’équilibrage de charge pour le trafic de Diameter à l’aide de l’utilitaire de configuration

  1. Accédez à Système > Paramètres > Modifier les paramètres de diamètre et définissez les paramètres de diamètre.
  2. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels et créez un serveur virtuel d’équilibrage de charge de type Diamètre.
  3. Créez un service de type Diameter.
  4. Créez un moniteur de type Diameter. Dans Paramètres spéciaux, définissez l’hôte d’origine et le domaine d’origine.
  5. Liez le moniteur au service et liez le service au serveur virtuel Diameter.
  6. Dans Paramètres avancés, cliquez sur Persistance, spécifiez Diamètre et entrez un numéro AVP de persistance.
  7. Cliquez sur Enregistrer, puis sur Terminé.