Azienda NGINX sull'inizio dei test dei protocolli QUIC e HTTP/3 nel server HTTP e proxy nginx. L'implementazione si basa su della specifica IETF-QUIC ed è disponibile tramite , derivato dalla versione 1.19.0. Il codice è distribuito sotto licenza BSD e non si sovrappone a implementazione di HTTP/3 per nginx da parte di Cloudflare, che è un progetto separato.
Il supporto per HTTP/3 in nginx è segnato come sperimentale, poiché del protocollo sono state implementate. Tuttavia, nginx può già essere utilizzato per inviare risposte a semplici richieste HTTP/3 sopra QUIC e per caricare/restituire file di grandi dimensioni. Tra le funzionalità del protocollo attualmente mancanti ci sono i meccanismi di negoziazione della versione del protocollo, ECN e controllo del sovraccarico, log strutturati, modalità di recupero (QUIC recovery, gestione del flusso e del sovraccarico), NAT Rebinding, indirizzi mobili, Server push, e aggregazione dei dati (trailer). È stato inoltre fornito solo un supporto di base per la gestione dei pacchetti ACK e la gestione del flusso, che necessitano di ulteriori miglioramenti. Non tutte le esigenze dello standard sono state rispettate.
Per attivare HTTP/3 è necessario compilare nginx con il modulo http_v3_module e aggiungere un'ulteriore direttiva
«listen» con il flag «http3» per creare un socket UDP in ascolto. Ad esempio:
server {
listen 443 ssl; # socket TCP per HTTP/1.1
listen 443 http3 reuseport; # socket UDP per QUIC+HTTP/3
ssl_protocols TLSv1.3; # in QUIC è obbligatorio TLS 1.3
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;
add_header Alt-Svc ‘quic=»:443″‘; # indicatore di disponibilità di QUIC
add_header QUIC-Status $quic; # Intestazione con lo stato dell'uso di QUIC
}
Ricordiamo che HTTP/3 standardizza l'uso del protocollo QUIC come trasporto per HTTP/2. Il protocollo (Quick UDP Internet Connections) sviluppato da Google dal 2013 come alternativa alla combinazione TCP+TLS per il Web, che affronta i problemi dei lunghi tempi di connessione e accordo in TCP ed elimina i ritardi causati dalla perdita di pacchetti durante la trasmissione dei dati. QUIC è un'estensione del protocollo UDP, che supporta il multiplexing di più connessioni e fornisce metodi di crittografia equivalenti a TLS/SSL. Dallo lato del software client, il supporto sperimentale per HTTP/3 è già stato aggiunto in , e .
Principali QUIC:
- Elevata sicurezza, simile a TLS (in sostanza, QUIC offre la possibilità di utilizzare TLS 1.3 sopra UDP);
- Controllo dell'integrità del flusso, prevenendo la perdita di pacchetti;
- Possibilità di stabilire una connessione istantaneamente (0-RTT, in circa il 75% dei casi è possibile trasmettere dati subito dopo l'invio del pacchetto di inizializzazione) e garantire latenze minime tra l'invio della richiesta e la ricezione della risposta (RTT, Round Trip Time);
- Non utilizzare lo stesso numero di sequenza nella ritrasmissione dei pacchetti, per evitare ambiguità nella determinazione dei pacchetti ricevuti e eliminare i timeout;
- La perdita di pacchetti influisce solo sulla consegna del flusso correlato e non interrompe la consegna dei dati nei flussi trasmessi in parallelo attraverso la connessione attuale;
- Strumenti di correzione degli errori che minimizzano i ritardi causati dalla ritrasmissione dei pacchetti persi. Utilizzo di codici di correzione degli errori a livello di pacchetto per ridurre le situazioni che richiedono la ritrasmissione dei dati del pacchetto perso.
- I limiti dei blocchi crittografici sono allineati con i limiti dei pacchetti QUIC, riducendo l'impatto delle perdite di pacchetti sulla decodifica del contenuto dei pacchetti successivi;
- Assenza di problemi di blocco della coda TCP;
- Supporto dell'identificatore della connessione, che consente di ridurre il tempo per stabilire una connessione di ripristino per i clienti mobili;
- Possibilità di collegare meccanismi avanzati di controllo della congestione della connessione;
- L'uso di tecniche di previsione della capacità in ogni direzione per garantire un'intensità ottimale nell'invio dei pacchetti, evitando di scivolare in uno stato di sovraccarico in cui si verifica la perdita di pacchetti;
- Notevole prestazioni e capacità rispetto a TCP. Per i servizi video, come YouTube, l'applicazione di QUIC ha mostrato una riduzione delle operazioni di buffering durante la visione dei video del 30%.
Fonte: opennet.ru
