Wstępna wersja nginx z obsługą QUIC i HTTP/3

Firma NGINX ogłosiła o rozpoczęciu testów implementacji protokół QUIC i HTTP/3 w serwerze HTTP i proxy nginx. Realizacja opiera się na 27 wersji roboczej specyfikacji IETF-QUIC i jest dostępna przez oddzielne repozytorium, odgałęzienie wypuszczenia 1.19.0. Kod jest udostępniany na licencji BSD i nie krzyżuje się z wcześniej zaproponowaną realizacją HTTP/3 dla nginx od firmy Cloudflare, która jest osobnym projektem.

Wsparcie HTTP/3 w nginx oznaczone jest jako eksperymentalne, ponieważ nie wszystkie możliwości protokołu są zaimplementowane. Mimo to, nginx może już być stosowany do wysyłania odpowiedzi na proste zapytania HTTP/3 poprzez QUIC oraz do ładowania/odsyłania dużych plików. Wśród brakujących możliwości protokołu można wskazać mechanizmy negocjacji wersji protokołu, ECN i kontrolę przeciążenia, strukturalne logi, tryb odzyskiwania (QUIC recovery, kontrola przepływu i przeciążenia), NAT Rebinding, adresy mobilne, Server push, dołączanie danych (trailer). Oferowane jest jedynie podstawowe wsparcie dla przetwarzania pakietów ACK oraz zarządzania przepływem, które wymaga dalszych prac. Nie wszystkie wymagania standardu zostały uwzględnione.

Aby aktywować HTTP/3, należy skompilować nginx z modułem http_v3_module i dodać dodatkową dyrektywę
«listen» z flagą «http3″ do utworzenia słuchającego gniazda UDP. Na przykład:

server {
listen 443 ssl; # TCP-socket dla HTTP/1.1
listen 443 http3 reuseport; # UDP-socket dla QUIC+HTTP/3

ssl_protocols TLSv1.3; # w QUIC wymagany jest TLS 1.3
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;

add_header Alt-Svc ‘quic=»:443″‘; # oznaczenie dostępności QUIC
add_header QUIC-Status $quic; # Nagłówek ze statusem użycia QUIC
}

Przypomnijmy, że HTTP/3 standaryzuje użycie protokołu QUIC jako transportu dla HTTP/2. Protokół QUIC (Szybkie Połączenia UDP w Internecie) od 2013 roku rozwijane przez firmę Google jako alternatywa dla połączenia TCP+TLS dla Sieci, rozwiązujące problemy z długim czasem nawiązywania i negocjowania połączeń w TCP oraz eliminujące opóźnienia spowodowane utratą pakietów podczas przesyłania danych. QUIC jest nakładką na protokół UDP, obsługującą mnożenie wielu połączeń i zapewniającą metody szyfrowania, równoważne TLS/SSL. Po stronie oprogramowania klienckiego eksperymentalne wsparcie HTTP/3 zostało już dodane do Curl, Firefox i Chromium.

Wstępna wersja nginx z obsługą QUIC i HTTP/3

Podstawowe cechy QUIC:

  • Wysokie bezpieczeństwo, podobne do TLS (w zasadzie QUIC umożliwia używanie TLS 1.3 na UDP);
  • Kontrola integralności strumienia, zapobiegająca utracie pakietów;
  • Możliwość natychmiastowego ustanowienia połączenia (0-RTT, w około 75% przypadków dane można przesyłać natychmiast po wysłaniu pakietu ustanowienia połączenia) oraz zapewnienie minimalnych opóźnień między wysłaniem żądania a otrzymaniem odpowiedzi (RTT, Round Trip Time);
    Wstępna wersja nginx z obsługą QUIC i HTTP/3
  • Nie używanie tego samego numeru sekwencji podczas ponownej transmisji pakietu, co pozwala uniknąć dwuznaczności przy określaniu odebranych pakietów i wyeliminować opóźnienia;
  • Utrata pakietu wpływa na dostarczanie tylko powiązanego z nim strumienia i nie zatrzymuje dostarczania danych w równolegle przesyłanych strumieniach przez bieżące połączenie;
  • Środki korekcji błędów, minimalizujące opóźnienia spowodowane ponowną transmisją zagubionych pakietów. Wykorzystanie specjalnych kodów korekcji błędów na poziomie pakietów w celu zmniejszenia liczby sytuacji wymagających ponownej transmisji danych zagubionego pakietu.
  • Granice bloków kryptograficznych są wyrównane z granicami pakietów QUIC, co zmniejsza wpływ utraty pakietów na dekodowanie zawartości następnych pakietów;
  • Brak problemów z blokowaniem kolejek TCP;
  • Wsparcie dla identyfikatora połączenia, co pozwala skrócić czas na ponowne nawiązanie połączenia dla klientów mobilnych;
  • Możliwość podłączenia rozszerzonych mechanizmów kontroli przeciążenia połączenia;
  • Wykorzystanie techniki prognozowania przepustowości w każdym kierunku, aby zapewnić optymalną intensywność wysyłania pakietów, zapobiegając wpadnięciu w stan przeciążenia, w którym występuje utrata pakietów;
  • Wyraźny wzrost wydajności i przepustowości w porównaniu z TCP. Dla serwisów wideo, takich jak YouTube, zastosowanie QUIC wykazało zmniejszenie operacji ponownego buforowania podczas oglądania wideo o 30%.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster