TCP-Optimierungskonfiguration

Wenden Sie vor der Konfiguration der TCP-Optimierung 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

Hinweis:

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

TCP-Beendigung

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

Statisch/dynamische Routingumgebung

In Umgebungen mit statischem oder dynamischem Routing kann vserver auf Routingtabelleninformationen verlassen, um Pakete an den Internet-Router weiterzuleiten. Die Standardroute muss auf den Internet-Router zeigen und auch Routingeinträge für Client-Subnetze zum drahtlosen 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

VLAN-zu-VLAN-Umgebung (PBR)

Es gibt Kundenumgebungen, in denen Teilnehmerdatenverkehr in mehrere Flows segmentiert wird und basierend auf eingehenden Datenverkehrsparametern 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, Quell-Port, Ziel-IP-Adresse und Ziel-Port weiterzuleiten.

lokalisiertes Bild

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

Die Verwendung von richtlinienbasiertem Routing zur Weiterleitung von TCP-optimiertem Datenverkehr ist eine neue Funktion, die in Version 11.1 50.10 hinzugefügt wurde. Für frühere Versionen ist die Verwendung mehrerer “Modus MAC” -vServer-Entitäten pro VLAN eine alternative Lösung für Multi-VLAN-Umgebungen. Jeder vserver verfügt über einen gebundenen Dienst, der den Internet-Router für den jeweiligen Fluss 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

Hinweis:

Der vserver-Modus ist MAC im Gegensatz zu früheren Beispielen, bei denen es sich um Mode IP handelt. Dies ist erforderlich, um die Ziel-IP-Informationen beizubehalten, wenn wir Dienste an vserver gebunden haben. Außerdem muss die zusätzliche PBR-Konfiguration nicht optimierten Datenverkehr weitergeleitet werden.

TCP-Optimierung

Die vorkonfigurierte Citrix ADC TCP-Beendigung ist für die TCP-Passthrough-Funktionalität konfiguriert. TCP-Pass-Through bedeutet im Wesentlichen, dass Citrix ADC T1 einen Client-Server-TCP-Stream transparent abfangen kann, aber keine separaten Client/Server-Puffer behält oder anderweitig Optimierungstechniken angewendet werden.

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

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

Hinweis:

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

Bei mehreren TCP-Profilen können zusätzliche TCP-Profile erstellt und mit dem entsprechenden virtuellen Server verknüpft 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

Hinweis:

Bei Bereitstellungen mit vserver -m MAC und Service sollte dasselbe Profil dem Dienst zugeordnet werden.

set service svc-internet -tcpProfileName custom_profile

TCP-Optimierungsfunktionen

