Cas d’utilisation 1 : Équilibrage de charge SMPP

Des millions de messages courts sont échangés quotidiennement entre des particuliers et des fournisseurs de services à valeur ajoutée, tels que les banques, les annonceurs et les services d’annuaire, à l’aide du protocole SMPP (Short Message peer to peer). Souvent, la remise des messages est retardée parce que les serveurs sont surchargés et que le trafic n’est pas réparti de manière optimale entre les serveurs. Le Citrix ADC prend en charge l’équilibrage de charge SMPP et fournit une distribution optimale des messages sur vos serveurs, évitant ainsi les mauvaises performances et les pannes.

Citrix ADC effectue l’équilibrage de charge côté serveur lorsque les messages sont reçus des clients et côté client lorsque les messages sont reçus des serveurs.

L’équilibrage de charge des messages SMPP par Citrix ADC offre les avantages suivants :

  • Meilleure distribution de la charge sur les serveurs, ce qui se traduit par un temps de réponse plus rapide pour les utilisateurs finaux
  • Surveillance de l’intégrité des serveurs et meilleures capacités de basculement
  • Ajout rapide et facile de nouveaux serveurs (centres de messagerie) sans modifier la configuration du client
  • Haute disponibilité

Introduction à SMPP

SMPP est un protocole de couche d’application pour le transfert de messages courts entre les entités ESME (External Short Message Entities), les entités de routage (RE) et les centres de messages (MC) sur des connexions TCP à longue durée de vie. Il est utilisé pour l’envoi de messages courts (SMS) entre amis, contacts et tiers tels que les banques (banque mobile), les annonceurs (commerce mobile) et les services d’annuaire. Les messages provenant d’une ESME (entité non mobile) arrivent au MC, qui les distribue aux entités de messages courts (PME) telles que les téléphones mobiles. SMPP est également utilisé par les PME pour envoyer des messages courts à des tiers (par exemple, pour l’achat de produits, le paiement de factures et le transfert de fonds). Ces messages arrivent au MC et sont transmis au MC de destination ou à l’ESME.

Le diagramme suivant montre les différentes entités SMPP : ESME, RE et MCs, dans un réseau mobile.

architecture

Présentation de l’architecture des différentes entités SMPP dans un réseau mobile

Remarque : Les termes client et ESME sont utilisés de manière interchangeable dans tout le document.

Un ESME (client) ouvre une connexion au MC dans l’un des trois modes suivants : émetteur, récepteur ou émetteur-récepteur. En tant qu’émetteur, il ne peut envoyer que des messages pour la livraison. En tant que récepteur, il ne peut recevoir que des messages. En tant qu’émetteur-récepteur, l’ESME peut envoyer et recevoir des messages. L’ESME envoie au MC l’un des trois messages (également appelés PDU) : bind_transmitter, bind_receiver ou bind_transceiver. Le MC répond avec un bind_transmitter_resp, bind_receiver_resp ou bind_transceiver_resp, selon le cas pour la requête.

Une fois la connexion établie, l’ESME peut, selon le mode dans lequel il est lié au MC, envoyer un message submit_sm ou data_sm, recevoir un message deliver_sm ou data_sm, ou envoyer et recevoir n’importe lequel de ces types de messages. L’ESME peut également envoyer des messages auxiliaires, tels que query_sm, replace_sm et cancel_sm, pour interroger l’état d’une remise de message antérieure, remplacer un message antérieur par un nouveau message ou annuler un message non remis.

Si un message n’est pas remis parce qu’un ESME n’est pas disponible ou qu’un abonné mobile n’est pas en ligne, le message est mis en file d’attente. Plus tard, lorsque le MC détecte que l’abonné mobile est maintenant accessible, il envoie une PDU alert_notification à l’ESME via une session de récepteur ou d’émetteur-récepteur, demandant la remise des messages en file d’attente.

