Společnost NGINX oznamuje zahájení testování protokolů QUIC a HTTP/3 v HTTP serveru a proxy nginx. Implementace je založena na specifikace IETF-QUIC a je k dispozici přes , odvozený od verze 1.19.0. Kód je šířen pod licencí BSD a nezasahuje do implementace HTTP/3 pro nginx od společnosti Cloudflare, která je samostatným projektem.
Podpora HTTP/3 v nginx je označena jako experimentální, protože protokolu jsou implementovány. Přesto již nginx může být použit k odesílání odpovědí na jednoduché HTTP/3 požadavky přes QUIC a k načítání/vydávání velkých souborů. Mezi dosud chybějícími funkcemi protokolu jsou vyjednávání verzí protokolu, ECN a kontrola přetížení, strukturované logy, režim zotavení (QUIC recovery, správa toku a přetížení), NAT Rebinding, mobilní adresy, Server push, připojení dat (trailer). Byla také navržena pouze základní podpora zpracování ACK paketů a správy toku, která vyžaduje úpravy. Ne všechna požadavky standardu byla zohledněna.
Pro aktivaci HTTP/3 je nutné zkompilovat nginx s modulem http_v3_module a přidat další direktivu
«listen» s flagem «http3» pro vytvoření naslouchajícího UDP socketu. Například:
server {
listen 443 ssl; # TCP socket pro HTTP/1.1
listen 443 http3 reuseport; # UDP socket pro 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 se stavem využití QUIC
}
Připomínáme, že HTTP/3 standardizuje použití protokolu QUIC jako transportu pro HTTP/2. Protokol (Quick UDP Internet Connections) se od roku 2013 vyvíjí společností Google jako alternativa k páru TCP+TLS pro Web, řešící problémy s dlouhou dobou spojení a vyjednáváním v TCP a odstraňující zpoždění při ztrátě paketů během přenosu dat. QUIC představuje nadstavbu nad protokolem UDP, podporující multiplexování několika spojení a poskytující metody šifrování ekvivalentní TLS/SSL. Na straně klientského softwaru byla experimentální podpora HTTP/3 již přidána do , a .
Hlavní QUIC:
- Vysoká bezpečnost, srovnatelná s TLS (v podstatě QUIC poskytuje možnost použití TLS 1.3 nad UDP);
- Kontrola integrity toku, která zabraňuje ztrátě paketů;
- Možnost okamžitého navázání spojení (0-RTT, v přibližně 75% případů lze data přenášet ihned po odeslání prvního paketu) a zajištění minimálních zpoždění mezi odesláním požadavku a obdržením odpovědi (RTT, doba zpětné cesty);
- Nepoužití stejného čísla sekvence při opětovném odeslání paketu, což eliminuje nejednoznačnost při určování přijatých paketů a zbavuje se časových limitů;
- Ztráta paketu ovlivňuje doručení pouze souvisejícího toku a nezastavuje doručení dat v paralelně přenášených tocích přes aktuální spojení;
- Nástroje pro opravu chyb, které minimalizují zpoždění způsobené opětovným přenosem ztracených paketů. Využití speciálních chybových kódů na úrovni paketů pro snížení situací, které vyžadují opětovný přenos dat ztraceného paketu.
- Hranice kryptografických bloků jsou sladěny s hranicemi paketů QUIC, což snižuje dopad ztráty paketů na dekódování obsahu následujících paketů;
- Žádné problémy s blokováním front TCP;
- Podpora identifikátoru spojení, která snižuje čas potřebný k opětovnému navázání spojení pro mobilní klienty;
- Možnost připojení rozšířených mechanismů řízení přetížení spojení;
- Použití techniky predikce šířky pásma v každém směru pro zajištění optimální intenzity odesílání paketů, což zabraňuje přechodu do stavu přetížení, ve kterém dochází ke ztrátě paketů;
- Výrazný výkonu a propustnosti ve srovnání s TCP. Pro video služby, jako je YouTube, prokázal QUIC snížení operací znovu vyrovnání během sledování videa o 30%.
Zdroj: opennet.ru
