Společnost Microsoft o otevření kódu knihovny s implementací síťového protokolu . Kód je napsán v jazyce C a pod licencí MIT. Knihovna je multiplatformní a může být použita nejen v systému Windows, ale i v Linuxu s využitím nebo OpenSSL pro TLS 1.3. V budoucnu je plánována podpora i dalších platforem.
Knihovna je postavena na kódu ovladače msquic.sys, který je k dispozici v jádře Windows 10 (Insider Preview) pro zajištění fungování protokolů HTTP a na vrcholu QUIC. Mimo jiné se kód používá pro implementaci HTTP/3 ve vnitřním stacku Windows a v .NET Core. Vývoj knihovny MsQuic bude kompletně probíhat na GitHubu s využitím veřejného revizního procesu, pull requestů a GitHub Issues. Byla připravena infrastruktura, která kontroluje každý commit a pull request v souboru s více než 4000 testy. Po stabilizaci vývojového prostředí se plánuje přijímání změn od externích vývojářů.
MsQuic již lze použít pro vytváření serverů a klientů, ale ne všechna funkčnost definovaná ve specifikaci IETF je v současnosti dostupná. Například zatím není podpora 0-RTT, migrace klientů, Path MTU Discovery a správy preferovaných adres serveru (Server Preferred Address). Z implementovaných funkcí se vyzdvihuje optimalizace pro dosažení maximální propustnosti a minimálních latencí, podpora asynchronního vstupu/výstupu, RSS (Receive Side Scaling) a možnost sloučení příchozích a odchozích UDP toků. Implementace MsQuic byla testována na kompatibilitu s experimentálními větvemi prohlížečů Chrome a Edge.
Připomínáme, že HTTP/3 standardizuje použití protokolu QUIC jako transportu pro HTTP/2. Protokol (Quick UDP Internet Connections) se od roku 2013 vyvíjí společností Google jako alternativa k kombinaci TCP+TLS pro web, řešící problémy s dlouhým časem na nastavení a vyjednávání spojení v TCP a odstranění zpoždění při ztrátě paketů během přenosu dat. QUIC je nadstavbou nad protokolem UDP, podporující multiplexování několika spojení a poskytující metody šifrování, ekvivalentní TLS/SSL.
Hlavní QUIC:
- Vysoká bezpečnost, srovnatelná s TLS (v podstatě QUIC poskytuje možnost použití TLS 1.3 nad UDP);
- Kontrola integrity toku, která zabraňuje ztrátě paketů;
- Možnost okamžitého navázání spojení (0-RTT, v přibližně 75% případů lze data přenášet ihned po odeslání prvního paketu) a zajištění minimálních zpoždění mezi odesláním požadavku a obdržením odpovědi (RTT, doba zpětné cesty);
- Nepoužití stejného čísla sekvence při opětovném odeslání paketu, což eliminuje nejednoznačnost při určování přijatých paketů a zbavuje se časových limitů;
- Ztráta paketu ovlivňuje doručení pouze souvisejícího toku a nezastavuje doručení dat v paralelně přenášených tocích přes aktuální spojení;
- Nástroje pro opravu chyb, které minimalizují zpoždění způsobené opětovným přenosem ztracených paketů. Využití speciálních chybových kódů na úrovni paketů pro snížení situací, které vyžadují opětovný přenos dat ztraceného paketu.
- Hranice kryptografických bloků jsou sladěny s hranicemi paketů QUIC, což snižuje dopad ztráty paketů na dekódování obsahu následujících paketů;
- Žádné problémy s blokováním front TCP;
- Podpora identifikátoru spojení, která snižuje čas potřebný k opětovnému navázání spojení pro mobilní klienty;
- Možnost připojení rozšířených mechanismů řízení přetížení spojení;
- Použití techniky predikce šířky pásma v každém směru pro zajištění optimální intenzity odesílání paketů, což zabraňuje přechodu do stavu přetížení, ve kterém dochází ke ztrátě paketů;
- Výrazný výkonu a propustnosti ve srovnání s TCP. Pro video služby, jako je YouTube, prokázal QUIC snížení operací znovu vyrovnání během sledování videa o 30%.
Zdroj: opennet.ru
