QUIC protocol implementation for .NET
Implementace protokolu QUIC pro .NET
diploma thesis (DEFENDED)

View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/124659Identifiers
Study Information System: 224048
Collections
- Kvalifikační práce [11335]
Author
Advisor
Referee
Dingle, Adam Thomas
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software and Data Engineering
Department
Department of Distributed and Dependable Systems
Date of defense
4. 2. 2021
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
QUIC|.NET|síťový protokolKeywords (English)
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...