Microsoft je otvorio svoju implementaciju QUIC protokola koji se koristi u HTTP/3
Microsoft najavio o otvaranju šifre knjižnice gospođice Quic uz implementaciju mrežnog protokola QUIC. Kod je napisan u C i distribuira pod licencom MIT-a. Knjižnica je višeplatformska i može se koristiti ne samo na Windowsima, već i na Linuxu s kanal ili OpenSSL za TLS 1.3. U budućnosti se planira podržati i druge platforme.
Biblioteka se temelji na kodu upravljačkog programa msquic.sys koji se nalazi u jezgri sustava Windows 10 (Insider Preview) kako bi se omogućio HTTP i SMB na vrhu QUIC-a. Kod se također koristi za implementaciju HTTP/3 u internom Windows stogu iu .NET Core. Razvoj biblioteke MsQuic u potpunosti će se provoditi na GitHubu korištenjem javne recenzije, zahtjeva za povlačenjem i GitHub Issues. Pripremljena je infrastruktura koja provjerava svaki zahtjev za predaju i povlačenje u skupu od više od 4000 testova. Nakon stabilizacije razvojnog okruženja, planira se prihvatiti promjene od programera treće strane.
MsQuic se već može koristiti za izradu poslužitelja i klijenata, ali trenutno nisu dostupne sve funkcionalnosti definirane u IETF specifikaciji. Na primjer, nema podrške za 0-RTT, migraciju klijenta, Path MTU Discovery ili kontrolu željene adrese poslužitelja. Među implementiranim značajkama navodi se optimizacija za postizanje maksimalne propusnosti i minimalnih kašnjenja, podrška za asinkroni ulaz/izlaz, RSS (Skaliranje strane primanja) i mogućnost kombiniranja ulaznih i izlaznih UDP tokova. Implementacija MsQuic testirana je na kompatibilnost s eksperimentalnim verzijama preglednika Chrome i Edge.
Podsjetimo se da HTTP/3 standardizira korištenje QUIC protokola kao prijenosa za HTTP/2. Protokol QUIC (Quick UDP Internet Connections) Google je razvio od 2013. kao alternativu kombinaciji TCP+TLS za web, rješavajući probleme s dugim vremenom postavljanja i pregovaranja za veze u TCP-u i eliminirajući kašnjenja kada se paketi izgube tijekom prijenosa podataka. QUIC je proširenje UDP protokola koji podržava multipleksiranje više veza i pruža metode šifriranja ekvivalentne TLS/SSL-u.
Visoka sigurnost slična TLS-u (u osnovi QUIC pruža mogućnost korištenja TLS-a 1.3 preko UDP-a);
Kontrola integriteta protoka, sprječavanje gubitka paketa;
Mogućnost trenutnog uspostavljanja veze (0-RTT, u otprilike 75% slučajeva podaci se mogu prenijeti odmah nakon slanja paketa za postavljanje veze) i pružanja minimalnih kašnjenja između slanja zahtjeva i primanja odgovora (RTT, Round Trip Time);
Nekorištenje istog sekvencijskog broja pri ponovnom slanju paketa, čime se izbjegava dvosmislenost u identificiranju primljenih paketa i rješava se vremenskih ograničenja;
Gubitak paketa utječe samo na isporuku toka koji je s njim povezan i ne zaustavlja isporuku podataka u paralelnim tokovima koji se prenose kroz trenutnu vezu;
Značajke ispravljanja pogrešaka koje minimiziraju kašnjenja zbog ponovnog slanja izgubljenih paketa. Korištenje posebnih kodova za ispravljanje pogrešaka na razini paketa za smanjenje situacija koje zahtijevaju ponovni prijenos izgubljenih paketnih podataka.
Granice kriptografskih blokova usklađene su s granicama QUIC paketa, što smanjuje utjecaj gubitaka paketa na dekodiranje sadržaja sljedećih paketa;
Nema problema s blokiranjem TCP čekanja;
Podrška za identifikator veze, što smanjuje vrijeme potrebno za uspostavljanje ponovne veze za mobilne klijente;
Mogućnost povezivanja naprednih mehanizama kontrole zagušenja veze;
Koristi tehnike predviđanja propusnosti po smjeru kako bi se osiguralo da se paketi šalju optimalnim brzinama, sprječavajući da postanu zagušeni i uzrokuju gubitak paketa;
Primjetno rast performanse i propusnost u usporedbi s TCP-om. Za video usluge kao što je YouTube, pokazalo se da QUIC smanjuje operacije ponovnog međuspremnika prilikom gledanja videa za 30%.