You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.9 KiB
93 lines
2.9 KiB
4 months ago
|
.TH FQ 8 "10 Sept 2015" "iproute2" "Linux"
|
||
|
.SH NAME
|
||
|
FQ \- Fair Queue traffic policing
|
||
|
.SH SYNOPSIS
|
||
|
.B tc qdisc ... fq
|
||
|
[
|
||
|
.B limit
|
||
|
PACKETS ] [
|
||
|
.B flow_limit
|
||
|
PACKETS ] [
|
||
|
.B quantum
|
||
|
BYTES ] [
|
||
|
.B initial_quantum
|
||
|
BYTES ] [
|
||
|
.B maxrate
|
||
|
RATE ] [
|
||
|
.B buckets
|
||
|
NUMBER ] [
|
||
|
.B pacing
|
||
|
|
|
||
|
.B nopacing
|
||
|
]
|
||
|
|
||
|
.SH DESCRIPTION
|
||
|
FQ (Fair Queue) is a classless packet scheduler meant to be mostly
|
||
|
used for locally generated traffic. It is designed to achieve per flow pacing.
|
||
|
FQ does flow separation, and is able to respect pacing requirements set by TCP stack.
|
||
|
All packets belonging to a socket are considered as a 'flow'.
|
||
|
For non local packets (router workload), packet rxhash is used as fallback.
|
||
|
|
||
|
An application can specify a maximum pacing rate using the
|
||
|
.B SO_MAX_PACING_RATE
|
||
|
setsockopt call. This packet scheduler adds delay between packets to
|
||
|
respect rate limitation set by TCP stack.
|
||
|
|
||
|
Dequeueing happens in a round-robin fashion.
|
||
|
A special FIFO queue is reserved for high priority packets (
|
||
|
.B TC_PRIO_CONTROL
|
||
|
priority), such packets are always dequeued first.
|
||
|
|
||
|
FQ is non-work-conserving.
|
||
|
|
||
|
TCP pacing is good for flows having idle times, as the congestion
|
||
|
window permits TCP stack to queue a possibly large number of packets.
|
||
|
This removes the 'slow start after idle' choice, badly hitting
|
||
|
large BDP flows and applications delivering chunks of data such as video streams.
|
||
|
|
||
|
.SH PARAMETERS
|
||
|
.SS limit
|
||
|
Hard limit on the real queue size. When this limit is reached, new packets
|
||
|
are dropped. If the value is lowered, packets are dropped so that the new limit is
|
||
|
met. Default is 10000 packets.
|
||
|
.SS flow_limit
|
||
|
Hard limit on the maximum number of packets queued per flow.
|
||
|
Default value is 100.
|
||
|
.SS quantum
|
||
|
The credit per dequeue RR round, i.e. the amount of bytes a flow is allowed to
|
||
|
dequeue at once. A larger value means a longer time period before the next flow
|
||
|
will be served.
|
||
|
Default is 2 * interface MTU bytes.
|
||
|
.SS initial_quantum
|
||
|
The initial sending rate credit, i.e. the amount of bytes a new flow is allowed
|
||
|
to dequeue initially.
|
||
|
This is specifically meant to allow using IW10 without added delay.
|
||
|
Default is 10 * interface MTU, i.e. 15140 for 'standard' ethernet.
|
||
|
.SS maxrate
|
||
|
Maximum sending rate of a flow. Default is unlimited.
|
||
|
Application specific setting via
|
||
|
.B SO_MAX_PACING_RATE
|
||
|
is ignored only if it is larger than this value.
|
||
|
.SS buckets
|
||
|
The size of the hash table used for flow lookups. Each bucket is assigned a
|
||
|
red-black tree for efficient collision sorting.
|
||
|
Default: 1024.
|
||
|
.SS [no]pacing
|
||
|
Enable or disable flow pacing. Default is enabled.
|
||
|
.SH EXAMPLES
|
||
|
#tc qdisc add dev eth0 root fq
|
||
|
.br
|
||
|
#tc -s -d qdisc
|
||
|
.br
|
||
|
qdisc fq 8003: dev eth0 root refcnt 2 limit 10000p flow_limit 100p buckets 1024 quantum 3028 initial_quantum 15140
|
||
|
Sent 503727981 bytes 1146972 pkt (dropped 0, overlimits 0 requeues 54452)
|
||
|
backlog 0b 0p requeues 54452
|
||
|
1289 flows (1289 inactive, 0 throttled)
|
||
|
0 gc, 31 highprio, 27411 throttled
|
||
|
.br
|
||
|
.SH SEE ALSO
|
||
|
.BR tc (8),
|
||
|
.BR socket (7)
|
||
|
.SH AUTHORS
|
||
|
FQ was written by Eric Dumazet.
|