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