Microsoft je odprl svojo implementacijo protokola QUIC, ki se uporablja v HTTP/3

Microsoft napovedal o odpiranju kode knjižnice msquic z implementacijo omrežnega protokola QUIC. Koda je napisana v C in distributer pod licenco MIT. Knjižnica je večplatformska in jo je mogoče uporabljati ne samo v sistemu Windows, ampak tudi v sistemu Linux s kanal ali OpenSSL za TLS 1.3. V prihodnosti je načrtovana podpora za druge platforme.

Knjižnica temelji na kodi gonilnika msquic.sys, ki je na voljo v jedru sistema Windows 10 (Insider Preview), da omogoči HTTP in SMB na vrhu QUIC. Koda se uporablja tudi za implementacijo HTTP/3 v notranji sklad Windows in v .NET Core. Razvoj knjižnice MsQuic bo v celoti potekal na GitHubu z uporabo javnega medsebojnega pregleda, zahtevkov za vleko in GitHub Issues. Pripravljena je bila infrastruktura, ki preveri vsako zahtevo za objavo in vlečenje v nizu več kot 4000 testov. Po stabilizaciji razvojnega okolja je načrtovano sprejemanje sprememb zunanjih razvijalcev.

MsQuic je že mogoče uporabiti za ustvarjanje strežnikov in odjemalcev, vendar trenutno niso na voljo vse funkcije, opredeljene v specifikaciji IETF. Na primer, ni podpore za 0-RTT, selitev odjemalca, odkrivanje poti MTU ali nadzor prednostnega naslova strežnika. Med implementiranimi funkcijami je opaziti optimizacijo za doseganje največje prepustnosti in minimalnih zakasnitev, podporo za asinhroni vhod/izhod, RSS (sprejemno stransko skaliranje) in zmožnost kombiniranja vhodnih in izhodnih tokov UDP. Izvedba MsQuic je bila testirana glede združljivosti s poskusnimi različicami brskalnikov Chrome in Edge.

Spomnimo se, da HTTP/3 standardizira uporabo protokola QUIC kot transporta za HTTP/2. Protokol QUIC (Hitre internetne povezave UDP) je Google razvil od leta 2013 kot alternativo kombinaciji TCP+TLS za splet, ki rešuje težave z dolgimi nastavitvenimi in pogajalskimi časi za povezave v TCP ter odpravlja zamude, ko se paketi izgubijo med prenosom podatkov. QUIC je razširitev protokola UDP, ki podpira multipleksiranje več povezav in zagotavlja metode šifriranja, enakovredne TLS/SSL.

Glavni funkcije QUIC:

  • Visoka varnost, podobna TLS (v bistvu QUIC zagotavlja možnost uporabe TLS 1.3 preko UDP);
  • Nadzor celovitosti pretoka, preprečevanje izgube paketov;
  • Sposobnost takojšnje vzpostavitve povezave (0-RTT, v približno 75 % primerov se lahko podatki prenesejo takoj po pošiljanju paketa za nastavitev povezave) in zagotavljanje minimalnih zamud med pošiljanjem zahteve in prejemom odgovora (RTT, Round Trip Time);
    Microsoft je odprl svojo implementacijo protokola QUIC, ki se uporablja v HTTP/3

  • Neuporaba iste zaporedne številke pri ponovnem pošiljanju paketa, s čimer se izognete dvoumnosti pri prepoznavanju prejetih paketov in odpravite časovne omejitve;
  • Izguba paketa vpliva samo na dostavo z njim povezanega toka in ne ustavi dostave podatkov v vzporednih tokovih, ki se prenašajo prek trenutne povezave;
  • Funkcije za popravljanje napak, ki zmanjšajo zamude zaradi ponovnega prenosa izgubljenih paketov. Uporaba posebnih kod za popravljanje napak na ravni paketa za zmanjšanje situacij, ki zahtevajo ponovno pošiljanje izgubljenih paketnih podatkov.
  • Meje kriptografskih blokov so poravnane z mejami paketov QUIC, kar zmanjša vpliv izgube paketov na dekodiranje vsebine naslednjih paketov;
  • Ni težav z blokiranjem čakalne vrste TCP;
  • Podpora za identifikator povezave, ki skrajša čas, potreben za vzpostavitev ponovne povezave za mobilne odjemalce;
  • Možnost priklopa naprednih mehanizmov za nadzor prezasedenosti povezav;
  • Uporablja tehnike napovedovanja prepustnosti po smeri, da zagotovi, da so paketi poslani z optimalnimi hitrostmi, kar preprečuje, da bi postali prezasedeni in povzročili izgubo paketov;
  • Zaznavno rast zmogljivost in prepustnost v primerjavi s TCP. Pri video storitvah, kot je YouTube, se je izkazalo, da QUIC zmanjša operacije vnovičnega medpomnjenja pri gledanju videoposnetkov za 30 %.

Vir: opennet.ru

Dodaj komentar