.TH RED 8 "13 December 2001" "iproute2" "Linux"
.SH NAME
red \- Random Early Detection 
.SH SYNOPSIS
.B tc qdisc ... red
.B limit 
bytes
.B [ min 
bytes 
.B ] [ max 
bytes 
.B ] avpkt
bytes
.B [ burst 
packets
.B ] [ ecn ] [ harddrop] [ bandwidth
rate
.B ] [ probability
chance
.B ] [ adaptive ]

.SH DESCRIPTION
Random Early Detection is a classless qdisc which manages its queue size
smartly. Regular queues simply drop packets from the tail when they are
full, which may not be the optimal behaviour. RED also performs tail drop,
but does so in a more gradual way.

Once the queue hits a certain average length, packets enqueued have a
configurable chance of being marked (which may mean dropped). This chance
increases linearly up to a point called the
.B max
average queue length, although the queue might get bigger.

This has a host of benefits over simple taildrop, while not being processor
intensive. It prevents synchronous retransmits after a burst in traffic,
which cause further retransmits, etc.

The goal is to have a small queue size, which is good for interactivity
while not disturbing TCP/IP traffic with too many sudden drops after a burst
of traffic.

Depending on if ECN is configured, marking either means dropping or
purely marking a packet as overlimit.
.SH ALGORITHM
The average queue size is used for determining the marking
probability. This is calculated using an Exponential Weighted Moving
Average, which can be more or less sensitive to bursts.

When the average queue size is below 
.B min
bytes, no packet will ever be marked. When it exceeds 
.B min, 
the probability of doing so climbs linearly up
to 
.B probability, 
until the average queue size hits
.B max
bytes. Because 
.B probability 
is normally not set to 100%, the queue size might
conceivably rise above 
.B max
bytes, so the 
.B limit
parameter is provided to set a hard maximum for the size of the queue.

.SH PARAMETERS
.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. Should be at
least twice
.B min
to prevent synchronous retransmits, higher for low 
.B min.
Default to 
.B limit
/4
.TP 
probability
Maximum probability for marking, specified as a floating point
number from 0.0 to 1.0. Suggested values are 0.01 or 0.02 (1 or 2%,
respectively). Default : 0.02
.TP 
limit
Hard limit on the real (not average) queue size in bytes. Further packets
are dropped. Should be set higher than max+burst. It is advised to set this
a few times higher than 
.B max.
.TP
burst
Used for determining how fast the average queue size is influenced by the
real queue size. Larger values make the calculation more sluggish, allowing
longer bursts of traffic before marking starts. Real life experiments
support the following guideline: (min+min+max)/(3*avpkt).
.TP 
avpkt
Specified in bytes. Used with burst to determine the time constant for
average queue size calculations. 1000 is a good value.
.TP
bandwidth
This rate is used for calculating the average queue size after some
idle time. Should be set to the bandwidth of your interface. Does not mean
that RED will shape for you! Optional. Default : 10Mbit
.TP
ecn
As mentioned before, 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 limit
bytes. Recommended.
.TP
harddrop
If average flow queue size is above
.B max
bytes, this parameter forces a drop instead of ecn marking.
.TP
adaptive
(Added in linux-3.3) Sets RED in adaptive mode as described in http://icir.org/floyd/papers/adaptiveRed.pdf
.nf
Goal of Adaptive RED is to make 'probability' dynamic value between 1% and 50% to reach the target average queue : 
.B (max - min) / 2
.fi

.SH EXAMPLE

.P
# tc qdisc add dev eth0 parent 1:1 handle 10: red 
 limit 400000 min 30000 max 90000 avpkt 1000 
 burst 55 ecn adaptive bandwidth 10Mbit

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

.SH SOURCES
.TP 
o
Floyd, S., and Jacobson, V., Random Early Detection gateways for
Congestion Avoidance. http://www.aciri.org/floyd/papers/red/red.html
.TP 
o
Some changes to the algorithm by Alexey N. Kuznetsov.
.TP
o
Adaptive RED  : http://icir.org/floyd/papers/adaptiveRed.pdf

.SH AUTHORS
Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>,  Alexey Makarenko
<makar@phoenix.kharkov.ua>, J Hadi Salim <hadi@nortelnetworks.com>,
Eric Dumazet <eric.dumazet@gmail.com>.  
This manpage maintained by bert hubert <ahu@ds9a.nl>


