ADC

HTTP/2-Konfiguration

Hinweis: Die HTTP/2-Funktionalität wird von den Citrix ADC MPX-, VPX- und SDX-Modellen unterstützt. In einer Citrix ADC VPX-Appliance wird die HTTP/2-Funktionalität ab Citrix ADC Version 11.0 unterstützt.

Das Problem mit der Leistung von Webanwendungen hängt direkt mit dem Trend zur Erhöhung der Seitengröße und der Anzahl der Objekte auf den Webseiten zusammen. HTTP/1.1 wurde entwickelt, um kleinere Webseiten, langsamere Internetverbindungen und eingeschränktere Serverhardware als heute üblich zu unterstützen. Es ist nicht für neue Technologien wie JavaScript und Cascading Stylesheets (CSS) oder neue Medientypen wie Flash-Videos und grafikreiche Bilder geeignet. Dies liegt daran, dass nur eine Ressource pro Verbindung zum Server angefordert werden kann. Die Einschränkung erhöht die Anzahl der Roundtrips erheblich, was zu einem längeren Seitenrendern und einer verringerten Netzwerkleistung führt.

Das HTTP/2-Protokoll behebt diese Einschränkungen, indem es die Kommunikation mit weniger über das Netzwerk übertragenen Daten ermöglicht und die Möglichkeit bietet, mehrere Anfragen und Antworten über eine einzige Verbindung zu senden. Im Kern behebt HTTP/2 die wichtigsten Einschränkungen von HTTP/1.1, indem die zugrunde liegenden Netzwerkverbindungen effizienter genutzt werden. Es verändert die Art und Weise, wie Anfragen und Antworten über das Netzwerk übertragen werden.

HTTP/2 ist ein binäres Protokoll. Es ist effizienter zu analysieren, kompakter auf dem Kabel und vor allem weniger fehleranfällig im Vergleich zu Textprotokollen wie HTTP/1.1. Das HTTP/2-Protokoll verwendet eine binäre Framing-Schicht, die den Frame-Typ und die Art und Weise definiert, wie HTTP-Nachrichten eingekapselt und zwischen Client und Server übertragen werden. Die HTTP/2-Funktionalität unterstützt die Verwendung der CONNECT-Methode zum Herstellen einer Tunnelverbindung über einen einzelnen HTTP/2-Stream zu einem Remote-Host.

Das HTTP/2-Protokoll enthält viele leistungssteigernde Änderungen, die die Leistung erheblich verbessern, insbesondere für Clients, die sich über ein Mobilfunknetz verbinden.

In der folgenden Tabelle sind die wichtigsten Verbesserungen in HTTP/2 gegenüber HTTP/1.1 aufgeführt:

