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

Tvrtka Cloudflare pripremljeno modul za pružanje podrške za HTTP/3 protokol u NGINX-u. Modul je dizajniran kao dodatak biblioteci koju je razvio Cloudflare quiche uz implementaciju QUIC i HTTP/3 transportnog protokola. Quiche kod je napisan u Rustu, ali je sam modul NGINX napisan u C-u i pristupa biblioteci pomoću dinamičkog povezivanja. Razvoj događaja otvorena pod BSD licencom.

Za sastavljanje, samo preuzmite zakrpa na nginx 1.16 i šifra quiche knjižnice, zatim ponovno izgradite nginx s opcijama “—with-http_v3_module —with-quiche=../quiche”. Prilikom izgradnje, podrška za TLS trebala bi se temeljiti na biblioteci BoringSSL (“--with-openssl=../quiche/deps/boringssl”), upotreba OpenSSL-a još nije podržana. Da biste prihvatili veze, u postavke morate dodati direktivu slušanja s oznakom "quic" (na primjer, "listen 443 quic reuseport").

U klijentskom softveru, HTTP/3 podrška već je dodana eksperimentalnim verzijama Chrome Canary i uslužnog programa curl. Na strani poslužitelja do sada je bilo potrebno koristiti zasebne, ograničene testne implementacije. Sposobnost obrade HTTP/3 u nginxu značajno će pojednostaviti implementaciju poslužitelja s HTTP/3 podrškom i učinit će testnu implementaciju novog protokola pristupačnijom. Pojava standardne podrške za HTTP/3 u nginxu očekivano u poslovnici 1.17.x 6-12 mjeseci.

Podsjetimo se da HTTP/3 standardizira korištenje QUIC protokola kao prijenosa za HTTP/2. Protokol QUIC (Quick UDP Internet Connections) Google je razvio od 2013. kao alternativu kombinaciji TCP+TLS za web, rješavajući probleme s dugim vremenom postavljanja i pregovaranja za veze u TCP-u i eliminirajući kašnjenja kada se paketi izgube tijekom prijenosa podataka. QUIC je proširenje UDP protokola koji podržava multipleksiranje više veza i pruža metode šifriranja ekvivalentne TLS/SSL-u.

Glavni značajke QUIC:

  • Visoka sigurnost slična TLS-u (u suštini QUIC pruža mogućnost korištenja TLS-a preko UDP-a);
  • Kontrola integriteta protoka, sprječavanje gubitka paketa;
  • Mogućnost trenutnog uspostavljanja veze (0-RTT, u otprilike 75% slučajeva podaci se mogu prenijeti odmah nakon slanja paketa za postavljanje veze) i pružanja minimalnih kašnjenja između slanja zahtjeva i primanja odgovora (RTT, Round Trip Time);
  • Nekorištenje istog sekvencijskog broja pri ponovnom slanju paketa, čime se izbjegava dvosmislenost u identificiranju primljenih paketa i rješava se vremenskih ograničenja;
  • Gubitak paketa utječe samo na isporuku toka koji je s njim povezan i ne zaustavlja isporuku podataka u paralelnim tokovima koji se prenose kroz trenutnu vezu;
  • Značajke ispravljanja pogrešaka koje minimiziraju kašnjenja zbog ponovnog slanja izgubljenih paketa. Korištenje posebnih kodova za ispravljanje pogrešaka na razini paketa za smanjenje situacija koje zahtijevaju ponovni prijenos izgubljenih paketnih podataka.
  • Granice kriptografskih blokova usklađene su s granicama QUIC paketa, što smanjuje utjecaj gubitaka paketa na dekodiranje sadržaja sljedećih paketa;
  • Nema problema s blokiranjem TCP čekanja;
  • Podrška za identifikator veze, što smanjuje vrijeme potrebno za uspostavljanje ponovne veze za mobilne klijente;
  • Mogućnost povezivanja naprednih mehanizama kontrole zagušenja veze;
  • Koristi tehnike predviđanja propusnosti po smjeru kako bi se osiguralo da se paketi šalju optimalnim brzinama, sprječavajući da postanu zagušeni i uzrokuju gubitak paketa;
  • Primjetno rast performanse i propusnost u usporedbi s TCP-om. Za video usluge kao što je YouTube, pokazalo se da QUIC smanjuje operacije ponovnog međuspremnika prilikom gledanja videa za 30%.
  • Izvor: opennet.ru

Dodajte komentar