Microsoft vállalat a könyvtár kódjának megnyitásáról a hálózati protokoll megvalósításával . A kód C nyelven íródott, és MIT licenc alatt áll. A könyvtár több platformon is használható, nemcsak Windows-on, hanem Linux-on is, bevezetve a vagy OpenSSL használatát a TLS 1.3-hoz. A jövőben más platformok támogatása is tervben van.
A könyvtár a Windows 10 (Insider Preview) kerneljében található msquic.sys illesztőprogram kódján alapul, és a HTTP és QUIC feletti működés biztosítására szolgál. A kódot a Windows belső stackjében és a .NET Core-ban az HTTP/3 megvalósítására is használják. Az MsQuic könyvtár fejlesztése teljes mértékben a GitHub-on fog zajlani, nyilvános felülvizsgálatok, pull-kérelmek és GitHub Issues segítségével. Kidolgozásra került egy infrastruktúra, amely minden commitot és pull-kérelmet több mint 4000 teszt segítségével ellenőriz.
Az MsQuic már használható szerverek és kliensek létrehozására, de a jelenlegi állapot szerint nem minden funkció érhető el, ami az IETF specifikációban meg van határozva. Például jelenleg nincs támogatás a 0-RTT-hez, kliens migrációhoz, Path MTU felfedezéshez és a szerver címválasztási irányításhoz (Server Preferred Address). Az implementált funkciók közül kiemelendő a maximális áteresztőképesség és minimális késleltetés elérésére irányuló optimalizálás, az aszinkron bemenet/kimenet támogatása, a RSS (Receive Side Scaling) és a belső és külső UDP forgalmak egyesítési lehetősége. Az MsQuic megvalósítást a Chrome és Edge böngészők kísérleti ágaival való kompatibilitás ellenőrzésére tesztelték.
Emlékezzünk, hogy a HTTP/3 a QUIC protokoll használatát standardizálja a HTTP/2 számára. A protokoll Az éjszakai build-ekben a Firefox, amely az alapját képezi a 2022. január 7-én megjelenő Firefox 72-nek, támogatja a HTTP/3-at.
Fő QUIC:
- Magas szintű biztonság, amely hasonló a TLS-hez (lényegében a QUIC lehetőséget biztosít a TLS 1.3 UDP fölötti használatára);
- A folyam integritásának ellenőrzése, amely megakadályozza a csomagok elvesztését;
- A kapcsolat azonnali létrehozásának lehetősége (0-RTT, körülbelül 75%-os esetekben az adatokat közvetlenül a kapcsolati csomag elküldése után lehet átkonvertálni) és minimalizálva a késleltetést a kérés küldése és a válasz megérkezése között (RTT, Round Trip Time);
- Nem használja ugyanazt a szekvenciális számot egy csomag újraküldésekor, ami lehetővé teszi a kapott csomagok egyértelmű azonosítását és a timeoutok elkerülését;
- Csomag elvesztése csak az ahhoz kapcsolódó folyamat szállítását befolyásolja, és nem állítja le az adatokat a párhuzamosan átkonvertált folyamatok szállításában;
- Hibaellenőrző eszközök, amelyek minimalizálják a késéseket az elveszett csomagok újraküldése miatt. Speciális hibaellenőrző kódok használata csomagszinten a vesztes csomagok újraküldésének szükségességének csökkentésére.
- A kriptográfiai blokkok határai a QUIC csomagok határaival össze vannak hangolva, ezáltal csökkenti a csomagvesztések hatását a következő csomagok tartalmának dekódolására;
- Nincsenek problémák a TCP sorok blokkolásával;
- Támogatja a kapcsolati azonosítót, amely lehetővé teszi a mobil kliensek számára a visszakapcsolódási idő csökkentését;
- A kapcsolati túlterhelés-ellenőrzési mechanizmusok kiterjesztett lehetőségeinek csatlakoztatása;
- Sávszélesség-előrejelzési technikák használata mindkét irányban a csomagok optimális küldési intenzitásának biztosítása érdekében, elkerülve a túlterheltségi állapotba való kerülést, amely csomagvesztést eredményez;
- Észlelhető a teljesítményben és a sávszélességben a TCP-hez képest. Videószolgáltatások, például a YouTube esetében a QUIC alkalmazása 30%-kal csökkentette a videó nézése alatt a bufferelési műveletek számát.
Forrás: opennet.ru
