Cloudflare implementoval modul pro podporu HTTP / 3 v NGINX

Společnost Cloudflare připravený modulu poskytovat podporu pro protokol HTTP/3 v NGINX. Modul je navržen jako doplněk ke knihovně vyvinuté Cloudflare quiche s implementací transportního protokolu QUIC a HTTP/3. Kód quiche je napsán v Rustu, ale samotný modul NGINX je napsán v C a přistupuje ke knihovně pomocí dynamického linkování. Vývoj otevřeno pod licencí BSD.

Pro sestavení stačí stáhnout patch na nginx 1.16 a kód knihovny quiche, poté znovu sestavte nginx s možnostmi „—with-http_v3_module —with-quiche=../quiche“. Při sestavování by měla být podpora TLS založena na knihovně BoringSSL („--with-openssl=../quiche/deps/boringssl“), použití OpenSSL zatím není podporováno. Chcete-li přijímat připojení, musíte do nastavení přidat direktivu listen s příznakem „quic“ (například „listen 443 quic reuseport“).

V klientském softwaru byla podpora HTTP/3 již přidána do experimentálních sestavení Chrome Canary a nástroje curl. Na straně serveru bylo doposud nutné používat samostatné, omezené testovací implementace. Schopnost zpracovávat HTTP/3 v nginx výrazně zjednoduší nasazení serverů s podporou HTTP/3 a zpřístupní testovací implementaci nového protokolu. Vznik standardní podpory HTTP/3 v nginx očekává se ve větvi 1.17.x po dobu 6-12 měsíců.

Připomeňme, že HTTP/3 standardizuje použití protokolu QUIC jako přenosu pro HTTP/2. Protokol QUIC (Quick UDP Internet Connections) byl vyvinut společností Google od roku 2013 jako alternativa ke kombinaci TCP+TLS pro web, řeší problémy s dlouhými časy nastavování a vyjednávání připojení v TCP a odstraňuje prodlevy při ztrátě paketů během přenosu dat. QUIC je rozšíření protokolu UDP, které podporuje multiplexování více připojení a poskytuje metody šifrování ekvivalentní TLS/SSL.

hlavní Rysy QUIC:

  • Vysoká bezpečnost podobná TLS (v podstatě QUIC poskytuje možnost používat TLS přes UDP);
  • Řízení integrity toku, zabraňující ztrátě paketů;
  • Schopnost okamžitě navázat spojení (0-RTT, v přibližně 75 % případů lze data přenést ihned po odeslání paketu nastavení spojení) a poskytnout minimální prodlevy mezi odesláním požadavku a přijetím odpovědi (RTT, Round Trip Time);
  • Nepoužívat stejné pořadové číslo při opakovaném přenosu paketu, což zabraňuje nejednoznačnosti při identifikaci přijatých paketů a zbavuje se časových limitů;
  • Ztráta paketu ovlivní pouze doručení s ním spojeného proudu a nezastaví doručování dat v paralelních proudech přenášených prostřednictvím aktuálního připojení;
  • Funkce opravy chyb, které minimalizují zpoždění kvůli opakovanému přenosu ztracených paketů. Použití speciálních kódů pro opravu chyb na úrovni paketů ke snížení situací vyžadujících opakovaný přenos ztracených paketových dat.
  • Hranice kryptografických bloků jsou zarovnány s hranicemi paketů QUIC, což snižuje dopad ztrát paketů na dekódování obsahu následujících paketů;
  • Žádné problémy s blokováním fronty TCP;
  • Podpora pro identifikátor připojení, který zkracuje dobu potřebnou k vytvoření opětovného připojení pro mobilní klienty;
  • Možnost připojení pokročilých mechanismů řízení přetížení připojení;
  • Využívá techniky předpovědi propustnosti v jednotlivých směrech, aby zajistil, že pakety budou odesílány optimální rychlostí, čímž se zabrání jejich zahlcení a ztrátě paketů;
  • Postřehnutelné růst výkon a propustnost ve srovnání s TCP. U video služeb, jako je YouTube, bylo prokázáno, že QUIC snižuje operace opětovného vyrovnávací paměti při sledování videí o 30 %.
  • Zdroj: opennet.ru

Přidat komentář