Vorabversion von nginx mit Unterstützung für QUIC und HTTP/3

Das Unternehmen NGINX hat bekannt gegeben gibt den Beginn der Tests Implementierung von QUIC- und HTTP/3-Protokollen im HTTP-Server und Proxy nginx bekannt. Die Umsetzung basiert auf draft 27 der IETF-QUIC-Spezifikation und ist erhältlich über ein separates Repository, abgeleitet von Version 1.19.0. Der Code wird unter der BSD-Lizenz veröffentlicht und steht nicht in Verbindung mit der zuvor vorgeschlagenen HTTP/3-Implementierung für nginx von Cloudflare, die ein separates Projekt darstellt.

Die Unterstützung von HTTP/3 in nginx wird als experimentell betrachtet, da nicht alle Möglichkeiten 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 oder bereitzustellen. Zu den derzeit nicht verfügbaren Funktionen des Protokolls gehören die Protokollversionsverhandlung, ECN und Staukontrolle, strukturierte Protokolle, der Wiederherstellungsmodus (QUIC Recovery), Fluss- und Überlastkontrolle, NAT-Rebinding, mobile Adressen, Server-Push und die Anfügung von Daten (Trailer). Außerdem gibt es nur grundlegende Unterstützung für die Verarbeitung von ACK-Paketen und die Flusskontrolle, die noch weiterentwickelt werden muss. Nicht alle Anforderungen des Standards sind berücksichtigt.

Um HTTP/3 zu aktivieren, muss Nginx mit dem http_v3_module kompiliert werden, und eine zusätzliche Direktive muss hinzugefügt werden.
„listen“ mit dem Flag „http3“ zur Erstellung eines UDP-Sockets. 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 QUIC-Nutzung
}

Wir erinnern daran, dass HTTP/3 die Verwendung des QUIC-Protokolls als Transport für HTTP/2 standardisiert. Das Protokoll QUIC (Quick UDP Internet Connections) wurde 2013 von Google als Alternative zu TCP+TLS für das Web entwickelt, um Probleme mit der hohen Verbindungsherstellungs- und Aushandlungszeit in TCP zu lösen sowie Verzögerungen bei Paketverlusten während der Datenübertragung zu beseitigen. QUIC ist eine Erweiterung des UDP-Protokolls, die die Multiplexierung mehrerer Verbindungen unterstützt und Verschlüsselungsmethoden bietet, die mit TLS/SSL vergleichbar sind. Auf der Clientseite wurde die experimentelle Unterstützung für HTTP/3 bereits hinzugefügt in Curl, Firefox und Chromium.

Vorabversion von nginx mit Unterstützung für QUIC und HTTP/3

Haupt Eigenschaften QUIC:

  • Hohe Sicherheit, ähnlich wie bei TLS (QUIC ermöglicht im Wesentlichen die Verwendung von TLS 1.3 über UDP);
  • Stream-Integrity-Kontrolle zur Vermeidung von Paketverlusten;
  • Es ermöglicht, eine Verbindung sofort herzustellen (0-RTT, in etwa 75 % der Fälle können Daten sofort nach dem Senden des Verbindungsaufbaupakets übertragen werden) und sorgt für minimale Verzögerungen zwischen dem Senden einer Anfrage und dem Erhalten einer Antwort (RTT, Round Trip Time);
    Vorabversion von nginx mit Unterstützung für QUIC und HTTP/3
  • Die Nichtverwendung derselben Sequenznummer bei der Wiederübertragung von Paketen vermeidet Zweideutigkeiten bei der Bestimmung empfangener Pakete und beseitigt Zeitüberschreitungen.
  • Ein Paketverlust beeinflusst nur die Zustellung des damit verbundenen Streams und stoppt nicht die Übertragung von Daten in parallel über die aktuelle Verbindung übertragenen Streams;
  • Fehlerkorrekturmaßnahmen, die Verzögerungen durch die erneute Übertragung verlorener Pakete minimieren. Einsatz spezieller Fehlerkorrekturcodes auf Paketebene zur Verringerung von Situationen, die eine erneute Übertragung verlorener Daten erfordern.
  • Die Grenzen der kryptografischen Blöcke sind an die Grenzen der QUIC-Pakete angepasst, was den Einfluss von Paketverlusten auf die Dekodierung des Inhalts nachfolgender Pakete verringert.
  • Keine Probleme mit der TCP-Warteschlangensperre.
  • Unterstützung für eine Verbindungs-ID, die die Wiederherstellungszeit für mobile Clients verkürzt.
  • Die Möglichkeit, erweiterte Mechanismen zur Überwachung der Verbindungsüberlastung zu integrieren.
  • Der Einsatz von Bandbreitenvorhersagetechniken in beide Richtungen sorgt für eine optimale Paketversandintensität und verhindert das Abgleiten in einen Überlastungszustand, der zu Paketverlusten führt.
  • Deutlich der Leistungszuwachs verbessert sich die Leistung und Bandbreite im Vergleich zu TCP. Bei Video-Diensten wie YouTube zeigte die Verwendung von QUIC eine Reduzierung der Pufferungsoperationen beim Anschauen von Videos um 30%.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster