Citrix ADC

Lastverteilung einer Gruppe von SIP-Servern

Das Session Initiation Protocol (SIP) wurde entwickelt, um Multimedia-Kommunikationssitzungen zu initiieren, zu verwalten und zu beenden. Es hat sich als Standard für Internet-Telefonie (VoIP) entwickelt. SIP-Nachrichten können über TCP oder UDP übertragen werden. SIP-Nachrichten sind von zwei Arten: Anforderungsnachrichten und Antwortnachrichten.

Der Datenverkehr in einem SIP-basierten Kommunikationssystem wird über dedizierte Geräte und Anwendungen (Entitäten) geleitet. In einer Multimedia-Kommunikationssitzung tauschen diese Entitäten Nachrichten aus. Die folgende Abbildung zeigt ein grundlegendes SIP-basiertes Kommunikationssystem:

Abbildung 1. SIP-basiertes Kommunikationssystem

nippen

Mit einem Citrix ADC können Sie SIP-Nachrichten über UDP oder über TCP (einschließlich TLS) laden. Sie können den Citrix ADC so konfigurieren, dass SIP-Anforderungen an eine Gruppe von SIP-Proxyservern Lastenausgleich ausgeglichen werden. Dazu erstellen Sie einen virtuellen Lastausgleichsserver mit der Load Balancing-Methode und dem Persistenztyp auf eine der folgenden Kombinationen festgelegt:

  • Call-ID-Hash-Lastausgleichsmethode ohne Persistenzeinstellung
  • Call-ID-basierte Persistenz mit der geringsten Verbindung oder Roundrobin-Lastausgleichsmethode
  • Regelbasierte Persistenz mit der geringsten Verbindungs- oder Roundrobin-Lastausgleichsmethode

Außerdem fügt Citrix ADC standardmäßig RPORT an den via Header der SIP-Anforderung an, sodass der Server die Antwort zurück an die Quell-IP-Adresse und den Port sendet, von dem die Anforderung stammt.

Hinweis: Damit der Lastenausgleich funktioniert, müssen Sie die SIP-Proxys so konfigurieren, dass sie keine privaten IP-Adressen oder privaten Domänen zum SIP-Header/Payload hinzufügen. SIP-Proxys müssen dem SIP-Header einen Domänennamen hinzufügen, der in die IP-Adresse des virtuellen SIP-Servers aufgelöst wird. Außerdem müssen die SIP-Proxys mit einer gemeinsamen Datenbank kommunizieren, um Registrierungsinformationen gemeinsam zu nutzen.

Serverinitiierter Datenverkehr

Konfigurieren Sie RNAT auf dem Citrix ADC für den SIP-Server initiierten ausgehenden Datenverkehr so, dass die von den Clients verwendeten privaten IP-Adressen in öffentliche IP-Adressen übersetzt werden.

Wenn Sie SIP-Parameter konfiguriert haben, die den RNAT Quell- oder Zielport enthalten, vergleicht die Appliance die Werte der Quell- und Zielports der Anforderungspakete mit dem RNAT Quellport und dem RNAT Zielport. Wenn einer der Werte übereinstimmt, aktualisiert die Appliance den VIA-Header mit RPORT. Die SIP-Antwort des Clients durchläuft dann denselben Pfad wie die Anforderung.

Für serverinitiierten SSL-Datenverkehr verwendet Citrix ADC ein integriertes Zertifikatschlüsselpaar. Wenn Sie ein benutzerdefiniertes Zertifikatschlüsselpaar verwenden möchten, binden Sie das benutzerdefinierte Zertifikatschlüsselpaar an den internen Citrix ADC Dienst nsrnatsip-127.0.0.1-5061.

Unterstützung für Richtlinien und Ausdrücke

Die Citrix ADC Standardausdruckssprache enthält eine Reihe von Ausdrücken, die auf SIP-Verbindungen (Session Initiation Protocol) ausgeführt werden. Diese Ausdrücke können nur an SIP-basierte (sip_udp, sip_tcp oder sip_ssl) virtuelle Server und an globale Bindungspunkte gebunden werden. Sie können diese Ausdrücke in Inhaltswechsel-, Ratenbegrenzungs-, Responder- und Umschreibrichtlinien verwenden.

Konfigurieren des Lastenausgleichs für SIP-Signalverkehr über TCP oder UDP

