Cloudflare je implementiral modul za podporo HTTP/3 v NGINX

Podjetje Cloudflare pripravljeno modul zagotoviti podporo za protokol HTTP/3 v NGINX. Modul je zasnovan kot dodatek k knjižnici, ki jo je razvil Cloudflare quiche z implementacijo transportnega protokola QUIC in HTTP/3. Koda quiche je napisana v Rustu, sam modul NGINX pa je napisan v C in dostopa do knjižnice z uporabo dinamičnega povezovanja. Razvoj dogodkov odprto pod licenco BSD.

Če želite sestaviti, samo prenesite obliž na nginx 1.16 in koda knjižnice quiche, nato znova zgradite nginx z možnostmi »—with-http_v3_module —with-quiche=../quiche«. Pri gradnji mora podpora TLS temeljiti na knjižnici BoringSSL (»--with-openssl=../quiche/deps/boringssl«), uporaba OpenSSL še ni podprta. Če želite sprejeti povezave, morate v nastavitve dodati direktivo poslušanja z zastavico »quic« (na primer »listen 443 quic reuseport«).

V odjemalski programski opremi je bila podpora HTTP/3 že dodana eksperimentalnim različicam Chrome Canary in pripomočku curl. Na strani strežnika je bilo do zdaj treba uporabljati ločeno, omejeno testne izvedbe. Zmožnost obdelave HTTP/3 v nginxu bo znatno poenostavila uvajanje strežnikov s podporo HTTP/3 in naredila testno implementacijo novega protokola bolj dostopno. Pojav standardne podpore za HTTP/3 v nginxu pričakuje v poslovalnici 1.17.x 6-12 mesecev.

Spomnimo se, da HTTP/3 standardizira uporabo protokola QUIC kot transporta za HTTP/2. Protokol QUIC (Hitre internetne povezave UDP) je Google razvil od leta 2013 kot alternativo kombinaciji TCP+TLS za splet, ki rešuje težave z dolgimi nastavitvenimi in pogajalskimi časi za povezave v TCP ter odpravlja zamude, ko se paketi izgubijo med prenosom podatkov. QUIC je razširitev protokola UDP, ki podpira multipleksiranje več povezav in zagotavlja metode šifriranja, enakovredne TLS/SSL.

Glavni funkcije QUIC:

  • Visoka varnost, podobna TLS (v bistvu QUIC omogoča uporabo TLS prek UDP);
  • Nadzor celovitosti pretoka, preprečevanje izgube paketov;
  • Sposobnost takojšnje vzpostavitve povezave (0-RTT, v približno 75 % primerov se lahko podatki prenesejo takoj po pošiljanju paketa za nastavitev povezave) in zagotavljanje minimalnih zamud med pošiljanjem zahteve in prejemom odgovora (RTT, Round Trip Time);
  • Neuporaba iste zaporedne številke pri ponovnem pošiljanju paketa, s čimer se izognete dvoumnosti pri prepoznavanju prejetih paketov in odpravite časovne omejitve;
  • Izguba paketa vpliva samo na dostavo z njim povezanega toka in ne ustavi dostave podatkov v vzporednih tokovih, ki se prenašajo prek trenutne povezave;
  • Funkcije za popravljanje napak, ki zmanjšajo zamude zaradi ponovnega prenosa izgubljenih paketov. Uporaba posebnih kod za popravljanje napak na ravni paketa za zmanjšanje situacij, ki zahtevajo ponovno pošiljanje izgubljenih paketnih podatkov.
  • Meje kriptografskih blokov so poravnane z mejami paketov QUIC, kar zmanjša vpliv izgube paketov na dekodiranje vsebine naslednjih paketov;
  • Ni težav z blokiranjem čakalne vrste TCP;
  • Podpora za identifikator povezave, ki skrajša čas, potreben za vzpostavitev ponovne povezave za mobilne odjemalce;
  • Možnost priklopa naprednih mehanizmov za nadzor prezasedenosti povezav;
  • Uporablja tehnike napovedovanja prepustnosti po smeri, da zagotovi, da so paketi poslani z optimalnimi hitrostmi, kar preprečuje, da bi postali prezasedeni in povzročili izgubo paketov;
  • Zaznavno rast zmogljivost in prepustnost v primerjavi s TCP. Pri video storitvah, kot je YouTube, se je izkazalo, da QUIC zmanjša operacije vnovičnega medpomnjenja pri gledanju videoposnetkov za 30 %.
  • Vir: opennet.ru

Dodaj komentar