ADC

Lastausgleich für einer Gruppe von SIP-Servern

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

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

Abbildung 1. SIP-basiertes Kommunikationssystem

SIP

Mit einem NetScaler können Sie SIP-Nachrichten über UDP oder über TCP (einschließlich TLS) laden. Sie können den NetScaler so konfigurieren, dass er SIP-Anfragen an eine Gruppe von SIP-Proxyservern ausgleicht. Dazu erstellen Sie einen virtuellen Lastausgleichsserver, bei dem die Load-Balancing-Methode und der Persistenztyp auf eine der folgenden Kombinationen festgelegt sind:

  • Call-ID-Hash-Load-Balancing-Methode ohne Persistenzeinstellung
  • Call-ID-basierte Persistenz mit geringster Verbindung oder Round-Robin-Load-Balancing-Methode
  • Regelbasierte Persistenz mit der geringsten Verbindungs- oder Roundrobin-Lastausgleichsmethode

Standardmäßig hängt der NetScaler RPORT über den Header der SIP-Anforderung an, so dass der Server die Antwort an die Quell-IP-Adresse und den Port zurücksendet, 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 Domainnamen hinzufügen, der mit der IP-Adresse des virtuellen SIP-Servers übereinstimmt. Außerdem müssen die SIP-Proxys mit einer gemeinsamen Datenbank kommunizieren, um Registrierungsinformationen auszutauschen.

Vom Server initiierter Datenverkehr

Für vom SIP-Server initiierten ausgehenden Datenverkehr konfigurieren Sie RNAT auf dem NetScaler 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 Anfrage.

Für serverinitiierten SSL-Verkehr verwendet der NetScaler ein integriertes Zertifikatsschlüsselpaar. Wenn Sie ein benutzerdefiniertes Zertifikatsschlüsselpaar verwenden möchten, binden Sie das benutzerdefinierte Zertifikatsschlüsselpaar an den internen NetScaler-Dienst mit dem Namen nsrnatsip-127.0.0.1-5061.

Unterstützung für Richtlinien und Ausdrücke

Die Sprache der NetScaler Standardausdrücke enthält mehrere Ausdrücke, die mit SIP-Verbindungen (Session Initiation Protocol) arbeiten. 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 Richtlinien für Content Switching, Ratenbegrenzung, Responder und Rewrite verwenden.

Konfiguration des Load Balancings für SIP-Signalverkehr über TCP oder UDP

Der NetScaler kann SIP-Server, die Anfragen über UDP oder TCP senden, einschließlich TCP-Verkehr, der durch TLS gesichert ist, Load Balancing durchführen. Der ADC bietet die folgenden Diensttypen für den Lastenausgleich der SIP-Server:

  • 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. Der NetScaler unterstützt die folgenden Modi:
    • Durchgängige 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 Lastenausgleich 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 Diensttyp//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 Load-Balancings für SIP-Verkehr:

  1. Konfigurieren Sie Dienste und konfigurieren Sie einen virtuellen Server für jede Art von SIP-Verkehr, den Sie ausgleichen möchten:

    • SIP_UDP — Wenn Sie den SIP-Verkehr über UDP ausgleichen.
    • SIP_TCP — Wenn Sie den SIP-Verkehr über TCP ausgleichen.
    • SIP_SSL — Wenn Sie den SIP-Verkehr über TCP ausgleichen und sichern.

    Hinweis: Wenn Sie SIP_SSL verwenden, stellen Sie sicher, dass Sie ein SSL-Zertifikatsschlü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 (tcp-default) überwachen möchten, erstellen Sie einen benutzerdefinierten Monitor und binden Sie ihn an die Dienste. Der NetScaler bietet zwei benutzerdefinierte Monitortypen, SIP-UDP und SIP-TCP, für die Überwachung von SIP-Diensten.

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

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

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

So konfigurieren Sie mithilfe der Befehlszeilenschnittstelle ein grundlegendes Load-Balancing-Setup für SIP-Verkehr

Erstellen Sie einen oder mehrere Dienste. Geben Sie in der Befehlszeile Folgendes ein:

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

Beispiel:

add service Service-SIP-UDP-1 192.0.2.5 SIP_UDP 80
<!--NeedCopy-->

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 in der Befehlszeile Folgendes ein:

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

Beispiel:

add lb vserver Vserver-LB-1 SIP_UDP 10.102.29.60 80
<!--NeedCopy-->

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

bind lb vserver <name> <serverName>
<!--NeedCopy-->

Beispiel:

bind lb vserver Vserver-LB-1 Service-SIP-UDP-1
<!--NeedCopy-->

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

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