Citrix ADC kann SIP-Server mit Lastenausgleich ausgleichen, die Anforderungen über UDP oder TCP senden, einschließlich TCP-Datenverkehr, der durch TLS gesichert ist. Der ADC stellt die folgenden Diensttypen zur Lastverteilung der SIP-Server bereit:

  • SIP_UDP — Wird verwendet, wenn SIP-Server SIP-Nachrichten über UDP senden.
  • SIP_TCP — Wird verwendet, wenn SIP-Server SIP-Nachrichten über TCP senden.
  • SIP_SSL — Wird verwendet, um den SIP-Signalverkehr über TCP mithilfe von SSL oder TLS zu sichern. Citrix ADC unterstützt die folgenden Modi:
    • End-to-End-TLS-Verbindung zwischen dem Client, dem ADC und dem SIP-Server.
    • TLS-Verbindung zwischen dem Client und dem ADC und TCP-Verbindung zwischen dem ADC und dem SIP-Server.
    • TCP-Verbindung zwischen dem Client und dem ADC und TLS-Verbindung zwischen dem ADC und dem SIP-Server.

Die folgende Abbildung zeigt die Topologie eines Setups, das für den Lastausgleich einer Gruppe von SIP-Servern konfiguriert ist, die SIP-Nachrichten über TCP oder UDP senden.

Abbildung 2. SIP Load Balancing Topologie

sip-lb-Topologie

Entitätstyp Name IP-Adresse Port Dienstart/Protokoll
Virtueller Server Vserver-LB-1 10.102.29.65 80 SIP_UDP/SIP_TCP/SIP_SSL
Services Service-SIP-1 192.168.1.6 80 SIP_UDP/SIP_TCP/SIP_SSL
  Service-SIP-2 192.168.1.5 80 SIP_UDP/SIP_TCP/SIP_SSL
Monitore Standard Ohne 80 SIP_UDP/SIP_TCP/SIP_SSL

Im Folgenden finden Sie eine Übersicht über die Konfiguration des grundlegenden Lastausgleichs für SIP-Datenverkehr:

  1. Konfigurieren Sie Dienste, und konfigurieren Sie einen virtuellen Server für jeden SIP-Datenverkehr, den Sie Lastausgleich ausführen möchten:

    • SIP_UDP — Wenn Sie den SIP-Datenverkehr über UDP laden.
    • SIP_TCP — Wenn Sie den SIP-Datenverkehr über TCP laden.
    • SIP_SSL — Wenn Sie Lastausgleich und Sicherung des SIP-Datenverkehrs über TCP.

    Hinweis: Wenn Sie SIP_SSL verwenden, stellen Sie sicher, dass Sie ein SSL-Zertifikatschlüsselpaar erstellen. Weitere Informationen finden Sie unter Hinzufügen eines Zertifikatsschlüsselpaars.

  2. Binden Sie die Dienste an die virtuellen Server.

  3. Wenn Sie die Zustände der Dienste mit einem anderen Monitor als dem Standardmonitor überwachen möchten (tcp-default), erstellen Sie einen benutzerdefinierten Monitor und binden ihn an die Dienste. Das Citrix ADC bietet zwei benutzerdefinierte Monitortypen, SIP-UDP und SIP-TCP, zur Überwachung von SIP-Diensten.

  4. Wenn Sie einen virtuellen SIP_SSL-Server verwenden, binden Sie ein SSL-Zertifikatschlüsselpaar an den virtuellen Server.

  5. Wenn Sie den Citrix ADC als Gateway für die SIP-Server in Ihrer Bereitstellung verwenden, konfigurieren Sie RNAT.

  6. Wenn Sie RPORT an die vom SIP-Server initiierten SIP-Nachrichten anhängen möchten, konfigurieren Sie die SIP-Parameter.

So konfigurieren Sie ein grundlegendes Lastausgleichs-Setup für SIP-Datenverkehr mit der Befehlszeilenschnittstelle

Erstellen Sie einen oder mehrere Dienste. Geben Sie an der Eingabeaufforderung Folgendes ein:

add service <name> <serverName> (SIP_UDP | SIP_TCP | SIP_SSL) <port>

Beispiel:

add service Service-SIP-UDP-1 192.0.2.5 SIP_UDP 80

Erstellen Sie so viele virtuelle Server wie nötig, um die von Ihnen erstellten Dienste zu verarbeiten. Der virtuelle Servertyp muss mit dem Typ der Dienste übereinstimmen, die Sie an ihn binden. Geben Sie an der Eingabeaufforderung Folgendes ein:

add lb vserver <name> <serverName> (SIP_UDP | SIP_TCP | SIP_SSL) <port>

Beispiel:

add lb vserver Vserver-LB-1 SIP_UDP 10.102.29.60 80

Binden Sie jeden Dienst an einen virtuellen Server. Geben Sie an der Eingabeaufforderung Folgendes ein:

bind lb vserver <name> <serverName>

Beispiel:

bind lb vserver Vserver-LB-1 Service-SIP-UDP-1

