Microsoft Företaget om öppen kÀllkod för biblioteket med implementeringen av nÀtverksprotokollet . Koden Àr skriven i C och under MIT-licens. Biblioteket Àr plattformsoberoende och kan anvÀndas inte bara pÄ Windows, utan Àven pÄ Linux med anvÀndning av eller OpenSSL för TLS 1.3. Stöd för andra plattformar Àr planerat att införas framöver.
Biblioteket Àr baserat pÄ koden frÄn drivrutinen msquic.sys, som tillhandahÄlls i kÀrnan av Windows 10 (Insider Preview) för att möjliggöra anvÀndning av protokollen HTTP och över QUIC. Denna kod anvÀnds Àven för implementeringen av HTTP/3 i den interna stacken i Windows och i .NET Core. Utvecklingen av biblioteket MsQuic kommer helt och hÄllet att ske pÄ GitHub med offentlig granskning, pull-förfrÄgningar och GitHub Issues. En infrastruktur har tagits fram för att kontrollera varje commit och pull-förfrÄgan med hjÀlp av mer Àn 4000 tester. Efter stabilisering av utvecklingsmiljön planeras det att ta emot Àndringar frÄn externa utvecklare.
MsQuic kan redan anvÀndas för att skapa servrar och klienter, men inte all funktionalitet som definieras i IETF-specifikationen Àr för nÀrvarande tillgÀnglig. Till exempel saknas stöd för 0-RTT, klientmigration, Path MTU Discovery och hantering av serverns föredragna adress (Server Preferred Address). Bland de implementerade funktionerna kan nÀmnas optimering för att uppnÄ maximal bandbredd och minimal latens, stöd för asynkron in-/utmatning, RSS (Receive Side Scaling) och möjlighet att slÄ samman inkommande och utgÄende UDP-flöden. Implementeringen av MsQuic har testats för kompatibilitet med experimentella grenar av webblÀsarna Chrome och Edge.
Vi pÄminner om att HTTP/3 standardiserar anvÀndningen av protokollet QUIC som transport för HTTP/2. Protokollet (Quick UDP Internet Connections) har utvecklats av Google sedan 2013 som ett alternativ till TCP+TLS-kopplingen för webben, som löser problem med lÄng tid för anslutning och förhandling i TCP och eliminerar fördröjningar vid paketförlust under dataöverföring. QUIC Àr ett tillÀgg till UDP-protokollet som stödjer multiplexering av flera anslutningar och tillhandahÄller krypteringsmetoder motsvarande TLS/SSL.
Huvud QUIC:
- Hög sÀkerhet, jÀmförbar med TLS (QUIC gör i grunden det möjligt att anvÀnda TLS 1.3 över UDP);
- Kontroll av strömmens integritet, vilket förhindrar pak förlust;
- Möjlighet att omedelbart upprÀtta en anslutning (0-RTT, i ungefÀr 75% av fallen kan data överföras omedelbart efter att anslutningsinstallationspaketet skickats) och sÀkerstÀlla minimala fördröjningar mellan begÀran och svar (RTT, Round Trip Time);
- Ingen anvÀndning av samma sekvensnummer vid Äteröverföring av paket som gör att man kan undvika tveksamhet vid identifieringen av mottagna paket och eliminera timeout-problem;
- Paketsförlust pÄverkar endast leveransen av den relaterade strömmen och stoppar inte dataöverföringen i parallella strömmar som sÀnds via den aktuella anslutningen;
- Felkorrekteringsmedel som minimerar förseningar pÄ grund av Äteröverföring av förlorade paket. AnvÀndning av speciella felkorrekteringskoder pÄ paketnivÄ för att minska situationer dÀr Äteröverföring av förlorad data krÀvs.
- GrÀnserna för kryptografiska block överensstÀmmer med grÀnserna för QUIC-paketen, vilket minskar pÄverkan av paketförluster pÄ avkodningen av innehÄllet i efterföljande paket;
- Ingen köblockering som uppstÄr i TCP;
- Stöd för anslutningsidentifierare som gör att tiden för att Äteransluta till mobila kunder minskar;
- Möjlighet att ansluta avancerade mekanismer för överbelastningskontroll;
- AnvÀndning av tekniker för kapacitetsprognoser i varje riktning för att sÀkerstÀlla optimal paketöverföringstakt och förhindra att man hamnar i en överbelastad status dÀr paketförluster observeras;
- SÀrskild i prestanda och kapacitet jÀmfört med TCP. För videotjÀnster som YouTube har anvÀndningen av QUIC visat pÄ en minskning av buffran under videoavspelning med 30%.
KĂ€lla: opennet.ru