bind lb monitor <monitorName> <ServiceName>
<!--NeedCopy-->

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

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

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

Beispiel:

bind ssl vserver Vserver-LB-1 -certkeyName CertKey-SSL-1
<!--NeedCopy-->

Konfigurieren Sie RNAT so, wie es Ihre Netzwerktopologie erfordert. Geben Sie an der Befehlszeile einen der folgenden Befehle ein, um jeweils 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 und eine eindeutige IP-Adresse als NAT-IP-Adresse verwendet, einen RNAT-Eintrag, der eine ACL als Bedingung und einen SNIP als NAT-IP-Adresse verwendet, oder einen RNAT-Eintrag, der eine ACL als Bedingung verwendet und eindeutige IP-Adresse als NAT-IP-Adresse:

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

bind rnat <name> <natIP>@ …

show rnat
<!--NeedCopy-->

Beispiel:

add rnat RNAT-1 192.168.1.0 255.255.255.0

bind rnat RNAT-1 -natip 10.102.29.50
<!--NeedCopy-->

Wenn Sie ein benutzerdefiniertes Zertifikatsschlüsselpaar verwenden möchten, binden Sie das benutzerdefinierte Zertifikatsschlüsselpaar an den internen NetScaler-Dienst mit dem Namen nsrnatsip-127.0.0.1-5061.

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

bind ssl service <serviceName> -certkeyName <string>
<!--NeedCopy-->

Beispiel:

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

bind ssl service nsrnatsip-127.0.0.1-5061 -certkeyName c1
<!--NeedCopy-->

Wenn Sie RPORT an die SIP-Nachrichten anhängen möchten, die der SIP-Server initiiert, geben Sie in der Befehlszeile den folgenden Befehl ein:

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

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

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

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

So konfigurieren Sie ein grundlegendes Load Balancing-Setup für SIP-Datenverkehr über die grafische Benutzeroberfläche

  1. Navigieren Sie zu Traffic Management > Load Balancing > VirtuelleServer 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 Dienst vom Typ SIP_UDP, SIP_TCP oder SIP_SSL hinzu.

  3. (Optional) Klicken Sie auf den Abschnitt Monitor und fügen Sie einen Monitor des Typs hinzu: SIP-UDP oder SIP-TCP.

  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 Zertifikatsschlüsselpaar an den virtuellen Server.

  6. Konfigurieren Sie RNAT so, wie es Ihre Netzwerktopologie erfordert. Um RNAT zu konfigurieren:

    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“ einen der folgenden Schritte aus:
      • Wenn Sie die Netzwerkadresse als Bedingung für das Erstellen eines RNAT-Eintrags verwenden möchten, klicken Sie auf Netzwerk und legen Sie die folgenden Parameter fest:
        • Netzwerk
        • Netzmaske
      • Wenn Sie eine erweiterte ACL als Bedingung für das Erstellen eines RNAT-Eintrags verwenden möchten, klicken Sie auf ACL und legen Sie die folgenden Parameter fest:
        • ACL-Name
        • Port umleiten
    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 der konfigurierten NAT-IPs angezeigt.
    7. Klicken Sie auf Erstellenund dann auf Schließen.

    Wenn Sie ein benutzerdefiniertes Zertifikatsschlüsselpaar verwenden möchten, binden Sie das benutzerdefinierte Zertifikatsschlüsselpaar an den internen NetScaler-Dienst mit dem Namen nsrnatsip-127.0.0.1-5061. Um das Paar zu binden:

    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 Zertifikatsschlüsselpaar an den internen Dienst.
  7. Wenn Sie RPORT an die SIP-Nachrichten anhängen möchten, die der SIP-Server initiiert, konfigurieren Sie die SIP-Parameter. Navigieren Sie zu Traffic Management > Load Balancing und klicken Sie auf SIP-Einstellungen ändern, legen Sie die verschiedenen SIP-Parameter fest.

Beispiel für einen SIP-Ausdruck und eine Richtlinie: Komprimierung in Client-Anfragen aktiviert

Ein NetScaler kann komprimierte Client-SIP-Anfragen nicht verarbeiten, daher schlägt die Client-SIP-Anfrage fehl.

Sie können eine Responder-Richtlinie konfigurieren, die die SIP NEGOTITE-Nachricht vom Client abfängt und nach dem Komprimierungsheader sucht. Wenn die Nachricht einen Kompressionsheader enthält, antwortet die Richtlinie mit „400 Bad Request“, sodass der Client die Anfrage 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
<!--NeedCopy-->