Continuous QUIC benchmarking with Nesquic

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

  1. Extend Nesquic with two QUIC libraries
  2. Add new benchmarks to analyze the performance in different scenarios
  3. Visualize the findings in a performance dashboard

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

  1. 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.

  2. 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.

  3. 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.

Supervisors