Chaque PDU de demande a un numéro de séquence unique. La PDU de réponse a le même numéro de séquence que la demande d’origine. Étant donné que l’échange de messages sur SMPP peut être en mode asynchrone, un ESME ou un MC peut envoyer plusieurs requêtes à la fois. Le numéro de séquence joue un rôle crucial dans le retour de la réponse dans la même session SMPP. En d’autres termes, le numéro de séquence rend possible la correspondance des demandes et des réponses.

Le diagramme suivant montre comment le flux de trafic utilise les différentes PDU lorsque l’ESME se lie en tant qu’émetteur-récepteur.

flux de trafic

Limitation :

L’appliance Citrix ADC ne prend pas en charge les opérations d’outbind. Autrement dit, un centre de messages ne peut pas lancer une session SMPP avec un ESME via l’appliance Citrix ADC.

Fonctionnement de l’équilibrage de charge SMPP sur Citrix ADC

Un ESME (client) envoie un message de liaison pour ouvrir une connexion au Citrix ADC. ADC authentifie chaque ESME et, en cas de succès, répond avec un message approprié. Citrix ADC établit une connexion avec chaque centre de messages et équilibre la charge de tous les messages entre ces centres de messages. Lorsque ADC reçoit un message d’un client, il réutilise une connexion ouverte au centre de messages ou envoie une requête de liaison à un centre de messages si une connexion ouverte n’est pas disponible.

ADC peut équilibrer la charge des messages provenant des clients et des serveurs. Il peut surveiller l’état des centres de messages et gérer les messages concaténés. Il fournit également une prise en charge de la commutation de contenu pour les centres de messages.

Messages provenant des ESME

Chaque ESME doit être ajouté en tant qu’utilisateur sur Citrix ADC pour l’authentification. Le client établit une connexion TCP avec un serveur virtuel SMPP configuré sur ADC en envoyant une requête de liaison. ADC authentifie le client et, en cas de succès, analyse le message de liaison. ADC envoie ensuite la demande au centre de messages sélectionné par la méthode d’équilibrage de charge configurée. Si une connexion au centre de messages n’est pas disponible pour réutilisation, l’ADC ouvre une connexion TCP avec le centre de messages en envoyant une nouvelle requête de liaison au centre de messages.

Avant de transférer la réponse (submit_sm_resp ou data_sm_resp) du centre de messages au client, ADC ajoute un ID de serveur personnalisé à l’ID du message afin d’identifier le centre de messages pour les opérations auxiliaires, telles que la requête, le remplacement ou l’annulation des demandes d’un message, par le client. Les demandes d’autres clients sont équilibrées de la même manière.

Dans la requête de liaison d’origine, un client spécifie la plage d’adresses qu’il peut servir. Cette plage est utilisée pour transférer les messages deliver_sm ou data_sm des centres de messages vers les clients.

Messages provenant d’un centre de messages

Les ESME qui peuvent gérer une plage d’adresses spécifique sont regroupés dans un cluster. Tous les nœuds d’un cluster fournissent les mêmes informations d’identification. Dans un cluster, seule la méthode round robin est utilisée pour l’équilibrage de charge. Pour envoyer des messages d’origine mobile (MO), le centre de messages envoie un message deliver_sm au Citrix ADC. Si un cluster pouvant servir la plage d’adresses de destination (par exemple, les nombres commençant par 998) est lié à ADC, il sélectionne ce cluster, puis équilibre la charge entre les nœuds ESME de ce cluster.

Si un ESME qui peut servir des messages deliver_sm pour la plage d’adresses n’est pas lié à ADC et que la mise en file d’attente des messages est activée, le message est mis en file d’attente jusqu’à ce qu’un tel client se lie à ADC en mode récepteur ou émetteur-récepteur. Vous pouvez spécifier la taille de la file d’attente.

Le diagramme suivant illustre le flux interne des PDU entre les ESME, Citrix ADC et les centres de messages. Par souci de simplicité, seuls deux ESME et deux centres de messages sont affichés.

esmes

