Cloudflare biedt een module om HTTP / 3 in NGINX te ondersteunen

Cloudflare

Cloudflare heeft een module voorbereid om ondersteuning te bieden voor het HTTP / 3-protocol in NGINX​ De module is klaar in de vorm van een klik op de quichebibliotheek ontwikkeld bij Cloudflare met de implementatie van het QUIC en HTTP / 3 transportprotocol. De quichecode is geschreven in Rust, maar de module voor NGINX is geschreven in C en heeft toegang tot de bibliotheek via dynamische links. Openingstijden zijn open onder de BSD-licentie.

Vanuit de clientsoftware, HTTP / 3-ondersteuning is al toegevoegd aan experimentele builds van Chrome Canary en het curl-hulpprogramma. Aan de serverkant was tot dusverre het gebruik van geïsoleerde testimplementaties met beperkte mogelijkheden vereist. De mogelijkheid om HTTP / 3 in nginx af te handelen zal de inzet van servers met HTTP / 3-ondersteuning aanzienlijk vereenvoudigen en het zal de testimplementatie van het nieuwe protocol toegankelijker maken.

HTTP / 3 standaardiseert het gebruik van het QUIC-protocol als transport voor HTTP / 2. Het QUIC-protocol is daardoor door Google ontwikkeld als alternatief voor TCP + TLS voor het web is van plan problemen op te lossen met een lange installatie- en coördinatieverbindingen in TCP en vertraagt ​​de eliminatie van pakketverlies tijdens datatransmissie. QUIC is een plug-in voor het UDP-protocol die multiplexing van meerdere verbindingen ondersteunt en coderingsmethoden biedt die gelijkwaardig zijn aan TLS / SSL.

Enkele van de belangrijkste kenmerken van QUIC die opvallen:

  • Hoge beveiliging, vergelijkbaar met TLS (in feite biedt QUIC de mogelijkheid om TLS via UDP te gebruiken).
  • Flow-integriteitscontrole die pakketverlies voorkomt.
  • De mogelijkheid om onmiddellijk een verbinding tot stand te brengen (0-RTT, in ongeveer 75% van de gevallen kunnen gegevens onmiddellijk worden overgedragen na het verzenden van het verbindingsinstellingspakket) en zorgen voor minimale vertragingen tussen het verzenden van een verzoek en het ontvangen van een antwoord (RTT, Round Trip Time) .
  • Het niet gebruiken van hetzelfde volgnummer bij het opnieuw verzenden van een pakket, waardoor dubbelzinnigheid bij het bepalen van ontvangen pakketten wordt vermeden en time-outs worden geëlimineerd.
  • Het verlies van een pakket heeft invloed op de levering van alleen de stream die eraan is gekoppeld en stopt niet de levering van gegevens in streams die parallel via de huidige verbinding worden verzonden.
  • Foutcorrectietools die vertragingen als gevolg van het opnieuw verzenden van verloren pakketten tot een minimum beperken. Het gebruik van speciale foutcorrectiecodes op pakketniveau om situaties te verminderen die herverzending van verloren pakketgegevens vereisen.
  • Cryptografische blokgrenzen zijn uitgelijnd met QUIC-pakketgrenzen, waardoor het effect van pakketverlies op het decoderen van de inhoud van volgende pakketten wordt verminderd
  • Geen problemen met het blokkeren van de TCP-wachtrij
  • Ondersteuning voor verbindings-ID, waardoor de tijd om opnieuw verbinding te maken voor mobiele clients wordt verkort
  • Mogelijkheid om geavanceerde mechanismen aan te sluiten om overbelasting van de verbinding te beheersen
  • Het gebruik van de techniek van het voorspellen van de bandbreedte in elke richting om een ​​optimale intensiteit van het doorsturen van pakketten te garanderen, waardoor wordt voorkomen dat het een toestand van congestie bereikt waarin pakketverlies wordt waargenomen
  • Opmerkelijke prestaties en prestatieverbeteringen ten opzichte van TCP. Voor videoservices zoals YouTube liet QUIC een vermindering van 30% zien in het opnieuw bufferen bij het bekijken van video's.

Hoe implementeer ik de module om HTTP / 3 in NGINX te ondersteunen?

Voor degenen die geïnteresseerd zijn om deze module op hun server te kunnen implementeren, Ze kunnen het doen door de instructies te volgen die we hieronder delen.

Om het te compileren, ze hoeven alleen de patch voor nginx 1.16 te downloaden en de quichebibliotheekcode.

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz

tar xzvf nginx-1.16.1.tar.gz

git clone --recursive https://github.com/cloudflare/quiche

cd nginx-1.16.1

patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

En we compileren NGINX met HTTP / 3-ondersteuning ingeschakeld:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

--with-openssl=../quiche/deps/boringssl \

--with-quiche=../quiche

make

Tijdens het compileren zou TLS-ondersteuning gebaseerd moeten zijn op de BoringSSL-bibliotheek ("–with-openssl = .. / quiche / deps / boringssl"), het gebruik van OpenSSL wordt nog niet ondersteund.

Om verbindingen in de configuratie te accepteren, moeten ze de listener-instructie met de "quic" -vlag toevoegen.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.