TCP Pacing in the Linux Kernel

Michael Welzl · 2025

Pacing introduces short pauses in between data packets upon transmission; this is often beneficial. For example, pacing can reduce the chance of packet loss, and improve operation with very short network queues. For TCP, it has been available in the Linux kernel for many years, and it applies in the same way to all TCP congestion control variants that do not influence pacing by themselves (at the time of writing, only BBR is such an exception). Several papers offer a high level description of its operation; here, we give the first in-depth explanation of how Linux TCP pacing really works. We illustrate its behavior with a trace from a testbed experiment, and provide a companion guide that makes the relevant kernel code easier to understand.

Read the paper · More papers on PaperTik