HTTP/2-Funktionen Beschreibung
Kopfzeilenkomprimierung HTTP-Header haben viele sich wiederholende Informationen und verbrauchen daher unnötige Bandbreite während der Datenübertragung. HTTP/2 reduziert die Bandbreitenanforderungen, indem der Header komprimiert und die Anforderung minimiert wird, HTTP-Header mit jeder Anforderung und Antwort zu transportieren.
Verbindungs-Multiplexing Die Latenz kann einen enormen Einfluss auf die Ladezeiten der Seite und die Benutzererfahrung haben. Das Verbindungsmultiplexing überwindet dieses Problem, indem mehrere Anfragen und Antworten über eine einzige Verbindung gesendet werden.
Server-Push Server-Push ermöglicht es dem Server, Inhalte proaktiv an den Client-Browser zu übertragen, wodurch Roundtrip-Verzögerungen vermieden werden. Diese Funktion speichert die Antworten, die der Kunde benötigt, im Cache, reduziert die Anzahl von Roundtrips und verbessert die Seitenrendering-Zeit. Wichtig: Die Citrix ADC-Appliance unterstützt die Server-Push-Funktionalität nicht.
Keine Kopf-of-Line-Blockierung Unter HTTP 1.1 können Browser pro Verbindung jeweils eine Ressource herunterladen. Wenn ein Browser eine große Ressource herunterladen muss, blockiert er alle anderen Ressourcen, bis der erste Download abgeschlossen ist. HTTP/2 überwindet dieses Problem mit einem Multiplexing-Ansatz. Es ermöglicht dem Client-Browser, andere Webkomponenten parallel über dieselbe Verbindung herunterzuladen und anzuzeigen, sobald sie verfügbar sind.
Priorisierung anfordern Nicht alle Ressourcen haben die gleiche Priorität, wenn der Browser eine Webseite rendert. Um die Ladezeit zu beschleunigen, priorisieren alle modernen Browser Anfragen nach Art des Assets, ihrem Standort auf der Seite und sogar nach erlernter Priorität aus früheren Besuchen. Mit HTTP/1.1 kann der Browser die Prioritätsdaten nur eingeschränkt verwenden, da dieses Protokoll kein Multiplexing unterstützt und es keine Möglichkeit gibt, die Anforderungspriorisierung durch den Server zu kommunizieren. Das Ergebnis ist eine unnötige Netzwerklatenz. HTTP/2 überwindet dieses Problem, indem es dem Browser erlaubt, alle Anfragen zu versenden. Der Browser kann seine Präferenz für die Stream-Priorisierung über Stream-Abhängigkeiten und Gewichte kommunizieren, wodurch die Server die Antwortbereitstellung optimieren können. Wichtig: Die Citrix ADC-Appliance unterstützt die Funktion zur Anforderungspriorisierung nicht.

So funktioniert HTTP/2

Eine Citrix ADC-Appliance unterstützt HTTP/2 sowohl clientseitig als auch serverseitig. Auf der Clientseite fungiert die Citrix ADC-Appliance als Server, der einen virtuellen HTTP/HTTPS-Server für HTTP/2 hostet. Auf der Back-End-Seite fungiert der Citrix ADC als Client für die Server, die an den virtuellen Server gebunden sind.

Daher unterhält die Citrix ADC-Appliance separate Verbindungen sowohl auf der Clientseite als auch auf der Serverseite. Die Citrix ADC-Appliance verfügt über separate HTTP/2-Konfigurationen für die Client- und Serverseite.

HTTP/2 für HTTPS (SSL) -Lastausgleichskonfiguration

Für eine HTTPS-Lastausgleichskonfiguration verwendet die Citrix ADC-Appliance die TLS ALPN-Erweiterung (RFC 7301), um festzustellen, ob der Client/Server HTTP/2 unterstützt. Wenn dies der Fall ist, wählt die Appliance HTTP/2 als Protokoll der Anwendungsschicht, um Daten (wie in RFC 7540 - Abschnitt 3.3 beschrieben) auf der Client-/Serverseite zu übertragen. Die Appliance verwendet bei der Auswahl des Anwendungsschicht-Protokolls über die TLS-ALPN-Erweiterung die folgende Präferenzreihenfolge:

  • HTTP/2 (falls im HTTP-Profil aktiviert)
  • SPDY (falls im HTTP-Profil aktiviert)
  • HTTP/1.1

HTTP/2 für die Konfiguration des HTTP-Lastausgleichs

Für eine HTTP-Lastausgleichskonfiguration verwendet die Citrix ADC-Appliance eine der folgenden Methoden, um mit dem Client/Server über HTTP/2 zu kommunizieren.

Hinweis:

