ADC

Anwendungsfall 1: SMPP-Lastausgleich

Millionen von Kurznachrichten werden täglich zwischen Einzelpersonen und Mehrwertdienstanbietern wie Banken, Werbetreibenden und Verzeichnisdiensten ausgetauscht, indem das Short Message Peer-to-Peer (SMPP) -Protokoll verwendet wird. Oft verzögert sich die Nachrichtenzustellung, weil die Server überlastet sind und der Datenverkehr nicht optimal auf die Server verteilt wird. Der NetScaler unterstützt den SMPP-Lastenausgleich und sorgt für eine optimale Verteilung von Nachrichten auf Ihren Servern, wodurch Leistungseinbußen und Ausfällen vorgebeugt wird.

Der NetScaler führt einen Lastenausgleich auf der Serverseite durch, wenn Nachrichten von Clients empfangen werden, und auf der Clientseite, wenn Nachrichten von Servern empfangen werden.

Der Lastausgleich von SMPP-Nachrichten durch den NetScaler bietet die folgenden Vorteile:

  • Bessere Lastverteilung auf Servern, was zu schnelleren Reaktionszeiten für Endbenutzer führt
  • Überwachung des Serverzustands und bessere Failover-Funktionen
  • Schnelles und einfaches Hinzufügen neuer Server (Message Center) ohne Änderung der Client-Konfiguration
  • Hohe Verfügbarkeit

Einführung in SMPP

SMPP ist ein Anwendungsschicht-Protokoll für die Übertragung von Kurznachrichten zwischen externen Kurznachrichtentitäten (ESME), Routing-Entitäten (RE) und Message Centers (MC) über langlebige TCP-Verbindungen. Es wird zum Senden von Kurznachrichtendiensten (SMS) zwischen Freunden, Kontakten und Dritten wie Banken (Mobile Banking), Werbetreibenden (Mobile Commerce) und Verzeichnisdiensten verwendet. Nachrichten von einer ESME (Non-Mobile Entity) kommen beim MC an, der sie an Short Message Entities (KMU) wie Mobiltelefone weiterleitet. SMPP wird auch von KMU verwendet, um Kurznachrichten an Dritte zu senden (z. B. für den Kauf von Produkten, Rechnungszahlung und Geldüberweisung). Diese Nachrichten kommen am MC an und werden an den Ziel-MC oder ESME weitergeleitet.

Das folgende Diagramm zeigt die verschiedenen SMPP-Entitäten: ESMEs, REs und MCs in einem Mobilfunknetz.

Architektur

Architekturübersicht der verschiedenen SMPP-Entitäten in einem Mobilfunknetz

Hinweis: Die Begriffe Client und ESME werden im gesamten Dokument synonym verwendet.

Ein ESME (Client) stellt in einem der drei Modi eine Verbindung zum MC her: als Sender, Empfänger oder Transceiver. Als Sender kann er nur Nachrichten zur Zustellung senden. Als Empfänger kann es nur Nachrichten empfangen. Als Transceiver kann die ESME Nachrichten sowohl senden als auch empfangen. Die ESME sendet dem MC eine der drei Nachrichten (auch bekannt als PDUs): bind_transmitter, bind_receiver oder bind_transceiver. Der MC antwortet mit bind_transmitter_resp, bind_receiver_resp oder bind_transceiver_resp, je nachdem, was für die Anfrage erforderlich ist.

Nachdem die Verbindung hergestellt wurde, kann die ESME, je nachdem, in welchem Modus sie an den MC gebunden ist, eine submit_sm- oder data_sm-Nachricht senden, eine deliver_sm- oder data_sm-Nachricht empfangen oder jede dieser Arten von Nachrichten senden und empfangen. Die ESME kann auch Zusatznachrichten wie query_sm, replace_sm und cancel_sm senden, um den Status einer früheren Nachrichtenzustellung abzufragen, eine frühere Nachricht durch eine neue Nachricht zu ersetzen oder eine nicht zugestellte Nachricht zu stornieren.

Wenn eine Nachricht nicht zugestellt wird, weil kein ESME verfügbar ist oder ein Mobilfunkabonnent nicht online ist, wird die Nachricht in die Warteschlange gestellt. Später, wenn der MC feststellt, dass der mobile Teilnehmer jetzt erreichbar ist, sendet er über eine Empfänger- oder Transceiver-Sitzung eine alert_notification-PDU an die ESME und fordert die Zustellung aller Nachrichten in der Warteschlange an.

