Microsoft o otvorení kódu knižnice s implementáciou sieťového protokolu Kód je napísaný v jazyku C a pod licenciou MIT. Knižnica je multiplatformová a možno ju použiť nielen v Windowsale aj v Linux za účasti alebo OpenSSL pre TLS 1.3. Podpora pre ďalšie platformy sa plánuje v budúcnosti.
Knižnica je založená na kóde ovládača msquic.sys, ktorý je súčasťou jadra. Windows 10 (Insider Preview) na zabezpečenie fungovania HTTP a na QUIC. Tento kód sa tiež používa na implementáciu HTTP/3 v internom zásobníku. Windows a v .NET Core. Vývoj knižnice MsQuic bude prebiehať výlučne na GitHub s využitím verejného preskúmania, pull requestov a GitHub Issues. Bola vytvorená infraštruktúra, ktorá overuje každý commit a pull request oproti súboru viac ako 4 000 testov. Po stabilizácii vývojového prostredia sa plánuje akceptovanie príspevkov od vývojárov tretích strán.
MsQuic sa už dá použiť na vytváranie serverov a klientov, ale nie všetky funkcie definované v špecifikácii IETF sú momentálne k dispozícii. Napríklad neexistuje podpora pre 0-RTT, migráciu klientov, Path MTU Discovery ani výber preferovanej adresy servera. Medzi implementované funkcie patrí optimalizácia pre maximálnu priepustnosť a minimálnu latenciu, podpora asynchrónneho I/O, RSS (Receive Side Scaling) a možnosť zlúčenia vstupných a výstupných streamov UDP. Implementácia MsQuic bola testovaná na kompatibilitu s experimentálnymi vetvami prehliadačov Chrome a Edge.
Pripomeňme, že HTTP/3 štandardizuje používanie protokolu QUIC ako prenosu pre HTTP/2. Protokol (Quick UDP Internet Connections) vyvinula spoločnosť Google od roku 2013 ako alternatívu ku kombinácii TCP+TLS pre web, čím rieši problémy s dlhými časmi nastavenia a vyjednávania pre pripojenia v TCP a odstraňuje oneskorenia pri strate paketov počas prenosu dát. QUIC je rozšírenie protokolu UDP, ktoré podporuje multiplexovanie viacerých pripojení a poskytuje metódy šifrovania ekvivalentné TLS/SSL.
Hlavné QUIC:
- Vysoká bezpečnosť podobná TLS (v podstate QUIC poskytuje možnosť používať TLS 1.3 cez UDP);
- Kontrola integrity toku, zabránenie strate paketov;
- Schopnosť okamžitého nadviazania spojenia (0-RTT, v približne 75 % prípadov je možné preniesť dáta ihneď po odoslaní paketu nastavenia spojenia) a poskytnúť minimálne oneskorenia medzi odoslaním požiadavky a prijatím odpovede (RTT, Round Trip Time);
- nepoužívanie rovnakého poradového čísla pri opätovnom prenose paketu, čo zabraňuje nejednoznačnosti pri identifikácii prijatých paketov a zbavuje sa časových limitov;
- Strata paketu ovplyvňuje iba doručovanie toku, ktorý je s ním spojený, a nezastavuje doručovanie údajov v paralelných tokoch prenášaných cez aktuálne spojenie;
- Funkcie opravy chýb, ktoré minimalizujú oneskorenia v dôsledku opätovného prenosu stratených paketov. Použitie špeciálnych kódov na opravu chýb na úrovni paketov na zníženie situácií vyžadujúcich opakovaný prenos stratených paketových dát.
- Hranice kryptografických blokov sú zarovnané s hranicami paketov QUIC, čo znižuje vplyv strát paketov na dekódovanie obsahu nasledujúcich paketov;
- Žiadne problémy s blokovaním fronty TCP;
- Podpora pre identifikátor pripojenia, ktorý znižuje čas potrebný na vytvorenie opätovného pripojenia pre mobilných klientov;
- Možnosť pripojenia pokročilých mechanizmov kontroly preťaženia pripojenia;
- Používa techniky predpovedania priepustnosti v každom smere, aby sa zabezpečilo, že pakety budú odosielané optimálnou rýchlosťou, čím sa zabráni ich preťaženiu a strate paketov;
- Vnímateľné výkon a priepustnosť v porovnaní s TCP. V prípade video služieb, ako je YouTube, sa ukázalo, že QUIC znižuje operácie opätovného vyrovnávania pamäte pri sledovaní videí o 30 %.
Zdroj: opennet.ru