In den folgenden Methodenbeschreibungen sind Client und Server allgemeine Begriffe für eine HTTP/2-Verbindung. Beispielsweise fungiert die Citrix ADC-Appliance für ein Lastausgleichs-Setup einer Citrix ADC-Appliance mit HTTP/2 als Server auf der Clientseite und fungiert als Client für die Serverseite.

  • HTTP/2-Upgrade. Ein Client sendet eine HTTP/1.1-Anfrage an einen Server. Die Anforderung enthält einen Upgrade-Header, der den Server auffordert, die Verbindung auf HTTP/2 zu aktualisieren. Wenn der Server HTTP/2 unterstützt, akzeptiert der Server die Upgrade-Anforderung und benachrichtigt ihn in seiner Antwort. Der Client und der Server beginnen mit der Kommunikation über HTTP/2, nachdem der Client die Upgrade-Bestätigungsantwort erhalten hat.

  • Direkt HTTP/2. Ein Client beginnt direkt mit einem Server in HTTP/2 zu kommunizieren, anstatt die HTTP/2-Upgrade-Methode zu verwenden. Wenn der Server HTTP/2 nicht unterstützt oder nicht für die direkte Annahme von HTTP/2-Anfragen konfiguriert ist, löscht er die HTTP/2-Pakete vom Client. Diese Methode ist hilfreich, wenn der Administrator des Clientgeräts bereits weiß, dass der Server HTTP/2 unterstützt.

  • Direkte HTTP/2 mithilfe des alternativen Dienstes (ALT-SVC). Ein Server kündigt an, dass er HTTP/2 für einen Client unterstützt, indem er ein Feld für den alternativen Dienst (ALT-SVC) in seine HTTP/1.1-Antwort einschließt. Wenn der Client so konfiguriert ist, dass er das Feld ALT-SVC versteht, beginnen der Client und der Server direkt über HTTP/2 zu kommunizieren, nachdem der Client die Antwort erhalten hat.

Die Citrix ADC-Appliance bietet konfigurierbare Optionen in einem HTTP-Profil für die HTTP/2-Methoden. Diese HTTP/2-Optionen können sowohl auf die Clientseite als auch auf die Serverseite eines HTTPS- oder HTTP-Lastausgleichs angewendet werden. Weitere Informationen zu HTTP/2-Methoden und Optionen finden Sie im PDF-Format HTTP/2-Optionen .

Bevor Sie beginnen

Beachten Sie die folgenden Punkte, bevor Sie mit der Konfiguration von HTTP/2 auf einer Citrix ADC-Appliance beginnen:

  • Die Citrix ADC-Appliance unterstützt HTTP/2 sowohl clientseitig als auch serverseitig.
  • Die Citrix ADC-Appliance unterstützt die HTTP/2-Server-Push-Funktionalität nicht.
  • Die Citrix ADC-Appliance unterstützt die HTTP/2-Anforderungspriorisierungsfunktion nicht.
  • Die Citrix ADC-Appliance unterstützt keine HTTP/2-SSL-Neuverhandlung für HTTPS-Lastausgleichseinrichtungen.
  • Die Citrix ADC-Appliance unterstützt keine HTTP/2-NTLM-Authentifizierung.
  • Wenn HTTP/2 aktiviert ist, Verbindungsmultiplexing deaktiviert (wie USIP aktiviert) und Eins-zu-Eins-Zuordnung von Client- und Server-TCP-Verbindungen werden Close-Ereignisse wie FIN, Reset (RST) von der Client- oder Serververbindung zur verknüpften Peer-Verbindung weitergeleitet.

Konfigurieren von HTTP/2

Die Konfiguration von HTTP/2 für ein Lastausgleichs-Setup (HTTPS oder HTTP) umfasst die folgenden Aufgaben:

  • Aktivieren Sie HTTP/2 und setzen Sie optionale HTTP/2-Parameter in einem HTTP-Profil. Aktivieren Sie HTTP/2 in einem HTTP-Profil. Wenn Sie nur HTTP/2 in einem HTTP-Profil aktivieren, verwendet die Citrix ADC-Appliance nur die Upgrade-Methode (für HTTP) oder die TLS-ALPN-Methode (für HTTPS) für die Kommunikation in HTTP/2.

    Damit die Citrix ADC-Appliance die direkte HTTP/2-Methode verwenden kann, muss die Option Direct HTTP/2 im HTTP-Profil aktiviert sein. Damit die Citrix ADC-Appliance das direkte HTTP/2 mit der alternativen Dienstmethode verwenden kann, muss die Option Alternativer Dienst (altsvc) im HTTP-Profil aktiviert sein.

  • Binden Sie das HTTP-Profil an einen virtuellen Server oder einen Dienst. Binden Sie das HTTP-Profil an einen virtuellen Server, um HTTP/2 für die Clientseite des Lastausgleichs-Setups zu konfigurieren. Binden Sie das HTTP-Profil an einen Dienst, um HTTP2 für die Serverseite des Lastausgleichs-Setups zu konfigurieren.

