Voorlopige release van nginx met ondersteuning voor QUIC en HTTP/3

NGINX Bedrijf heeft aangekondigd over het begin van de test implementatie van de QUIC- en HTTP/3-protocollen in de HTTP-server en proxy nginx. De implementatie is gebaseerd op 27 concept van de IETF-QUIC specificatie en is beschikbaar via een aparte repository, voortkomend uit versie 1.19.0. De code wordt verspreid onder de BSD-licentie en overlap niet met de eerder voorgestelde implementatie van HTTP/3 voor nginx van Cloudflare, wat een apart project is.

De ondersteuning voor HTTP/3 in nginx is gemarkeerd als experimenteel, aangezien niet alle mogelijkheden van het protocol zijn geïmplementeerd. Toch kan nginx al worden gebruikt om antwoorden te verzenden op eenvoudige HTTP/3-verzoeken over QUIC en het uploaden/downloaden van grote bestanden. Van de nog ontbrekende mogelijkheden van het protocol worden consensusmechanismen voor protocolversies, ECN en congestiebeheer, gestructureerde logboeken, herstelmodus (QUIC recovery, stroom- en congestiebeheer), NAT Rebinding, mobiele adressen, Server push en data- bijvoeging (trailer) opgemerkt. Er is ook alleen basisondersteuning voor het verwerken van ACK-pakketten en het stroombeheer, wat nog verdere ontwikkeling vereist. Niet alle vereisten van de standaard zijn in acht genomen.

Voor het activeren van HTTP/3 is het nodig nginx te compileren met de http_v3_module en een aanvullende instructie toe te voegen
‘listen’ met de vlag ‘http3’ om een luisterende UDP-socket te creëren. Bijvoorbeeld:

server {
listen 443 ssl; # TCP-socket voor HTTP/1.1
listen 443 http3 reuseport; # UDP-socket voor QUIC+HTTP/3

ssl_protocols TLSv1.3; # TLS 1.3 is verplicht in QUIC
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;

add_header Alt-Svc ‘quic=":443“; # indicatie van beschikbaarheid QUIC
add_header QUIC-Status $quic; # Header met de status van QUIC gebruik
}

Ter herinnering: HTTP/3 standaardiseert het gebruik van het QUIC-protocol als transport voor HTTP/2. Het protocol QUIC (Quick UDP Internet Connections) wordt sinds 2013 ontwikkeld door Google als alternatief voor TCP+TLS voor het web, dat problemen met hoge opstart- en onderhandeltijden in TCP oplost en vertragingen bij pakketverlies tijdens gegevensoverdracht elimineert. QUIC is een bovenlaag van het UDP-protocol, dat multiplexing van meerdere verbindingen ondersteunt en versleutelingstechnieken biedt die gelijkwaardig zijn aan TLS/SSL. Aan de zijde van de clientsoftware is experimentele ondersteuning voor HTTP/3 al toegevoegd in Curl, Firefox en Chromium.

Voorlopige release van nginx met ondersteuning voor QUIC en HTTP/3

Belangrijkste kenmerken QUIC:

  • Hoge veiligheid, vergelijkbaar met TLS (in wezen biedt QUIC de mogelijkheid om TLS 1.3 boven UDP te gebruiken);
  • Integriteitscontrole van de stream, wat pakketverlies voorkomt;
  • De mogelijkheid om onmiddellijk verbinding te maken (0-RTT, in ongeveer 75% van de gevallen kunnen gegevens direct worden verzonden na het verzenden van het verbindingspakket) en minimale vertragingen te waarborgen tussen het verzenden van een verzoek en het ontvangen van een antwoord (RTT, Round Trip Time);
    Voorlopige release van nginx met ondersteuning voor QUIC en HTTP/3
  • Het niet gebruiken van het nummer van dezelfde volgorde bij het opnieuw verzenden van een pakket, wat dubbelzinnigheid bij de identificatie van ontvangen pakketten voorkomt en tijdsoverschrijdingen elimineert;
  • Pakketverlies heeft alleen invloed op de aflevering van de bijbehorende stroom en stopt de aflevering van gegevens in de parallelle stromen die via de huidige verbinding worden verzonden;
  • Foutcorrectiemechanismen verminderen vertragingen door het opnieuw verzenden van verloren pakketten. Het gebruik van speciale foutcorrectiecodes op het niveau van pakketten om situaties te verkorten die opnieuw verzenden van verloren gegevens vereisen.
  • De grenzen van cryptografische blokken zijn afgestemd op de grenzen van QUIC-pakketten, wat de impact van pakketverlies op de decodering van de inhoud van volgende pakketten vermindert.
  • Geen problemen met TCP-queue blocking.
  • Ondersteuning voor een connectie-ID, waardoor de tijd voor het opnieuw tot stand brengen van een verbinding voor mobiele clients kan worden verkort.
  • De mogelijkheid om geavanceerde mechanismen voor congestiecontrole in te schakelen.
  • Het gebruik van bandbreedtevoorspellingstechnieken in beide richtingen om een optimale verzendintensiteit van pakketten te waarborgen, en te voorkomen dat het systeem in een overbelastingsstaat terechtkomt waarin pakketverlies optreedt.
  • Significante stijging van prestaties en bandbreedte vergeleken met TCP. Voor videoservices zoals YouTube heeft het gebruik van QUIC aangetoond dat het aantal herbufferingsoperaties tijdens het bekijken van video's met 30% is verminderd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster