ADC

TCP-Optimierungskonfiguration

Bevor Sie die TCP-Optimierung konfigurieren, wenden Sie die folgenden grundlegenden Konfigurationseinstellungen auf der Citrix ADC Appliance an:

Erstkonfiguration:

enable ns feature LB IPv6PT
enable ns mode FR L3 USIP MBF Edge USNIP PMTUD
disable ns feature SP
disable ns mode TCPB
set lb parameter -preferDirectRoute NO
set lb parameter -vServerSpecificMac ENABLED
set l4param -l2ConnMethod Vlan
set rsskeytype -rsstype SYMMETRIC
set ns param -useproxyport DISABLED
<!--NeedCopy-->

Hinweis

Starten Sie die Citrix ADC Appliance neu, wenn Sie den Systemparameter rsskeytype ändern.

TCP-Terminierung

Damit Citrix ADC T1 die TCP-Optimierung anwenden kann, muss zuerst der eingehende TCP-Verkehr beendet werden. Zu diesem Zweck sollte ein TCP-vserver mit Platzhaltern erstellt und konfiguriert werden, um eingehenden Datenverkehr abzufangen und ihn dann an den Internet-Router weiterzuleiten.

Statische oder dynamische Routing-Umgebung

In Umgebungen mit statischem oder dynamischem Routing kann sich vserver auf Routing-Tabelleninformationen verlassen, um Pakete an den Internet-Router weiterzuleiten. Die Standardroute muss auf den Internet-Router zeigen, und auch die Routing-Einträge für Client-Subnetze zum WLAN-Router sollten vorhanden sein:

Beispiel:

add lb vserver vsrv-wireless TCP * * -persistenceType NONE -Listenpolicy "CLIENT.VLAN.ID.EQ(100) && SYS.VSERVER("vsrv-wireless").STATE.EQ(UP)" -m IP -cltTimeout 9000
add route 0.0.0.0 0.0.0.0 192.168.2.1
add route 10.0.0.0 255.0.0.0 192.168.1.1
<!--NeedCopy-->

VLAN-to-VLAN (PBR) -Umgebung

Es gibt Kundenumgebungen, in denen der Abonnentenverkehr in mehrere Datenflüsse segmentiert ist und auf der Grundlage der Parameter des eingehenden Datenverkehrs an verschiedene Router weitergeleitet werden muss. Policy Based Routing (PBR) kann verwendet werden, um Pakete basierend auf eingehenden Paketparametern wie VLAN, MAC-Adresse, Schnittstelle, Quell-IP, Quellport, Ziel-IP-Adresse und Zielport weiterzuleiten.

localized image

Beispiel:

add lb vserver vsrv-wireless TCP * * -m IP -l2Conn ON -listenpolicy "CLIENT.VLAN.ID.EQ(100) || CLIENT.VLAN.ID.EQ(101) || CLIENT.VLAN.ID.EQ(102)"

add ns pbr pbr-vlan100-to-vlan200 ALLOW -vlan 100 -nexthop 172.16.200.1

add ns pbr pbr-vlan101-to-vlan201 ALLOW -vlan 101 -nexthop 172.16.201.1

add ns pbr pbr-vlan102-to-vlan202 ALLOW -vlan 102 -nexthop 172.16.202.1
<!--NeedCopy-->

Die Verwendung von Policy Based Routing zur Weiterleitung von TCP-optimiertem Datenverkehr ist eine neue Funktion, die in Version 11.1 50.10 hinzugefügt wurde. In früheren Versionen ist es eine alternative Lösung für Multi-VLAN-Umgebungen, mehrere vServer-Entitäten im “Modus MAC” pro VLAN zu haben. Jeder vserver hat einen gebundenen Dienst, der den Internet-Router für den jeweiligen Flow darstellt.

Beispiel:

add server internet_router_1 172.16.200.1

add server internet_router_2 172.16.201.1

add server internet_router_3 172.16.202.1

