QUIC protocol implementation for .NET
Implementace protokolu QUIC pro .NET
diplomová práce (OBHÁJENO)
Zobrazit/ otevřít
Trvalý odkaz
http://hdl.handle.net/20.500.11956/124659Identifikátory
SIS: 224048
Kolekce
- Kvalifikační práce [10690]
Autor
Vedoucí práce
Oponent práce
Dingle, Adam Thomas
Fakulta / součást
Matematicko-fyzikální fakulta
Obor
Softwarové a datové inženýrství
Katedra / ústav / klinika
Katedra distribuovaných a spolehlivých systémů
Datum obhajoby
4. 2. 2021
Nakladatel
Univerzita Karlova, Matematicko-fyzikální fakultaJazyk
Angličtina
Známka
Výborně
Klíčová slova (česky)
QUIC|.NET|síťový protokolKlíčová slova (anglicky)
QUIC|.NET|network protokolQUIC je general-purpose síťový protokol transportní vrstvy, který byl navržen jako náhrada TCP a TLS pro HTTP/3. QUIC je postaven nad UDP a poskytuje vždy zašif- rované spojení schopné paraleního přenosu vícero proudů dat. V porovnání s TCP, QUIC slibuje nižší dobu odezvy, větší flexibilitu congestion control a řešení head-of-line blocking problému, který se vyskytuje v multiplexovaných HTTP/2 spojeních. Nejnovější verze .NET - .NET 5 - byla vydána s experimentální podporou pro QUIC, která je založena na knihovně MsQuic napsané v jazyce C. Nicméně, při imple- mentování nových feature ve standartních knihovnách v .NET jsou preferovány vlastní implementace přímo v .NET místo přidávání závislostí na nativních knihovnách, protože implementace v .NET jsou snáze udržovatelné a v některých případech dokonce i více výkonné. Tato práce zkoumá proveditelnost implementace QUIC protokolu v jazyce C# jakožto budoucí náhrady stávajícího řešení pro vydání v .NET 6 nebo pozdější verzi. Výsledkem této práce je fork oficiálního repozitáře .NET runtime s částečnou imple- mentací QUIC protokolu v jazyce C#. Tato práce implementovala podmnožinu QUIC specifikace dostačující pro základní zhodnocení výkonu. Jako součást práce jsme provedli měření propustnosti a odezvy naší implementace a předchozí implementace založené na knihovně...
QUIC is a general-purpose transport layer network protocol proposed as the replace- ment for TCP and TLS in HTTP/3. QUIC is based on UDP and provides always- encrypted connections able to transmit multiple streams of data in parallel. Compared to TCP, QUIC promises lower latency, better congestion control flexibility, and a solution to head-of-line blocking occurring in multiplexed HTTP/2 connections. The latest release of .NET - .NET 5 - has shipped with experimental support for QUIC based on the MsQuic C library. However, when implementing new features in stan- dard .NET libraries, purely .NET implementations are preferable to adding dependencies on native libraries because .NET implementations offer better maintainability and - in some cases - even better performance. This thesis explores the viability of a purely C# QUIC implementation as a future replacement for .NET 6 or later release. This thesis's result is a fork of the official .NET runtime repository with partial C# implementation of the QUIC protocol. We implemented a subset of the QUIC speci- fication, which is sufficient for a basic performance evaluation. As part of the thesis, we have benchmarked the throughput and latency of our and the MsQuic-based QUIC implementation and compared them to TCP's performance in two environments: LAN and...