Back to index
Random Early Detection Gateways for Congestion Avoidance
Sally Floyd and Van Jacobson, LBL
One-line summary: When gateway queue exceeds some threshold,
randomly pick a connection to notify, with probability roughly
proportional to how much bandwidth it's been using and optionally
proportional to the size of the packet being notified. Notification can
consist of marking a packet (if the transport protocol will cooperate
and use the mark as a hint) or dropping it otherwise.
Overview/Main Points
- Motivations/goals:
- Only gateways have "unified" view of congestion over time
- Want to avoid bias against bursty traffic (DECbit has this
problem since a burst on a single connection is more
likely to cause the congestion bit to be set)
- Want to avoid "global synchronization" (if you drop
packets from every connection, as in DropTail, then
everyone backs off at once; would prefer to target
"aggressive" users)
- Above 2 items can be achieved by separating congestion
detection from choice of which connection to notify.
- Want to be able to control congestion even in case of
non-cooperating transport protocol (by dropping)
- RED basic algorithm: On each packet arrival,
- If queue size is below low watermark MinTh, do nothing.
- If between MinTh and MaxTh, notify on this packet with
probability Pa (see below);
- If above MaxTh, notify with probability 1.
- Let Pb vary from 0 to Pmax as the average queue size
varies from MinTh to MaxTh,
i.e. Pb=Pmax(avg-MinTh)/(MaxTh-MinTh).
- Pa is then Pb/(1-count x Pb), where count
measures how many
packets ago the last mark occurred.
- To measure queue size in bytes, let
Pb=Pb x (PacketSize/MaxPacketSize). This makes
large packets more likely to be marked than small ones.
- Various simulations indicate that:
- RED is good at keeping average
queue size steady, even with heavy congestion;
- RED achieves
higher throughput with shorter queues than DropTail;
- Under extreme congestion, RED still achieves about 0.6
link utilization in each direction for the bottleneck
link, suggesting that the "global synchronization" is
being avoided.
- Calculating exponential weighted moving average queue length:
- avg = (1-w)avg + wQ, where Q is current instantaneous
measurement. How to pick w? If too large, averaging
procedure will be susceptible to "transient" congestion
(fast changes in queue length); if too small, RED will
respond too slowly to real congestion.
- Upper bound: Form the geometric series that represents
successive computations of avg over L packet arrivals;
this gives avg in terms of L and w. Then simply set
avg<MinTh to get upper bound on w.
- Lower bound: assume queue remains at 1 packet always.
Then it takes -1/ln(1-w) arrivals until avg reaches
1-1/e=0.63. Determine how many arrivals we'd like this to
take, this gives lower bound on w. Authors use w=0.002
for most simulations.
- Calculating packet-marking probability: Let each packet be
marked with probability Pb, and let X be the "intermarking" time.
- Method 1: X is a geometric random variable; Prob[X=n] =
(1-Pb)n-1Pb, E[x]=1/Pb.
- Method 2: X is a uniform random variable in
{1,2,...,1/Pb}. Prob[X=n]=Pb, E[X]=1/2 + 1/2Pb.
- Method 1 results in higher "clustering" of marked
packets. Authors used method 2.
- Fairness: "not well defined" as a goal, but RED does not
discriminate either against particular connections or classes of
connections.
- Rules of thumb for getting effective performance:
- Pick w intelligently.
- Set MinTh high enough to maximize network power
(power=throughput/delay ratio).
- Make MaxTh-MinTh large enough to avoid "global
synchronization" effect.
- Identifying aggressive/misbehaving users: We know packets are
marked with probability roughly proportional to their share of
the bandwidth, so if some connection has a large fraction of
recently-marked packets, it is likely to be misbehaving.
Relevance
Another neat hack from LBL and Co. that fixes the problems in simpler
schemes such as DECbit, supported by nice mathematics. The section on
picking the weighting for the EWMA queue size is particularly relevant
to us (distiller queues).
Flaws
- Verbose: could have been half as long.
Back to index