Hinweis:

Citrix empfiehlt, separate HTTP-Profile für die Client- und Serverseite zu binden.

  • Aktivieren Sie den globalen Parameter für die serverseitige Unterstützung von HTTP/2. Aktivieren Sie den globalen HTTP-Parameter HTTP/2 Service Side(Http2ServerSide), um die HTTP/2-Unterstützung auf der Serverseite aller Lastausgleichseinrichtungen zu aktivieren, die HTTP/2 konfiguriert haben.

    HTTP/2 funktioniert auf der Serverseite von Lastausgleichseinrichtungen nicht, wenn HTTP/2 Service Side deaktiviert ist, selbst wenn HTTP/2 im HTTP-Profil aktiviert ist, das an die zugehörigen Lastausgleichsdienste gebunden ist.

Citrix ADC-Befehlszeilenprozeduren:

So aktivieren Sie HTTP/2 und legen HTTP/2-Parameter mithilfe der Citrix ADC-Befehlszeile fest

  • Um HTTP/2 zu aktivieren und HTTP/2-Parameter beim Hinzufügen eines HTTP-Profils festzulegen, geben Sie an der Eingabeaufforderung Folgendes ein:

add ns httpProfile <name> - http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED )] [-altsvc ( ENABLED | DISABLED )] show ns httpProfile <name>

  • Um HTTP/2 zu aktivieren und HTTP/2-Parameter festzulegen, während Sie ein HTTP-Profil ändern, geben Sie an der Eingabeaufforderung Folgendes ein:

set ns httpProfile <name> -http2 ( ENABLED | DISABLED ) [-http2Direct ( ENABLED | DISABLED)] [-altsvc (ENABLED | DISABLED )] show ns httpProfile <name>

So binden Sie das HTTP-Profil mithilfe der Citrix ADC-Befehlszeile an einen virtuellen Server

Geben Sie an der Eingabeaufforderung Folgendes ein:

set lb vserver <name> - httpProfileName <string> show lb vserver <name>

So binden Sie das HTTP-Profil mithilfe der Citrix ADC-Befehlszeile an einen Lastausgleichsdienst

Geben Sie an der Eingabeaufforderung Folgendes ein:

set service <name> -httpProfileName <string> show service <name>

So aktivieren Sie die HTTP/2-Unterstützung global auf der Serverseite mithilfe der Citrix ADC-Befehlszeile

Geben Sie an der Eingabeaufforderung Folgendes ein:

set ns httpParam -HTTP2Serverside( ENABLED | DISABLED ) show ns httpParam

So aktivieren Sie HTTP/2 und legen Sie HTTP/2-Parameter über die Citrix ADC GUI fest

  1. Navigieren Sie zu System > Profileund klicken Sie auf die Registerkarte HTTP-Profile .
  2. Aktivieren Sie HTTP/2, während Sie ein HTTP-Profil hinzufügen oder ein vorhandenes HTTP-Profil ändern.

So binden Sie das HTTP-Profil über die Citrix ADC GUI an einen virtuellen Server

  1. Navigieren Sie zu Traffic Management > Load Balancing > Virtuelle Server, und öffnen Sie den virtuellen Server.
  2. Klicken Sie in den Erweiterten Einstellungenauf + HTTP-Profil, um das erstellte HTTP-Profil an den virtuellen Server zu binden.

