NAME
FQ-PIE - Flow Queue Proportional Integral controller EnhancedSYNOPSIS
tc qdisc ... fq_pie [ limit PACKETS ] [ flows NUMBER ][ target TIME ] [ tupdate TIME ]
[ alpha NUMBER ] [ beta NUMBER ]
[ quantum BYTES ] [ memory_limit BYTES ]
[ ecn_prob PERENTAGE ] [ [no]ecn ]
[ [ no]bytemode ] [ [no_]dq_rate_estimator ]
DESCRIPTION
FQ-PIE (Flow Queuing with Proportional Integral controller Enhanced) is a queuing discipline that combines Flow Queuing with the PIE AQM scheme. FQ-PIE uses a Jenkins hash function to classify incoming packets into different flows and is used to provide a fair share of the bandwidth to all the flows using the qdisc. Each such flow is managed by the PIE algorithm.ALGORITHM
The FQ-PIE algorithm consists of two logical parts: the scheduler which selects which queue to dequeue a packet from, and the PIE AQM which works on each of the queues. The major work of FQ-PIE is mostly in the scheduling part. The interaction between the scheduler and the PIE algorithm is straight forward.PARAMETERS
limit
It is the limit on the queue size in packets. Incoming packets are dropped when the limit is reached. The default value is 10240 packets.flows
It 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. The default value is 1024.target
It is the queue delay which the PIE algorithm tries to maintain. The default target delay is 15ms.tupdate
It is the time interval at which the system drop probability is calculated. The default is 15ms.alpha
beta
alpha and beta are parameters chosen to control the drop probability. These should be in the range between 0 and 32.quantum
quantum signifies the number of bytes that may be dequeued from a queue before switching to the next queue in the deficit round robin scheme.memory_limit
It is the maximum total memory allowed for packets of all flows. The default is 32Mb.ecn_prob
It is the drop probability threshold below which packets will be ECN marked instead of getting dropped. The default is 10%. Setting this parameter requires ecn to be enabled.[no]ecn
It has the same semantics as pie 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.[no]bytemode
It is used to scale drop probability proportional to packet size bytemode to turn on bytemode, nobytemode to turn off bytemode. By default, bytemode is turned off.[no_]dq_rate_estimator
dq_rate_estimator can be used to calculate queue delay using Little's Law, no_dq_rate_estimator can be used to calculate queue delay using timestamp. By default, dq_rate_estimator is turned off.EXAMPLES
# tc qdisc add dev eth0 root fq_pieSent 159173586 bytes 105261 pkt (dropped 24, overlimits 0 requeues 0)
backlog 75700b 50p requeues 0
pkts_in 105311 overlimit 0 overmemory 0 dropped 24 ecn_mark 0
new_flow_count 7332 new_flows_len 0 old_flows_len 4 memory_used 108800
Sent 8263620 bytes 5550 pkt (dropped 4, overlimits 0 requeues 0)
backlog 805448b 532p requeues 0
pkts_in 6082 overlimit 0 overmemory 0 dropped 4 ecn_mark 0
new_flow_count 94 new_flows_len 0 old_flows_len 8 memory_used 1157632
SEE ALSO
tc(8), tc-pie(8), tc-fq_codel(8)SOURCES
RFC 8033: https://tools.ietf.org/html/rfc8033AUTHORS
FQ-PIE was implemented by Mohit P. Tahiliani. Please report corrections to the Linux Networking mailing list <[email protected]>.23 January 2020 | iproute2 |