Cloudflare implementoval modul na podporu HTTP/3 v NGINX

Spoločnosť Cloudflare pripravený modul poskytovať podporu pre protokol HTTP/3 v NGINX. Modul je navrhnutý ako doplnok ku knižnici vyvinutej spoločnosťou Cloudflare quiche s implementáciou transportného protokolu QUIC a HTTP/3. Kód quiche je napísaný v jazyku Rust, ale samotný modul NGINX je napísaný v jazyku C a pristupuje ku knižnici pomocou dynamického prepojenia. Vývoj otvorené pod licenciou BSD.

Na zostavenie stačí stiahnuť náplasť na nginx 1.16 a kód knižnice quiche, potom znova zostavte nginx s možnosťami „—with-http_v3_module —with-quiche=../quiche“. Pri vytváraní by mala byť podpora TLS založená na knižnici BoringSSL („--with-openssl=../quiche/deps/boringssl“), použitie OpenSSL zatiaľ nie je podporované. Ak chcete akceptovať pripojenia, musíte do nastavení pridať direktívu počúvania s príznakom „quic“ (napríklad „listen 443 quic reuseport“).

V klientskom softvéri už bola podpora HTTP/3 pridaná do experimentálnych verzií Chrome Canary a utility curl. Na strane servera bolo doteraz nutné používať samostatné, obmedzené testovacie implementácie. Schopnosť spracovávať HTTP/3 v nginx výrazne zjednoduší nasadenie serverov s podporou HTTP/3 a sprístupní testovaciu implementáciu nového protokolu. Vznik štandardnej podpory HTTP/3 v nginx očakávané v pobočke 1.17.x na 6-12 mesiacov.

Pripomeňme, že HTTP/3 štandardizuje používanie protokolu QUIC ako prenosu pre HTTP/2. Protokol QUIC (Quick UDP Internet Connections) vyvinula spoločnosť Google od roku 2013 ako alternatívu ku kombinácii TCP+TLS pre web, čím rieši problémy s dlhými časmi nastavenia a vyjednávania pre pripojenia v TCP a odstraňuje oneskorenia pri strate paketov počas prenosu dát. QUIC je rozšírenie protokolu UDP, ktoré podporuje multiplexovanie viacerých pripojení a poskytuje metódy šifrovania ekvivalentné TLS/SSL.

Hlavné rysy QUIC:

  • Vysoká bezpečnosť podobná TLS (v podstate QUIC poskytuje možnosť používať TLS cez UDP);
  • Kontrola integrity toku, zabránenie strate paketov;
  • Schopnosť okamžitého nadviazania spojenia (0-RTT, v približne 75 % prípadov je možné preniesť dáta ihneď po odoslaní paketu nastavenia spojenia) a poskytnúť minimálne oneskorenia medzi odoslaním požiadavky a prijatím odpovede (RTT, Round Trip Time);
  • nepoužívanie rovnakého poradového čísla pri opätovnom prenose paketu, čo zabraňuje nejednoznačnosti pri identifikácii prijatých paketov a zbavuje sa časových limitov;
  • Strata paketu ovplyvňuje iba doručovanie toku, ktorý je s ním spojený, a nezastavuje doručovanie údajov v paralelných tokoch prenášaných cez aktuálne spojenie;
  • Funkcie opravy chýb, ktoré minimalizujú oneskorenia v dôsledku opätovného prenosu stratených paketov. Použitie špeciálnych kódov na opravu chýb na úrovni paketov na zníženie situácií vyžadujúcich opakovaný prenos stratených paketových dát.
  • Hranice kryptografických blokov sú zarovnané s hranicami paketov QUIC, čo znižuje vplyv strát paketov na dekódovanie obsahu nasledujúcich paketov;
  • Žiadne problémy s blokovaním fronty TCP;
  • Podpora pre identifikátor pripojenia, ktorý znižuje čas potrebný na vytvorenie opätovného pripojenia pre mobilných klientov;
  • Možnosť pripojenia pokročilých mechanizmov kontroly preťaženia pripojenia;
  • Používa techniky predpovedania priepustnosti v každom smere, aby sa zabezpečilo, že pakety budú odosielané optimálnou rýchlosťou, čím sa zabráni ich preťaženiu a strate paketov;
  • Vnímateľné rast výkon a priepustnosť v porovnaní s TCP. V prípade video služieb, ako je YouTube, sa ukázalo, že QUIC znižuje operácie opätovného vyrovnávania pamäte pri sledovaní videí o 30 %.
  • Zdroj: opennet.ru

Pridať komentár