Cloudflare offre un modulo per supportare HTTP / 3 in NGINX

Cloudflare

Cloudflare ha preparato un modulo per fornire supporto per il protocollo HTTP / 3 in NGINX. Il modulo è fatto sotto forma di uno schiocco sulla libreria delle quiche sviluppato in Cloudflare con l'implementazione del protocollo di trasporto QUIC e HTTP / 3. Il codice quiche è scritto in Rust, ma il modulo per NGINX è scritto in C e accede alla libreria tramite collegamenti dinamici. Gli orari di apertura sono aperti con la licenza BSD.

Dal software client, Il supporto HTTP / 3 è già stato aggiunto alle build sperimentali di Chrome Canary e l'utility curl. Sul lato server, finora è stato richiesto l'uso di implementazioni di test isolate con capacità limitate. La capacità di gestire HTTP / 3 in nginx semplificherà notevolmente la distribuzione di server con supporto HTTP / 3 e renderà più accessibile l'implementazione del test del nuovo protocollo.

HTTP / 3 standardizza l'uso del protocollo QUIC come trasporto per HTTP / 2. Il protocollo QUIC è stato sviluppato da Google come alternativa a TCP + TLS per il Web, quindi intende risolvere problemi con tempi lunghi di installazione e coordinamento composti in TCP e ritarda l'eliminazione della perdita di pacchetti durante la trasmissione dei dati. QUIC è un plug-in del protocollo UDP che supporta il multiplexing di più connessioni e fornisce metodi di crittografia equivalenti a TLS / SSL.

Tra le caratteristiche chiave di QUIC che spiccano:

  • Alta sicurezza, simile a TLS (infatti, QUIC offre la possibilità di utilizzare TLS su UDP).
  • Controllo dell'integrità del flusso che impedisce la perdita di pacchetti.
  • La possibilità di stabilire immediatamente una connessione (0-RTT, in circa il 75% dei casi, i dati possono essere trasferiti immediatamente dopo l'invio del pacchetto di configurazione della connessione) e garantire ritardi minimi tra l'invio di una richiesta e la ricezione di una risposta (RTT, Round Trip Time) .
  • Non utilizzare lo stesso numero di sequenza quando si ritrasmette un pacchetto, il che evita ambiguità nel determinare i pacchetti ricevuti ed elimina i timeout.
  • La perdita di un pacchetto influisce sulla consegna del solo flusso ad esso associato e non interrompe la consegna dei dati nei flussi trasmessi in parallelo sulla connessione corrente.
  • Strumenti di correzione degli errori che riducono al minimo i ritardi dovuti alla ritrasmissione di pacchetti persi. L'uso di speciali codici di correzione degli errori a livello di pacchetto per ridurre le situazioni che richiedono la ritrasmissione di dati a pacchetto persi.
  • I confini dei blocchi crittografici sono allineati con i confini dei pacchetti QUIC, riducendo l'effetto della perdita di pacchetti sulla decodifica del contenuto dei pacchetti successivi
  • Nessun problema con il blocco della coda TCP
  • Supporto per identificatore di connessione, che riduce il tempo necessario per stabilire una riconnessione per i client mobili
  • Possibilità di collegare meccanismi avanzati per controllare il sovraccarico della connessione
  • Utilizzo della tecnica di previsione della larghezza di banda in ciascuna direzione per garantire un'intensità di inoltro dei pacchetti ottimale, impedendo che raggiunga uno stato di congestione in cui si osserva la perdita di pacchetti
  • Prestazioni notevoli e guadagni di prestazioni su TCP. Per i servizi video come YouTube, QUIC ha mostrato una riduzione del 30% nelle operazioni di buffering durante la visione di video.

Come implementare il modulo per supportare HTTP / 3 in NGINX?

Per coloro che sono interessati a poter implementare questo modulo sul proprio server, Possono farlo seguendo le istruzioni che condividiamo di seguito.

Per compilarlo, devono solo scaricare la patch per nginx 1.16 e il codice della libreria quiche.

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

E compiliamo NGINX con supporto HTTP / 3 abilitato:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

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

--with-quiche=../quiche

make

Durante la compilazione, il supporto TLS dovrebbe essere basato sulla libreria BoringSSL ("–with-openssl = .. / quiche / deps / boringssl"), l'uso di OpenSSL non è ancora supportato.

Per accettare le connessioni nella configurazione, dovranno aggiungere la direttiva listener con il flag "quic".


Puoi essere il primo a lasciare un commento

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.