Het bedrijf Cloudflare om ondersteuning voor het HTTP/3-protocol in NGINX te bieden. De module is ontwikkeld als een uitbreiding op de door Cloudflare ontwikkelde bibliotheek. met de implementatie van het QUIC transportprotocol en HTTP/3. De code van quiche is geschreven in Rust, maar de module voor NGINX is geschreven in C en maakt gebruik van de bibliotheek via dynamische linkers. De ontwikkelingen onder de BSD-licentie.
Om te bouwen is het voldoende om naar nginx 1.16 en de quiche-bibliotheek te downloaden, waarna nginx opnieuw moet worden opgebouwd met de opties "—with-http_v3_module —with-quiche=..\/quiche". Bij het bouwen moet de TLS-ondersteuning gebaseerd zijn op de BoringSSL-bibliotheek ("—with-openssl=..\/quiche\/deps\/boringssl"). Voor het accepteren van verbindingen moet in de configuratie de directive listen met de vlag "quic" worden toegevoegd (bijvoorbeeld "listen 443 quic reuseport").
In de clientsoftware is ondersteuning voor HTTP/3 al toegevoegd in experimentele builds van Chrome Canary en het hulpprogramma curl. Aan de serverzijde was het tot nu toe noodzakelijk om gebruik te maken van beperkte, afzonderlijke . De mogelijkheid om HTTP/3 in nginx te verwerken zal de implementatie van servers met ondersteuning voor HTTP/3 aanzienlijk vereenvoudigen en de testimplementatie van het nieuwe protocol toegankelijker maken. De standaardondersteuning voor HTTP/3 in nginx zal in de 1.17.x-tak binnen 6-12 maanden verschijnen.
Ter herinnering: HTTP/3 standaardiseert het gebruik van het QUIC-protocol als transport voor HTTP/2. Het protocol (Quick UDP Internet Connections) wordt sinds 2013 door Google ontwikkeld als alternatief voor de combinatie TCP+TLS voor het web, wat problemen oplost met lange opbouw- en onderhandeltijden van verbindingen in TCP en vertragingen elimineert bij pakketverlies tijdens gegevensoverdracht. QUIC is een bovenlaag boven het UDP-protocol dat multiplexing van meerdere verbindingen ondersteunt en encryptiemethoden biedt die gelijkwaardig zijn aan TLS/SSL.
Belangrijkste QUIC:
- Hoge beveiliging, vergelijkbaar met TLS (in wezen biedt QUIC de mogelijkheid om TLS 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);
- 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 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
