Firma Cloudflare na zabezpečenie podpory protokolu HTTP/3 v NGINX. Modul je vytvorený ako nadstavba na vyvíjanej knižnici Cloudflare s implementáciou transportného protokolu QUIC a HTTP/3. Kód quiche je napísaný v jazyku Rust, avšak samotný modul pre NGINX je napísaný v programovacom jazyku C a pristupuje k knižnici pomocou dynamického linkovania. Práce pod licenciou BSD.
Na zostavenie stačí stiahnuť na nginx 1.16 a knižnicu quiche, po čom je potrebné prekompilovať nginx s voľbami "--with-http_v3_module --with-quiche=..\/quiche". Pri zostavovaní podpora TLS musí byť založená na knižnici BoringSSL ("--with-openssl=..\/quiche\/deps\/boringssl"), používanie OpenSSL zatiaľ nie je podporované. Pre prijímanie pripojení je potrebné do nastavení pridať direktívu listen s praporom "quic" (napríklad "listen 443 quic reuseport").
Vo klientskej softvérovej podpore už bola pridaná podpora HTTP/3 do experimentálnych zostavení Chrome Canary a nástroja curl. Na strane servera sa stále muselo používať obmedzené oddelené . Možnosť spracovania HTTP/3 v nginx výrazne zjednoduší nasadenie serverov s podporou HTTP/3 a sprístupní testovaciu integráciu nového protokolu. Objavenie natívnej podpory HTTP/3 v nginx v vetve 1.17.x v priebehu 6-12 mesiacov.
Pripomíname, že HTTP/3 štandardizuje použitie protokolu QUIC ako transportu pre HTTP/2. Protokol (Quick UDP Internet Connections) sa od roku 2013 vyvíja spoločnosťou Google ako alternatíva k spojeniu TCP+TLS pre Web, čím rieši problémy s dlhým časom nadviazania a dohody spojenia v TCP a eliminuje oneskorenia pri strate paketov počas prenosu údajov. QUIC je nadstavbou nad protokolom UDP, podporujúcou multiplexovanie viacerých spojení a poskytujúcou metódy šifrovania ekvivalentné TLS/SSL.
Hlavné QUIC:
- Vysoká bezpečnosť, podobná TLS (v skutočnosti QUIC poskytuje možnosť použitia TLS nad UDP);
- Kontrola integrity toku, zabraňujúca strate paketov;
- Možnosť okamžite nadviazať spojenie (0-RTT, v približne 75% prípadoch je možné prenášať údaje ihneď po zaslaní paketu na nadviazanie spojenia) a zabezpečiť minimálne oneskorenia medzi zaslaním požiadavky a prijatím odpovede (RTT, Round Trip Time);
- Nezapočítať pri opätovnom zaslaní paketu rovnaké číslo sekvencie, čo umožňuje vyhnúť sa nejednoznačnosti pri určovaní prijatých paketov a zbaviť sa časových limitov;
- Strata пакeta ovplyvňuje doručovanie iba súvisiacich prúdov a nezastavuje doručovanie údajov v súbežne prenášaných prúdoch cez aktuálne spojenie;
- Prostriedky na opravu chýb minimalizujúce oneskorenia spôsobené opätovným prenosom stratených balíkov. Použitie špeciálnych kódov na opravu chýb na úrovni пакета na zníženie situácií, ktoré si vyžadujú opätovný prenos údajov strateného пакeta.
- Hranice kryptografických blokov sú vyrovnané s hranicami пакetov QUIC, čo zmenšuje vplyv strát paketov na dekódovanie obsahu nasledujúcich paketov;
- Neexistujú žiadne problémy s blokovaním frontu TCP;
- Podpora identifikátora spojenia, ktorý umožňuje skrátiť čas potrebný na obnovenie spojenia pre mobilných klientov;
- Možnosť pripojenia rozšírených mechanizmov riadenia preťaženia spojenia;
- Použitie techniky predpovedania priepustnosti v každom smere na zabezpečenie optimálnej intenzity odosielania paketov, čím sa zabraňuje prechodu do stavu preťaženia, pri ktorom dochádza k strate paketov;
- Pozoruhodný výkon a priepustnosť v porovnaní s TCP. Pre video služby ako YouTube ukázalo použitie QUIC 30% zníženie operácií opätovného vyrovnávania pri prehrávaní videa.
Zdroj: opennet.ru
