Cloudflare for at sikre støtte til HTTP/3 protokollen i NGINX. Modulet er udført som et lag oven på det udviklede bibliotek i Cloudflare. med implementeringen af transportprotokollen QUIC og HTTP/3. Koden til quiche er skrevet i Rust, men selve modulet til NGINX er skrevet i C og interagerer med biblioteket via dynamisk binding. Arbejdet under BSD-licensen.
For at bygge er det tilstrækkeligt at hente til nginx 1.16 og quiche biblioteket, hvorefter nginx skal recompiles med indstillingerne "--with-http_v3_module --with-quiche=../quiche". Under bygningen skal TLS-støtten baseres på BoringSSL biblioteket ("--with-openssl=../quiche/deps/boringssl"), brugen af OpenSSL er endnu ikke understøttet. For at modtage forbindelser skal direktivet listen tilføjes med flaget "quic" (for eksempel "listen 443 quic reuseport").
I klientsoftware er støtte til HTTP/3 allerede tilføjet i eksperimentelle builds af Chrome Canary og curl værktøjet. På serversiden har det stadig været nødvendigt at bruge begrænsede separate . Muligheden for at håndtere HTTP/3 i nginx vil i betydelig grad forenkle implementeringen af servere med støtte for HTTP/3 og gøre testimplementeringen af den nye protokol mere tilgængelig. Den indgående støtte til HTTP/3 i nginx i branch 1.17.x inden for 6-12 måneder.
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 (faktisk giver QUIC mulighed for brug af TLS oven på 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