(Optional) Erstellen Sie einen benutzerdefinierten Monitor vom Typ SIP-UDP oder SIP-TCP, und binden Sie den Monitor an den Dienst. Geben Sie an der Eingabeaufforderung Folgendes ein:

add lb monitor <monitorName> <monitorType> [<interval>]

bind lb monitor <monitorName> <ServiceName>

Beispiel:

add lb monitor mon1 sip-UDP -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

bind monitor mon1 Service-SIP-UDP-1

Wenn Sie einen virtuellen SIP_SSL-Server erstellt haben, binden Sie ein SSL-Zertifikatsschlüsselpaar an den virtuellen Server. Geben Sie an der Eingabeaufforderung Folgendes ein: Geben Sie an der Eingabeaufforderung Folgendes ein:

bind ssl vserver <vServerName> -certkeyName <certificate-KeyPairName> -CA –skipCAName

Beispiel:

bind ssl vserver Vserver-LB-1 -certkeyName CertKey-SSL-1

Konfigurieren Sie RNAT entsprechend Ihrer Netzwerktopologie. Geben Sie an der Eingabeaufforderung einen der folgenden Befehle ein, um einen RNAT-Eintrag zu erstellen, der eine Netzwerkadresse als Bedingung und SNIP als NAT-IP-Adresse verwendet, einen RNAT-Eintrag, der eine Netzwerkadresse als Bedingung verwendet, und eine eindeutige IP-Adresse als NAT-IP-Adresse, einen RNAT-Eintrag, der eine ACL als die Bedingung und ein SNIP als NAT-IP-Adresse oder ein RNAT-Eintrag, der eine ACL als Bedingung und eine eindeutige IP-Adresse als NAT-IP-Adresse verwendet:

add rnat <name> (<network> | (<aclname> [-redirectPort <port>]))

bind rnat <name> <natIP>@ …

show rnat

Beispiel:

add rnat RNAT-1 192.168.1.0 255.255.255.0

bind rnat RNAT-1 -natip 10.102.29.50

Wenn Sie ein benutzerdefiniertes Zertifikatschlüsselpaar verwenden möchten, binden Sie das benutzerdefinierte Zertifikatschlüsselpaar an den internen Citrix ADC Dienst nsrnatsip-127.0.0.1-5061.

add ssl certKey <certkeyName> -cert <string> [-key <string>]

bind ssl service <serviceName> -certkeyName <string>

Beispiel:

add ssl certKey c1 -cert cert.epm -key key.ky

bind ssl service nsrnatsip-127.0.0.1-5061 -certkeyName c1

Wenn Sie RPORT an die vom SIP-Server initiierten SIP-Nachrichten anhängen möchten, geben Sie an der Eingabeaufforderung den folgenden Befehl ein:

set lb sipParameters -rnatSrcPort <rnatSrcPort> -rnatDstPort<rnatDstPort> -retryDur <integer> -addRportVip <addRportVip> - sip503RateThreshold <sip503_rate_threshold_value>

Beispielkonfiguration für den Lastenausgleich des SIP-Datenverkehrs über UDP

add service service-UDP-1 10.102.29.5 SIP_UDP 80

Done

add lb vserver vserver-LB-1 SIP_UDP 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-UDP-1

Done

add lb mon mon1 sip-udp -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-UDP-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done

Beispielkonfiguration für den Lastenausgleich des SIP-Datenverkehrs über TCP

add service service-TCP-1 10.102.29.5 SIP_TCP 80

Done

add lb vserver vserver-LB-1 SIP_TCP 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-TCP-1

Done

add lb mon mon1 sip-tcp -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-TCP-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done

Beispielkonfiguration für Lastenausgleich und Sicherung des SIP-Datenverkehrs über TCP

add service service-SIP-SSL-1 10.102.29.5 SIP_SSL 80

Done

add lb vserver vserver-LB-1 SIP_SSL 10.102.29.60 80

Done

bind lb vserver vserver-LB-1 service-SIP-SSL

Done

add lb mon mon1 sip-tCP -sipMethod REGISTER -sipuRI sip:mon@test.com -sipregURI sip:mon@test.com -respcode 200

Done

bind mon mon1 service-SIP-SSL

Done

bind ssl vserver Vserver-LB-1 -certkeyName CertKey-SSL-1

Done

add rnat RNAT-1 192.168.1.0 255.255.255.0

Done

set lb sipParameters -rnatSrcPort 5060 -rnatDstPort 5060 -retryDur 1000 -addRportVip ENABLED -sip503RateThreshold 1000

Done

