version 1 showing authors affecting page license.
.
Rev |
Author |
# |
Line |
1 |
perry |
1 |
RED |
|
|
2 |
!!!RED |
|
|
3 |
NAME |
|
|
4 |
SYNOPSIS |
|
|
5 |
DESCRIPTION |
|
|
6 |
ALGORITHM |
|
|
7 |
PARAMETERS |
|
|
8 |
SEE ALSO |
|
|
9 |
SOURCES |
|
|
10 |
AUTHORS |
|
|
11 |
---- |
|
|
12 |
!!NAME |
|
|
13 |
|
|
|
14 |
|
|
|
15 |
red - Random Early Detection |
|
|
16 |
!!SYNOPSIS |
|
|
17 |
|
|
|
18 |
|
|
|
19 |
__tc qdisc ... red limit__ bytes __min__ bytes |
|
|
20 |
__max__ bytes __avpkt__ bytes __burst__ packets |
|
|
21 |
__[[ ecn ] [[ bandwidth__ rate __] probability__ |
|
|
22 |
chance |
|
|
23 |
!!DESCRIPTION |
|
|
24 |
|
|
|
25 |
|
|
|
26 |
Random Early Detection is a classless qdisc which manages |
|
|
27 |
its queue size smartly. Regular queues simply drop packets |
|
|
28 |
from the tail when they are full, which may not be the |
|
|
29 |
optimal behaviour. RED also performs tail drop, but does so |
|
|
30 |
in a more gradual way. |
|
|
31 |
|
|
|
32 |
|
|
|
33 |
Once the queue hits a certain average length, packets |
|
|
34 |
enqueued have a configurable chance of being marked (which |
|
|
35 |
may mean dropped). This chance increases linearly up to a |
|
|
36 |
point called the __max__ average queue length, although |
|
|
37 |
the queue might get bigger. |
|
|
38 |
|
|
|
39 |
|
|
|
40 |
This has a host of benefits over simple taildrop, while not |
|
|
41 |
being processor intensive. It prevents synchronous |
|
|
42 |
retransmits after a burst in traffic, which cause further |
|
|
43 |
retransmits, etc. |
|
|
44 |
|
|
|
45 |
|
|
|
46 |
The goal is the have a small queue size, which is good for |
|
|
47 |
interactivity while not disturbing TCP/IP traffic with too |
|
|
48 |
many sudden drops after a burst of traffic. |
|
|
49 |
|
|
|
50 |
|
|
|
51 |
Depending on 08 ECN is configured, marking either means |
|
|
52 |
dropping or purely marking a packet as |
|
|
53 |
overlimit. |
|
|
54 |
!!ALGORITHM |
|
|
55 |
|
|
|
56 |
|
|
|
57 |
The average queue size is used for determining the marking |
|
|
58 |
probability. This is calculated using an Exponential |
|
|
59 |
Weighted Moving Average, which can be more or less sensitive |
|
|
60 |
to bursts. |
|
|
61 |
|
|
|
62 |
|
|
|
63 |
When the average queue size is below __min__ bytes, no |
|
|
64 |
packet will ever be marked. When it exceeds __min,__ the |
|
|
65 |
probability of doing so climbs linearly up to |
|
|
66 |
__probability,__ until the average queue size hits |
|
|
67 |
__max__ bytes. Because __probability__ is normally not |
|
|
68 |
set to 100%, the queue size might conceivably rise above |
|
|
69 |
__max__ bytes, so the __limit__ parameter is provided |
|
|
70 |
to set a hard maximum for the size of the |
|
|
71 |
queue. |
|
|
72 |
!!PARAMETERS |
|
|
73 |
|
|
|
74 |
|
|
|
75 |
min |
|
|
76 |
|
|
|
77 |
|
|
|
78 |
Average queue size at which marking becomes a |
|
|
79 |
possibility. |
|
|
80 |
|
|
|
81 |
|
|
|
82 |
max |
|
|
83 |
|
|
|
84 |
|
|
|
85 |
At this average queue size, the marking probability is |
|
|
86 |
maximal. Should be at least twice __min__ to prevent |
|
|
87 |
synchronous retransmits, higher for low |
|
|
88 |
__min.__ |
|
|
89 |
|
|
|
90 |
|
|
|
91 |
probability |
|
|
92 |
|
|
|
93 |
|
|
|
94 |
Maximum probability for marking, specified as a floating |
|
|
95 |
point number from 0.0 to 1.0. Suggested values are 0.01 or |
|
|
96 |
0.02 (1 or 2%, respectively). |
|
|
97 |
|
|
|
98 |
|
|
|
99 |
limit |
|
|
100 |
|
|
|
101 |
|
|
|
102 |
Hard limit on the real (not average) queue size in bytes. |
|
|
103 |
Further packets are dropped. Should be set higher than |
|
|
104 |
max+burst. It is advised to set this a few times higher than |
|
|
105 |
__max.__ |
|
|
106 |
|
|
|
107 |
|
|
|
108 |
burst |
|
|
109 |
|
|
|
110 |
|
|
|
111 |
Used for determining how fast the average queue size is |
|
|
112 |
influenced by the real queue size. Larger values make the |
|
|
113 |
calculation more sluggish, allowing longer bursts of traffic |
|
|
114 |
before marking starts. Real life experiments support the |
|
|
115 |
following guideline: (min+min+max)/(3*avpkt). |
|
|
116 |
|
|
|
117 |
|
|
|
118 |
avpkt |
|
|
119 |
|
|
|
120 |
|
|
|
121 |
Specified in bytes. Used with burst to determine the time |
|
|
122 |
constant for average queue size calculations. 1000 is a good |
|
|
123 |
value. |
|
|
124 |
|
|
|
125 |
|
|
|
126 |
bandwidth |
|
|
127 |
|
|
|
128 |
|
|
|
129 |
This rate is used for calculating the average queue size |
|
|
130 |
after some idle time. Should be set to the bandwidth of your |
|
|
131 |
interface. Does not mean that RED will shape for you! |
|
|
132 |
Optional. |
|
|
133 |
|
|
|
134 |
|
|
|
135 |
ecn |
|
|
136 |
|
|
|
137 |
|
|
|
138 |
As mentioned before, RED can either 'mark' or 'drop'. |
|
|
139 |
Explicit Congestion Notification allows RED to notify remote |
|
|
140 |
hosts that their rate exceeds the amount of bandwidth |
|
|
141 |
available. Non-ECN capable hosts can only be notified by |
|
|
142 |
dropping a packet. If this parameter is specified, packets |
|
|
143 |
which indicate that their hosts honor ECN will only be |
|
|
144 |
marked and not dropped, unless the queue size hits |
|
|
145 |
__limit__ bytes. Needs a tc binary with RED support |
|
|
146 |
compiled in. Recommended. |
|
|
147 |
!!SEE ALSO |
|
|
148 |
|
|
|
149 |
|
|
|
150 |
tc(8) |
|
|
151 |
!!SOURCES |
|
|
152 |
|
|
|
153 |
|
|
|
154 |
o |
|
|
155 |
|
|
|
156 |
|
|
|
157 |
Floyd, S., and Jacobson, V., Random Early Detection gateways |
|
|
158 |
for Congestion Avoidance. |
|
|
159 |
http://www.aciri.org/floyd/papers/red/red.html |
|
|
160 |
|
|
|
161 |
|
|
|
162 |
o |
|
|
163 |
|
|
|
164 |
|
|
|
165 |
Some changes to the algorithm by Alexey N. |
|
|
166 |
Kuznetsov. |
|
|
167 |
!!AUTHORS |
|
|
168 |
|
|
|
169 |
|
|
|
170 |
Alexey N. Kuznetsov, |
|
|
171 |
---- |