Cloudflare je implementirao modul za podršku HTTP / 3 u NGINX

Cloudflare Company pripremljeno modul za pružanje podrške za HTTP/3 protokol u NGINX-u. Modul je napravljen u obliku dodatka preko biblioteke razvijene u Cloudflareu quiche sa implementacijom transportnog protokola QUIC i HTTP/3. Quiche kod je napisan u Rustu, ali sam NGINX modul je napisan u C-u i pristupa biblioteci koristeći dinamičko povezivanje. Razvoj otvoren pod BSD licencom.

Za sastavljanje, samo preuzmite patch na nginx 1.16 i kod quiche biblioteke, a zatim ponovo izgraditi nginx sa opcijama "--with-http_v3_module --with-quiche=../quiche". Prilikom izgradnje, TLS podrška mora biti zasnovana na BoringSSL biblioteci ("--with-openssl=../quiche/deps/boringssl"), korištenje OpenSSL-a još nije podržano. Da biste prihvatili veze, potrebno je da u postavke dodate direktivu slušanja sa zastavicom „quic“ (na primjer, „slušaj 443 brzo ponovno korištenje“).

Sa strane klijenta, HTTP/3 podrška je već dodana eksperimentalnim verzijama Chrome Canaryja i uslužnog programa curl. Na strani servera, do sada je bilo potrebno koristiti samostalan test implementacije. Mogućnost obrade HTTP / 3 u nginxu će uvelike pojednostaviti postavljanje servera sa HTTP / 3 podrškom i učiniti probnu implementaciju novog protokola dostupnijom. Pojava redovne podrške za HTTP/3 u nginxu očekivano u filijali 1.17.x na 6-12 mjeseci.

Podsjetimo da HTTP/3 standardizira upotrebu QUIC protokola kao transporta za HTTP/2. Protokol QUIC (Quick UDP Internet Connections) razvija Google od 2013. godine kao alternativu TCP + TLS za Web, rješavajući probleme s dugim vremenom podešavanja i pregovaranja za veze u TCP-u i eliminirajući kašnjenja u slučaju gubitka paketa tokom prijenosa podataka. QUIC je dodatak UDP protokolu koji podržava multipleksiranje višestrukih veza i pruža metode šifriranja ekvivalentne TLS/SSL-u.

Glavni Značajke QUIC:

  • Visoka sigurnost, slična TLS-u (u stvari, QUIC pruža mogućnost korištenja TLS-a preko UDP-a);
  • Kontrola integriteta toka kako bi se spriječio gubitak paketa;
  • Mogućnost trenutnog uspostavljanja veze (0-RTT, u oko 75% slučajeva, podaci se mogu prenijeti odmah nakon slanja paketa za postavljanje veze) i osigurati minimalna kašnjenja između slanja zahtjeva i prijema odgovora (RTT, Round Trip Time) ;
  • Nemojte koristiti isti redni broj prilikom ponovnog slanja paketa, što vam omogućava da izbjegnete dvosmislenost u određivanju primljenih paketa i riješite se tajm-auta;
  • Gubitak paketa utiče samo na isporuku toka koji je sa njim povezan i ne zaustavlja isporuku podataka u tokovima koji se prenose paralelno preko trenutne veze;
  • Alati za ispravljanje grešaka koji minimiziraju kašnjenja zbog ponovnog prijenosa izgubljenih paketa. Upotreba posebnih kodova za ispravljanje grešaka na nivou paketa kako bi se smanjile situacije koje zahtijevaju ponovni prijenos izgubljenih paketnih podataka.
  • Granice kriptografskih blokova su usklađene sa granicama QUIC paketa, što smanjuje uticaj gubitka paketa na dekodiranje sadržaja sledećih paketa;
  • Nema problema sa blokiranjem TCP reda;
  • Podrška za ID veze za smanjenje vremena ponovnog povezivanja za mobilne klijente;
  • Mogućnost povezivanja naprednih mehanizama za kontrolu preopterećenja konekcije;
  • Korištenje tehnika predviđanja propusnog opsega u svakom smjeru kako bi se osigurao optimalan intenzitet slanja paketa, sprječavajući prelazak u stanje zagušenja, u kojem dolazi do gubitka paketa;
  • Primjetno rast performanse i propusnost u poređenju sa TCP. Za video usluge kao što je YouTube, pokazalo se da QUIC smanjuje operacije rebaferiranja video zapisa za 30%.
  • izvor: opennet.ru

Dodajte komentar