1CoDel(8) Linux CoDel(8)
2
3
4
6 CoDel - Controlled-Delay Active Queue Management algorithm
7
9 tc qdisc ... codel [ limit PACKETS ] [ target TIME ] [ interval TIME ]
10 [ ecn | noecn ] [ ce_threshold TIME ]
11
12
14 CoDel (pronounced "coddle") is an adaptive "no-knobs" active queue man‐
15 agement algorithm (AQM) scheme that was developed to address the short‐
16 comings of RED and its variants. It was developed with the following
17 goals in mind:
18 o It should be parameterless.
19 o It should keep delays low while permitting bursts of traffic.
20 o It should control delay.
21 o It should adapt dynamically to changing link rates with no impact on
22 utilization.
23 o It should be simple and efficient and should scale from simple to
24 complex routers.
25
26
28 CoDel comes with three major innovations. Instead of using queue size
29 or queue average, it uses the local minimum queue as a measure of the
30 standing/persistent queue. Second, it uses a single state-tracking
31 variable of the minimum delay to see where it is relative to the stand‐
32 ing queue delay. Third, instead of measuring queue size in bytes or
33 packets, it is measured in packet-sojourn time in the queue.
34
35 CoDel measures the minimum local queue delay (i.e. standing queue
36 delay) and compares it to the value of the given acceptable queue delay
37 target. As long as the minimum queue delay is less than target or the
38 buffer contains fewer than MTU worth of bytes, packets are not dropped.
39 Codel enters a dropping mode when the minimum queue delay has exceeded
40 target for a time greater than interval. In this mode, packets are
41 dropped at different drop times which is set by a control law. The con‐
42 trol law ensures that the packet drops cause a linear change in the
43 throughput. Once the minimum delay goes below target, packets are no
44 longer dropped.
45
46 Additional details can be found in the paper cited below.
47
48
50 limit
51 hard limit on the real queue size. When this limit is reached, incoming
52 packets are dropped. If the value is lowered, packets are dropped so
53 that the new limit is met. Default is 1000 packets.
54
55
56 target
57 is the acceptable minimum standing/persistent queue delay. This minimum
58 delay is identified by tracking the local minimum queue delay that
59 packets experience. Default and recommended value is 5ms.
60
61
62 interval
63 is used to ensure that the measured minimum delay does not become too
64 stale. The minimum delay must be experienced in the last epoch of
65 length interval. It should be set on the order of the worst-case RTT
66 through the bottleneck to give endpoints sufficient time to react.
67 Default value is 100ms.
68
69
70 ecn | noecn
71 can be used to mark packets instead of dropping them. If ecn has been
72 enabled, noecn can be used to turn it off and vice-a-versa. By default,
73 ecn is turned off.
74
75
76 ce_threshold
77 sets a threshold above which all packets are marked with ECN Congestion
78 Experienced. This is useful for DCTCP-style congestion control algo‐
79 rithms that require marking at very shallow queueing thresholds.
80
81
82
84 # tc qdisc add dev eth0 root codel
85 # tc -s qdisc show
86 qdisc codel 801b: dev eth0 root refcnt 2 limit 1000p target 5.0ms
87 interval 100.0ms
88 Sent 245801662 bytes 275853 pkt (dropped 0, overlimits 0 requeues
89 24)
90 backlog 0b 0p requeues 24
91 count 0 lastcount 0 ldelay 2us drop_next 0us
92 maxpacket 7306 ecn_mark 0 drop_overlimit 0
93
94 # tc qdisc add dev eth0 root codel limit 100 target 4ms interval 30ms
95 ecn
96 # tc -s qdisc show
97 qdisc codel 801c: dev eth0 root refcnt 2 limit 100p target 4.0ms
98 interval 30.0ms ecn
99 Sent 237573074 bytes 268561 pkt (dropped 0, overlimits 0 requeues
100 5)
101 backlog 0b 0p requeues 5
102 count 0 lastcount 0 ldelay 76us drop_next 0us
103 maxpacket 2962 ecn_mark 0 drop_overlimit 0
104
105
106
108 tc(8), tc-red(8)
109
110
112 o Kathleen Nichols and Van Jacobson, "Controlling Queue Delay", ACM
113 Queue, http://queue.acm.org/detail.cfm?id=2209336
114
115
117 CoDel was implemented by Eric Dumazet and David Taht. This manpage was
118 written by Vijay Subramanian. Please reports corrections to the Linux
119 Networking mailing list <netdev@vger.kernel.org>.
120
121
122
123iproute2 23 May 2012 CoDel(8)