Die meisten relevanten TCP-Optimierungsfunktionen einer Citrix ADC Appliance werden über ein entsprechendes TCP-Profil bereitgestellt. Typische CLI-Parameter, die beim Erstellen eines TCP-Profils berücksichtigt werden sollten, sind die folgenden:

  1. Window Scaling (WS): Die TCP-Fensterskalierung ermöglicht die Erhöhung der TCP-Empfangsfenstergröße über 65535 Bytes hinaus. Es hilft, die TCP-Leistung insgesamt und speziell in Netzwerken mit hoher Bandbreite und langer Verzögerung zu verbessern. Es hilft, die Latenz zu reduzieren und die Reaktionszeit über TCP zu verbessern.
  2. Selective Acknowledgment (SACK): TCP SACK löst das Problem des Mehrfachpaketverlustes, wodurch die Gesamtdurchsatzkapazität reduziert wird. Mit selektiver Quittierung kann der Empfänger den Absender über alle erfolgreich empfangenen Segmente informieren, sodass der Absender nur die verlorenen Segmente weiterleiten kann. Diese Technik hilft T1, den Gesamtdurchsatz zu verbessern und die Verbindungslatenz zu reduzieren.
  3. Window Scaling Factor (WSVal): Faktor, der zur Berechnung der neuen Fenstergröße verwendet wird. Es muss mit einem hohen Wert konfiguriert werden, damit das angekündigte Fenster von NS 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 zulässiger TCP-Segmente in einer Aufgliederung.
  6. Initial Congestion Window Size (InitialCWnd): Die Größe des anfänglichen TCP-Staufensters bestimmt die Anzahl der Bytes, die zu Beginn der Transaktion ausstehen können. Es ermöglicht T1, diese vielen Bytes zu senden, ohne sich für Staus auf der Leitung zu belästigen.
  7. Maximale Größe der OOO-Paketwarteschlange (OOQSize): TCP verwaltet die Warteschlange Out Of Order, um die OOO-Pakete in der TCP-Kommunikation beizubehalten. Diese Einstellung wirkt sich auf den Systemspeicher aus, wenn die Warteschlangengröße lang ist, wie die Pakete im Laufzeitspeicher aufbewahrt werden müssen. Dies muss daher auf der Grundlage der Netzwerk- und Anwendungseigenschaften optimiert gehalten werden.
  8. Minimaler RTO (minRTO): Der TCP-Neuübertragungs-Timeout wird auf jeder empfangenen ACK basierend auf der internen Implementierungslogik berechnet. Das Standard-Timeout für die erneute Übertragung erfolgt bei 1 Sekunde, um mit zu beginnen und dies kann mit dieser Einstellung optimiert werden. Für die zweite Weiterübertragung dieser Pakete wird RTO von N*2 berechnet und dann N*4… N*8… geht weiter bis zum letzten Weiterübertragungsversuch.
  9. BufferSize/sendBuffSize: Diese beziehen sich auf die maximale Datenmenge, die der T1 vom Server empfangen kann und intern puffert, ohne an den Client zu senden. Sie sollten auf einen Wert gesetzt werden, der größer (mindestens doppelt) ist als das Bandbreitenverzögerungsprodukt des zugrunde liegenden Übertragungskanals.
  10. flavor: Dies bezieht sich auf den TCP-Staukontrollalgorithmus. Gültige Werte sind Default, BIC, CUBIC, Westwood und Nile.
  11. Dynamische Empfangspufferung: Ermöglicht die dynamische Anpassung des Empfangspuffers basierend auf Speicher- und Netzwerkbedingungen. Es füllt den Puffer so viel, wie es erforderlich ist, um die Download-Pipe des Clients voll zu halten, anstatt zu füllen, indem Sie vorab vom Server einen Puffer mit fester Größe lesen, wie 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 es vom Server vorgelesen werden soll.
  12. Keep-Alive (KA): Senden Sie periodische TCP-Keep-Alive-Prüfpunkte (KA), um zu überprüfen, ob Peer noch aktiv ist.
  13. RSTWindowAttenuate: Verteidigung von TCP gegen Spoofing-Angriffe. Es wird mit korrigierenden ACK antworten, wenn eine Sequenznummer ungültig ist.
  14. RstMaxack: Aktivieren oder deaktivieren Sie die Akzeptanz von RST, die außerhalb des Fensters ist, aber die höchste ACK-Sequenznummer widerspiegelt.
  15. SpoofSyndrop: Löschenungültiger SYN-Pakete zum Schutz vor Spoofing.
  16. Explizite Congestion Notification (ecn): Es sendet eine Benachrichtigung über den Netzwerkstau an den Absender der Daten und ergreift Korrekturmaßnahmen für Datenstaus oder Datenbeschädigung.
  17. Vorwärts-RTO-Recovery: Im Falle von unechten Wiederübertragungen werden die Congestion Control-Konfigurationen in ihren ursprünglichen Zustand zurückgesetzt.
  18. TCP-Maximalüberlastungsfenster (maxcwnd): Maximale TCP-Staufenstergröße, die vom Benutzer konfigurierbar ist.
  19. Forward Acknowledgment (FACK): Um TCP-Überlastung zu vermeiden, indem explizit die Gesamtzahl der im Netzwerk ausstehenden Datenbytes gemessen und dem Sender (entweder T1 oder einen Client) dabei geholfen wird, die Menge der Daten zu kontrollieren, die während der Zeitüberschreitung in das Netzwerk injiziert wurden.
  20. tcpmode: TCP-Optimierungsmodi für ein bestimmtes Profil.

Für die oben genannten Parameter bitte konsultieren1] zur Orientierung bei der Auswahl der geeigneten Werte. Für die restlichen Werte werden die in [TCP Optimization sollte für die meisten Fälle gelten.

Leerlaufverbindungen löschen

In einem Telco-Netzwerk werden fast 50 Prozent der TCP-Verbindungen einer Citrix ADC Appliance im Leerlauf, 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 standardmäßige TCP-Profil enthält jetzt die Parameter DropHalfClosedConnOnTimeout und DropEstConnOnTimeout, die standardmäßig deaktiviert sind. Wenn Sie beide aktivieren, bewirkt weder eine halb geschlossene Verbindung noch eine etablierte Verbindung, dass ein RST-Paket an den Client gesendet wird, wenn die Verbindung Timeout. Die Appliance lässt die Verbindung einfach fallen.

set ns tcpProfile nstcpprofile  -DropHalfClosedConnOnTimeout ENABLED

set ns tcpProfile nstcpprofile  -DropEstConnOnTimeout ENABLED