Citrix ADC

Anwendungsfall 1: SMPP-Lastausgleich

Millionen von Kurznachrichten werden täglich zwischen Einzelpersonen und Mehrwertdienstleistern wie Banken, Werbetreibenden und Verzeichnisdiensten ausgetauscht, indem das Short Message Peer to Peer (SMPP) -Protokoll verwendet wird. Häufig verzögert sich die Nachrichtenübermittlung, da Server überlastet sind und der Datenverkehr nicht optimal auf die Server verteilt wird. Das Citrix ADC unterstützt den SMPP-Lastenausgleich und bietet eine optimale Verteilung der Nachrichten auf Ihre Server, wodurch schlechte Leistung und Ausfälle vermieden werden.

Citrix ADC führt den Lastenausgleich auf der Serverseite durch, wenn Nachrichten von Clients empfangen werden, und auf der Clientseite, wenn Nachrichten von Servern empfangen werden.

Der Lastenausgleich von SMPP-Nachrichten durch den Citrix ADC bietet folgende Vorteile:

  • Bessere Lastverteilung auf Servern, was zu einer schnelleren Reaktionszeit 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 Short Message Entities (ESME), Routing Entities (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 (nicht mobile Entität) kommen am MC an, die sie an Kurznachrichteneinheiten (SMEs) wie Mobiltelefone verteilt. SMPP wird auch von SMEs verwendet, um Kurznachrichten an Dritte zu senden (zum Beispiel für den Kauf von Produkten, Rechnungszahlung und Geldüberweisung). Diese Meldungen 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 austauschbar verwendet.

Ein ESME (Client) öffnet eine Verbindung zum MC in einem der drei Modi: als Sender, Empfänger oder Transceiver. Als Transmitter kann er nur Nachrichten zur Zustellung senden. Als Empfänger kann er nur Nachrichten empfangen. Als Transceiver kann die ESME sowohl Nachrichten senden als auch empfangen. Die ESME sendet dem MC eine der drei Meldungen (auch PDUs genannt): bind_transmitter, bind_receiver oder bind_transceiver. Der MC antwortet je nach Anforderung mit einem bind_transmitter_resp, bind_receiver_resp oder bind_transceiver_resp.

Nachdem die Verbindung hergestellt wurde, kann die ESME je nach Modus, in dem sie an den MC gebunden ist, eine submit_sm oder data_sm Nachricht senden, eine deliver_sm oder data_sm Nachricht empfangen oder diese Art 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 abzubrechen.

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

Jede Anforderung PDU hat eine eindeutige Sequenznummer. Die Antwort-PDU hat dieselbe Sequenznummer wie die ursprüngliche Anforderung. Da der Nachrichtenaustausch über SMPP im asynchronen Modus sein kann, kann ein ESME oder ein MC mehrere Anforderungen gleichzeitig senden. Die Sequenznummer spielt eine entscheidende Rolle bei der Rückgabe der Antwort in derselben SMPP-Sitzung. Mit anderen Worten, die Sequenznummer macht Anforderungs- und Antwortabgleich möglich.

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

Verkehrsfluss

Einschränkung:

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

Funktionsweise des SMPP-Lastenausgleichs auf dem Citrix ADC

Ein ESME (Client) sendet eine Bindungsnachricht, um eine Verbindung zum Citrix ADC zu öffnen. Der ADC authentifiziert jeden ESME und antwortet, wenn er erfolgreich ist, mit einer entsprechenden Nachricht. Das Citrix ADC stellt eine Verbindung zu jedem Nachrichtencenter her und gleicht alle Nachrichten zwischen diesen Nachrichtencentern aus. Wenn der ADC eine Nachricht von einem Client empfängt, verwendet er eine offene Verbindung zum Nachrichtencenter oder sendet eine Bindungsanforderung an ein Nachrichtencenter, wenn keine offene Verbindung verfügbar ist.

Der ADC kann Lastenausgleich Nachrichten, die von den Clients und von den Servern stammen. Es kann den Zustand der Nachrichtencenter überwachen und verkettete Nachrichten verarbeiten. Es bietet auch Unterstützung für die Content-Umschaltung für die Message Center.

Nachrichten, die von den ESMEs stammen

Jeder ESME muss als Benutzer auf dem Citrix ADC zur Authentifizierung 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 erfolgreich, die Bindungsnachricht. Der ADC sendet die Anforderung dann an das Nachrichtencenter, das von der konfigurierten Lastausgleichsmethode ausgewählt wurde. Wenn eine Verbindung zum Nachrichtencenter nicht zur Wiederverwendung verfügbar ist, öffnet der ADC eine TCP-Verbindung mit dem Nachrichtencenter, indem er eine neue Bindungsanforderung an das Nachrichtencenter sendet.

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

In der ursprünglichen Bindungsanforderung gibt ein Client den Adressbereich an, den er bedienen kann. Dieser Bereich wird verwendet, um deliver_sm oder data_sm Nachrichten von den Nachrichtencentern an die Clients weiterzuleiten.

Nachrichten, die aus einem Nachrichtencenter stammen

ESMEs, die einen bestimmten Adressbereich verarbeiten können, werden in einem Cluster gruppiert. Alle Knoten in einem Cluster verfügen über die gleichen Anmeldeinformationen. Innerhalb eines Clusters wird nur die Roundrobin-Methode für den Lastenausgleich verwendet. Zum Übermitteln mobiler Nachrichten (MO-Nachrichten) sendet das Nachrichtencenter eine deliver_sm-Nachricht an den Citrix ADC. 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 gleicht dann die Nachricht zwischen den ESME-Knoten in diesem Cluster aus.

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

Das folgende Diagramm veranschaulicht den internen Fluss von PDUs zwischen ESMEs, Citrix ADC und den Nachrichtencentern. Der Einfachheit halber werden nur zwei ESMEs und zwei Message Center angezeigt.

Esmes

Nachrichtenfluss (PDUs):

  1. ESME1 sendet Bindungsanforderung an NetScaler
  2. NetScaler sendet Bindungsanforderung an MC1
  3. MC1 sendet Bindungsantwort an NetScaler
  4. NetScaler sendet Bind-Antwort 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 Bindungsanforderung an MC2
  9. MC2 sendet Bind-Antwort 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 Bindungsanforderung an NetScaler
  16. NetScaler sendet Bind-Antwort 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 dient dem 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 dient dem in der Nachricht angegebenen Adressbereich)
  25. NetScaler leitet deliver_sm_resp an MC2 weiter
  26. NetScaler leitet die alert_notification an ESME1 weiter

