ADC

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 des banques, des annonceurs et des services d’annuaire, à l’aide du protocole de message court pair à pair (SMPP). La livraison des messages est souvent retardée car les serveurs sont surchargés et le trafic n’est pas réparti de manière optimale entre les serveurs. NetScaler prend en charge l’équilibrage de charge SMPP et assure une distribution optimale des messages sur vos serveurs, évitant ainsi les mauvaises performances et les pannes.

NetScaler effectue un équilibrage de charge côté serveur lorsque des messages sont reçus de clients et côté client lorsque des messages sont reçus des serveurs.

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

  • Meilleure répartition 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’état du serveur et meilleures fonctionnalité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 de messages courts externes (ESME), les entités de routage (RE) et les centres de messages (MC) via 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 d’une ESME (entité non mobile) arrivent au MC, qui les distribue à des entités de messagerie courte (PME) telles que des téléphones portables. Le SMPP est également utilisé par les PME pour envoyer de courts messages à des tiers (par exemple, pour l’achat de produits, le paiement de factures et les transferts de fonds). Ces messages arrivent au MC et sont transmis au MC ou à l’ESME de destination.

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 peut uniquement envoyer des messages pour livraison. En tant que récepteur, il ne peut recevoir que des messages. En tant qu’émetteur-récepteur, l’ESME peut à la fois 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 par un bind_transmitter_resp, un bind_receiver_resp ou un bind_transceiver_resp, selon 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 demander 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 désormais joignable, il envoie une PDU alert_notification à l’ESME via une session de récepteur ou d’émetteur-récepteur, demandant la livraison de tous les messages en file d’attente.

Chaque PDU de demande possède un numéro de séquence unique. La PDU de réponse possède le même numéro de séquence que la demande d’origine. Comme l’échange de messages via SMPP peut se faire en mode asynchrone, un ESME ou un MC peut envoyer plusieurs demandes à la fois. Le numéro de séquence joue un rôle crucial dans le renvoi de la réponse au cours de la même session SMPP. En d’autres termes, le numéro de séquence permet la mise en 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 NetScaler ne prend pas en charge les opérations sortantes. En d’autres termes, un centre de messagerie ne peut pas lancer de session SMPP avec un ESME via l’appliance NetScaler.

Comment fonctionne l’équilibrage de charge SMPP sur NetScaler

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

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

Messages en provenance des PME

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

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

Dans la demande 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 messagerie vers les clients.

Messages provenant d’un centre de messagerie

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

Si un ESME capable de servir des messages deliver_sm pour la plage d’adresses n’est pas lié à l’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 à l’ADC en mode récepteur ou émetteur-récepteur. Vous pouvez spécifier la taille de la file d’attente.

Le schéma suivant illustre le flux interne de PDU entre les ESME, NetScaler et les centres de messagerie. Par souci de simplicité, seuls deux ESME et deux centres de messages sont affichés.

ESME

Flux de messages (PDU) :

  1. ESME1 envoie une demande de liaison à NetScaler
  2. NetScaler envoie une demande 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 transmet submit_sm (1) à MC1
  8. NetScaler envoie une demande de liaison à MC2
  9. MC2 envoie une réponse de liaison à NetScaler
  10. NetScaler transmet submit_sm (2) à MC2
  11. MC1 envoie submit_sm_resp (1) à NetScaler
  12. MC2 envoie submit_sm_resp (2) à NetScaler
  13. NetScaler transmet submit_sm_resp (1) à ESME1
  14. NetScaler transmet submit_sm_resp (2) à ESME1
  15. ESME2 envoie une demande de liaison à NetScaler
  16. NetScaler envoie une réponse de liaison à ESME2
  17. ESME2 envoie submit_sm (3) à NetScaler
  18. NetScaler transmet 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 transmet submit_sm_resp (3) à ESME2
  22. NetScaler transmet 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 transmet deliver_sm_resp à MC2
  26. NetScaler transmet l’alert_notification à ESME1

Surveillance de l’état de santé des centres de messagerie

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 vers le centre de messagerie et envoie un paquet inquire_link. En fonction de la réussite ou de l’échec de la sonde, le service est marqué comme « UP » ou « NON ».

Basculement du contenu dans les centres de messagerie

Les centres de messagerie peuvent accepter plusieurs connexions (ou lier des demandes) provenant d’ESME. Vous pouvez configurer NetScaler pour qu’il bascule le contenu de ces requêtes en fonction des paramètres de liaison SMPP. Voici quelques expressions courantes pour configurer les méthodes de sélection d’un centre de messages :

  • Sur la base de la plage d’adresses : dans l’exemple d’expression suivant, l’ADC sélectionne un centre de messagerie spécifique si la plage d’adresses commence à 988.

Exemple :

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

  • Sur la base de l’ID ESME : Dans l’exemple d’expression suivant, l’ADC sélectionne un centre de messagerie spécifique si l’ID ESME est égal à ESME1.

Exemple :

SMPP.BINDINFO.SYSTEM_ID.EQ (« ESME1 »)

  • En fonction du type ESME : dans l’exemple d’expression suivant, l’ADC sélectionne un centre de messagerie spécifique si le type ESME est VMS. VMS est l’abréviation de Voice Mail System.

Exemple :

SMPP.BINDINFO.SYSTEM_TYPE.EQ (« MACHINES VIRTUELLES »)

  • Sur la base du type de numéro (TON) de l’ESME : Dans l’exemple d’expression suivant, l’ADC sélectionne un centre de messagerie spécifique si TON est égal à 1 (1 représente un numéro international).

Exemple :

SMPP.BINDINFO.ADDR_TON.EQ (1)

  • Sur la base de l’indicateur de plan de numérotation (NPI) de l’ESME : dans l’exemple d’expression suivant, l’ADC sélectionne un centre de messagerie spécifique si le NPI est égal à 0 (0 représente 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 messagerie spécifique si le type de liaison est TRANSCEIVER. (Un émetteur-récepteur peut envoyer et recevoir des messages.)

Exemple :

SMPP.BINDINFO.TYPE.EQ (ÉMETTEUR-RÉCEPTEUR)

Gestion des messages concaténés

Un SMS peut contenir au maximum 140 octets. Les messages plus longs doivent être divisés en parties plus petites. Si le mobile de destination est capable, les messages sont combinés et envoyés sous la forme d’un seul long SMS. NetScaler transmet les fragments d’un message au même centre de messagerie. 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 long message. Le numéro de séquence indique la position du fragment particulier dans le message complet. Une fois que tous les fragments ont été reçus, l’ESME les combine en un seul long message et transmet le message à l’abonné mobile.

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

Limitation

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

Configuration de l’équilibrage de charge SMPP sur NetScaler

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

  1. Ajoutez un utilisateur SMPP. L’ADC authentifie l’utilisateur avant d’accepter une demande de liaison de sa part. 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 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. Vous pouvez également créer un groupe de services et y ajouter des services.
  5. Ajoutez éventuellement un moniteur de type SMPP-ECV et liez-le 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 de messages.

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

À l’invite de commande, 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  
<!--NeedCopy-->

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

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

  1. Accédez à Système > Administration des utilisateurs > Utilisateurs SMPP, puis ajoutez un utilisateur SMPP.
  2. Accédez à Gestion du trafic > Équilibrage de charge > Configurer les paramètres SMPPet définissez les paramètres comme requis par votre déploiement.
  3. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels, puis 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.