STANNIX Community


Manual: tc-codel

CoDel(8)						    Linux						    CoDel(8)

NAME
       CoDel - Controlled-Delay Active Queue Management algorithm

SYNOPSIS
       tc qdisc ... codel [ limit PACKETS ] [ target TIME ] [ interval TIME ] [ ecn | noecn ] [ ce_threshold TIME ]

DESCRIPTION
       CoDel  (pronounced "coddle") is an adaptive "no-knobs" active queue management algorithm (AQM) scheme that was devel‐
       oped to address the shortcomings of RED and its variants. It was developed with the following goals in mind:

       *   It should be parameterless.

       *   It should keep delays low while permitting bursts of traffic.

       *   It should control delay.

       *   It should adapt dynamically to changing link rates with no impact on utilization.

       *   It should be simple and efficient and should scale from simple to complex routers.

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 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	 ex‐
       ceeded  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 control law ensures that the packet drops cause a linear change in the throughput. Once the
       minimum delay goes below target, packets are no longer dropped.

       Additional details can be found in the paper cited below.

PARAMETERS
   limit
       is the 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.

   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.

   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 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.

   ecn | noecn
       can  be	used to mark packets instead of dropping them. If ecn has been enabled, noecn can be used to turn it off and
       vice-a-versa. By default, ecn is turned off.

   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.

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

SEE ALSO
       tc(8), tc-red(8)

SOURCES
       Kathleen Nichols and Van Jacobson, "Controlling Queue Delay", ACM Queue, http://queue.acm.org/detail.cfm?id=2209336

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 .

iproute2						 23 May 2012						    CoDel(8)