Blame man/man8/tc-codel.8

Packit Service 3880ab
.TH CoDel 8 "23 May 2012" "iproute2" "Linux"
Packit Service 3880ab
.SH NAME
Packit Service 3880ab
CoDel \- Controlled-Delay Active Queue Management algorithm
Packit Service 3880ab
.SH SYNOPSIS
Packit Service 3880ab
.B tc qdisc ... codel
Packit Service 3880ab
[
Packit Service 3880ab
.B limit
Packit Service 3880ab
PACKETS ] [
Packit Service 3880ab
.B target
Packit Service 3880ab
TIME ] [
Packit Service 3880ab
.B interval
Packit Service 3880ab
TIME ] [
Packit Service 3880ab
.B ecn
Packit Service 3880ab
|
Packit Service 3880ab
.B noecn
Packit Service 3880ab
] [
Packit Service 3880ab
.B ce_threshold
Packit Service 3880ab
TIME ]
Packit Service 3880ab
Packit Service 3880ab
.SH DESCRIPTION
Packit Service 3880ab
CoDel (pronounced "coddle") is an adaptive "no-knobs" active queue management
Packit Service 3880ab
algorithm (AQM) scheme that was developed to address the shortcomings of
Packit Service 3880ab
RED and its variants. It was developed with the following goals
Packit Service 3880ab
in mind:
Packit Service 3880ab
 o It should be parameterless.
Packit Service 3880ab
 o It should keep delays low while permitting bursts of traffic.
Packit Service 3880ab
 o It should control delay.
Packit Service 3880ab
 o It should adapt dynamically to changing link rates with no impact on
Packit Service 3880ab
utilization.
Packit Service 3880ab
 o It should be simple and efficient and should scale from simple to
Packit Service 3880ab
complex routers.
Packit Service 3880ab
Packit Service 3880ab
.SH ALGORITHM
Packit Service 3880ab
CoDel comes with three major innovations. Instead of using queue size or queue
Packit Service 3880ab
average, it uses the local minimum queue as a measure of the standing/persistent queue.
Packit Service 3880ab
Second, it uses a single state-tracking variable of the minimum delay to see where it
Packit Service 3880ab
is relative to the standing queue delay. Third, instead of measuring queue size
Packit Service 3880ab
in bytes or packets, it is measured in packet-sojourn time in the queue.
Packit Service 3880ab
Packit Service 3880ab
CoDel measures the minimum local queue delay (i.e. standing queue delay) and
Packit Service 3880ab
compares it to the value of the given acceptable queue delay
Packit Service 3880ab
.B target.
Packit Service 3880ab
As long as the minimum queue delay is less than
Packit Service 3880ab
.B target
Packit Service 3880ab
or the buffer contains fewer than MTU worth of bytes, packets are not dropped.
Packit Service 3880ab
Codel enters a dropping mode when the minimum queue delay has exceeded
Packit Service 3880ab
.B target
Packit Service 3880ab
for a time greater than
Packit Service 3880ab
.B interval.
Packit Service 3880ab
In this mode, packets are dropped at different drop times which is set by a
Packit Service 3880ab
control law. The control law ensures that the packet drops cause a linear change
Packit Service 3880ab
in the throughput. Once the minimum delay goes below
Packit Service 3880ab
.B target,
Packit Service 3880ab
packets are no longer dropped.
Packit Service 3880ab
Packit Service 3880ab
Additional details can be found in the paper cited below.
Packit Service 3880ab
Packit Service 3880ab
.SH PARAMETERS
Packit Service 3880ab
.SS limit
Packit Service 3880ab
hard limit on the real queue size. When this limit is reached, incoming packets
Packit Service 3880ab
are dropped. If the value is lowered, packets are dropped so that the new limit is
Packit Service 3880ab
met. Default is 1000 packets.
Packit Service 3880ab
Packit Service 3880ab
.SS target
Packit Service 3880ab
is the acceptable minimum standing/persistent queue delay. This minimum delay
Packit Service 3880ab
is identified by tracking the local minimum queue delay that packets experience.
Packit Service 3880ab
Default and recommended value is 5ms.
Packit Service 3880ab
Packit Service 3880ab
.SS interval
Packit Service 3880ab
is used to ensure that the measured minimum delay does not become too stale. The
Packit Service 3880ab
minimum delay must be experienced in the last epoch of length
Packit Service 3880ab
.B interval.
Packit Service 3880ab
It should be set on the order of the worst-case RTT through the bottleneck to
Packit Service 3880ab
give endpoints sufficient time to react. Default value is 100ms.
Packit Service 3880ab
Packit Service 3880ab
.SS ecn | noecn
Packit Service 3880ab
can be used to mark packets instead of dropping them. If
Packit Service 3880ab
.B ecn
Packit Service 3880ab
has been enabled,
Packit Service 3880ab
.B noecn
Packit Service 3880ab
can be used to turn it off and vice-a-versa. By default,
Packit Service 3880ab
.B ecn
Packit Service 3880ab
is turned off.
Packit Service 3880ab
Packit Service 3880ab
.SS ce_threshold
Packit Service 3880ab
sets a threshold above which all packets are marked with ECN Congestion
Packit Service 3880ab
Experienced. This is useful for DCTCP-style congestion control algorithms that
Packit Service 3880ab
require marking at very shallow queueing thresholds.
Packit Service 3880ab
Packit Service 3880ab
Packit Service 3880ab
.SH EXAMPLES
Packit Service 3880ab
 # tc qdisc add dev eth0 root codel
