Microsoft Corporation over de openstelling van de bibliotheekcode met de implementatie van het netwerkprotocol . De code is geschreven in C en onder de MIT-licentie. De bibliotheek is cross-platform en kan niet alleen op Windows, maar ook op Linux worden gebruikt met behulp van of OpenSSL voor TLS 1.3. Verder is ondersteuning voor andere platforms gepland.
De bibliotheek is gebaseerd op de code van de msquic.sys-driver, die in de kernel van Windows 10 (Insider Preview) wordt geleverd voor de werking van de HTTP- en boven QUIC-protocollen. De code wordt onder andere gebruikt voor de implementatie van HTTP/3 in de interne stack van Windows en in .NET Core. De ontwikkeling van de MsQuic-bibliotheek zal volledig op GitHub plaatsvinden met behulp van openbare beoordeling, pull-verzoeken en GitHub Issues. Er is infrastructuur voorbereid die elke commit en pull-verzoek controleert via meer dan 4000 tests. Na stabilisatie van de ontwikkelomgeving is het plan om wijzigingen van externe ontwikkelaars te accepteren.
MsQuic kan al worden gebruikt voor het bouwen van servers en clients, maar niet alle functionaliteit die in de IETF-specificatie is gedefinieerd, is momenteel beschikbaar. Zo is 0-RTT-ondersteuning, clientmigratie, Path MTU Discovery en serveradresskeuzebeheer (Server Preferred Address) nog niet beschikbaar. Van de geĆÆmplementeerde functies worden optimalisaties voor maximale doorvoer en minimale latentie opgemerkt, ondersteuning voor asynchrone I/O, RSS (Receive Side Scaling), en de mogelijkheid om inkomende en uitgaande UDP-stromen te combineren. De implementatie van MsQuic is getest op compatibiliteit met experimentele takken van de browsers Chrome en Edge.
Ter herinnering: HTTP/3 standaardiseert het gebruik van het QUIC-protocol als transport voor HTTP/2. Het protocol (Quick UDP Internet Connections) wordt sinds 2013 door Google ontwikkeld als alternatief voor de combinatie TCP+TLS voor het web, wat problemen oplost met lange opbouw- en onderhandeltijden van verbindingen in TCP en vertragingen elimineert bij pakketverlies tijdens gegevensoverdracht. QUIC is een bovenlaag boven het UDP-protocol dat multiplexing van meerdere verbindingen ondersteunt en encryptiemethoden biedt die gelijkwaardig zijn aan TLS/SSL.
Belangrijkste QUIC:
- Hoge veiligheid, vergelijkbaar met TLS (in wezen biedt QUIC de mogelijkheid om TLS 1.3 boven UDP te gebruiken);
- Integriteitscontrole van de stream, wat pakketverlies voorkomt;
- De mogelijkheid om onmiddellijk verbinding te maken (0-RTT, in ongeveer 75% van de gevallen kunnen gegevens direct worden verzonden na het verzenden van het verbindingspakket) en minimale vertragingen te waarborgen tussen het verzenden van een verzoek en het ontvangen van een antwoord (RTT, Round Trip Time);
- Het niet gebruiken van het nummer van dezelfde volgorde bij het opnieuw verzenden van een pakket, wat dubbelzinnigheid bij de identificatie van ontvangen pakketten voorkomt en tijdsoverschrijdingen elimineert;
- Pakketverlies heeft alleen invloed op de aflevering van de bijbehorende stroom en stopt de aflevering van gegevens in de parallelle stromen die via de huidige verbinding worden verzonden;
- Foutcorrectiemechanismen verminderen vertragingen door het opnieuw verzenden van verloren pakketten. Het gebruik van speciale foutcorrectiecodes op het niveau van pakketten om situaties te verkorten die opnieuw verzenden van verloren gegevens vereisen.
- De grenzen van cryptografische blokken zijn afgestemd op de grenzen van QUIC-pakketten, wat de impact van pakketverlies op de decodering van de inhoud van volgende pakketten vermindert.
- Geen problemen met TCP-queue blocking.
- Ondersteuning voor een connectie-ID, waardoor de tijd voor het opnieuw tot stand brengen van een verbinding voor mobiele clients kan worden verkort.
- De mogelijkheid om geavanceerde mechanismen voor congestiecontrole in te schakelen.
- Het gebruik van bandbreedtevoorspellingstechnieken in beide richtingen om een optimale verzendintensiteit van pakketten te waarborgen, en te voorkomen dat het systeem in een overbelastingsstaat terechtkomt waarin pakketverlies optreedt.
- Significante van prestaties en bandbreedte vergeleken met TCP. Voor videoservices zoals YouTube heeft het gebruik van QUIC aangetoond dat het aantal herbufferingsoperaties tijdens het bekijken van video's met 30% is verminderd.
Bron: opennet.ru
