Azienda Microsoft sull'apertura del codice della libreria con l'implementazione del protocollo di rete . Il codice è scritto in linguaggio C e sotto licenza MIT. La libreria è multipiattaforma e può essere utilizzata non solo su Windows, ma anche su Linux, utilizzando o OpenSSL per TLS 1.3. In futuro, è prevista il supporto per altre piattaforme.
La libreria è basata sul codice del driver msquic.sys, fornito nel kernel di Windows 10 (Insider Preview) per garantire il funzionamento dei protocolli HTTP e sopra QUIC. In particolare, il codice viene utilizzato per implementare HTTP/3 nel stack interno di Windows e in .NET Core. Lo sviluppo della libreria MsQuic sarà interamente condotto su GitHub con l'utilizzo di revisione pubblica, pull request e GitHub Issues. È stata preparata un'infrastruttura che verifica ogni commit e pull request su un insieme di oltre 4000 test. Dopo la stabilizzazione dell'ambiente di sviluppo, si prevede di accettare modifiche da parte di sviluppatori esterni.
MsQuic può già essere utilizzato per creare server e client, ma non tutte le funzionalità definite nella specifica IETF sono attualmente disponibili. Ad esempio, non è ancora supportato il 0-RTT, la migrazione dei client, il Path MTU Discovery e la gestione della selezione degli indirizzi per il server (Server Preferred Address). Tra le funzionalità implementate ci sono l'ottimizzazione per massimizzare la larghezza di banda e minimizzare le latenze, il supporto per l'input/output asincrono, RSS (Receive Side Scaling) e la possibilità di unire i flussi UDP in entrata e in uscita. L'implementazione di MsQuic è stata testata per la compatibilità con le versioni sperimentali dei browser Chrome e Edge.
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 di TCP+TLS per il web, risolvendo i problemi dei lunghi tempi di connessione e di handshake di TCP e riducendo i ritardi dovuti alla perdita di pacchetti durante il trasferimento dei dati. QUIC è una sovrastruttura del protocollo UDP, che supporta il multiplexing di più connessioni e fornisce metodi di crittografia equivalenti a TLS/SSL.
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
