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