Science Score: 57.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 16 DOI reference(s) in README
  • Academic publication links
    Links to: acm.org, zenodo.org
  • Academic email domains
  • Institutional organization owner
    Organization tumi8 has institutional domain (www.net.in.tum.de)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.8%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: tumi8
  • Language: Rust
  • Default Branch: main
  • Size: 360 MB
Statistics
  • Stars: 0
  • Watchers: 10
  • Forks: 0
  • Open Issues: 0
  • Releases: 3
Created 11 months ago · Last pushed 9 months ago
Metadata Files
Readme Citation

README.md

QUIC Steps: Evaluating Pacing Strategies in QUIC Implementations

DOI License: CC BY 4.0

This repository containes artifacts accompanying the paper QUIC Steps: Evaluating Pacing Strategies in QUIC Implementations by Marcel Kempf, Simon Tietz, Benedikt Jaeger, Johannes Spth, Georg Carle, and Johannes Zirngibl. The paper will be presented at CoNEXT 2025, published in the Proceedings of the ACM on Networking and can be accessed under DOI:10.1145/3730985.

If you could find our work useful, consider citing our paper.

You can use:

bibtex @article{10.1145/3730985, author = {Kempf, Marcel and Tietz, Simon and Jaeger, Benedikt and Sp{\"a}th, Johannes and Carle, Georg and Zirngibl, Johannes}, title = {{QUIC Steps: Evaluating Pacing Strategies in QUIC Implementations}}, year = {2025}, issue_date = {June 2025}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {3}, number = {CoNEXT2}, url = {https://doi.org/10.1145/3730985}, doi = {10.1145/3730985}, journal = {Proc. ACM Netw.}, month = jun, articleno = {13}, keywords = {QUIC, Pacing, Congestion Control, GSO, Queueing Disciplines, Measurement Framework} }

Repository Content

This repository provides the necessary components to reproduce the measurements and results presented in the paper, as well as a framework for further research into QUIC pacing. The content includes:

  • Measurement Framework: The source code for our custom measurement framework, designed for reproducible QUIC experiments on bare-metal servers.
  • QUIC Implementations: The scripts and patches needed to build and run the QUIC implementations used in our experiments. The scripts for the used TCP/TLS stack are also included here.
  • Patches: Patches applied to the evaluated QUIC libraries (quiche) and the Linux kernel (for paced GSO) to enable specific functionalities and behaviors studied in the paper.
  • Measurement Data: The collected raw data from our experiments, including detailed logs from the QUIC implementations and systems, and packet captures from the sniffer host.
  • Evaluation Scripts: Scripts used to process the raw measurement data and generate the figures and data presented in the paper.

Measurement Framework

In the framework directory, you will find the source code of our measurement framework. It is an extension of the framework presented by Jaeger et al. in QUIC on the Highway: Evaluating Performance on High Rate Links, which is in turn based on the work of Marten Seemann and Jana Iyengar. Our framework is written in Python and designed for reproducible QUIC experiments on bare-metal servers.

QUIC Implementations

In the quic-implementations directory, you will find four subdirectories. Each subdirectory contains the scripts and patches needed to build and run one of the client/server pairs used in our experiments. While the build.sh script is called once before the experiment starts, the setup-env.sh script is called before each run of an experiment. The two scripts run-client.sh and run-server.sh are called on the client and server host, respectively, to start the client/server pair. Each subdirectory might contain additional files needed during the build process. For some of the used implementations, we had to move the build process to the setup-env.sh to easily toggle between different versions of the libraries.

Patches

We put the kernel patch for paced GSO into the patches directory. We used Debian Bookworm on all hosts. A README file contains additional information.

Measurement Data

In the results directory, you will find the raw measurement data collected during our experiments. The data is divided into two subdirectories: pcaps (containing all pcap files) and detailed (containing all remaining logs for the individual measurements). All files are compressed using zstd for efficient storage and transmission. While the pcap files are compressed individually, the detailed logs are compressed in a tarball format. You can use the four provided scripts to (de)compress the files.

We also use Git LFS to store the pcap files in the remote repository. Please make sure to have Git LFS installed and enabled in your local repository to pull the pcap files correctly.

Evaluation Scripts

The evaluation scripts are located in the analysis directory. The script names should be executed in the order of the numbers in the file names. Before running the scripts, make sure to install the required Python packages by running pip install -r requirements.txt inside the analysis directory. If you evaluate the data provided by us, please also make sure that the data was pulled with Git-LFS and decompressed as described in the measurement data section. We used Python 3.11 on Debian Bookworm and MacOS Sequoia for the evaluation. * The first script, 01_preprocessing.py, will take a while, as all pcap files are processed. The script will place all generated data under analysis/build/data. Known pcaps will be skipped so that the script runs faster on subsequent runs. We uploaded all preprocessed data, so you don't have to wait long for further analysis. If you want to redo the preprocessing step, you can simply delete the analysis/build/data directory. * The second script, 02_plotting.py, will generate the cdf plots presented in the paper. All generated figures are stored as .pdf under analysis/build/figures. * The third script, 03_stats.py, will parse the detailed logs to retrieve metrics like the goodput and the amount of dropped packets. The data will be printed to stdout and not saved to a file.

[!TIP] As our measurement framework extends the one presented by Jaeger et al. in QUIC on the Highway: Evaluating Performance on High Rate Links, the scripts provided back then do also work for our data.

Contact

For questions regarding the artifacts or the paper, feel free to reach out to the first author:\ Marcel Kempf (kempfm@net.in.tum.de).

Owner

  • Name: Chair of Network Architectures and Services
  • Login: tumi8
  • Kind: organization
  • Location: Munich

GitHub Events

Total
  • Release event: 3
  • Watch event: 1
  • Push event: 8
  • Create event: 4
Last Year
  • Release event: 3
  • Watch event: 1
  • Push event: 8
  • Create event: 4