Spoločnosť NGINX oznamuje začatie testovania protokolov QUIC a HTTP/3 v HTTP serveri a proxy nginx. Realizácia je založená na špecifikácie IETF-QUIC a je dostupná prostredníctvom , odvetveného od vydania 1.19.0. Kód sa distribuuje pod licenciou BSD a nie je prekrývaný s realizáciou HTTP/3 pre nginx od spoločnosti Cloudflare, ktorá je samostatným projektom.
Podpora HTTP/3 v nginx je označená ako experimentálna, pretože protokolu sú realizované. Napriek tomu môže byť nginx už použitý na posielanie odpovedí na jednoduché požiadavky HTTP/3 nad QUIC, ako aj na nahrávanie/vyjavovanie veľkých súborov. Medzi zatiaľ chýbajúcimi možnosťami protokolu sú nástroje na presúvanie verzií protokolu, ECN a riadenie preťaženia, štruktúrované logy, režim obnovy (QUIC recovery, riadenie toku a preťaženia), NAT Rebinding, mobilné adresy, Server push, pripojenie údajov (trailer). Tiež je poskytnutá iba základná podpora správy ACK paketov a riadenia toku, ktorá si vyžaduje úpravy. Neboli splnené všetky požiadavky normy.
Na aktiváciu HTTP/3 je potrebné zostaviť nginx s modulom http_v3_module a pridať ďalšiu direktívu
„listen“ s príznakom „http3“ na vytvorenie počúvajúceho UDP soketu. Napríklad:
server {
listen 443 ssl; # TCP soket pre HTTP/1.1
listen 443 http3 reuseport; # UDP soket pre QUIC+HTTP/3
ssl_protocols TLSv1.3; # v QUIC je povinný TLS 1.3
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;
add_header Alt-Svc ‘quic=":443“‘; # indikátor dostupnosti QUIC
add_header QUIC-Status $quic; # Hlavička so stavom využívania QUIC
}
Pripomíname, že HTTP/3 štandardizuje použitie protokolu QUIC ako transportu pre HTTP/2. Protokol (Rýchle UDP Internetové Pripojenia) od roku 2013 vyvíja spoločnosť Google ako alternatívu k kombinácii TCP+TLS pre Web, ktorá rieši problémy s dlhým časom nastavovania a zhodovania pripojení v TCP a odstraňuje oneskorenia pri strate paketov počas prenosu údajov. QUIC predstavuje nadstavbu nad protokolom UDP, podporujúcu multiplexovanie viacerých pripojení a poskytujúcu metódy šifrovania ekvivalentné TLS/SSL. Na strane klientského softvéru bola experimentálna podpora HTTP/3 už pridaná do , a .
Hlavné QUIC:
- Vysoká bezpečnosť, podobná TLS (v podstate QUIC umožňuje používanie TLS 1.3 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
