Microsoft udostępnił swoją implementację protokołu QUIC używanego w HTTP/3

Microsoftu ogłosił o otwieraniu kodu biblioteki msquic z implementacją protokołu sieciowego QUIC. Kod jest napisany w C i dystrybuowane przez na licencji MIT. Biblioteka jest wieloplatformowa i można z niej korzystać nie tylko w systemie Windows, ale także w systemie Linux Kanał lub OpenSSL dla TLS 1.3. W przyszłości planowana jest obsługa innych platform.

Biblioteka oparta jest na kodzie sterownika msquic.sys dostarczonym w jądrze systemu Windows 10 (Insider Preview), aby umożliwić obsługę protokołu HTTP i SMB na górze QUIC. Kod służy również do implementacji protokołu HTTP/3 w wewnętrznym stosie systemu Windows i w platformie .NET Core. Rozwój biblioteki MsQuic będzie prowadzony w całości w serwisie GitHub przy użyciu publicznych recenzji, żądań ściągnięcia i problemów z GitHub. Przygotowano infrastrukturę, która sprawdza każde żądanie zatwierdzenia i ściągnięcia w zestawie ponad 4000 testów. Po ustabilizowaniu środowiska programistycznego planowane jest zaakceptowanie zmian od zewnętrznych programistów.

MsQuic można już używać do tworzenia serwerów i klientów, ale nie wszystkie funkcje zdefiniowane w specyfikacji IETF są obecnie dostępne. Na przykład nie jest obsługiwana funkcja 0-RTT, migracja klientów, wykrywanie MTU ścieżki ani kontrola preferowanego adresu serwera. Wśród zaimplementowanych funkcji zauważono optymalizację w celu osiągnięcia maksymalnej przepustowości i minimalnych opóźnień, obsługę asynchronicznego wejścia/wyjścia, RSS (skalowanie strony odbiorczej) oraz możliwość łączenia wejściowych i wyjściowych strumieni UDP. Implementacja MsQuic została przetestowana pod kątem zgodności z eksperymentalnymi wersjami przeglądarek Chrome i Edge.

Przypomnijmy, że HTTP/3 standaryzuje użycie protokołu QUIC jako środka transportu dla HTTP/2. Protokół QUIC (Szybkie połączenia internetowe UDP) są rozwijane przez Google od 2013 roku jako alternatywa dla kombinacji TCP+TLS w Internecie, rozwiązując problemy związane z długim czasem konfiguracji i negocjacji połączeń w protokole TCP oraz eliminując opóźnienia w przypadku utraty pakietów podczas przesyłania danych. QUIC jest rozszerzeniem protokołu UDP, które obsługuje multipleksowanie wielu połączeń i zapewnia metody szyfrowania równoważne TLS/SSL.

Głównym Cechy SZYBKO:

  • Wysokie bezpieczeństwo podobne do TLS (zasadniczo QUIC zapewnia możliwość korzystania z TLS 1.3 przez UDP);
  • Kontrola integralności przepływu, zapobiegająca utracie pakietów;
  • Możliwość błyskawicznego nawiązania połączenia (0-RTT, w około 75% przypadków dane mogą zostać przesłane natychmiast po wysłaniu pakietu konfigurującego połączenie) i zapewnienia minimalnych opóźnień pomiędzy wysłaniem żądania a otrzymaniem odpowiedzi (RTT, Round Trip Time);
    Microsoft udostępnił swoją implementację protokołu QUIC używanego w HTTP/3

  • Nieużywanie tego samego numeru sekwencyjnego podczas retransmisji pakietu, co pozwala uniknąć niejednoznaczności w identyfikacji odebranych pakietów i pozbyć się przekroczeń limitu czasu;
  • Utrata pakietu wpływa jedynie na dostarczanie powiązanego z nim strumienia i nie wstrzymuje dostarczania danych w równoległych strumieniach przesyłanych bieżącym połączeniem;
  • Funkcje korekcji błędów minimalizujące opóźnienia spowodowane retransmisją utraconych pakietów. Zastosowanie specjalnych kodów korekcji błędów na poziomie pakietu w celu ograniczenia sytuacji wymagających retransmisji utraconych danych pakietowych.
  • Granice bloków kryptograficznych są wyrównane z granicami pakietów QUIC, co zmniejsza wpływ utraty pakietów na dekodowanie zawartości kolejnych pakietów;
  • Brak problemów z blokowaniem kolejek TCP;
  • Obsługa identyfikatora połączenia, co skraca czas potrzebny na nawiązanie ponownego połączenia dla klientów mobilnych;
  • Możliwość podłączenia zaawansowanych mechanizmów kontroli przeciążenia łączy;
  • Wykorzystuje techniki prognozowania przepustowości w poszczególnych kierunkach, aby zapewnić, że pakiety są wysyłane z optymalną szybkością, zapobiegając ich przeciążeniu i powodując utratę pakietów;
  • Wyczuwalny zyskać wydajność i przepustowość w porównaniu do protokołu TCP. Wykazano, że w przypadku usług wideo, takich jak YouTube, QUIC zmniejsza liczbę operacji ponownego buforowania podczas oglądania filmów o 30%.

Źródło: opennet.ru

Dodaj komentarz