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.
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 %.