Cloudflare zur Unterstützung des Protokolls HTTP/3 in NGINX. Das Modul ist als Erweiterung der in Cloudflare entwickelten Bibliothek konzipiert mit der Implementierung des Transportprotokolls QUIC und HTTP/3. Der Code von quiche ist in Rust geschrieben, aber das Modul für NGINX ist in C geschrieben und greift über dynamisches Linking auf die Bibliothek zu. Entwicklungen unter der BSD-Lizenz stehen.
Um die Installation durchzuführen, reicht es aus, nginx 1.16 und Quiche-Bibliotheken, gefolgt von der Neukompilierung von Nginx mit den Optionen „—with-http_v3_module —with-quiche=..\/quiche“. Bei der Kompilierung sollte die Unterstützung für TLS auf der BoringSSL-Bibliothek basieren („—with-openssl=..\/quiche\/deps\/boringssl“), die Verwendung von OpenSSL wird derzeit nicht unterstützt. Um Verbindungen anzunehmen, muss die Direktive listen mit dem Flag „quic“ in die Konfiguration hinzugefügt werden (zum Beispiel „listen 443 quic reuseport“).
Für die Client-Software wurde die Unterstützung für HTTP/3 bereits in experimentelle Builds von Chrome Canary und dem Tool curl integriert. Auf der Serverseite war es bisher erforderlich, begrenzte, eigenständige zu verwenden. Die Möglichkeit, HTTP/3 in nginx zu verarbeiten, wird die Bereitstellung von Servern mit HTTP/3-Unterstützung erheblich vereinfachen und die experimentelle Einführung des neuen Protokolls zugänglicher machen. Die native Unterstützung für HTTP/3 wird in der Version 1.17.x innerhalb von 6-12 Monaten verfügbar sein.
Wir erinnern daran, dass HTTP/3 die Verwendung des QUIC-Protokolls als Transportmittel für HTTP/2 standardisiert. Das Protokoll (Quick UDP Internet Connections) wird seit 2013 von Google als Alternative zu TCP+TLS für das Web entwickelt, um Probleme mit langen Verbindungsaufbau- und Aushandlungszeiten bei TCP zu lösen und Verzögerungen durch Paketverluste während der Datenübertragung zu beseitigen. QUIC ist eine Erweiterung des UDP-Protokolls, die mehrere Verbindungen multiplexiert und Verschlüsselungsmethoden unterstützt, die TLS/SSL entsprechen.
Haupt- QUIC:
- Hohe Sicherheit, vergleichbar mit TLS (im Grunde ermöglicht QUIC die Verwendung von TLS über UDP);
- Kontrolle der Integrität des Datenstroms, um Paketverluste zu verhindern;
- Die Möglichkeit, eine Verbindung sofort aufzubauen (0-RTT, in etwa 75 % der Fälle können Daten sofort nach dem Senden des Verbindungsaufbaus übertragen werden) und minimale Verzögerungen zwischen der Anfrage und dem Erhalt einer Antwort (RTT, Round Trip Time) zu gewährleisten;
- Die Wiederverwendung der gleichen Sequenznummer bei der erneuten Übertragung von Paketen zu vermeiden, um Mehrdeutigkeiten bei der Identifizierung empfangener Pakete zu beseitigen und Zeitüberschreitungen zu vermeiden;
- Paketverluste beeinflussen nur den damit verbundenen Datenstrom und stoppen nicht die Datenübertragung in parallel über die aktuelle Verbindung gesendeten Datenströmen;
- Fehlerkorrekturmaßnahmen, die Verzögerungen aufgrund der erneuten Übertragung verlorener Pakete minimieren. Verwendung spezieller Fehlerkorrekturcodes auf Paketeebene, um Situationen zu reduzieren, die eine erneute Übertragung der Daten des verlorenen Pakets erfordern.
- Die Grenzen der kryptografischen Blöcke sind an die Grenzen der QUIC-Pakete angepasst, was die Auswirkungen von Paketverlusten auf die Dekodierung der Inhalte nachfolgender Pakete verringert;
- Keine Probleme mit der Blockierung von TCP-Warteschlangen;
- Unterstützung einer Verbindungs-ID, die die Zeit für die Wiederherstellung einer Verbindung für mobile Clients reduziert;
- Die Möglichkeit, erweiterte Mechanismen zur Überlaststeuerung der Verbindung zu integrieren;
- Einsatz von Bandbreitenvorhersagetechniken in jede Richtung, um die optimale Intensität der Paketsendung sicherzustellen und ein Abrutschen in einen Überlastzustand, der Paketverluste zur Folge hat, zu verhindern;
- Deutlicher an Leistung und Geschwindigkeit im Vergleich zu TCP. Für Video-Dienste wie YouTube hat die Anwendung von QUIC zu einer 30%igen Verringerung der Puffervorgänge beim Ansehen von Videos geführt.
Quelle: opennet.ru