add service svc-internet-1 internet_router_1 TCP * -usip YES -useproxyport NO

add service svc-internet-2 internet_router_2 TCP * -usip YES -useproxyport NO

add service svc-internet-3 internet_router_3 TCP * -usip YES -useproxyport NO

bind service svc-internet-1 -monitorName arp

bind service svc-internet-2 -monitorName arp

bind service svc-internet-3 -monitorName arp

add lb vserver vsrv-wireless-1 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(100) && SYS.VSERVER("vsrv-wireless-1").STATE.EQ(UP)" -m MAC -l2Conn ON

add lb vserver vsrv-wireless-2 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(101) && SYS.VSERVER("vsrv-wireless-2").STATE.EQ(UP)" -m MAC -l2Conn ON

add lb vserver vsrv-wireless-3 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(102) && SYS.VSERVER("vsrv-wireless-3").STATE.EQ(UP)" -m MAC -l2Conn ON

bind lb vserver vsrv-wireless-1 svc-internet-1

bind lb vserver vsrv-wireless-2 svc-internet-2

bind lb vserver vsrv-wireless-3 svc-internet-3
<!--NeedCopy-->

Hinweis:

Der vServer-Modus ist MAC, im Gegensatz zu früheren Beispielen, in denen es der Modus IP ist. Dies ist erforderlich, um die Ziel-IP-Informationen zu speichern, wenn wir Dienste haben, die an vServer gebunden sind. Außerdem muss die zusätzliche PBR-Konfiguration nicht optimierten Datenverkehr weiterleiten.

TCP-Optimierung

Die sofort einsatzbereite Citrix ADC TCP-Terminierung ist für die TCP-Passthrough-Funktionalität konfiguriert. TCP-Passthrough bedeutet im Wesentlichen, dass Citrix ADC T1 einen Client-Server-TCP-Stream transparent abfangen kann, jedoch keine separaten Client/Server-Puffer beibehält oder auf andere Weise Optimierungstechniken anwendet.

Um die TCP-Optimierung zu aktivieren, wird ein TCP-Profil mit dem Namen nstcpprofile verwendet, um TCP-Konfigurationen anzugeben. Dieses wird verwendet, wenn auf Dienst- oder virtueller Serverebene keine TCP-Konfigurationen bereitgestellt werden und es wie folgt geändert werden sollte:

Befehl:

add ns tcpProfile nstcpprofile -WS ENABLED -SACK ENABLED -WSVal 8 -mss 1460 -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 800 -bufferSize 4000000 -flavor BIC -dynamicReceiveBuffering ENABLED -KA ENABLED -sendBuffsize 4000000 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -ecn ENABLED -frto ENABLED -maxcwnd 1000000 -fack ENABLED -rstMaxAck enABLED -tcpmode ENDPOINT
<!--NeedCopy-->

Hinweis:

Wenn kein Profil explizit erstellt und an vserver und service gebunden ist, ist das Profil nstcp_default_profile standardmäßig gebunden.

Falls mehrere TCP-Profile erforderlich sind, können zusätzliche TCP-Profile erstellt und dem entsprechenden virtuellen Server zugeordnet werden

Befehl:

add ns tcpProfile custom_profile -WS ENABLED -SACK ENABLED -WSVal 8 -mss 1460 -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 800 -bufferSize 4000000 -flavor BIC -dynamicReceiveBuffering ENABLED -KA ENABLED -sendBuffsize 4000000 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -ecn ENABLED -frto ENABLED -maxcwnd 1000000 -fack ENABLED -rstMaxAck enABLED -tcpmode ENDPOINT

set lb vserver vsrv-wireless -tcpProfileName custom_profile
<!--NeedCopy-->

Hinweis:

Für Bereitstellungen mit vserver -m MAC und service sollte dasselbe Profil dem Dienst zugeordnet werden.

set service svc-internet -tcpProfileName custom_profile
<!--NeedCopy-->

TCP-Optimierungsmöglichkeiten