Packit Service 3880ab
 # tc -s qdisc show
Packit Service 3880ab
   qdisc codel 801b: dev eth0 root refcnt 2 limit 1000p target 5.0ms
Packit Service 3880ab
interval 100.0ms
Packit Service 3880ab
    Sent 245801662 bytes 275853 pkt (dropped 0, overlimits 0 requeues 24)
Packit Service 3880ab
    backlog 0b 0p requeues 24
Packit Service 3880ab
     count 0 lastcount 0 ldelay 2us drop_next 0us
Packit Service 3880ab
     maxpacket 7306 ecn_mark 0 drop_overlimit 0
Packit Service 3880ab
Packit Service 3880ab
 # tc qdisc add dev eth0 root codel limit 100 target 4ms interval 30ms ecn
Packit Service 3880ab
 # tc -s qdisc show
Packit Service 3880ab
   qdisc codel 801c: dev eth0 root refcnt 2 limit 100p target 4.0ms
Packit Service 3880ab
interval 30.0ms ecn
Packit Service 3880ab
    Sent 237573074 bytes 268561 pkt (dropped 0, overlimits 0 requeues 5)
Packit Service 3880ab
    backlog 0b 0p requeues 5
Packit Service 3880ab
     count 0 lastcount 0 ldelay 76us drop_next 0us
Packit Service 3880ab
     maxpacket 2962 ecn_mark 0 drop_overlimit 0
Packit Service 3880ab
Packit Service 3880ab
Packit Service 3880ab
.SH SEE ALSO
Packit Service 3880ab
.BR tc (8),
Packit Service 3880ab
.BR tc-red (8)
Packit Service 3880ab
Packit Service 3880ab
.SH SOURCES
Packit Service 3880ab
o   Kathleen Nichols and Van Jacobson, "Controlling Queue Delay", ACM Queue,
Packit Service 3880ab
http://queue.acm.org/detail.cfm?id=2209336
Packit Service 3880ab
Packit Service 3880ab
.SH AUTHORS
Packit Service 3880ab
CoDel was implemented by Eric Dumazet and David Taht. This manpage was written
Packit Service 3880ab
by Vijay Subramanian. Please reports corrections to the Linux Networking
Packit Service 3880ab
mailing list <netdev@vger.kernel.org>.