Tvrtka Cloudflare za podršku HTTP/3 protokola u NGINX-u. Modul je implementiran kao dodatak razvoju biblioteke u Cloudflare-u s implementacijom transportnog protokola QUIC i HTTP/3. Kôd quiche napisan je na jeziku Rust, ali je sam modul za NGINX napisan na jeziku C i povezuje se s bibliotekom putem dinamičkog povezivanja. Radovi pod BSD licencom.
Za kompilaciju je dovoljno preuzeti nginx 1.16 i biblioteku quiche, nakon čega se mora ponovo kompajlirati nginx s opcijama „--with-http_v3_module --with-quiche=..\/quiche“. Prilikom kompilacije podrška za TLS treba biti temeljena na BoringSSL biblioteci („--with-openssl=..\/quiche\/deps\/boringssl“), korištenje OpenSSL-a trenutno nije podržano. Da bi se primala povezivanja, u postavke treba dodati direktivu listen s flagom „quic“ (na primjer „listen 443 quic reuseport“).
U klijentskom softveru, podrška za HTTP/3 već je dodana u eksperimentalne verzije Chrome Canary i alat curl. Na strani servera još uvijek je bilo potrebno koristiti ograničene . Mogućnost obrade HTTP/3 u nginx-u će značajno pojednostaviti implementaciju servera sa podrškom za HTTP/3 i učiniti testnu primjenu novog protokola dostupnijom. Pojava nativne podrške za HTTP/3 u nginx-u u grani 1.17.x očekuje se u roku od 6-12 mjeseci.
Podsjetimo da HTTP/3 standardizira korištenje protokola QUIC kao transporta za HTTP/2. Protokol (Quick UDP Internet Connections) razvija se od 2013. godine od strane Google-a kao alternativa vezi TCP+TLS za web, riješavajući probleme s dugim vremenom uspostave i dogovora veza u TCP-u te uklanjajući kašnjenja prilikom gubitka paketa tijekom prijenosa podataka. QUIC je nadogradnja na UDP protokol, koja podržava multiplexiranje više veza i pruža metode šifriranja ekvivalentne TLS/SSL-u.
Glavne QUIC:
- Visoka sigurnost, slična TLS-u (u suštini QUIC pruža mogućnost korištenja TLS-a preko UDP-a);
- Kontrola cjelovitosti toka, koja sprječava gubitak paketa;
- Mogućnost trenutnog uspostavljanja veze (0-RTT, u otprilike 75% slučajeva podaci se mogu prenositi odmah nakon slanja paketa za uspostavljanje veze) i osiguranje minimalnih kašnjenja između slanja zahtjeva i primanja odgovora (RTT, Round Trip Time);
- Nedavanje istog broja sekvencijskog paketa pri ponovnom slanju, što omogućava izbjegavanje nejasnoća pri određivanju primljenih paketa i uklanjanje vremenskih prekida;
- Gubitak paketa utječe samo na isporuku povezane struje i ne zaustavlja isporuku podataka u paralelno prijenosima kroz trenutno uspostavljene struje;
- Sredstva za ispravak grešaka, koja minimiziraju kašnjenja uzrokovana ponovnim slanjem izgubljenih paketa. Korištenje specijalnih kodova za ispravak grešaka na razini paketa za smanjenje situacija koje zahtijevaju ponovno slanje podataka izgubljenog paketa.
- Granice kriptografskih blokova su poravnate s granicama QUIC paketa, što smanjuje utjecaj gubitaka paketa na dekodiranje sadržaja sljedećih paketa;
- Nema problema s blokiranjem TCP reda;
- Podrška za identifikator veze, koji omogućava smanjenje vremena potrebnog za ponovnu uspostavu veze za mobilne klijente;
- Mogućnost povezivanja s proširenim mehanizmima kontrole opterećenja veze;
- Korištenje tehnike predviđanja propusnosti u svakom smjeru za osiguranje optimalne intenziteta slanja paketa, sprječavajući povratak u stanje preopterećenja u kojem se primjećuje gubitak paketa;
- Značajan performansi i propusnosti, u usporedbi s TCP-om. Za video servise poput YouTube-a, uporaba QUIC-a pokazala je smanjenje ponovnog punjenja prilikom reprodukcije videa za 30%.
Izvor: opennet.ru