Die meisten relevanten TCP-Optimierungsfunktionen einer Citrix ADC Appliance werden über ein entsprechendes TCP-Profil verfügbar gemacht. Typische CLI-Parameter, die bei der Erstellung eines TCP-Profils berücksichtigt werden sollten, sind die folgenden:

  1. Fensterskalierung (WS): Die TCP-Fensterskalierung ermöglicht eine Erhöhung der Größe des TCP-Empfangsfensters auf über 65535 Byte. Es hilft, die TCP-Leistung insgesamt zu verbessern, insbesondere in Netzwerken mit hoher Bandbreite und langer Verzögerung. Es hilft bei der Reduzierung der Latenz und der Verbesserung der Reaktionszeit über TCP.
  2. Selektive Bestätigung (SACK): TCP SACK behebt das Problem des Verlusts mehrerer Pakete, wodurch die Gesamtdurchsatzkapazität reduziert wird. Mit einer selektiven Bestätigung kann der Empfänger den Absender über alle erfolgreich empfangenen Segmente informieren, sodass der Sender nur die Segmente erneut übertragen kann, die verloren gegangen sind. Diese Technik hilft T1, den Gesamtdurchsatz zu verbessern und die Verbindungslatenz zu reduzieren.
  3. Fensterskalierungsfaktor (WSVal): Faktor, der zur Berechnung der neuen Fenstergröße verwendet wird. Es muss mit einem hohen Wert konfiguriert werden, damit das von NS angekündigte Fenster mindestens der Puffergröße entspricht.
  4. Maximale Segmentgröße (MSS): MSS eines einzelnen TCP-Segments. Dieser Wert hängt von der MTU-Einstellung auf Zwischenroutern und Endclients ab. Ein Wert von 1460 entspricht einer MTU von 1500.
  5. maxBurst: Maximale Anzahl von TCP-Segmenten, die in einem Burst zulässig sind.
  6. Größe des anfänglichen Überlastungsfensters (initialCwnd): Die Größe des anfänglichen Überlastungsfensters von TCP bestimmt die Anzahl der Byte, die zu Beginn der Transaktion noch ausstehen können. Es ermöglicht T1, diese vielen Byte zu senden, ohne sich um eine Überlastung der Leitung zu kümmern.
  7. Maximale OOO-Paketwarteschlangengröße (oooQSize): TCP verwaltet die Out-Of-Order-Warteschlange, um die OOO-Pakete in der TCP-Kommunikation zu halten. Diese Einstellung wirkt sich auf den Systemspeicher aus, wenn die Warteschlangengröße so lang ist, dass die Pakete im Laufzeitspeicher aufbewahrt werden müssen. Daher muss dies auf der Grundlage der Netzwerk- und Anwendungsmerkmale auf einem optimierten Niveau gehalten werden.
  8. Minimum RTO(minRTO): Das Timeout für die TCP-erneute Übertragung wird für jedes empfangene ACK auf der Grundlage der internen Implementierungslogik berechnet. Das standardmäßige Timeout für die erneute Übertragung liegt zunächst bei 1 Sekunde und kann mit dieser Einstellung angepasst werden. Für die zweite erneute Übertragung dieser Pakete wird RTO mit N*2 berechnet und dann wird N*4… N*8… bis zum letzten erneuten Übertragungsversuch fortgesetzt.
  9. bufferSize/sendBuffSize: Diese beziehen sich auf die maximale Datenmenge, die der T1 vom Server empfangen und intern zwischenspeichern kann, ohne sie an den Client zu senden. Sie sollten auf einen Wert gesetzt werden, der größer (mindestens das Doppelte) als das Bandbreitenverzögerungsprodukt des zugrunde liegenden Übertragungskanals ist.
  10. Flavor: Dies bezieht sich auf den Algorithmus zur Kontrolle der TCP-Überlastung. Gültige Werte sind Default, BIC, CUBIC, Westwood und Nile.
  11. Dynamische Empfangspufferung: Ermöglicht die dynamische Anpassung des Empfangspuffers an die Speicher- und Netzwerkbedingungen. Es füllt den Puffer so weit auf, wie es erforderlich ist, um die Download-Pipe des Clients voll zu halten, anstatt einen Puffer mit fester Größe vom Server vorzulesen, da letzterer im TCP-Profil angegeben ist und normalerweise auf Kriterien wie 2*BDP für eine Verbindung basiert. Citrix ADC T1 überwacht die Netzwerkbedingungen für den Client und schätzt, wie viel er vom Server vorlesen sollte.
  12. Keep-Alive (KA): Senden Sie regelmäßige TCP-Keep-Alive-Tests (KA), um zu überprüfen, ob der Peer noch aktiv ist.
  13. rstWindowAttenuate: Verteidigung von TCP vor Spoofing-Angriffen. Es wird mit einem korrigierenden ACK antworten, wenn eine Sequenznummer ungültig ist.
  14. rstmaxACK: Aktiviert oder deaktiviert die Annahme von RST, das sich außerhalb des Fensters befindet, aber die höchste ACK-Sequenznummer wiedergibt.
  15. SpoofSynDrop: Löschen ungültiger SYN-Pakete zum Schutz vor Spoofing.
  16. Explizite Überlastungsbenachrichtigung (ecn): Sie sendet eine Benachrichtigung über den Status der Netzwerküberlastung an den Absender der Daten und ergreift Korrekturmaßnahmen bei Datenüberlastung oder Datenbeschädigung.
  17. Forward RTO-Recovery: Bei falschen erneuten Übertragungen werden die Congestion Control-Konfigurationen in ihren ursprünglichen Zustand zurückversetzt.
  18. Maximales TCP-Überlastungsfenster (maxcwnd): Die maximale TCP-Überlastungsfenstergröße ist vom Benutzer konfigurierbar.
  19. Forward Acknowledgment (FACK): Um TCP-Überlastung zu vermeiden, wird explizit die Gesamtzahl der im Netzwerk ausstehenden Datenbytes gemessen und dem Sender (entweder T1 oder ein Client) dabei geholfen, die Menge der in das Netzwerk injizierten Daten bei Timeouts für die erneute Übertragung zu kontrollieren.
  20. tcpmode: TCP-Optimierungsmodi für ein bestimmtes Profil. Es gibt zwei TCP-Optimierungsmodi: Transparent und Endpoint.
  • Endpunkt. In diesem Modus verwaltet die Appliance die Client- und Serververbindungen getrennt.
  • Durchsichtig Im transparenten Modus müssen die Clients direkt auf die Server zugreifen, ohne dass ein virtueller Server dazwischenliegt. Die Server-IP-Adressen müssen öffentlich sein, da die Clients auf sie zugreifen können müssen.

Untätiges Löschen inaktiver Verbindungen

In einem Telekommunikationsnetz werden fast 50 Prozent der TCP-Verbindungen einer Citrix ADC-Appliance inaktiv, und die Appliance sendet RST-Pakete, um sie zu schließen. Die über Funkkanäle gesendeten Pakete aktivieren diese Kanäle unnötig, was zu einer Flut von Nachrichten führt, die wiederum dazu führen, dass die Appliance eine Flut von Service-Reject-Nachrichten generiert. Das Standard-TCP-Profil enthält jetzt die Parameter DropHalfClosedConnOnTimeout und DropEstConnOnTimeout, die standardmäßig deaktiviert sind. Wenn Sie beide aktivieren, führt weder eine halbgeschlossene noch eine hergestellte Verbindung dazu, dass bei einem Timeout der Verbindung ein RST-Paket an den Client gesendet wird. Die Appliance unterbricht einfach die Verbindung.

set ns tcpProfile nstcpprofile  -DropHalfClosedConnOnTimeout ENABLED
set ns tcpProfile nstcpprofile  -DropEstConnOnTimeout ENABLED
<!--NeedCopy-->
TCP-Optimierungskonfiguration