Cloudflare oferuje moduł do obsługi HTTP / 3 w NGINX

Cloudflare

Cloudflare przygotował moduł zapewniający obsługę protokołu HTTP / 3 w NGINX. Moduł jest gotowy w formie przystawki do biblioteki quiche opracowany w Cloudflare z implementacją protokołu transportowego QUIC i HTTP / 3. Kod quiche został napisany w języku Rust, ale moduł dla NGINX jest napisany w języku C i uzyskuje dostęp do biblioteki poprzez łącza dynamiczne. Godziny pracy są otwarte na licencji BSD.

Z oprogramowania klienta, Obsługa protokołu HTTP / 3 została już dodana do eksperymentalnych wersji Chrome Canary i narzędzie curl. Po stronie serwera do tej pory wymagane było stosowanie izolowanych implementacji testowych o ograniczonych możliwościach. Możliwość obsługi HTTP / 3 w nginx znacznie uprości wdrażanie serwerów z obsługą HTTP / 3 i sprawi, że testowa implementacja nowego protokołu będzie bardziej dostępna.

HTTP / 3 standaryzuje użycie protokołu QUIC jako transport dla HTTP / 2. Tym samym protokół QUIC został opracowany przez Google jako alternatywa dla TCP + TLS dla sieci Zamierza rozwiązać problemy związane z długim czasem instalacji i koordynacji związków w TCP i opóźnia eliminację utraty pakietów podczas transmisji danych. QUIC to wtyczka do protokołu UDP, która obsługuje multipleksowanie wielu połączeń i zapewnia metody szyfrowania równoważne TLS / SSL.

Wśród kluczowych cech QUIC, które się wyróżniają:

  • Wysoki poziom bezpieczeństwa, podobny do TLS (w rzeczywistości QUIC zapewnia możliwość korzystania z TLS przez UDP).
  • Kontrola integralności przepływu, która zapobiega utracie pakietów.
  • Możliwość natychmiastowego nawiązania połączenia (0-RTT, w około 75% przypadków dane mogą być przesłane natychmiast po wysłaniu pakietu konfiguracji połączenia) i zapewnia minimalne opóźnienia między wysłaniem żądania a otrzymaniem odpowiedzi (RTT, Round Trip Time) .
  • Nieużywanie tego samego numeru sekwencji podczas retransmisji pakietu, co pozwala uniknąć niejednoznaczności w określaniu odebranych pakietów i eliminuje przekroczenia czasu.
  • Utrata pakietu wpływa na dostarczenie tylko związanego z nim strumienia i nie zatrzymuje dostarczania danych w strumieniach przesyłanych równolegle przez bieżące połączenie.
  • Narzędzia do korekcji błędów, które minimalizują opóźnienia spowodowane retransmisją utraconych pakietów. Zastosowanie specjalnych kodów korekcji błędów na poziomie pakietu w celu ograniczenia sytuacji, które wymagają retransmisji utraconych danych pakietowych.
  • Granice bloków kryptograficznych są wyrównane z granicami pakietów QUIC, zmniejszając wpływ utraty pakietów na dekodowanie zawartości kolejnych pakietów
  • Brak problemów z blokowaniem kolejki TCP
  • Obsługa identyfikatora połączenia, co skraca czas nawiązywania ponownego połączenia dla klientów mobilnych
  • Możliwość łączenia zaawansowanych mechanizmów kontrolujących przeciążenie połączenia
  • Wykorzystanie techniki przewidywania przepustowości w każdym kierunku w celu zapewnienia optymalnej intensywności przesyłania pakietów, zapobiegając osiągnięciu przez nie stanu przeciążenia, w którym obserwuje się utratę pakietów
  • Niezwykła wydajność i wzrost wydajności w porównaniu z TCP. W przypadku usług wideo, takich jak YouTube, QUIC wykazał 30% redukcję operacji ponownego buforowania podczas oglądania filmów.

Jak zaimplementować moduł do obsługi HTTP / 3 w NGINX?

Dla tych, którzy są zainteresowani możliwością zaimplementowania tego modułu na swoim serwerze, Mogą to zrobić, postępując zgodnie z instrukcjami, które udostępniamy poniżej.

Aby to skompilować, wystarczy pobrać łatkę dla nginx 1.16 i kod biblioteki quiche.

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz

tar xzvf nginx-1.16.1.tar.gz

git clone --recursive https://github.com/cloudflare/quiche

cd nginx-1.16.1

patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

Kompilujemy NGINX z włączoną obsługą HTTP / 3:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

--with-openssl=../quiche/deps/boringssl \

--with-quiche=../quiche

make

Podczas kompilacji obsługa TLS musi być oparta na bibliotece BoringSSL ("–with-openssl = .. / quiche / deps / boringssl"), użycie OpenSSL nie jest jeszcze obsługiwane.

Aby akceptować połączenia w konfiguracji, będą musieli dodać dyrektywę listener z flagą „quic”.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.