diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 14:18:53 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 14:18:53 +0000 |
commit | a0e0018c9a7ef5ce7f6d2c3ae16aecbbd16a8f67 (patch) | |
tree | 8feaf1a1932871b139b3b30be4c09c66489918be /man/man8/tc-codel.8 | |
parent | Initial commit. (diff) | |
download | iproute2-a0e0018c9a7ef5ce7f6d2c3ae16aecbbd16a8f67.tar.xz iproute2-a0e0018c9a7ef5ce7f6d2c3ae16aecbbd16a8f67.zip |
Adding upstream version 6.1.0.upstream/6.1.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man/man8/tc-codel.8')
-rw-r--r-- | man/man8/tc-codel.8 | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/man/man8/tc-codel.8 b/man/man8/tc-codel.8 new file mode 100644 index 0000000..e538e94 --- /dev/null +++ b/man/man8/tc-codel.8 @@ -0,0 +1,122 @@ +.TH CoDel 8 "23 May 2012" "iproute2" "Linux" +.SH NAME +CoDel \- Controlled-Delay Active Queue Management algorithm +.SH SYNOPSIS +.B tc qdisc ... codel +[ +.B limit +PACKETS ] [ +.B target +TIME ] [ +.B interval +TIME ] [ +.B ecn +| +.B noecn +] [ +.B ce_threshold +TIME ] + +.SH DESCRIPTION +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 on +utilization. + o It should be simple and efficient and should scale from simple to +complex routers. + +.SH ALGORITHM +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 +.B target. +As long as the minimum queue delay is less than +.B 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 +.B target +for a time greater than +.B 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 +.B target, +packets are no longer dropped. + +Additional details can be found in the paper cited below. + +.SH PARAMETERS +.SS limit +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. + +.SS target +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. + +.SS interval +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 +.B 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. + +.SS ecn | noecn +can be used to mark packets instead of dropping them. If +.B ecn +has been enabled, +.B noecn +can be used to turn it off and vice-a-versa. By default, +.B ecn +is turned off. + +.SS ce_threshold +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 thresholds. + + +.SH EXAMPLES + # tc qdisc add dev eth0 root codel + # tc -s qdisc show + qdisc codel 801b: dev eth0 root refcnt 2 limit 1000p target 5.0ms +interval 100.0ms + Sent 245801662 bytes 275853 pkt (dropped 0, overlimits 0 requeues 24) + 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 ecn + # 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 5) + backlog 0b 0p requeues 5 + count 0 lastcount 0 ldelay 76us drop_next 0us + maxpacket 2962 ecn_mark 0 drop_overlimit 0 + + +.SH SEE ALSO +.BR tc (8), +.BR tc-red (8) + +.SH SOURCES +o Kathleen Nichols and Van Jacobson, "Controlling Queue Delay", ACM Queue, +http://queue.acm.org/detail.cfm?id=2209336 + +.SH AUTHORS +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 <netdev@vger.kernel.org>. |