Zustandsüberwachung von Message Centern

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 Nachrichtencenter und sendet ein enquire_link-Paket. Je nach Erfolg oder Ausfall des Prüfpunkts wird der Dienst als UP oder DOWN gekennzeichnet.

Inhaltsumschaltung auf Nachrichtencentern

Message Center können mehrere Verbindungen von ESMEs akzeptieren (oder Anfragen binden). Sie können den Citrix ADC so konfigurieren, dass diese Anforderungen auf der Grundlage der SMPP-Bindungsparameter umgeschaltet werden. 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 Nachrichtencenter 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 Nachrichtencenter 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 Nachrichtencenter aus, wenn der ESME-Typ VMS ist. VMS steht für Voicemail-System.

Beispiel:

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

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

Beispiel:

SMPP.BINDINFO.ADDR_TON.EQ(1)

  • Basierend auf dem Nummernplanindikator (NPI) der ESME: Im folgenden Beispielausdruck wählt der ADC ein bestimmtes Nachrichtencenter 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 Nachrichtencenter aus, wenn der Bindungstyp TRANSCEIVER lautet. (Ein Transceiver kann Nachrichten senden und empfangen.)

Beispiel:

SMPP.BINDINFO.TYPE.EQ(TRANSCEIVER)

Verkettete Nachrichtenverarbeitung

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

Wenn ein Client von einer aktiven Verbindung getrennt wird, wird die Verbindung zum Nachrichtencenter nicht geschlossen. Es wird für Anfragen von anderen Clients wiederverwendet.

Einschränkung

Message-IDs, die länger als 59 Bytes sind, werden nicht unterstützt. Wenn die vom Nachrichtencenter zurückgegebene Nachrichtenkennung mehr als 59 Byte beträgt, schlagen Nebenvorgänge fehl, und der Citrix ADC antwortet mit einer Fehlermeldung.

Konfigurieren des SMPP-Lastenausgleichs auf dem Citrix ADC

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 Bind-Anforderung des Benutzers akzeptiert. Der Benutzer ist in der Regel ein ESME.
  2. Fügen Sie einen virtuellen Lastausgleichsserver hinzu, wobei das Protokoll als SMPP angegeben wird.
  3. Fügen Sie einen Dienst hinzu, der das Protokoll als SMPP angibt, und eine benutzerdefinierte Server-ID, die für jeden Server eindeutig ist. Binden Sie den Dienst an den zuvor erstellten virtuellen Lastenausgleichsserver.
  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. Legen Sie die SMPP-Parameter fest, z. B. den Clientmodus und die Nachrichtenwarteschlange.

So konfigurieren Sie den SMPP-Lastenausgleich mithilfe der Befehlszeile

Geben Sie an der Eingabeaufforderung 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  

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

So konfigurieren Sie den SMPP-Lastenausgleich mit dem Konfigurationsdienstprogramm

  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 Parameter wie für Ihre Bereitstellung erforderlich 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.