HTTP/3 e QUIC: il nuovo protocollo basato su UDP

| Web Performance

TTP/3 e QUIC: il nuovo protocollo basato su UDP - Mirko Ciesco

Si è parlato tanto del nuovo protocollo internet HTTP/3, già da quando durante il 18 Novembre del 2018, lo IETF, Internet Engineering Task Force, l’organismo che si occupa di sviluppare e promuovere standard internet, si trovava a Bangkok per discutere l’adozione del nuovo Internet Draft.

Poi la notizia, il 27 Settembre 2019: Google, Mozilla e Cloudflare hanno annunciato ufficialmente l’adozione del nuovo protocollo HTTP/3; occorre sottolineare che Google e Facebook avevano già dichiarato in precedenza di utilizzarlo, rispettivamente dal 2015 e nel 2017.

Questo ha segnato un cambiamento decisivo per il web che diventa ancora più moderno, veloce e sicuro.

Ti interessa sapere come funziona HTTP/3, quali miglioramenti ha apportato il nuovo protocollo e come verificare se è attivo? Allora continua a leggere l’articolo e approfondiamo insieme questo tema!

Da HTTP a HTTP/3: tutto è iniziato così 

HTTP è un acronimo per “HyperText Transfer Protocol” (protocollo di trasferimento di un ipertesto) ovvero un protocollo a livello applicativo utilizzato come sistema per la trasmissione di informazioni sul web.

La prima versione dell’HTTP, come ti accennavo, è stata la 0.9 e risale alla fine degli anni ’80.  

L’HTTP/1.1 arriva, invece, nel 1999, presentando però un problema detto HOLB: Head of Line Blocking: sostanzialmente un fenomeno che aveva luogo quando una lista di pacchetti, costituita dalla sequenza di dati finita e distinta tramessa su una rete, veniva bloccata dal primo. Se era presente una richiesta lenta allora di conseguenza tutte quelle successive erano penalizzate e il sito web risultava lento.

Da allora sono stati introdotti numerosi miglioramenti e si sono susseguiti in quest’ordine: HTTP/2, QUIC (Quick UDP Internet Connections) inizialmente sviluppato da Google e, infine, HTTP/3, conosciuto anche come HTTP-over-QUIC.

Da leggere: perché è importante attivare la compressione Gzip o Brotli

I vantaggi di HTTP/2

Grazie a HTTP/2 è stato introdotto il supporto multiplexing, questo ha fatto si che fosse possibile gestire più richieste contemporaneamente, così che non si formasse la coda. Le pagine quindi sono state liberate dal vincolo della progressione lineare dei download.

In questo modo una risorsa javascript di grandi dimensioni non rappresenta per forza un punto di strozzatura per tutte le risorse statiche in attesa di essere scaricate. Se si considera anche la compressione HPACK dell’header HTTP/2 e il formato binario predefinito per trasferire i dati non si può non convenire sul fatto che HTTP/2 sia un protocollo efficiente.

 Tendenzialmente HTTP/2 se non sono presenti problemi di connettività funziona bene, però è altrettanto vero che siccome tutte le richieste vengono inviate su una singola connessione TCP e quest’ ultima non sempre gode di ottime prestazioni, l’intero caricamento delle pagine potrebbe risentirne se le condizioni non fossero ottimali.

Secondo le recensioni pubblicate da Kinsta, HTTP/2 avrebbe certamente apportato delle migliorie significative con i download non bloccanti, le pipeline e il server push. In questo modo è stato possibile superare alcune limitazioni del protocollo TCP e così ridurre significativamente il numero dei cicli richiesta-risposta e di handshake.

Gli svantaggi di HTTP/2

Tuttavia, occorre specificare che le principali implementazioni dei browser, per sfruttare i vantaggi di HTTP/2, hanno obbligato i siti web a implementare la crittografia SSL e questo ha causato un sovraccarico di calcolo che non ha fatto percepire i vantaggi legati alla velocità.

Inoltre, non è presente la funzione server-push per l’implementazione NGINX. Questo è uno svantaggio perché i moduli NGINX non sono come i moduli drop-in di Apache e quindi non si possono copiare, occorre ricompilare NGINX con tali moduli.

I problemi citati sono stati risolti e, osservando l’intero stack del protocollo, si nota come il vincolo principale sia ad un livello inferiore rispetto a HTTP/2.

I miglioramenti apportati da QUIC

QUIC è il successore di HTTP/2 ed è la colonna portante su cui poggia HTTP/3 (Fonte: WikiPedia). Sviluppato da Google intorno al 2012, QUIC è stato distribuito, prima dell’adozione ufficiale da parte di importanti piattaforme, sia nel browser Chrome che su Youtube.

Questa distribuzione è stata fondamentale non solo per poter studiare ed osservare il protocollo, ma anche per poter perfezionare il design prima di sottoporlo all’esame IETF, da cui poi si è costituito il QUIC Working Group.

Gli obiettivi di QUIC

Ma quali sono gli obiettivi prefissati da QUIC? La sfida principale è stata quella di migliorare la gestione delle connessioni per risolvere eventuali blocchi e aumentare la velocità, nello specifico: limitare, prevenire e rendere più efficienti l’invio dei pacchetti di dati, con attenzione ai parametri legati alla velocità di risposta.

Per quanto riguarda il Round Trip Time, il tempo che intercorre tra l’invio di un segnale più il tempo necessario per la ricezione della conferma, se si ha una connessione internet ottimale, la latenza tra client e un server remoto fisicamente vicino è compresa tra 10-50 ms: ogni pacchetto trasmesso impiegherà questo tempo per essere ricevuto.

