tc qdisc ... codel [ limit PACKETS ] [ target TIME ] [ interval TIME ]
[ ecn | noecn ]
CoDel (pronounced "coddle") is an adaptive "no-knobs" active queue man-
agement algorithm (AQM) scheme that was developed to address the short-
comings 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 on
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 stand-
ing 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 con-
trol law ensures that the packet drops cause a linear change in the
throughput. Once the minimum delay goes below target, packets are no
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.
backlog 0b 0p requeues 24
count 0 lastcount 0 ldelay 2us drop_next 0us
maxpacket 7306 ecn_mark 0 drop_overlimit 0
# tc qdisc add dev eth0 root codel limit 100 target 4ms interval 30ms
# tc -s qdisc show
qdisc codel 801c: dev eth0 root refcnt 2 limit 100p target 4.0ms
interval 30.0ms ecn
Sent 237573074 bytes 268561 pkt (dropped 0, overlimits 0 requeues
backlog 0b 0p requeues 5
count 0 lastcount 0 ldelay 76us drop_next 0us
maxpacket 2962 ecn_mark 0 drop_overlimit 0
o Kathleen Nichols and Van Jacobson, "Controlling Queue Delay", ACM
CoDel was implemented by Eric Dumazet and David Taht. This manpage was
written by Vijay Subramanian. Please reports corrections to the Linux
Networking mailing list <firstname.lastname@example.org>.
iproute2 23 May 2012 CoDel(8)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2019
All Rights Reserved.