{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,23]],"date-time":"2026-03-23T16:07:36Z","timestamp":1774282056743,"version":"3.50.1"},"reference-count":48,"publisher":"Association for Computing Machinery (ACM)","issue":"CoNEXT2","funder":[{"DOI":"10.13039\/501100006374","name":"Bundesministerium f\u00fcr Bildung und Forschung","doi-asserted-by":"publisher","award":["16KISK002, 16KISK107"],"award-info":[{"award-number":["16KISK002, 16KISK107"]}],"id":[{"id":"10.13039\/501100006374","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100006374","name":"Deutsche Forschungsgemeinschaft","doi-asserted-by":"publisher","award":["HyperNIC, CA595\/13-1"],"award-info":[{"award-number":["HyperNIC, CA595\/13-1"]}],"id":[{"id":"10.13039\/501100006374","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100006374","name":"Horizon 2020 Framework Programme","doi-asserted-by":"publisher","award":["10107977, 101131207"],"award-info":[{"award-number":["10107977, 101131207"]}],"id":[{"id":"10.13039\/501100006374","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Netw."],"published-print":{"date-parts":[[2025,6,8]]},"abstract":"<jats:p>Pacing is a key mechanism in modern transport protocols, used to regulate packet transmission timing to minimize traffic burstiness, lower latency, and reduce packet loss. Standardized in 2021, QUIC is a UDP-based protocol designed to improve upon the TCP \/ TLS stack. While the QUIC protocol recommends pacing, and congestion control algorithms like BBR rely on it, the user-space nature of QUIC introduces unique challenges. These challenges include coarse-grained timers, system call overhead, and OS scheduling delays, all of which complicate precise packet pacing. This paper investigates how pacing is implemented differently across QUIC stacks, including quiche, picoquic, and ngtcp2, and evaluates the impact of system-level features like GSO and Linux qdiscs on pacing. Using a custom measurement framework and a passive optical fiber tap, we establish a baseline with default settings and systematically explore the effects of qdiscs, hardware offloading using the ETF qdisc, and GSO on pacing precision and network performance. We also extend and evaluate a kernel patch to enable pacing of individual packets within GSO buffers, combining batching efficiency with precise pacing. Kernel-assisted and purely user-space pacing approaches are compared. We show that pacing with only user-space timers can work well, as demonstrated by picoquic with BBR. With quiche, we identify FQ as a qdisc well-suited for pacing QUIC traffic, as it is relatively easy to use and offers precise pacing based on packet timestamps. We uncovered that internal mechanisms, such as a library's spurious loss detection logic or algorithms such as HyStart++, can interfere with pacing and cause issues like unstable congestion windows and increased packet loss. Our findings provide new insights into the trade-offs involved in implementing pacing in QUIC and highlight potential optimizations for real-world applications like video streaming and video calls.<\/jats:p>","DOI":"10.1145\/3730985","type":"journal-article","created":{"date-parts":[[2025,7,1]],"date-time":"2025-07-01T20:29:36Z","timestamp":1751401776000},"page":"1-14","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["QUIC Steps: Evaluating Pacing Strategies in QUIC Implementations"],"prefix":"10.1145","volume":"3","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-7540-776X","authenticated-orcid":false,"given":"Marcel","family":"Kempf","sequence":"first","affiliation":[{"name":"Technical University of Munich, Munich, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0007-9470-463X","authenticated-orcid":false,"given":"Simon","family":"Tietz","sequence":"additional","affiliation":[{"name":"Technical University of Munich, Munich, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8541-5496","authenticated-orcid":false,"given":"Benedikt","family":"Jaeger","sequence":"additional","affiliation":[{"name":"Technical University of Munich, Munich, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0008-5564-2090","authenticated-orcid":false,"given":"Johannes","family":"Sp\u00e4th","sequence":"additional","affiliation":[{"name":"Technical University of Munich, Munich, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2347-1839","authenticated-orcid":false,"given":"Georg","family":"Carle","sequence":"additional","affiliation":[{"name":"Technical University of Munich, Munich, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2918-016X","authenticated-orcid":false,"given":"Johannes","family":"Zirngibl","sequence":"additional","affiliation":[{"name":"Max Planck Institute for Informatics, Saarbr\u00fccken, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2025,6,9]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/INFCOM.2000.832483"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","unstructured":"Praveen Balasubramanian Yi Huang and Matt Olson. 2023. HyStart: Modified Slow Start for TCP. RFC 9406. doi:10.17487\/RFC9406","DOI":"10.17487\/RFC9406"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3606464.3606474"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/ACCESS.2022.3211969"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3009824"},{"key":"e_1_2_2_6_1","unstructured":"Cloudflare. 2024a. quiche . https:\/\/github.com\/cloudflare\/quiche Retrieved 2024--12-03 from"},{"key":"e_1_2_2_7_1","unstructured":"Cloudflare. 2024b. Spurious Loss Detection . https:\/\/github.com\/cloudflare\/quiche\/blob\/115d6ee15465677fc760958019d92776fd28d3e9\/quiche\/src\/recovery\/congestion\/cubic.rs#L207-L228 Retrieved 2024--12-04 from"},{"key":"e_1_2_2_8_1","unstructured":"Cloudflare Radar. 2024. Adoption & Usage . https:\/\/radar.cloudflare.com\/adoption-and-usage Retrieved 2025-04--26 from"},{"key":"e_1_2_2_9_1","unstructured":"Willem de Bruijn. 2020. multi release pacing for UDP GSO . https:\/\/lore.kernel.org\/all\/20200609140934.110785--1-willemdebruijn.kernel@gmail.com\/#r Retrieved 2024--12-03 from"},{"key":"e_1_2_2_10_1","volume-title":"Linux Plumbers Conference.","author":"Bruijn Willem De","year":"2018","unstructured":"Willem De Bruijn and Eric Dumazet. 2018. Optimizing UDP for content delivery: GSO, pacing and zerocopy. In Linux Plumbers Conference."},{"key":"e_1_2_2_11_1","unstructured":"Debian. 2024. Bookworm Defaults . https:\/\/salsa.debian.org\/kernel-team\/linux\/-\/blob\/21f66065f7e57d90ff70669d29d5cb8ee09e842c\/debian\/config\/config Retrieved 2024--12-04 from"},{"key":"e_1_2_2_12_1","unstructured":"Eric Dumazet. 2013. pkt_sched: fq: Fair Queue packet scheduler . https:\/\/git.kernel.org\/pub\/scm\/network\/iproute2\/iproute2.git\/commit\/?id=bc113e4 Retrieved 2024--12-03 from"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2815675.2815692"},{"key":"e_1_2_2_14_1","unstructured":"Alessandro Ghedini. 2020. Accelerating UDP packet transmission for QUIC . https:\/\/blog.cloudflare.com\/accelerating-udp-packet-transmission-for-quic\/ Retrieved 2024--12-03 from"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1109\/ACCESS.2021.3113891"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","unstructured":"Jana Iyengar and Ian Swett. 2021. QUIC Loss Detection and Congestion Control. RFC 9002. doi:10.17487\/RFC9002","DOI":"10.17487\/RFC9002"},{"key":"e_1_2_2_17_1","unstructured":"Jana Iyengar Ian Swett and Mirja K\u00fchlewind. 2025. QUIC Acknowledgment Frequency . Internet-Draft draft-ietf-quic-ack-frequency-11. Internet Engineering Task Force. https:\/\/datatracker.ietf.org\/doc\/draft-ietf-quic-ack-frequency\/11\/ Work in Progress."},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.23919\/IFIPNetworking57963.2023.10186365"},{"key":"e_1_2_2_19_1","unstructured":"Matt Joras and Yang Chi. 2020. How Facebook is bringing QUIC to billions . https:\/\/engineering.fb.com\/2020\/10\/21\/networking-traffic\/how-facebook-is-bringing-quic-to-billions\/ Retrieved 2024--12-03 from"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.23919\/IFIPNetworking62109.2024.10619916"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.comcom.2024.04.038"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","unstructured":"Marcel Kempf Simon Tietz Benedikt Jaeger Johannes Sp\u00e4th Georg Carle and Johannes Zirngibl. 2025. Artifacts for the Paper ''QUIC Steps: Evaluating Pacing Strategies in QUIC Implementations'' . https:\/\/doi.org\/10.5281\/zenodo.15311561","DOI":"10.5281\/zenodo.15311561"},{"key":"e_1_2_2_23_1","unstructured":"Alexey N. Kuznetsov. 2001. tc-tbf - Linux manual page . https:\/\/man7.org\/linux\/man-pages\/man8\/tc-tbf.8.html Retrieved 2024--12-03 from"},{"key":"e_1_2_2_24_1","unstructured":"Fabio Ludovici and Hagen Paul Pfeifer. 2011. tc-netem - Linux manual page . https:\/\/man7.org\/linux\/man-pages\/man8\/tc-netem.8.html Retrieved 2024--12-03 from"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1109\/WCNC.2019.8886329"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/3405796.3405828"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICC.2016.7510788"},{"key":"e_1_2_2_28_1","unstructured":"Kazuho Oku and Jana Iyengar. 2020. QUIC matches TCP's efficiency says our research. https:\/\/www.fastly.com\/blog\/measuring-quic-vs-tcp-computational-efficiency Retrieved 2024--12-03 from"},{"key":"e_1_2_2_29_1","unstructured":"Private Octopus. 2024. picoquic . https:\/\/github.com\/private-octopus\/picoquic Retrieved 2024--12-03 from"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/PerComWorkshops56833.2023.10150312"},{"key":"e_1_2_2_31_1","unstructured":"Jesus Sanchez-Palencia and Vinicius Costa Gomes. 2018. tc-etf - Linux manual page . https:\/\/man7.org\/linux\/man-pages\/man8\/tc-etf.8.html Retrieved 2024--12-03 from"},{"key":"e_1_2_2_32_1","volume-title":"Cloud Storage, and Video Workloads","author":"Shreedhar Tanya","year":"2022","unstructured":"Tanya Shreedhar, Rohit Panda, Sergey Podanev, and Vaibhav Bajpai. 2022. Evaluating QUIC Performance Over Web, Cloud Storage, and Video Workloads. IEEE Transactions on Network and Service Management, (2022)."},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/ACCESS.2021.3061696"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3603269.3604839"},{"key":"e_1_2_2_35_1","first-page":"12","volume":"202","author":"Segmentation Offloads The","unstructured":"The kernel development community. 2024. Segmentation Offloads, . https:\/\/docs.kernel.org\/networking\/segmentation-offloads.html Retrieved 2024--12-03 from","journal-title":"Retrieved"},{"key":"e_1_2_2_36_1","unstructured":"Tatsuhiro Tsujikawa. 2024. ngtcp2 . https:\/\/github.com\/ngtcp2\/ngtcp2 Retrieved 2024--12-03 from"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3565477.3569154"},{"key":"e_1_2_2_38_1","unstructured":"Michael Welzl Wesley Eddy Vidhi Goel and Michael T\u00fcxen. 2025. Pacing in Transport Protocols . Internet-Draft draft-welzl-iccrg-pacing-02. Internet Engineering Task Force. https:\/\/datatracker.ietf.org\/doc\/draft-welzl-iccrg-pacing\/02\/ Work in Progress."},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/3340301.3341123"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","unstructured":"Lisong Xu Sangtae Ha Injong Rhee Vidhi Goel and Lars Eggert. 2023. CUBIC for Fast and Long-Distance Networks. RFC 9438. doi:10.17487\/RFC9438","DOI":"10.17487\/RFC9438"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3405796.3405827"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/3442381.3450103"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/PCCC.2017.8280429"},{"key":"e_1_2_2_44_1","unstructured":"Gina Yuan. 2023. Weird sawtooth cwnd in response to spurious congestion events. https:\/\/github.com\/cloudflare\/quiche\/issues\/1411 Retrieved 2024--12-03 from"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-031-56252-5_12"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/3589334.3645323"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3487552.3487826"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-031-56252-5_13"}],"container-title":["Proceedings of the ACM on Networking"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3730985","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,3,23]],"date-time":"2026-03-23T15:34:24Z","timestamp":1774280064000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3730985"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,8]]},"references-count":48,"journal-issue":{"issue":"CoNEXT2","published-print":{"date-parts":[[2025,6,8]]}},"alternative-id":["10.1145\/3730985"],"URL":"https:\/\/doi.org\/10.1145\/3730985","relation":{},"ISSN":["2834-5509"],"issn-type":[{"value":"2834-5509","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,8]]},"assertion":[{"value":"2025-06-09","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}