Flux de messages (PDU) :

  1. ESME1 envoie une requête de liaison à NetScaler
  2. NetScaler envoie une requête de liaison à MC1
  3. MC1 envoie une réponse de liaison à NetScaler
  4. NetScaler envoie une réponse de liaison à ESME1
  5. ESME1 envoie submit_sm (1) à NetScaler
  6. ESME1 envoie submit_sm (2) à NetScaler
  7. NetScaler transfère submit_sm (1) à MC1
  8. NetScaler envoie une requête de liaison à MC2
  9. MC2 envoie une réponse de liaison à NetScaler
  10. NetScaler transfère submit_sm (2) à MC2
  11. MC1 envoie submit_sm_resp (1) à NetScaler
  12. MC2 envoie submit_sm_resp (2) à NetScaler
  13. NetScaler transfère submit_sm_resp (1) à ESME1
  14. NetScaler transfère submit_sm_resp (2) à ESME1
  15. ESME2 envoie une requête de liaison à NetScaler
  16. NetScaler envoie une réponse de liaison à ESME2
  17. ESME2 envoie submit_sm (3) à NetScaler
  18. NetScaler transfère submit_sm (3) à MC1
  19. MC2 envoie deliver_sm à NetScaler (ESME2 sert la plage d’adresses spécifiée dans le message)
  20. MC1 envoie submit_sm_resp (3) à NetScaler
  21. NetScaler transfère submit_sm_resp (3) à ESME2
  22. NetScaler transfère deliver_sm à ESME2
  23. ESME2 envoie deliver_sm_resp à NetScaler
  24. MC1 envoie alert_notification à NetScaler (ESME1 sert la plage d’adresses spécifiée dans le message)
  25. NetScaler transfère deliver_sm_resp vers MC2
  26. NetScaler transmet la notification alert_notification à ESME1

Surveillance de la santé des centres de messages

Par défaut, un moniteur TCP_Default est lié à un service SMPP, mais vous pouvez lier un moniteur personnalisé de type SMPP. Le moniteur personnalisé ouvre une connexion TCP au centre de messages et envoie un paquet enquire_link. En fonction du succès ou de la défaillance de la sonde, le service est marqué comme UP ou DOWN.

Commutation de contenu sur les centres de messages

Les centres de messagerie peuvent accepter plusieurs connexions (ou lier des demandes) provenant d’ESME. Vous pouvez configurer Citrix ADC pour changer de contenu ces requêtes sur la base des paramètres de liaison SMPP. Voici quelques expressions courantes pour configurer les méthodes de sélection d’un centre de messages :

  • En fonction de la plage d’adresses : Dans l’exemple d’expression suivant, ADC sélectionne un centre de messages spécifique si la plage d’adresses commence à 988.

Exemple :

SMPP.BINDINFO.ADDRESS_RANGE.CONTAINS(“^988”)

  • Basé sur l’ID ESME : Dans l’exemple d’expression suivant, ADC sélectionne un centre de messages spécifique si l’ID ESME est égal à ESME1.

Exemple :

SMPP.BINDINFO.SYSTEM_ID.EQ(“ESME1”)

  • Selon le type ESME : Dans l’exemple d’expression suivant, ADC sélectionne un centre de messages spécifique si le type ESME est VMS. VMS signifie système de messagerie vocale.

Exemple :

SMPP.BINDINFO.SYSTEM_TYPE.EQ(“VMS”)

  • En fonction du type de numéro (TON) de l’ESME : Dans l’exemple d’expression suivant, l’ADC sélectionne un centre de messages spécifique si TON est égal à 1 (1 signifie un numéro international).

Exemple :

SMPP.BINDINFO.ADDR_TON.EQ(1)

  • Basé sur l’indicateur de plan numérique (NPI) de l’ESME : Dans l’exemple d’expression suivant, ADC sélectionne un centre de messages spécifique si NPI est égal à 0 (0 signifie une connexion inconnue).

Exemple :

SMPP.BINDINFO.ADDR_NPI.EQ(0)

  • En fonction du type de liaison : Dans l’exemple d’expression suivant, l’ADC sélectionne un centre de messages spécifique si le type de liaison est TRANSCEIVER. (Un émetteur-récepteur peut envoyer et recevoir des messages.)

Exemple :