Jede Anforderungs-PDU hat eine eindeutige Sequenznummer. Die Antwort-PDU hat dieselbe Sequenznummer wie die ursprüngliche Anfrage. Da der Nachrichtenaustausch über SMPP im asynchronen Modus erfolgen kann, kann eine ESME oder ein MC mehrere Anfragen gleichzeitig senden. Die Sequenznummer spielt eine entscheidende Rolle bei der Rückgabe der Antwort in derselben SMPP-Sitzung. Mit anderen Worten, die Sequenznummer ermöglicht den Abgleich von Anfrage und Antwort.

Das folgende Diagramm zeigt, wie der Verkehrsfluss die verschiedenen PDUs verwendet, wenn der ESME als Transceiver bindet.

Verkehrsfluss

Einschränkung:

Die NetScaler Appliance unterstützt keine ausgehenden Vorgänge. Das heißt, ein Nachrichtencenter kann keine SMPP-Sitzung mit einer ESME über die NetScaler Appliance initiieren.

So funktioniert SMPP Load Balancing auf dem NetScaler

Ein ESME (Client) sendet eine Bindungsnachricht, um eine Verbindung zum NetScaler herzustellen. Der ADC authentifiziert jede ESME und antwortet bei Erfolg mit einer entsprechenden Meldung. Der NetScaler stellt eine Verbindung mit jedem Message Center her und verteilt die Last aller Nachrichten auf diese Message Centers. Wenn der ADC eine Nachricht von einem Client empfängt, verwendet er eine offene Verbindung zum Message Center erneut oder sendet eine Bindungsanforderung an ein Message Center, wenn keine offene Verbindung verfügbar ist.

Der ADC kann Load-Balance-Nachrichten, die von den Clients und von den Servern stammen, ausgleichen. Es kann den Zustand der Nachrichtenzentren überwachen und verkettete Nachrichten verarbeiten. Es bietet auch Unterstützung für das Content Switching für die Nachrichtenzentren.

Nachrichten, die von den eSMEs stammen

Jeder ESME muss zur Authentifizierung als Benutzer auf dem NetScaler hinzugefügt werden. Der Client stellt eine TCP-Verbindung mit einem virtuellen SMPP-Server her, der auf dem ADC konfiguriert ist, indem er eine Bindungsanforderung sendet. Der ADC authentifiziert den Client und analysiert, falls dies erfolgreich ist, die Bindungsnachricht. Der ADC sendet dann die Anfrage an das Message Center, das mit der konfigurierten Load-Balancing-Methode ausgewählt wurde. Wenn eine Verbindung zum Message Center nicht zur Wiederverwendung verfügbar ist, öffnet der ADC eine TCP-Verbindung mit dem Message Center, indem er eine neue Bindungsanforderung an das Message Center sendet.

Bevor die Antwort (submit_sm_resp oder data_sm_resp) vom Message Center an den Client weitergeleitet wird, fügt der ADC der Nachrichten-ID eine benutzerdefinierte Server-ID hinzu, um das Message Center für Nebenvorgänge wie Abfragen, Ersetzen oder Stornieren von Anfragen für eine Nachricht durch den Client zu identifizieren. Anfragen von anderen Clients werden auf die gleiche Weise ausbalanciert.

In der ursprünglichen Bindungsanforderung gibt ein Client den Adressbereich an, den er bedienen kann. Dieser Bereich wird für die Weiterleitung von deliver_sm- oder data_sm-Nachrichten von den Message Centern an die Clients verwendet.

Nachrichten, die aus einem Message Center stammen

ESMEs, die einen bestimmten Adressbereich verwalten können, werden zu einem Cluster zusammengefasst. Alle Knoten in einem Cluster bieten dieselben Anmeldeinformationen. Innerhalb eines Clusters wird nur die Round-Robin-Methode für den Lastenausgleich verwendet. Um von Mobilgeräten ausgehende Nachrichten (MO) zuzustellen, sendet das Message Center eine deliver_sm-Nachricht an den NetScaler. Wenn ein Cluster, der den Zieladressbereich bedienen kann (z. B. Zahlen, die mit 998 beginnen), an den ADC gebunden ist, wählt er diesen Cluster aus und verteilt dann die Nachricht auf die ESME-Knoten in diesem Cluster.

