案例库 · 工程与运营 · 技术决策 · 2012–2018
这条还没译成中文,下面是英文原文。
CoDel killed bufferbloat by measuring delay, not buffer fullness
CoDel watches how long a packet has waited rather than queue length, and self-tunes to hold delay near 5 ms with no configuration.
Pollere / Google
那一手
Bufferbloat happens when network buffers are too deep: queues absorb bursts, keep packets sitting for hundreds of milliseconds, and interactive traffic like calls and games degrades even though throughput looks fine. Queue length alone tells you little because it depends on link speed.
CoDel reverses the perspective. It does not care how full the queue is; it cares how long a packet has been waiting. When that sojourn time exceeds a target around 5 ms, it drops one packet and backs off the drop interval as the condition persists.
Because it is driven by a directly measured delay rather than a hardcoded threshold, the controller is self-tuning and needs no per-link parameters, which is what makes it deployable in normal networks without an engineer in the loop.
为什么管用
- Queue depth is a proxy; perceived delay is the actual problem.
- A target delay creates a self-tuning control loop.
- No per-link configuration means it works across mixed speeds.
可以搬走什么
When a metric is the real problem, measure that metric directly instead of a proxy; a self-tuning controller that tracks perceived delay avoids configuring every link by hand.
后来呢
CoDel and its per-flow variant FQ-CoDel became the reference mitigations for bufferbloat, were documented in RFC 8289 and 8290, and were widely implemented in routers and the Linux kernel.
资料来源
- RFC 8289: Controlled Delay Active Queue Management
- RFC 8290: The Flow Queue CoDel Packet Scheduler and AQM Algorithm
发现哪里写错了?告诉我们。