summaryrefslogtreecommitdiffstats
path: root/man/man8/tc-fq_codel.8
blob: 78590636a366bee5b03f43e6437003bde79ace7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
.TH FQ_CoDel 8 "4 June 2012" "iproute2" "Linux"
.SH NAME
CoDel \- Fair Queuing (FQ) with Controlled Delay (CoDel)
.SH SYNOPSIS
.B tc qdisc ... fq_codel
[
.B limit
PACKETS ] [
.B flows
NUMBER ] [
.B target
TIME ] [
.B interval
TIME ] [
.B quantum
BYTES ] [
.B ecn
|
.B noecn
] [
.B ce_threshold
TIME ] [
.B ce_threshold_selector
VALUE/MASK ] [
.B memory_limit
BYTES ]

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

.SH PARAMETERS
.SS limit
has the same semantics as
.B codel
and is the hard limit on the real queue size.
When this limit is reached, incoming packets are dropped. Default is 10240
packets.

.SS memory_limit
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
.B limit
parameter and the memory limit will be enforced. Default is 32 MB.


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

.SS target
has the same semantics as
.B 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.

.SS interval
has the same semantics as
.B 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 
.BR 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 quantum
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.

.SS ecn | noecn
has the same semantics as
.B codel
and 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. Unlike
.B codel, ecn
is turned on by default.

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

.SS ce_threshold_selector
sets a filter so that the
.B ce_threshold
feature is applied to only a subset of the traffic seen by the qdisc. If set, the MASK value
will be applied as a bitwise AND to the diffserv/ECN byte of the IP header, and only if the
result of this masking equals VALUE, will the
.B ce_threshold
logic be applied to the packet.

.SS drop_batch
sets the maximum number of packets to drop when
.B limit
or
.B memory_limit
is exceeded. Default value is 64.

.SH EXAMPLES
#tc qdisc add   dev eth0 root fq_codel
.br
#tc -s qdisc show
.br
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
.br
#tc -s qdisc show
.br
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


.SH SEE ALSO
.BR tc (8),
.BR tc-codel (8),
.BR tc-red (8)

.SH AUTHORS
FQ_CoDel was implemented by Eric Dumazet. This manpage was written
by Vijay Subramanian. Please report corrections to the Linux Networking
mailing list <netdev@vger.kernel.org>.