Wenn eine ESME, die deliver_sm-Nachrichten für den Adressbereich bereitstellen kann, nicht an den ADC gebunden ist und Message Queuing aktiviert ist, wird die Nachricht in die Warteschlange gestellt, bis ein solcher Client in einem Empfänger- oder Transceivermodus eine Verbindung zum ADC herstellt. Sie können die Größe der Warteschlange angeben.

Das folgende Diagramm veranschaulicht den internen Fluss von PDUs zwischen eSMEs, NetScaler und den Message Centern. Der Einfachheit halber werden nur zwei ESMEs und zwei Message Center angezeigt.

ESME

Nachrichtenfluss (PDUs):

  1. ESME1 sendet eine Bindungsanforderung an NetScaler
  2. NetScaler sendet eine Bindungsanforderung an MC1
  3. MC1 sendet eine Bindungsantwort an NetScaler
  4. NetScaler sendet eine Bindungsantwort an ESME1
  5. ESME1 sendet submit_sm (1) an NetScaler
  6. ESME1 sendet submit_sm (2) an NetScaler
  7. NetScaler leitet submit_sm (1) an MC1 weiter
  8. NetScaler sendet eine Bindungsanforderung an MC2
  9. MC2 sendet eine Bindungsantwort an NetScaler
  10. NetScaler leitet submit_sm (2) an MC2 weiter
  11. MC1 sendet submit_sm_resp (1) an NetScaler
  12. MC2 sendet submit_sm_resp (2) an NetScaler
  13. NetScaler leitet submit_sm_resp (1) an ESME1 weiter
  14. NetScaler leitet submit_sm_resp (2) an ESME1 weiter
  15. ESME2 sendet eine Bindungsanforderung an NetScaler
  16. NetScaler sendet eine Bindungsantwort an ESME2
  17. ESME2 sendet submit_sm (3) an NetScaler
  18. NetScaler leitet submit_sm (3) an MC1 weiter
  19. MC2 sendet deliver_sm an NetScaler (ESME2 bedient den in der Nachricht angegebenen Adressbereich)
  20. MC1 sendet submit_sm_resp (3) an NetScaler
  21. NetScaler leitet submit_sm_resp (3) an ESME2 weiter
  22. NetScaler leitet deliver_sm an ESME2 weiter
  23. ESME2 sendet deliver_sm_resp an NetScaler
  24. MC1 sendet alert_notification an NetScaler (ESME1 bedient den in der Nachricht angegebenen Adressbereich)
  25. NetScaler leitet deliver_sm_resp an MC2 weiter
  26. NetScaler leitet die alert_notification an ESME1 weiter

Gesundheitsüberwachung von Nachrichtenzentren

Standardmäßig ist ein TCP_Default-Monitor an einen SMPP-Dienst gebunden, Sie können jedoch einen benutzerdefinierten Monitor vom Typ SMPP binden. Der benutzerdefinierte Monitor öffnet eine TCP-Verbindung zum Message Center und sendet ein enquire_link-Paket. Je nach Erfolg oder Misserfolg der Sonde wird der Dienst mit UP oder DOWN markiert.

Umschalten von Inhalten in Message Centern

Message Center können mehrere Verbindungen von ESMEs akzeptieren (oder Anfragen binden). Sie können den NetScaler so konfigurieren, dass diese Anforderungen basierend auf den SMPP-Bind-Parametern mit Inhalt wechselt. Im Folgenden finden Sie einige allgemeine Ausdrücke zum Konfigurieren von Methoden zum Auswählen eines Nachrichtenzentrums:

  • Basierend auf dem Adressbereich: Im folgenden Beispielausdruck wählt der ADC ein bestimmtes Nachrichtenzentrum aus, wenn der Adressbereich bei 988 beginnt.

Beispiel:

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

  • Basierend auf der ESME-ID: Im folgenden Beispielausdruck wählt der ADC ein bestimmtes Message Center aus, wenn die ESME-ID ESME1 entspricht.

Beispiel:

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

  • Basierend auf dem ESME-Typ: Im folgenden Beispielausdruck wählt der ADC ein bestimmtes Message Center aus, wenn der ESME-Typ VMS ist. VMS steht für Voicemail-System.

Beispiel:

SMPP.BINDINFO.SYSTEM_TYPE.EQ („VIRTUELLE RECHNER“)

  • Basierend auf dem Nummerntyp (TON) der ESME: Im folgenden Beispielausdruck wählt der ADC ein bestimmtes Nachrichtenzentrum aus, wenn TON gleich 1 ist (1 steht für eine internationale Zahl).

Beispiel:

