CoDel - Fair Queuing (FQ) with Controlled Delay (CoDel)
tc qdisc ... fq_codel [ limit PACKETS ] [ flows NUMBER ] [
target TIME ] [ interval TIME ] [ quantum BYTES ] [
ecn | noecn ] [ ce_threshold TIME ] [ memory_limit
FQ_Codel (Fair Queuing Controlled Delay) is queuing discipline that combines
Fair Queuing with the CoDel AQM scheme. FQ_Codel uses a stochastic model to
classify incoming packets into different flows and is used to provide a fair
share of the bandwidth to all the flows using the queue. Each such flow is
managed by the CoDel queuing discipline. Reordering within a flow is avoided
since Codel internally uses a FIFO queue.
has the same semantics as codel and is the hard limit on the real queue
size. When this limit is reached, incoming packets are dropped. Default is
sets a limit on the total number of bytes that can be queued in this FQ-CoDel
instance. The lower of the packet limit of the limit parameter and the
memory limit will be enforced. Default is 32 MB.
is the number of flows into which the incoming packets are classified. Due to
the stochastic nature of hashing, multiple flows may end up being hashed into
the same slot. Newer flows have priority over older ones. This parameter can
be set only at load time since memory has to be allocated for the hash table.
Default value is 1024.
has the same semantics as codel and is the acceptable minimum
standing/persistent queue delay. This minimum delay is identified by tracking
the local minimum queue delay that packets experience. Default value is 5ms.
has the same semantics as codel and 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.
is the number of bytes used as 'deficit' in the fair queuing algorithm. Default
is set to 1514 bytes which corresponds to the Ethernet MTU plus the hardware
header length of 14 bytes.
has the same semantics as codel and 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. Unlike codel, ecn is turned on by
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.
#tc qdisc add dev eth0 root fq_codel
#tc -s qdisc show
qdisc fq_codel 8002: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1514
target 5.0ms interval 100.0ms ecn
Sent 428514 bytes 2269 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
maxpacket 256 drop_overlimit 0 new_flow_count 0 ecn_mark 0
new_flows_len 0 old_flows_len 0
#tc qdisc add dev eth0 root fq_codel limit 2000 target 3ms
interval 40ms noecn
FQ_CoDel was implemented by Eric Dumazet. This manpage was written by Vijay
Subramanian. Please report corrections to the Linux Networking mailing list
#tc -s qdisc show
qdisc fq_codel 8003: dev eth0 root refcnt 2 limit 2000p flows 1024 quantum
1514 target 3.0ms interval 40.0ms
Sent 2588985006 bytes 1783629 pkt (dropped 0, overlimits 0 requeues 34869)
backlog 0b 0p requeues 34869
maxpacket 65226 drop_overlimit 0 new_flow_count 73 ecn_mark 0
new_flows_len 1 old_flows_len 3