.TH TC 8 "24 January 2012" "iproute2" "Linux"
.SH NAME
sfq \- Stochastic Fairness Queueing
.SH SYNOPSIS
.B tc qdisc ...
.B [ divisor
hashtablesize
.B ] [ limit
packets
.B ] [ perturb
seconds
.B ] [ quantum
bytes
.B ] [ flows
number
.B ] [ depth
number
.B ] [ headdrop
.B ] [ redflowlimit
bytes
.B ] [ min
bytes
.B ] [ max
bytes
.B ] [ avpkt
bytes
.B ] [ burst
packets
.B ] [ probability
P
.B ] [ ecn
.B ] [ harddrop ]
.SH DESCRIPTION

Stochastic Fairness Queueing is a classless queueing discipline available for
traffic control with the
.BR tc (8)
command.

SFQ does not shape traffic but only schedules the transmission of packets, based on 'flows'.
The goal is to ensure fairness so that each flow is able to send data in turn, thus preventing
any single flow from drowning out the rest.

This may in fact have some effect in mitigating a Denial of Service attempt.

SFQ is work-conserving and therefore always delivers a packet if it has one available.
.SH ALGORITHM
On enqueueing, each packet is assigned to a hash bucket, based on the packets hash value.
This hash value is either obtained from an external flow classifier (use
.B
tc filter
to set them), or a default internal classifier if no external classifier has been configured.

When the internal classifier is used, sfq uses
.TP
(i)
Source address
.TP
(ii)
Destination address
.TP
(iii)
Source and Destination port
.P
If these are available. SFQ knows about ipv4 and ipv6 and also UDP, TCP and ESP.
Packets with other protocols are hashed based on the 32bits representation of their
destination and source. A flow corresponds mostly to a TCP/IP connection.

Each of these buckets should represent a unique flow. Because multiple flows may
get hashed to the same bucket, sfqs internal hashing algorithm may be perturbed at configurable
intervals so that the unfairness lasts only for a short while. Perturbation may
however cause some inadvertent packet reordering to occur. After linux-3.3, there is
no packet reordering problem, but possible packet drops if rehashing hits one limit
(number of flows or packets per flow)

When dequeuing, each hashbucket with data is queried in a round robin fashion.

Before linux-3.3, the compile time maximum length of the SFQ is 128 packets, which can be spread over
at most 128 buckets of 1024 available. In case of overflow, tail-drop is performed
on the fullest bucket, thus maintaining fairness.

After linux-3.3, maximum length of SFQ is 65535 packets, and divisor limit is 65536.
In case of overflow, tail-drop is performed on the fullest bucket, unless headdrop was requested.

.SH PARAMETERS
.TP
divisor
Can be used to set a different hash table size, available from kernel 2.6.39 onwards.
The specified divisor must be a power of two and cannot be larger than 65536.
Default value: 1024.
.TP
limit
Upper limit of the SFQ. Can be used to reduce the default length of 127 packets.
After linux-3.3, it can be raised.
.TP
depth
Limit of packets per flow (after linux-3.3). Default to 127 and can be lowered.
.TP
perturb
Interval in seconds for queue algorithm perturbation. Defaults to 0, which means that
no perturbation occurs. Do not set too low for each perturbation may cause some packet
reordering or losses. Advised value: 60
This value has no effect when external flow classification is used.
Its better to increase divisor value to lower risk of hash collisions.
.TP
quantum
Amount of bytes a flow is allowed to dequeue during a round of the round robin process.
Defaults to the MTU of the interface which is also the advised value and the minimum value.
.TP
flows
After linux-3.3, it is possible to change the default limit of flows.
Default value is 127
.TP
headdrop
Default SFQ behavior is to perform tail-drop of packets from a flow.
You can ask a headdrop instead, as this is known to provide a better feedback for TCP flows.
.TP
redflowlimit
Configure the optional RED module on top of each SFQ flow.
Random Early Detection principle is to perform packet marks or drops in a probabilistic way.
(man tc-red for details about RED)
.nf
redflowlimit configures the hard limit on the real (not average) queue size per SFQ flow in bytes.
.fi
.TP
min
Average queue size at which marking becomes a possibility. Defaults to
.B max
/3
.TP
max
At this average queue size, the marking probability is maximal. Defaults to
.B redflowlimit
/4
.TP
probability
Maximum  probability  for  marking, specified as a floating point number from 0.0 to 1.0. Default value is 0.02
.TP
avpkt
Specified in bytes. Used with burst to determine the time constant for average queue size calculations. Default value is 1000
.TP
burst
Used for determining how fast the average queue size is influenced by the real queue size.
.nf
Default value is :
.B (2 * min + max) / (3 * avpkt)
.fi
.TP
ecn
RED can either 'mark' or 'drop'. Explicit Congestion
Notification allows RED to notify remote hosts that their rate exceeds the
amount of bandwidth available. Non-ECN capable hosts can only be notified by
dropping a packet. If this parameter is specified, packets which indicate
that their hosts honor ECN will only be marked and not dropped, unless the
queue size hits
.B depth
packets.
.TP
harddrop
If average flow queue size is above
.B max
bytes, this parameter forces a drop instead of ecn marking.
.SH EXAMPLE & USAGE

To attach to device ppp0:
.P
# tc qdisc add dev ppp0 root sfq
.P
Please note that SFQ, like all non-shaping (work-conserving) qdiscs, is only useful
if it owns the queue.
This is the case when the link speed equals the actually available bandwidth. This holds
for regular phone modems, ISDN connections and direct non-switched ethernet links.
.P
Most often, cable modems and DSL devices do not fall into this category. The same holds
for when connected to a switch  and trying to send data to a congested segment also
connected to the switch.
.P
In this case, the effective queue does not reside within Linux and is therefore not
available for scheduling.
.P
Embed SFQ in a classful qdisc to make sure it owns the queue.

It is possible to use external classifiers with sfq, for example to hash traffic based only
on source/destination ip addresses:
.P
# tc filter add ... flow hash keys src,dst perturb 30 divisor 1024
.P
Note that the given divisor should match the one used by sfq. If you have
changed the sfq default of 1024, use the same value for the flow hash filter, too.

.P
Example of sfq with optional RED mode :
.P
# tc qdisc add dev eth0 parent 1:1 handle 10: sfq limit 3000 flows 512 divisor 16384
  redflowlimit 100000 min 8000 max 60000 probability 0.20 ecn headdrop

.SH SOURCE
.TP
o
Paul E. McKenney "Stochastic Fairness Queuing",
IEEE INFOCOMM'90 Proceedings, San Francisco, 1990.

.TP
o
Paul E. McKenney "Stochastic Fairness Queuing",
"Interworking: Research and Experience", v.2, 1991, p.113-131.

.TP
o
See also:
M. Shreedhar and George Varghese "Efficient Fair
Queuing using Deficit Round Robin", Proc. SIGCOMM 95.

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

.SH AUTHORS
Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>,
Eric Dumazet <eric.dumazet@gmail.com>.
.P
This manpage maintained by bert hubert <ahu@ds9a.nl>