SMPP.BINDINFO.ADDR_TON.EQ (1)

  • Basierend auf dem Number Plan Indicator (NPI) der ESME: Im folgenden Beispielausdruck wählt der ADC ein bestimmtes Nachrichtenzentrum aus, wenn NPI gleich 0 ist (0 steht für eine unbekannte Verbindung).

Beispiel:

SMPP.BINDINFO.ADDR_NPI.EQ (0)

  • Basierend auf dem Bindungstyp: Im folgenden Beispielausdruck wählt der ADC ein bestimmtes Nachrichtenzentrum aus, wenn der Bindungstyp TRANSCEIVER ist. (Ein Transceiver kann Nachrichten senden und empfangen.)

Beispiel:

SMPP.BINDINFO.TYPE.EQ (TRANSCEIVER)

Behandlung verketteter Nachrichten

Eine SMS kann maximal 140 Byte enthalten. Längere Nachrichten müssen in kleinere Teile aufgeteilt werden. Wenn das Zielhandy dazu in der Lage ist, werden die Nachrichten kombiniert und als eine lange SMS zugestellt. Der NetScaler leitet die Fragmente einer Nachricht an dasselbe Message Center weiter. Jede Nachricht enthält eine Referenznummer, eine Sequenznummer und die Gesamtzahl der Fragmente. Die Referenznummer ist für jedes Fragment einer langen Nachricht dieselbe. Die Sequenznummer gibt die Position des bestimmten Fragments in der vollständigen Nachricht an. Nachdem alle Fragmente empfangen wurden, fasst die ESME die Fragmente zu einer langen Nachricht zusammen und übermittelt die Nachricht an den mobilen Abonnenten.

Wenn ein Client die Verbindung zu einer aktiven Verbindung trennt, wird die Verbindung zum Message Center nicht geschlossen. Es wird für Anfragen von anderen Kunden wiederverwendet.

Einschränkung

Nachrichten-IDs aus dem Message Center, die länger als 59 Byte sind, werden nicht unterstützt. Wenn die vom Message Center zurückgegebene Nachrichten-ID-Länge mehr als 59 Byte beträgt, schlagen zusätzliche Operationen fehl und der NetScaler reagiert mit einer Fehlermeldung.

Konfiguration des SMPP-Load-Balancings auf dem NetScaler

Führen Sie die folgenden Aufgaben aus, um den SMPP-Lastenausgleich auf dem ADC zu konfigurieren:

  1. Fügen Sie einen SMPP-Benutzer hinzu. Der ADC authentifiziert den Benutzer, bevor er eine Bindungsanforderung des Benutzers akzeptiert. Der Benutzer ist in der Regel ein ESME.
  2. Fügen Sie einen virtuellen Lastausgleichsserver hinzu und geben Sie das Protokoll als SMPP an.
  3. Fügen Sie einen Dienst hinzu, indem Sie das Protokoll als SMPP und eine benutzerdefinierte Server-ID angeben, die für jeden Server eindeutig ist. Binden Sie den Dienst an den zuvor erstellten virtuellen Load-Balancing-Server.
  4. Erstellen Sie optional eine Dienstgruppe und fügen Sie der Dienstgruppe Dienste hinzu.
  5. Fügen Sie optional einen Monitor vom Typ SMPP-ECV hinzu und binden Sie ihn an den Dienst. Ein TCP-Standardmonitor ist standardmäßig gebunden.
  6. Stellen Sie die SMPP-Parameter wie den Client-Modus und die Nachrichtenwarteschlange ein.

So konfigurieren Sie den SMPP-Lastenausgleich mithilfe der Befehlszeile

Geben Sie in der Befehlszeile Folgendes ein:

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

Beispiel

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

So konfigurieren Sie den SMPP-Lastenausgleich mithilfe des Konfigurationsprogramms

  1. Navigieren Sie zu System > Benutzerverwaltung > SMPP-Benutzer, und fügen Sie einen SMPP-Benutzer hinzu.
  2. Navigieren Sie zu Traffic Management > Load Balancing > SMPP-Parameter konfigurieren, und legen Sie die für Ihre Bereitstellung erforderlichen Parameter fest.
  3. Navigieren Sie zu Traffic Management > Load Balancing > Virtuelle Server, und fügen Sie einen virtuellen Server vom Typ SMPP hinzu.
  4. Klicken Sie im Abschnitt Dienst, fügen Sie einen Dienst vom Typ SMPP hinzu, und geben Sie eine Server-ID an.