CoDel (pronounced "coddle") is an adaptive "no-knobs" active queue
management algorithm (AQM) scheme that was developed to address the
shortcomings of RED and its variants. It was developed with the
following goals in mind:
o It should be parameterless.
o It should keep delays low while permitting bursts of traffic.
o It should control delay.
o It should adapt dynamically to changing link rates with no impact
o It should be simple and efficient and should scale from simple to
CoDel comes with three major innovations. Instead of using queue size
or queue average, it uses the local minimum queue as a measure of the
standing/persistent queue. Second, it uses a single state-tracking
variable of the minimum delay to see where it is relative to the
standing queue delay. Third, instead of measuring queue size in bytes
or packets, it is measured in packet-sojourn time in the queue.
CoDel measures the minimum local queue delay (i.e. standing queue
delay) and compares it to the value of the given acceptable queue
delay target. As long as the minimum queue delay is less than target
or the buffer contains fewer than MTU worth of bytes, packets are not
dropped. Codel enters a dropping mode when the minimum queue delay
has exceeded target for a time greater than interval. In this mode,
packets are dropped at different drop times which is set by a control
law. The control law ensures that the packet drops cause a linear
change in the throughput. Once the minimum delay goes below target,
packets are no longer dropped.
Additional details can be found in the paper cited below.
hard limit on the real queue size. When this limit is reached,
incoming packets are dropped. If the value is lowered, packets are
dropped so that the new limit is met. Default is 1000 packets.
is the acceptable minimum standing/persistent queue delay. This
minimum delay is identified by tracking the local minimum queue delay
that packets experience. Default and recommended value is 5ms.
is used to ensure that the measured minimum delay does not become too
stale. The minimum delay must be experienced in the last epoch of
length interval. It should be set on the order of the worst-case RTT
through the bottleneck to give endpoints sufficient time to react.
Default value is 100ms.
ecn | noecn
can be used to mark packets instead of dropping them. If ecn has been
enabled, noecn can be used to turn it off and vice-a-versa. By
default, ecn is turned off.
sets a threshold above which all packets are marked with ECN
Congestion Experienced. This is useful for DCTCP-style congestion
control algorithms that require marking at very shallow queueing
This page is part of the iproute2 (utilities for controlling TCP/IP
networking and traffic) project. Information about the project can
be found at
If you have a bug report for this manual page, send it to
email@example.com, firstname.lastname@example.org. This page was obtained
from the project's upstream Git repository
2020-08-13. (At that time, the date of the most recent commit that
was found in the repository was 2020-06-24.) If you discover any
rendering problems in this HTML version of the page, or you believe
there is a better or more up-to-date source for the page, or you have
corrections or improvements to the information in this COLOPHON
(which is not part of the original manual page), send a mail to
iproute2 23 May 2012 CoDel(8)