Microsoft om åbningen af bibliotekets kildekode med implementeringen af netværksprotokollen . Koden er skrevet i C og er under MIT-licensen. Biblioteket er tværplatform og kan anvendes ikke kun i Windows, men også i Linux med brug af eller OpenSSL til TLS 1.3. Der planlægges fremover støtte til andre platforme.
Biblioteket er baseret på koden fra driveren msquic.sys, der leveres i Windows 10-kernen (Insider Preview) for at understøtte HTTP- og over QUIC. Herunder bruges koden til at implementere HTTP/3 i Windows' interne stak og i .NET Core. Udviklingen af MsQuic-biblioteket vil helt og holdent finde sted på GitHub med brug af offentlig gennemgang, pull-anmodninger og GitHub Issues. Der er klargjort en infrastruktur, der tester hver commit og pull-anmodning i et testset på over 4000 tests. Efter stabilisering af udviklingsmiljøet planlægges det at acceptere ændringer fra tredjepartsudviklere.
MsQuic kan allerede bruges til at oprette servere og klienter, men ikke al funktionalitet, der er defineret i IETF-specifikationen, er i øjeblikket tilgængelig. For eksempel er der endnu ikke support for 0-RTT, klientmigration, Path MTU Discovery og serveradressehåndtering (Server Preferred Address). Blandt de implementerede funktioner bemærkes optimering for at opnå maksimal båndbredde og minimal latens, understøttelse af asynkron input/output, RSS (Receive Side Scaling), samt muligheden for at samle indkommende og udgående UDP-strømme. Implementeringen af MsQuic er testet for kompatibilitet med eksperimentelle grene af browserne Chrome og Edge.
Det skal bemærkes, at HTTP/3 standardiserer brugen af PROTOKOLQUIC som transport for HTTP/2. Protokollen (Quick UDP Internet Connections) har været i udvikling af Google siden 2013 som et alternativ til TCP+TLS for Web, der løser problemer med lang forbindelsesetablering og -forhandling i TCP og fjerner forsinkelser ved tab af pakker under dataoverførsel. QUIC er en overbygning over UDP-protokollen, der understøtter multiplexing af flere forbindelser og tilbyder krypteringsmetoder, der svarer til TLS/SSL.
Vigtige QUIC:
- Høj sikkerhed, svarende til TLS (QUIC muliggør faktisk brugen af TLS 1.3 over UDP);
- Overvågning af strømmens integritet, der forhindrer tab af pakker;
- Mulighed for straks at etablere forbindelse (0-RTT, i ca. 75% af tilfældene kan data overføres straks efter sending af forbindelsespakken) og sikre minimale forsinkelser mellem fremsendelse af anmodning og modtagelse af svar (RTT, Round Trip Time);
- Undgåelse af at bruge den samme sekvensnummer ved genoverførsel af pakken, hvilket forhindrer tvetydighed ved identifikation af modtagne pakker og eliminerer timeouts;
- Pakketab påvirker kun leveringen af den tilknyttede strøm og stopper ikke dataoverførslen i parallelt overførte strømme gennem den aktuelle forbindelse;
- Fejlkorrektionsmidler, der minimerer forsinkelser på grund af genoverførsel af tabte pakker. Brug af specialiserede fejlkorrektionskoder på pakkeniveau for at reducere situationer, der kræver genoverførsel af data fra en tabt pakke.
- Grænserne for kryptografiske blokke er justeret med grænserne for QUIC-pakker, hvilket reducerer tabspakkernes indvirkning på afkodningen af indholdet i efterfølgende pakker;
- Ingen problemer med TCP-køblokering;
- Understøttelse af forbindelsesidentifikatoren, der reducerer tiden til at etablere en genforbindelse for mobile klienter;
- Mulighed for at tilslutte udvidede mekanismer til overvågning af forbindelsesoverbelastning;
- Brug af kapacitetsprognoseteknikker i hver retning for at sikre optimal intensitet i pakkeafsendelsen, hvilket forhindrer at glide ind i en overbelastningssituation, hvor pakkemister forekommer;
- Bemærkbar i ydeevne og kapacitet sammenlignet med TCP. For videotjenester som YouTube har brugen af QUIC vist sig at reducere genbufferingsoperationer med 30% under videovisning.
Kilde: opennet.ru
