Deweloperzy Microsoft ogłosiło wydanie kodu źródłowego biblioteki MsQuic z implementacją protokołu sieciowego QUIC. Biblioteka jest wieloplatformowa i może być używany nie tylko w systemie Windows, ale także w systemie Linux przy użyciu Schannel lub OpenSSL dla TLS 1.3Ponadto trwają prace nad rozszerzeniem obsługi innych platform w przyszłości.
Biblioteka jest oparta na kodzie sterownika msquic.sys dostępne w jądrze systemu Windows 10 (wewnętrzna wersja zapoznawcza) aby zagwarantować działanie protokołów HTTP i SMB przez QUIC. Dołączanie kodu służy do implementacji protokołu HTTP / 3 w wewnętrznym stosie systemu Windows i na platformie .NET Core.
Rozwój biblioteki MsQuic będzie odbywał się w całości w serwisie GitHub przy użyciu publicznego przeglądu, żądań ściągnięcia i problemów z GitHubem. Przygotowano infrastrukturę, która weryfikuje każde żądanie zatwierdzenia i ściągnięcia zestawu ponad 4000 testów. Po ustabilizowaniu środowiska deweloperskiego planowane jest przyjęcie zmian od zewnętrznych deweloperów.
O MsQuic
msquic może służyć do tworzenia serwerów i klientów, ale nie wszystkie funkcje zdefiniowane w specyfikacji IETF są obecnie dostępne. Na przykład nie ma obsługi 0-RTT, migracji klienta, wykrywania MTU ścieżki ani preferowanej kontroli adresów serwera.
Wśród zaimplementowanych funkcji podświetlona jest optymalizacja pod kątem maksymalnej wydajności i minimalnego opóźnienia, wsparcie dla I/ O asynchroniczny, RSS (Otrzymuj skalowanie boczne), możliwość łączą strumienie wejściowe i wyjściowe UDP. Implementacja MsQuic została przetestowana pod kątem zgodności z eksperymentalnymi gałęziami przeglądarki Chrome i Edge.
Plik możliwość nawiązania połączenia z natychmiastowyme (0-RTT, w około 75% przypadków dane mogą być przesłane natychmiast po wysłaniu pakietu konfiguracji połączenia) i gwarantują minimalne opóźnienia między wysłaniem żądania a otrzymaniem odpowiedzi (RTT, Round trip time).
Oprócz, posiada 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 pakietów w celu ograniczenia sytuacji, które wymagają retransmisji utraconych danych pakietowych lubnauka techniki przewidywania przepustowości w każdym kierunku w celu zapewnienia optymalnej intensywności dostarczania paczek, uniemożliwiając mu osiągnięcie stanu przeciążenia, w którym obserwuje się utratę pakietów.
Z innych cech Klawisz QUIC:
- Wysoki poziom bezpieczeństwa, podobny do TLS (w rzeczywistości QUIC zapewnia możliwość korzystania z TLS 1.3 przez UDP).
- Kontrola integralności przepływu, która zapobiega utracie pakietów.
- 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 przepływu i nie zatrzymuje dostarczania danych w równoległych przepływach przesyłanych przez bieżące połączenie.
- 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.
- Nie ma problemów z blokowaniem kolejki TCP.
- Obsługa identyfikatorów połączeń, co skraca czas potrzebny na ponowne nawiązanie połączenia dla klientów mobilnych.
- Posiada możliwość łączenia zaawansowanych mechanizmów kontrolujących przeciążenie łącza.
- Oferuje niezwykłą 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.
W końcu dla tych, którzy chcą dowiedzieć się więcej na ten temat Jeśli chodzi o MsQuic lub chcesz rzucić okiem na jego kod źródłowy, powinieneś wiedzieć, że kod jest napisany w C, jest wieloplatformowy, ogólnego przeznaczenia, jest rozpowszechniany na licencji MIT, a wydany kod jest hostowany na GitHub.
źródło: https://techcommunity.microsoft.com