1FQ_CoDel(8) Linux FQ_CoDel(8)
2
3
4
6 CoDel - Fair Queuing (FQ) with Controlled Delay (CoDel)
7
9 tc qdisc ... fq_codel [ limit PACKETS ] [ flows NUMBER ] [ target TIME
10 ] [ interval TIME ] [ quantum BYTES ] [ ecn | noecn ] [ ce_threshold
11 TIME ] [ ce_threshold_selector VALUE/MASK ] [ memory_limit BYTES ]
12
13
15 FQ_Codel (Fair Queuing Controlled Delay) is queuing discipline that
16 combines Fair Queuing with the CoDel AQM scheme. FQ_Codel uses a sto‐
17 chastic model to classify incoming packets into different flows and is
18 used to provide a fair share of the bandwidth to all the flows using
19 the queue. Each such flow is managed by the CoDel queuing discipline.
20 Reordering within a flow is avoided since Codel internally uses a FIFO
21 queue.
22
23
25 limit
26 has the same semantics as codel and is the hard limit on the real queue
27 size. When this limit is reached, incoming packets are dropped. De‐
28 fault is 10240 packets.
29
30
31 memory_limit
32 sets a limit on the total number of bytes that can be queued in this
33 FQ-CoDel instance. The lower of the packet limit of the limit parameter
34 and the memory limit will be enforced. Default is 32 MB.
35
36
37
38 flows
39 is the number of flows into which the incoming packets are classified.
40 Due to the stochastic nature of hashing, multiple flows may end up be‐
41 ing hashed into the same slot. Newer flows have priority over older
42 ones. This parameter can be set only at load time since memory has to
43 be allocated for the hash table. Default value is 1024.
44
45
46 target
47 has the same semantics as codel and is the acceptable minimum stand‐
48 ing/persistent queue delay. This minimum delay is identified by track‐
49 ing the local minimum queue delay that packets experience. Default
50 value is 5ms.
51
52
53 interval
54 has the same semantics as codel and is used to ensure that the measured
55 minimum delay does not become too stale. The minimum delay must be ex‐
56 perienced in the last epoch of length interval. It should be set on
57 the order of the worst-case RTT through the bottleneck to give end‐
58 points sufficient time to react. Default value is 100ms.
59
60
61 quantum
62 is the number of bytes used as 'deficit' in the fair queuing algorithm.
63 Default is set to 1514 bytes which corresponds to the Ethernet MTU plus
64 the hardware header length of 14 bytes.
65
66
67 ecn | noecn
68 has the same semantics as codel and can be used to mark packets instead
69 of dropping them. If ecn has been enabled, noecn can be used to turn it
70 off and vice-a-versa. Unlike codel, ecn is turned on by default.
71
72
73 ce_threshold
74 sets a threshold above which all packets are marked with ECN Congestion
75 Experienced. This is useful for DCTCP-style congestion control algo‐
76 rithms that require marking at very shallow queueing thresholds.
77
78
79 ce_threshold_selector
80 sets a filter so that the ce_threshold feature is applied to only a
81 subset of the traffic seen by the qdisc. If set, the MASK value will be
82 applied as a bitwise AND to the diffserv/ECN byte of the IP header, and
83 only if the result of this masking equals VALUE, will the ce_threshold
84 logic be applied to the packet.
85
86
87 drop_batch
88 sets the maximum number of packets to drop when limit or memory_limit
89 is exceeded. Default value is 64.
90
91
93 #tc qdisc add dev eth0 root fq_codel
94 #tc -s qdisc show
95 qdisc fq_codel 8002: dev eth0 root refcnt 2 limit 10240p flows 1024
96 quantum 1514
97 target 5.0ms interval 100.0ms ecn
98 Sent 428514 bytes 2269 pkt (dropped 0, overlimits 0 requeues 0)
99 backlog 0b 0p requeues 0
100 maxpacket 256 drop_overlimit 0 new_flow_count 0 ecn_mark 0
101 new_flows_len 0 old_flows_len 0
102
103 #tc qdisc add dev eth0 root fq_codel limit 2000 target 3ms interval
104 40ms noecn
105 #tc -s qdisc show
106 qdisc fq_codel 8003: dev eth0 root refcnt 2 limit 2000p flows 1024
107 quantum 1514 target 3.0ms interval 40.0ms
108 Sent 2588985006 bytes 1783629 pkt (dropped 0, overlimits 0 requeues
109 34869)
110 backlog 0b 0p requeues 34869
111 maxpacket 65226 drop_overlimit 0 new_flow_count 73 ecn_mark 0
112 new_flows_len 1 old_flows_len 3
113
114
115
117 tc(8), tc-codel(8), tc-red(8)
118
119
121 FQ_CoDel was implemented by Eric Dumazet. This manpage was written by
122 Vijay Subramanian. Please report corrections to the Linux Networking
123 mailing list <netdev@vger.kernel.org>.
124
125
126
127iproute2 4 June 2012 FQ_CoDel(8)