Cloudflare har implementert en modul for å støtte HTTP / 3 i NGINX

Cloudflare Company forberedt modul for å gi støtte for HTTP/3-protokollen i NGINX. Modulen er designet som et tillegg til biblioteket utviklet av Cloudflare quiche med implementering av QUIC- og HTTP/3-transportprotokollen. Quichekoden er skrevet i Rust, men selve NGINX-modulen er skrevet i C og får tilgang til biblioteket ved hjelp av dynamisk kobling. Utviklinger åpen under BSD-lisens.

For å sette sammen, bare last ned lapp til nginx 1.16 og kode quiche-biblioteker, og bygg deretter nginx på nytt med alternativene "—with-http_v3_module —with-quiche=../quiche". Når du bygger, bør TLS-støtte være basert på BoringSSL-biblioteket ("--with-openssl=../quiche/deps/boringssl"), bruken av OpenSSL støttes ennå ikke. For å godta tilkoblinger, må du legge til lyttedirektivet med "quic"-flagget til innstillingene (for eksempel "lytt 443 quic gjenbruksrapport").

I klientprogramvare er HTTP/3-støtte allerede lagt til eksperimentelle versjoner av Chrome Canary og curl-verktøyet. På serversiden var det til nå nødvendig å bruke separat, begrenset testimplementeringer. Muligheten til å behandle HTTP/3 i nginx vil betydelig forenkle distribusjonen av servere med HTTP/3-støtte og vil gjøre testimplementering av den nye protokollen mer tilgjengelig. Fremveksten av standardstøtte for HTTP/3 i nginx forventet å i 1.17.x-grenen i 6-12 måneder.

Husk at HTTP/3 standardiserer bruken av QUIC-protokollen som transport for HTTP/2. Protokoll QUIC (Quick UDP Internet Connections) har blitt utviklet av Google siden 2013 som et alternativ til TCP+TLS-kombinasjonen for nettet, og løser problemer med lange oppsett- og forhandlingstider for tilkoblinger i TCP og eliminerer forsinkelser når pakker går tapt under dataoverføring. QUIC er en utvidelse av UDP-protokollen som støtter multipleksing av flere tilkoblinger og gir krypteringsmetoder tilsvarende TLS/SSL.

Den viktigste Spesifikasjoner QUIC:

  • Høy sikkerhet som ligner på TLS (i hovedsak gir QUIC muligheten til å bruke TLS over UDP);
  • Flytintegritetskontroll, forhindrer pakketap;
  • Muligheten til å umiddelbart opprette en forbindelse (0-RTT, i omtrent 75 % av tilfellene kan data overføres umiddelbart etter sending av tilkoblingsoppsettpakken) og gir minimale forsinkelser mellom sending av en forespørsel og mottak av svar (RTT, Round Trip Time);
  • Å ikke bruke samme sekvensnummer når du sender en pakke på nytt, noe som unngår tvetydighet i å identifisere mottatte pakker og eliminerer tidsavbrudd;
  • Tap av en pakke påvirker bare leveringen av strømmen knyttet til den og stopper ikke leveringen av data i parallelle strømmer som overføres gjennom den gjeldende forbindelsen;
  • Feilrettingsfunksjoner som minimerer forsinkelser på grunn av reoverføring av tapte pakker. Bruk av spesielle feilrettingskoder på pakkenivå for å redusere situasjoner som krever reoverføring av tapte pakkedata.
  • Kryptografiske blokkgrenser er justert med QUIC-pakkegrenser, noe som reduserer effekten av pakketap på dekoding av innholdet i påfølgende pakker;
  • Ingen problemer med blokkering av TCP-kø;
  • Støtte for tilkoblingsidentifikator, som reduserer tiden det tar å etablere en ny tilkobling for mobilklienter;
  • Mulighet for å koble til avanserte mekanismer for kontroll av overbelastning;
  • Bruker prognoseteknikker per retning for å sikre at pakker sendes med optimale hastigheter, og forhindrer at de blir overbelastet og forårsaker pakketap;
  • Merkbar vekst ytelse og gjennomstrømning sammenlignet med TCP. For videotjenester som YouTube, har QUIC vist seg å redusere tilbakestillingsoperasjoner når du ser på videoer med 30 %.
  • Kilde: opennet.ru

Legg til en kommentar