Cloudflare bietet ein Modul zur Unterstützung von HTTP / 3 in NGINX

Cloudflare

Cloudflare hat ein Modul vorbereitet, das das HTTP / 3-Protokoll in NGINX unterstützt. Das Modul ist fertig in Form eines Schnappschusses auf der Quiche-Bibliothek entwickelt bei Cloudflare mit der Implementierung des Transportprotokolls QUIC und HTTP / 3. Der Quiche-Code ist in Rust geschriebenDas Modul für NGINX ist jedoch in C geschrieben und greift über dynamische Links auf die Bibliothek zu. Die Öffnungszeiten sind unter der BSD-Lizenz geöffnet.

Von der Client-Software, HTTP / 3-Unterstützung wurde bereits zu experimentellen Builds von Chrome Canary hinzugefügt und das Curl-Dienstprogramm. Auf der Serverseite war bisher die Verwendung isolierter Testimplementierungen mit eingeschränkten Funktionen erforderlich. Die Fähigkeit, HTTP / 3 in Nginx zu verarbeiten wird die Bereitstellung von Servern mit HTTP / 3-Unterstützung erheblich vereinfachen und es wird die Testimplementierung des neuen Protokolls zugänglicher machen.

HTTP / 3 standardisiert die Verwendung des QUIC-Protokolls als Transport für HTTP / 2. Das QUIC-Protokoll wurde von Google als Alternative zu TCP + TLS für das Web entwickelt beabsichtigt, Probleme mit einer langen Zeit der Installation und Koordination von Verbindungen in TCP zu lösen und verzögert die Beseitigung des Paketverlustes während der Datenübertragung. QUIC ist ein Plug-In für das UDP-Protokoll, das das Multiplexen mehrerer Verbindungen unterstützt und Verschlüsselungsmethoden bereitstellt, die TLS / SSL entsprechen.

Zu den herausragenden Merkmalen von QUIC gehören:

  • Hohe Sicherheit, ähnlich wie bei TLS (tatsächlich bietet QUIC die Möglichkeit, TLS über UDP zu verwenden).
  • Flussintegritätskontrolle, die Paketverlust verhindert.
  • Die Möglichkeit, sofort eine Verbindung herzustellen (0-RTT, in etwa 75% der Fälle können Daten unmittelbar nach dem Senden des Verbindungsaufbaupakets übertragen werden) und minimale Verzögerungen zwischen dem Senden einer Anfrage und dem Empfangen einer Antwort (RTT, Round Trip Time) sicherzustellen. .
  • Nicht die gleiche Sequenznummer beim erneuten Senden eines Pakets verwenden, wodurch Mehrdeutigkeiten bei der Ermittlung empfangener Pakete vermieden und Wartezeiten vermieden werden.
  • Der Verlust eines Pakets wirkt sich nur auf die Zustellung des damit verbundenen Streams aus und stoppt nicht die Zustellung von Daten in Streams, die parallel über die aktuelle Verbindung übertragen werden.
  • Fehlerkorrektur-Tools, die Verzögerungen aufgrund der erneuten Übertragung verlorener Pakete minimieren. Die Verwendung spezieller Fehlerkorrekturcodes auf Paketebene, um Situationen zu reduzieren, die eine erneute Übertragung verlorener Paketdaten erfordern.
  • Kryptografische Blockgrenzen werden an QUIC-Paketgrenzen ausgerichtet, wodurch die Auswirkung des Paketverlusts auf die Decodierung des Inhalts nachfolgender Pakete verringert wird
  • Keine Probleme beim Blockieren der TCP-Warteschlange
  • Unterstützung für die Verbindungskennung, wodurch die Zeit zum Herstellen einer erneuten Verbindung für mobile Clients verkürzt wird
  • Möglichkeit, erweiterte Mechanismen zur Steuerung der Verbindungsüberlastung anzuschließen
  • Verwenden der Technik zum Vorhersagen der Bandbreite in jeder Richtung, um eine optimale Paketweiterleitungsintensität sicherzustellen und zu verhindern, dass sie einen Überlastungszustand erreicht, in dem ein Paketverlust beobachtet wird
  • Bemerkenswerte Leistung und Leistungssteigerungen gegenüber TCP. Bei Videodiensten wie YouTube konnte QUIC die Wiederpufferung beim Ansehen von Videos um 30% reduzieren.

Wie implementiere ich das Modul zur Unterstützung von HTTP / 3 in NGINX?

Für diejenigen, die daran interessiert sind, dieses Modul auf ihrem Server implementieren zu können, Sie können dies tun, indem sie den Anweisungen folgen, die wir unten teilen.

Um es zu kompilieren, Sie müssen nur den Patch für Nginx 1.16 herunterladen und der Quiche-Bibliothekscode.

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz

tar xzvf nginx-1.16.1.tar.gz

git clone --recursive https://github.com/cloudflare/quiche

cd nginx-1.16.1

patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

Und wir kompilieren NGINX mit aktivierter HTTP / 3-Unterstützung:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

--with-openssl=../quiche/deps/boringssl \

--with-quiche=../quiche

make

Während der Kompilierung sollte die TLS-Unterstützung auf der BoringSSL-Bibliothek basieren ("–with-openssl = .. / quiche / deps / langweilssl"). Die Verwendung von OpenSSL wird noch nicht unterstützt.

Um Verbindungen in der Konfiguration zu akzeptieren, müssen sie die Listener-Direktive mit dem Flag "quic" hinzufügen.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.