SMPP.BINDINFO.TYPE.EQ(TRANSCEIVER)

Gestion des messages concaténés

Un SMS peut contenir un maximum de 140 octets. Les messages plus longs doivent être divisés en petites parties. Si le mobile de destination est capable, les messages sont combinés et livrés en un seul SMS. Citrix ADC transfère les fragments d’un message au même centre de messages. Chaque message contient un numéro de référence, un numéro de séquence et le nombre total de fragments. Le numéro de référence est le même pour chaque fragment d’un message long. Le numéro de séquence spécifie la position du fragment particulier dans le message complet. Une fois tous les fragments reçus, l’ESME combine les fragments en un seul long message et envoie le message à l’abonné mobile.

Si un client se déconnecte d’une connexion active, la connexion au centre de messages n’est pas fermée. Il est réutilisé pour les demandes d’autres clients.

Limitation

Les ID de message, provenant du centre de message, de plus de 59 octets ne sont pas pris en charge. Si la longueur de l’ID de message renvoyée par le centre de messages est supérieure à 59 octets, les opérations auxiliaires échouent et Citrix ADC répond avec un message d’erreur.

Configuration de l’équilibrage de charge SMPP sur Citrix ADC

Effectuez les tâches suivantes pour configurer l’équilibrage de charge SMPP sur ADC :

  1. Ajouter un utilisateur SMPP. ADC authentifie l’utilisateur avant d’accepter une demande de liaison de l’utilisateur. L’utilisateur est généralement un ESME.
  2. Ajoutez un serveur virtuel d’équilibrage de charge, en spécifiant le protocole comme SMPP.
  3. Ajoutez un service, en spécifiant le protocole comme SMPP, et un ID de serveur personnalisé unique pour chaque serveur. Liez le service au serveur virtuel d’équilibrage de charge créé précédemment.
  4. Le cas échéant, créez un groupe de services et ajoutez des services au groupe de services.
  5. Vous pouvez également ajouter un moniteur de type SMPP-ECV et le lier au service. Un moniteur TCP par défaut est lié par défaut.
  6. Définissez les paramètres SMPP, tels que le mode client et la file d’attente de messages.

Pour configurer l’équilibrage de charge SMPP à l’aide de la ligne de commande

À l’invite de commandes, tapez :

add smpp user <username> -password <password>  
add service <name> <IP> SMPP <port> –customserverID <customserverID>  
add lb vserver <name> <IP> SMPP <port>  
bind lb vserver <name> <service name>  
set smpp param  

Exemple

add smpp user smppclient1 -password c03ebb540695b6110eb31172f32245a1 -encrypted -encryptmethod ENCMTHD_2
add smpp user smppclient2 -password c03ebb540695b6110eb31172f32245a1 -encrypted -encryptmethod ENCMTHD_2
add service smmpsvc 10.102.84.140 SMPP 2775 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip NO -useproxyport YES -sp ON -cltTimeout 180 -svrTimeout 360 -CustomServerID ab -CKA NO -TCPB NO -CMP NO
add service smmpsvc2 10.102.81.175 SMPP 2775 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip NO -useproxyport YES -sp ON -cltTimeout 180 -svrTimeout 360 -CustomServerID xy -CKA NO -TCPB NO -CMP NO
add lb vserver smppvs SMPP 10.102.239.179 2775 -persistenceType NONE -cltTimeout 180
bind lb vserver smppvs smmpsvc2
bind lb vserver smppvs smmpsvc
set smpp param -addrrange "d*"

Pour configurer l’équilibrage de charge SMPP à l’aide de l’utilitaire de configuration

  1. Accédez à Système > Administration des utilisateurs > Utilisateurs SMPP et ajoutez un utilisateur SMPP.
  2. Accédez à Gestion du trafic > Équilibrage de charge > Configurer les paramètres SMPP et définissez les paramètres requis par votre déploiement.
  3. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels et ajoutez un serveur virtuel de type SMPP.
  4. Cliquez dans la section Service, ajoutez un service de type SMPP et spécifiez un ID de serveur.