Unternehmen NGINX Über den Beginn des Testens der QUIC- und HTTP/3-Protokolle im HTTP-Server und Proxy nginx. Die Implementierung basiert auf der IETF-QUIC-Spezifikation und ist über , das von Version 1.19.0 abgezweigt ist. Der Code wird unter der BSD-Lizenz verbreitet und überschneidet sich nicht mit HTTP/3-Implementierung für nginx von Cloudflare, die ein separates Projekt darstellt.
Die Unterstützung von HTTP/3 in nginx ist als experimentell gekennzeichnet, da des Protokolls implementiert sind. Dennoch kann nginx bereits verwendet werden, um Antworten auf einfache HTTP/3-Anfragen über QUIC zu senden und große Dateien hochzuladen/herunterzuladen. Fehlende Funktionen des Protokolls umfassen Protokollversionsverhandlungen, ECN und Überlastkontrolle, strukturierte Protokolle, Wiederherstellungsmodus (QUIC Recovery, Fluss- und Überlastkontrolle), NAT-Rebinding, mobile Adressen, Server-Push und Datenanhänge (Trailer). Außerdem wird nur eine grundlegende Unterstützung für die Verarbeitung von ACK-Paketen und die Flusskontrolle angeboten, die weiterentwickelt werden muss. Nicht alle Anforderungen des Standards sind berücksichtigt.
Um HTTP/3 zu aktivieren, muss nginx mit dem http_v3_module kompiliert und eine zusätzliche Direktive
„listen“ mit dem Flag „http3“ hinzugefügt werden, um einen hörenden UDP-Socket zu erstellen. Zum Beispiel:
server {
listen 443 ssl; # TCP-Socket für HTTP/1.1
listen 443 http3 reuseport; # UDP-Socket für QUIC+HTTP/3
ssl_protocols TLSv1.3; # In QUIC ist TLS 1.3 erforderlich
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;
add_header Alt-Svc ‘quic=»:443“‘; # Hinweis auf die Verfügbarkeit von QUIC
add_header QUIC-Status $quic; # Header mit dem Status der Verwendung von QUIC
}
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 zur Kombination von 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, das die Multiplexierung mehrerer Verbindungen unterstützt und Verschlüsselungsmethoden bereitstellt, die TLS/SSL entsprechen. Auf der Client-Seite wurde experimentelle Unterstützung für HTTP/3 bereits hinzugefügt in , und .
Haupt- QUIC:
- Hohe Sicherheit, vergleichbar mit TLS (im Wesentlichen ermöglicht QUIC die Verwendung von TLS 1.3 ü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
