Spoločnosť Microsoft o otvorení kódu knižnice s realizáciou sieťového protokolu . Kód je napísaný v jazyku C a pod licenciou MIT. Knižnica je multiplatformová a môže byť použitá nielen vo Windows, ale aj v Linuxe s využitím alebo OpenSSL pre TLS 1.3. V budúcnosti sa plánuje podpora aj iných platforiem.
Knižnica je založená na kóde ovládača msquic.sys, ktorý je poskytovaný v jadre Windows 10 (Insider Preview) na zabezpečenie fungovania protokolov HTTP a nad QUIC. Z toho sa kód používa na realizáciu HTTP/3 vo vnútornom stacku Windows a v .NET Core. Vývoj knižnice MsQuic bude prebiehať výhradne na GitHub s využitím verejného preskúmania, pull-žiadaní a GitHub Issues. Bola pripravená infraštruktúra, ktorá kontroluje každý commit a pull-žiadosti v súbore s viac ako 4000 testami. Po stabilizácii vývojového prostredia sa plánuje prijímanie zmien od externých vývojárov.
MsQuic je už možné používať na vytváranie serverov a klientov, ale nie všetka funkčnosť definovaná v špecifikácii IETF je v súčasnosti dostupná. Napríklad zatiaľ nie je podpora 0-RTT, migrácie klientov, Path MTU Discovery a správy výberu adries pre server (Server Preferred Address). Z realizovaných funkcií sa uvádza optimalizácia na dosiahnutie maximálnej priepustnosti a minimálnych oneskorení, podpora asynchrónneho vstupu/výstupu, RSS (Receive Side Scaling), možnosť spojenia prichádzajucich a odchádzajúcich UDP tokov. Implementácia MsQuic bola overená na kompatibilitu s experimentálnymi vetvami prehliadačov Chrome a Edge.
Pripomíname, že HTTP/3 štandardizuje použitie protokolu QUIC ako transportu pre HTTP/2. Protokol (Quick UDP Internet Connections) sa od roku 2013 vyvíja spoločnosťou Google ako alternatíva k spojeniu TCP+TLS pre Web, čím rieši problémy s dlhým časom nadviazania a dohody spojenia v TCP a eliminuje oneskorenia pri strate paketov počas prenosu údajov. QUIC je nadstavbou nad protokolom UDP, podporujúcou multiplexovanie viacerých spojení a poskytujúcou metódy šifrovania ekvivalentné TLS/SSL.
Hlavné QUIC:
- Vysoká bezpečnosť, podobná TLS (v podstate QUIC umožňuje používanie TLS 1.3 nad UDP);
- Kontrola integrity toku, zabraňujúca strate paketov;
- Možnosť okamžite nadviazať spojenie (0-RTT, v približne 75% prípadoch je možné prenášať údaje ihneď po zaslaní paketu na nadviazanie spojenia) a zabezpečiť minimálne oneskorenia medzi zaslaním požiadavky a prijatím odpovede (RTT, Round Trip Time);
- Nezapočítať pri opätovnom zaslaní paketu rovnaké číslo sekvencie, čo umožňuje vyhnúť sa nejednoznačnosti pri určovaní prijatých paketov a zbaviť sa časových limitov;
- Strata пакeta ovplyvňuje doručovanie iba súvisiacich prúdov a nezastavuje doručovanie údajov v súbežne prenášaných prúdoch cez aktuálne spojenie;
- Prostriedky na opravu chýb minimalizujúce oneskorenia spôsobené opätovným prenosom stratených balíkov. Použitie špeciálnych kódov na opravu chýb na úrovni пакета na zníženie situácií, ktoré si vyžadujú opätovný prenos údajov strateného пакeta.
- Hranice kryptografických blokov sú vyrovnané s hranicami пакetov QUIC, čo zmenšuje vplyv strát paketov na dekódovanie obsahu nasledujúcich paketov;
- Neexistujú žiadne problémy s blokovaním frontu TCP;
- Podpora identifikátora spojenia, ktorý umožňuje skrátiť čas potrebný na obnovenie spojenia pre mobilných klientov;
- Možnosť pripojenia rozšírených mechanizmov riadenia preťaženia spojenia;
- Použitie techniky predpovedania priepustnosti v každom smere na zabezpečenie optimálnej intenzity odosielania paketov, čím sa zabraňuje prechodu do stavu preťaženia, pri ktorom dochádza k strate paketov;
- Pozoruhodný výkon a priepustnosť v porovnaní s TCP. Pre video služby ako YouTube ukázalo použitie QUIC 30% zníženie operácií opätovného vyrovnávania pri prehrávaní videa.
Zdroj: opennet.ru
