Microsoft otworzył swoją implementację protokołu QUIC, używanego w HTTP/3

Firma Microsoft ogłosiła o otwarciu kodu biblioteki MsQuic z realizacją protokołu sieciowego QUIC. Kod napisano w języku C i rozpowszechniany na licencji MIT. Biblioteka jest wieloplatformowa i może być używana nie tylko w systemie Windows, ale również w systemie Linux z wykorzystaniem Schannel lub OpenSSL dla TLS 1.3. W przyszłości planowane jest wsparcie dla innych platform.

Biblioteka oparta jest na kodzie sterownika msquic.sys, dostarczanego w jądrze Windows 10 (Insider Preview) w celu zapewnienia obsługi protokołów HTTP i SMB na QUIC. W tym kod używany jest do implementacji HTTP/3 w wewnętrznym stosie Windows i w .NET Core. Rozwój biblioteki MsQuic będzie całkowicie prowadzony na GitHubie z wykorzystaniem publicznego przeglądu, pull-requestów i GitHub Issues. Przygotowana została infrastruktura, która sprawdza każdy commit i pull-request w zestawie ponad 4000 testów. Po stabilizacji środowiska do rozwoju planowane jest przyjmowanie zmian od zewnętrznych programistów.

MsQuic już można wykorzystać do tworzenia serwerów i klientów, ale nie wszystkie funkcjonalności określone w specyfikacji IETF są obecnie dostępne. Na przykład, obecnie brak wsparcia dla 0-RTT, migracji klientów, odkrywania Path MTU oraz zarządzania wyborem adresów dla serwera (Server Preferred Address). Wśród zaimplementowanych funkcji zauważono optymalizację w celu osiągnięcia maksymalnej przepustowości i minimalnych opóźnień, wsparcie dla asynchronicznego wejścia/wyjścia, RSS (Receive Side Scaling), a także możliwość łączenia przychodzących i wychodzących strumieni UDP. Implementacja MsQuic została przetestowana pod kątem zgodności z eksperymentalnymi gałęziami przeglądarek Chrome i Edge.

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 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);
    Microsoft otworzył swoją implementację protokołu QUIC, używanego w 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