Microsoft otevřel implementaci protokolu QUIC používaného v HTTP/3

Microsoft oznámil o otevření kódu knihovny msquic s implementací síťového protokolu QUIC. Kód je napsán v C a distribuovány pod licencí MIT. Knihovna je multiplatformní a lze ji používat nejen na Windows, ale také na Linuxu Schannel nebo OpenSSL pro TLS 1.3. Do budoucna se plánuje podpora dalších platforem.

Knihovna je založena na kódu ovladače msquic.sys poskytovaném v jádře Windows 10 (Insider Preview) pro povolení HTTP a SMB na vrcholu QUIC. Kód se také používá k implementaci HTTP/3 v interním zásobníku Windows a v .NET Core. Vývoj knihovny MsQuic bude probíhat výhradně na GitHubu pomocí veřejné vzájemné kontroly, žádostí o stažení a problémů s GitHub. Byla připravena infrastruktura, která kontroluje každý požadavek na potvrzení a stažení v sadě více než 4000 XNUMX testů. Po stabilizaci vývojového prostředí se plánuje přijetí změn od vývojářů třetích stran.

MsQuic již lze použít k vytváření serverů a klientů, ale ne všechny funkce definované ve specifikaci IETF jsou aktuálně dostupné. Například neexistuje podpora pro 0-RTT, migraci klienta, zjišťování cesty MTU nebo ovládání preferované adresy serveru. Mezi implementovanými funkcemi je zmíněna optimalizace pro dosažení maximální propustnosti a minimálních zpoždění, podpora asynchronního vstupu/výstupu, RSS (Receive Side Scaling) a schopnost kombinovat vstupní a výstupní UDP toky. Implementace MsQuic byla testována na kompatibilitu s experimentálními verzemi prohlížečů Chrome a Edge.

Připomeňme, že HTTP/3 standardizuje použití protokolu QUIC jako přenosu pro HTTP/2. Protokol QUIC (Quick UDP Internet Connections) byl vyvinut společností Google od roku 2013 jako alternativa ke kombinaci TCP+TLS pro web, řeší problémy s dlouhými časy nastavování a vyjednávání připojení v TCP a odstraňuje prodlevy při ztrátě paketů během přenosu dat. QUIC je rozšíření protokolu UDP, které podporuje multiplexování více připojení a poskytuje metody šifrování ekvivalentní TLS/SSL.

hlavní Rysy QUIC:

  • Vysoká bezpečnost podobná TLS (v podstatě QUIC poskytuje možnost používat TLS 1.3 přes UDP);
  • Řízení integrity toku, zabraňující ztrátě paketů;
  • Schopnost okamžitě navázat spojení (0-RTT, v přibližně 75 % případů lze data přenést ihned po odeslání paketu nastavení spojení) a poskytnout minimální prodlevy mezi odesláním požadavku a přijetím odpovědi (RTT, Round Trip Time);
    Microsoft otevřel implementaci protokolu QUIC používaného v HTTP/3

  • Nepoužívat stejné pořadové číslo při opakovaném přenosu paketu, což zabraňuje nejednoznačnosti při identifikaci přijatých paketů a zbavuje se časových limitů;
  • Ztráta paketu ovlivní pouze doručení s ním spojeného proudu a nezastaví doručování dat v paralelních proudech přenášených prostřednictvím aktuálního připojení;
  • Funkce opravy chyb, které minimalizují zpoždění kvůli opakovanému přenosu ztracených paketů. Použití speciálních kódů pro opravu chyb na úrovni paketů ke snížení situací vyžadujících opakovaný přenos ztracených paketových dat.
  • Hranice kryptografických bloků jsou zarovnány s hranicemi paketů QUIC, což snižuje dopad ztrát paketů na dekódování obsahu následujících paketů;
  • Žádné problémy s blokováním fronty TCP;
  • Podpora pro identifikátor připojení, který zkracuje dobu potřebnou k vytvoření opětovného připojení pro mobilní klienty;
  • Možnost připojení pokročilých mechanismů řízení přetížení připojení;
  • Využívá techniky předpovědi propustnosti v jednotlivých směrech, aby zajistil, že pakety budou odesílány optimální rychlostí, čímž se zabrání jejich zahlcení a ztrátě paketů;
  • Postřehnutelné růst výkon a propustnost ve srovnání s TCP. U video služeb, jako je YouTube, bylo prokázáno, že QUIC snižuje operace opětovného vyrovnávací paměti při sledování videí o 30 %.

Zdroj: opennet.ru

Přidat komentář