La situazione cambia se il server contattato si trova in un altro continente ed è quindi fisicamente lontano oppure se la navigazione avviene tramite un operatore telefonico mobile mediante connessioni più lente. Il risultato è una penalità sulla latenza superiore o uguale ai 100 ms. Tutto questo “per colpa” della distanza da percorrere.

Senza contare che le reti mobili devono subire un ulteriore ritardo tra i 100-150 ms (50 ms su connessioni 4G/LTE) tra telefono e server per colpa delle frequenze radio e delle reti intermedie.

Centinai di millisecondi ti sembrano irrisori? Non la pensa così Google che dimostra grazie a dati e statistiche quanto la velocità e la reattività della risposta siano centrali in un sito per garantire all’utente una User Experience di qualità e per non far scappare i visitatori verso altri siti.

Considerando quindi i dispositivi mobili per comunicazioni su grande distanza, QUIC, grazie alla differenza tra l’invio e la ricezione unificata, permette un risparmio di centinaia di millisecondi.

Quali sono i vantaggi di QUIC?

I vantaggi di QUIC sono numerosi e, essendo il protocollo su cui poggia HTTP/3, esaminarli è importante per capire come la rete si stia evolvendo. I miglioramenti sono diversi come spiega Nicholas Marmonti nel suo articolo su QUIC e HTTP/3. Ora, mettiti comodo, perché li analizzeremo insieme.

Intanto, continuando a parlare del Round Trip Time, i servizi particolarmente sensibili alla latenza (ad esempio le ricerche sul web) guadagnano proprio da connessioni zero-round-trip. Accedere ad una pagina HTTPS richiede una comunicazione che impiega 2/3 cicli con il server per stabilire una connessione sicura prima che il browser scarichi la pagina.

connessione quic tcp tls a confronto
  1. Tempo necessario per ripetere la connessione
  2. Tempo necessario per la prima connessione al server

Con QUIC le cose cambiano perché il protocollo è progettato in modo che, se un client ha già dialogato con un server, può cominciare a inviare dati senza tempi di attesa. Risultato? Una risposta client-server-client decisamente più celere. Pure un sito ottimizzato come Google ottiene un miglioramento del 3%!

Il miglioramento apportato da QUIC ricorda quello TCP+TLS+HTTP/2, ma implementato sul protocollo di rete UPD. Ad ogni modo TPC è parte integrante nel kernel del sistema operativo e quindi fare delle modifiche significative è decisamente complicato. Occorrerebbe lavorare su rilasci che hanno un impatto a livello di sistema e di solito sono distribuiti lentamente sui server.

QUIC, invece, diminuisce le limitazioni rendendo superfluo l’aggiornamento dei kernel dei sistemi perché trasferisce il proprio funzionamento nello spazio utente. Basandosi su UPD, inoltre, garantisce prestazioni ottimali per gli utenti connessi a reti lente o con latenza elevata, dato che gestisce le richieste in maniera differente a confronto con i protocolli usati in precedenza.

Altri vantaggi importanti apportati da QUIC, oltre la connessione più veloce, sono:

  • Il supporto al Multiplexing;
  • I pacchetti FEC, Foward Error Correction, una specie di copia di sicurezza;
  • Congestion control;
  • Autenticazione e crittografia per la difesa dai possibili attacchi;
  • Maggiore compatibilità;

Come verificare se QUIC è attivo

A questo punto, dopo aver visto i vantaggi e i miglioramenti introdotti da QUIC, sono certo che vorrai sapere come verificare se è attivo.

Il procedimento è semplicissimo: basta utilizzare il Chrome DevTools di Google Chrome e caricare una pagina ricordandoti di tenere aperto il Network panel. Ora guarda nella colonna Protocol e nota se è presente la stringa: http/2+quic/43. Nel caso lo fosse, allora significa che quel dominio sta usando QUIC.

google chrome come verificare protocol http3 quic

Vale la pena ricordarti che se utilizzi Siteground come hosting probabilmente stai già usufruendo di QUIC perché già da diverso tempo è stato attivato il supporto per i siti ospitati sui server.

Cloudfare, invece, dichiara che i suoi clienti potranno attivare HTTP/3 tramite un’opzione presente nella dashboard per abilitare il supporto. Quindi, quando gli utenti visiteranno un sito web da un client con supporto HTTP/3, la connessione verrà stabilita in automatico utilizzando il nuovo protocollo e non le versioni più datate.

HTTP/3 il web del futuro è arrivato!

Se sei arrivato fin qui, potrai concordare insieme a me sull’importanza di HTTP/3 i cui miglioramenti apportati rendono il web un ambiente sempre più efficiente e proiettato verso un futuro tutt’altro che lontano!

Per sintetizzare in poche frasi quanto riportato, HTTP/3 è l’ultima versione di HTTP, protocollo attraverso cui i contenuti delle pagine web vengono trasferiti dai server ai client: si tratta di un protocollo diverso da tutti i suoi predecessori che ha introdotto novità fondamentali. Il protocollo è stato interamente riscritto, utilizzando QUIC invece che TCP, ed è stato impiegato il protocollo crittografico TLS.

I cambiamenti introdotti mirano a rendere il web più veloce, sicuro e a migliorare l’esperienza di navigazione per ogni utente. Se hai ancora dei dubbi riguardo al protocollo UDP adottato da HTTP/3 e vuoi capire come sfruttare al massimo questa novità per rendere il tuo sito web ancora più performante, ma non sai da dove cominciare, schiaccia il bottone qui sotto e iniziamo subito!

Voglio migliorare il mio sito

Mirko Ciesco

Mirko Ciesco

Web Performer

Sviluppatore web esperto in web performance. Realizza siti web, ottimizza la SEO tecnica e migliora l’usabilità dei siti internet attraverso la web analytics. Collabora con Studio Samo e tiene corsi di web design in Novel Academy a Torino.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *