Microsoft raamatukogu koodi avamise kohta võrguprotokolli rakendamisega . Kood on kirjutatud C ja под лицензией MIT. Библиотека кроссплатформенная и может использоваться не только в Windows, aga ka Linux с задействованием või OpenSSL TLS 1.3 jaoks. Tulevikus on plaanis toetada ka teisi platvorme.
Библиотека основана на коде драйвера msquic.sys, предоставляемого в ядре Windows 10 (Insider Preview) для обеспечения работы протоколов HTTP и поверх QUIC. В том числе код используется для реализации HTTP/3 во внутреннем стеке Windows и в .NET Core. Разработка библиотеки MsQuic целиком будет вестись на GitHub с использованием публичного рецензирования, pull-запросов и GitHub Issues. Подготовлена инфраструктура, проверяющая каждый коммит и pull-запрос в наборе из более 4000 тестов. После стабилизации окружения для разработки планируется принимать изменения от сторонних разработчиков.
MsQuicit saab juba kasutada serverite ja klientide loomiseks, kuid kõik IETF-i spetsifikatsioonis määratletud funktsioonid pole praegu saadaval. Näiteks puudub tugi 0-RTT-le, kliendi migratsioonile, tee MTU avastamisele ega serveri eelistatud aadressi juhtimisele. Rakendatud funktsioonide hulgas märgitakse optimeerimist, et saavutada maksimaalne läbilaskevõime ja minimaalsed viivitused, asünkroonse sisendi/väljundi tugi, RSS (Receive Side Scaling) ning võimalus kombineerida sisend- ja väljund-UDP-vooge. MsQuic'i teostuse ühilduvust Chrome'i ja Edge'i brauserite eksperimentaalsete versioonidega on testitud.
Tuletage meelde, et HTTP/3 standardib QUIC-protokolli kasutamist HTTP/2 transpordina. Protokoll (Quick UDP Internet Connections) on Google alates 2013. aastast välja töötanud alternatiivina TCP+TLS-i kombinatsioonile veebi jaoks, lahendades probleeme pikkade häälestus- ja läbirääkimisaegadega TCP-ühenduste jaoks ning kõrvaldades viivitused, kui andmeedastuse ajal paketid kaovad. QUIC on UDP-protokolli laiendus, mis toetab mitme ühenduse multipleksimist ja pakub TLS/SSL-iga samaväärseid krüpteerimismeetodeid.
Kõik QUIC:
- Kõrge turvalisus, mis sarnaneb TLS-iga (sisuliselt pakub QUIC võimalust kasutada TLS 1.3 üle UDP);
- Voo terviklikkuse kontroll, mis hoiab ära pakettide kadumise;
- Võimalus koheselt luua ühendus (0-RTT, ligikaudu 75% juhtudest saab andmeid edastada kohe pärast ühenduse seadistuspaketi saatmist) ja tagada minimaalsed viivitused päringu saatmise ja vastuse saamise vahel (RTT, Round Trip Time);
- Paketi uuesti edastamisel ei kasutata sama järjenumbrit, mis väldib vastuvõetud pakettide tuvastamisel ebaselgust ja vabaneb ajalõppudest;
- Paketi kadumine mõjutab ainult sellega seotud voo edastamist ega peata andmete edastamist paralleelsetes voogudes, mis edastatakse praeguse ühenduse kaudu;
- Veaparandusfunktsioonid, mis minimeerivad kadunud pakettide uuesti saatmisest tingitud viivitusi. Spetsiaalsete veaparanduskoodide kasutamine paketi tasemel, et vähendada olukordi, mis nõuavad kadunud pakettandmete uuesti edastamist.
- Krüptograafiliste plokkide piirid joondatakse QUIC-pakettide piiridega, mis vähendab pakettide kadude mõju järgnevate pakettide sisu dekodeerimisele;
- TCP järjekorra blokeerimisega probleeme pole;
- Ühenduse identifikaatori tugi, mis vähendab mobiiliklientide taasühenduse loomiseks kuluvat aega;
- Võimalus ühendada täiustatud ühenduse ülekoormuse kontrollimehhanisme;
- Kasutab suunapõhiseid läbilaskevõime prognoosimise tehnikaid, et tagada pakettide saatmine optimaalse kiirusega, vältides nende ummistumist ja pakettide kadumist;
- Tajutav jõudlus ja läbilaskevõime võrreldes TCP-ga. Videoteenuste (nt YouTube) puhul vähendab QUIC taaspuhverdamistoiminguid videote vaatamisel 30%.
Allikas: opennet.ru