So binden Sie das HTTP-Profil über die Citrix ADC GUI an einen Lastausgleichsdienst

  1. Navigieren Sie zu Traffic Management > Load Balancing > Service, und öffnen Sie den Dienst.
  2. Klicken Sie in den Erweiterten Einstellungenauf + HTTP-Profil, um das erstellte HTTP-Profil an den Dienst zu binden.

So aktivieren Sie die HTTP/2-Unterstützung global auf der Serverseite über die GUI

Navigieren Sie zu System > Einstellungen, klicken Sie auf HTTP-Parameter ändern und aktivieren Sie HTTP/2 Serverseite.

Beispielkonfigurationen

In der folgenden Beispielkonfiguration ist HTTP/2 und direktes HTTP/2 im HTTP-Profil HTTP-PROFILE-HTTP2-CLIENT-SIDE aktiviert. Das Profil ist an den virtuellen Server LB-VS-1 gebunden.

set ns httpProfile HTTP-PROFILE-HTTP2-CLIENT-SIDE -http2 enabled -http2Direct enabled
Done

set lb vserver LB-VS-1 -httpProfileName HTTP-PROFILE-HTTP2-CLIENT-SIDE

Done
<!--NeedCopy-->

In der folgenden Beispielkonfiguration ist HTTP/2 und alternativer Dienst (ALT-SVC) im HTTP-Profil HTTP-PROFILE-HTTP2-SERVER-SIDE aktiviert. Das Profil ist an Service LB-SERVICE-1 gebunden.

set ns httpparam -HTTP2Serverside ENABLED
Done

set ns httpProfile HTTP-PROFILE-HTTP2-SERVER-SIDE -http2 ENABLED -altsvc ENABLED
Done

set service LB-SERVICE-1 -httpProfileName HTTP-PROFILE-HTTP2-SERVER-SIDE
Done
<!--NeedCopy-->

Konfigurieren Sie die Fenstergröße des HTTP/2-Erstverbindungs

Gemäß RFC 7540 muss das Flusssteuerungsfenster für den HTTP2-Stream und die Verbindung auf 64 K (65535) Oktette eingestellt sein, und jede Änderung an diesem Wert muss dem Peer mitgeteilt werden. Die ADC-Appliance kommuniziert die Änderung der Fenstergröße der Durchflusssteuerung wie folgt:

  • Verwenden des SETTINGS Frames für den Stream.
  • Verwenden des WINDOW_UPDATE Rahmens für die Verbindung.

In einem HTTP-Profil müssen Sie den http2InitialWindowSize Parameter so konfigurieren, dass die anfängliche Fenstergröße auf Stream-Ebene festgelegt wird. Aufgrund eines internen Systemfehlers initialisiert die ADC-Appliance auch das Flow-Control-Fenster für die Verbindung. Wenn sich das konfigurierte Flow-Steuerungsfenster für den Stream ändert, kommuniziert die ADC-Appliance über den Rahmen SETTINGS mit dem Peer. Die ADC-Appliance kommuniziert jedoch die Änderung des Flow-Steuerungsfensters für die Verbindung über den WINDOW_UPDATE Rahmen nicht. Dies führt zu einem Einfrieren der Verbindung.

Um das Problem zu beheben, wird nun der http2InitialConnWindowSize Parameter (in Byte) hinzugefügt, um das Flow-Steuerfenster für die Verbindung zu steuern. Mithilfe separater konfigurierbarer Parameter können Sie der Appliance jetzt ermöglichen, Updates für die geänderte Fenstergröße sowohl auf Stream- als auch auf Verbindungsebene zu senden.

Konfigurieren Sie den Größenparameter für das erste Verbindungsfenster HTTP/2 mit der CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

set http profile p1 -http2InitialConnWindowSize 8290
Initial window size for stream level flow control, in bytes.
Default value: 65535
Minimum value: 8192
Maximum value: 20971520
<!--NeedCopy-->
HTTP/2-Konfiguration