In Firefox, die de basis zullen vormen voor de uitgave van Firefox 72, gepland op 7 januari, ondersteuning van het HTTP/3-protocol. Standaard is HTTP/3 uitgeschakeld en vereist het activeren van de optie «network.http.http3.enabled» in about:config.
De ondersteuning voor HTTP/3 in Firefox is gebaseerd op een project dat door Mozilla wordt ontwikkeld, , dat een implementatie van de client en server voor het QUIC-protocol biedt. De code van de componenten voor de ondersteuning van HTTP/3 en QUIC is geschreven in Rust.
Vanuit de clientsoftware heeft experimentele ondersteuning voor HTTP/3 ook al in Chrome en curl, en voor servers is er beschikbaar in de vorm voor nginx en gebaseerd op de bibliotheek ( QUIC en HTTP/3 in Rust van Cloudflare). Om de werking van HTTP/3-clients te testen, meerdere testwebsites gelanceerd, waarvan de meeste momenteel niet correct openen in Firefox (HTTP/3 is nog in de fase van en is nog niet volledig gestandaardiseerd).
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 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);
- 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
