In de nachtblokken van Firefox en in de bètaversie is standaard ondersteuning voor het HTTP/3-protocol ingeschakeld. De stabiliteit van deze functie is gepland voor de release van Firefox 88 op 20 april.
De ondersteuning voor HTTP/3 in Firefox is gebaseerd op het door Mozilla ontwikkelde project neqo, dat de implementatie van de client en de server voor het QUIC-protocol biedt. De code van de componenten voor de ondersteuning van HTTP/3 en QUIC is geschreven in de programmeertaal Rust. Voor het beheren van de inschakeling van HTTP/3 is in about:config een optie «network.http.http3.enabled» beschikbaar. Experimentele ondersteuning voor HTTP/3 is ook al toegevoegd aan Chrome en curl, en voor servers is beschikbaar in nginx, evenals in de vorm van een nginx-module en een testserver van Cloudflare. Voor het testen van de werking van clients met HTTP/3 zijn verschillende testwebsites opgezet.
Het HTTP/3-protocol bevindt zich nog in de fase van een ruwe specificatie en is nog niet definitief gestandaardiseerd door de IETF. HTTP/3 definieert het gebruik van het QUIC-protocol als transport voor HTTP/2. Het QUIC-protocol (Quick UDP Internet Connections) wordt sinds 2013 door Google ontwikkeld als alternatief voor de TCP+TLS-stack voor het web, om problemen op te lossen met hoge tijdsduur voor het opzetten en onderhandelen van verbindingen in TCP, en om vertragingen als gevolg van pakketverlies tijdens gegevensoverdracht te elimineren. QUIC is een uitbreiding van het UDP-protocol, dat multiplexing van meerdere verbindingen ondersteunt en encryptiemethoden biedt die equivalent zijn aan TLS/SSL. Gedurende de ontwikkeling van de IETF-standaard zijn er wijzigingen in het protocol aangebracht, wat heeft geleid tot de opkomst van twee parallelle versies, een voor HTTP/3 en de andere die door Google wordt ondersteund (Chrome ondersteunt beide varianten).
Belangrijkste kenmerken van QUIC:
- Hoge beveiliging, vergelijkbaar met TLS (in wezen biedt QUIC de mogelijkheid om TLS 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);
- Gebruik van een ander volgnummer voor de opnieuw verzonden pakketten, waardoor verwarring bij de identificatie van ontvangen pakketten wordt vermeden en time-outs worden geëlimineerd;
- 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.
- Een opmerkelijke prestatieverbetering en doorvoersnelheid in vergelijking met TCP. Voor videoservices zoals YouTube heeft het gebruik van QUIC geleid tot een vermindering van herbufferingsacties tijdens het bekijken van video's met 30%.
Bron: opennet.ru