So konfigurieren Sie ein grundlegendes Lastausgleichs-Setup für SIP-Datenverkehr mit dem Konfigurationsdienstprogramm

  1. Navigieren Sie zu Traffic Management > Load Balancing > Virtuelle Server, und fügen Sie einen virtuellen Server vom Typ SIP_UDP, SIP_TCP oder SIP_SSL hinzu.

  2. Klicken Sie auf den Abschnitt Service, und fügen Sie einen Service vom Typ SIP_UDP, SIP_TCP oder SIP_SSL hinzu.

  3. (Optional) Klicken Sie auf den Abschnitt Monitor, und fügen Sie einen Monitor vom Typ SIP-UDP oder SIP-TCP hinzu.

  4. Binden Sie den Monitor an den Dienst, und binden Sie den Dienst an den virtuellen Server.

  5. Wenn Sie einen virtuellen SIP_SSL-Server erstellt haben, binden Sie ein SSL-Zertifikatsschlüsselpaar an den virtuellen Server. Klicken Sie auf den Abschnitt Zertifikate, und binden Sie ein Zertifikatschlüsselpaar an den virtuellen Server.

  6. Konfigurieren Sie RNAT entsprechend Ihrer Netzwerktopologie. So konfigurieren Sie RNAT:

    1. Navigieren Sie zu System > Netzwerk > Routen.
    2. Klicken Sie auf der Seite Routen auf die Registerkarte RNAT.
    3. Klicken Sie im Detailbereich auf RNAT konfigurieren.
    4. Führen Sie im Dialogfeld RNAT konfigurieren eine der folgenden Aktionen aus:
      • Wenn Sie die Netzwerkadresse als Bedingung für die Erstellung eines RNAT Eintrags verwenden möchten, klicken Sie auf Netzwerk und legen Sie die folgenden Parameter fest:
        • Network
        • Netzmaske
      • Wenn Sie eine erweiterte ACL als Bedingung für die Erstellung eines RNAT Eintrags verwenden möchten, klicken Sie auf ACL, und legen Sie die folgenden Parameter fest:
        • ACL-Name
        • Umleitungsport
    5. Um eine SNIP-Adresse als NAT-IP-Adresse festzulegen, fahren Sie mit Schritt 7 fort.
    6. Um eine eindeutige IP-Adresse als NAT-IP festzulegen, wählen Sie in der Liste Verfügbare NAT-IP (n) die IP-Adresse aus, die Sie als NAT-IP festlegen möchten, und klicken Sie dann auf Hinzufügen. Die ausgewählte NAT-IP wird in der Liste Konfigurierte NAT-IP (n) angezeigt.
    7. Klicken Sie auf Erstellen und dann auf Schließen.

    Wenn Sie ein benutzerdefiniertes Zertifikatschlüsselpaar verwenden möchten, binden Sie das benutzerdefinierte Zertifikatschlüsselpaar an den internen Citrix ADC Dienst nsrnatsip-127.0.0.1-5061. So binden Sie das Paar:

    1. Navigieren Sie zu Traffic Management > Load Balancing > Services, und klicken Sie auf die Registerkarte Interne Dienste.
    2. Wählen Sie nsrnatsip-127.0.0.1-5061 und klicken Sie auf Bearbeiten.
    3. Klicken Sie auf den Abschnitt Zertifikate, und binden Sie ein Zertifikatschlüsselpaar an den internen Dienst.
  7. Wenn Sie RPORT an die vom SIP-Server initiierten SIP-Meldungen anhängen möchten, konfigurieren Sie die SIP-Parameter. Navigieren Sie zu Traffic Management > Load Balancing, und klicken Sie auf SIP-Einstellungen ändern, und legen Sie die verschiedenen SIP-Parameter fest.

Beispiel für SIP-Ausdruck und Richtlinie: Komprimierung in Clientanforderungen aktiviert

Ein Citrix ADC kann komprimierte Client-SIP-Anforderungen nicht verarbeiten, daher schlägt die Client-SIP-Anforderung fehl.

Sie können eine Responder-Richtlinie konfigurieren, die die SIP Negotiate-Nachricht vom Client abfängt und nach dem Komprimierungsheader sucht. Wenn die Nachricht einen Komprimierungsheader enthält, antwortet die Richtlinie mit 400 fehlerhafte Anforderung, sodass der Client die Anforderung erneut sendet, ohne sie zu komprimieren.

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um die Responder-Richtlinie zu erstellen:

add responder action sipaction1 respondwith q{"SIP/2.0 400 Bad Requestrnrn"}

Done

add responder policy sippol1

add responder policy sippol1 "SIP.REQ.METHOD.EQ("NEGOTIATE")&&SIP.REQ.HEADER("Compression").EXISTS" sipaction1