Continuous benchmarking of open-source QUIC implementations
In recent years, QUIC has seen increasing adoption due to its benefits over TCP: it’s able to establish a new connection in one RTT and alleviates head-of-line blocking [1]. But while TCP’s network stack has been meticulously optimized over the years, QUIC has not received as much love.
There is plenty of work that has analyzed QUIC’s performance [2, 3]. However, QUIC evolves at a rapid rate, rendering these measurements outdated very quickly. To account for this, a continuous benchmarking suite could be of tremendous help. It could track multiple open-source projects, test them on a regular basis and visualize their performance as they evolve over time.
Ultimately, this thesis is meant as a foundation for future optimizations of the kernel’s network stack. We want to better understand the performance of QUIC, identify new bottlenecks and quantify the expected improvements from fixing them.
Milestones
- Adapt the benchmark suite to around 10 QUIC implementations
- Setup the infrastructure to run the benchmark suite continuously
- Implement new benchmarks
- Visualize the results to facilitate their analysis
Requirements
- Background: networking, linux kernel, congestion control, web development
- Programming languages: Rust, C, Go (depending on the chosen implementations)
- Tools: perf, iperf, docker, tcpdump
References
A. Langley et al., “The QUIC transport protocol: Design and internet-scale deployment,” in Proceedings of the conference of the ACM special interest group on data communication, in SIGCOMM ’17. ACM, 2017. doi: 10.1145/3098822.3098842.
X. Yang, L. Eggert, J. Ott, S. Uhlig, Z. Sun, and G. Antichi, “Making QUIC quicker with NIC offload,” in Proceedings of the workshop on the evolution, performance, and interoperability of QUIC, in SIGCOMM ’20. ACM, 2020. doi: 10.1145/3405796.3405827.
A. Yu and T. A. Benson, “Dissecting performance of production QUIC,” in Proceedings of the web conference 2021, in WWW ’21. ACM, 2021. doi: 10.1145/3442381.3450103.