Cloudflare je implementirao modul za podršku HTTP/3 u NGINX
Tvrtka Cloudflare pripremljenomodul 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.
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%.