Firma Cloudflare wprowadziła moduł do obsługi HTTP/3 w NGINX

Firma Cloudflare przygotowała moduł do zapewnienia wsparcia dla protokołu HTTP/3 w NGINX. Moduł jest zaimplementowany jako nakładka na rozwijaną w Cloudflare bibliotekę quiche z implementacją protokołu transportowego QUIC i HTTP/3. Kod quiche jest napisany w języku Rust, natomiast sam moduł dla NGINX jest napisany w języku C i korzysta z biblioteki za pomocą dynamicznego linkowania. Osiągnięcia są otwarte na licencji BSD.

Aby kompilować wystarczy pobrać łatkę do nginx 1.16 i kod biblioteki quiche, a następnie przebudować nginx z opcjami "--with-http_v3_module --with-quiche=../quiche". Przy kompilacji wsparcie TLS musi opierać się na bibliotece BoringSSL ("--with-openssl=../quiche/deps/boringssl"), użycie OpenSSL nie jest jeszcze wspierane. Aby przyjmować połączenia, w konfiguracji należy dodać dyrektywę listen z flagą "quic" (na przykład "listen 443 quic reuseport").

W klientach wsparcie HTTP/3 zostało już dodane do eksperymentalnych wersji Chrome Canary oraz narzędzia curl. Po stronie serwera wciąż wymagano użycia ograniczonych w swoich możliwościach oddzielnych implementacji testowych. Możliwość obsługi HTTP/3 w nginx znacznie uprości wdrażanie serwerów z wsparciem dla HTTP/3 oraz uczyni testowe wprowadzenie nowego protokołu łatwiejszym. Pojawienie się standardowego wsparcia HTTP/3 w nginx oczekiwane w gałęzi 1.17.x w ciągu 6-12 miesięcy.

Przypomnijmy, że HTTP/3 standaryzuje użycie protokołu QUIC jako transportu dla HTTP/2. Protokół QUIC (Quick UDP Internet Connections) od 2013 roku jest rozwijany przez firmę Google jako alternatywa dla połączeń TCP+TLS w sieci, rozwiązując problemy z długim czasem ustanawiania i uzgadniania połączeń w TCP oraz eliminując opóźnienia przy utracie pakietów w trakcie przesyłania danych. QUIC jest nadbudową nad protokołem UDP, wspierającą mnożenie połączeń i zapewniającą metody szyfrowania porównywalne z TLS/SSL.

Podstawowe cechy QUIC:

  • Wysokie bezpieczeństwo, podobne do TLS (w zasadzie QUIC zapewnia możliwość użycia TLS nad 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);
  • 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