Congestion avoidance monitors network traffic loads to anticipate and avoid congestion by dropping packets.
The default method of dropping packets is tail drop. When the output queue is full, all packets trying to enter the queue are dropped regardless of their priority or classification. Tail drop can be drastic for TCP streams, and can cause TCP global synchronisation – resulting in a large underutilisation of the link.
Random early detection, RED, provides congestion avoidance by randomly dropping packets before the queue buffer gets completely full. This avoids the disadvantage of tail drop by not causing TCP global synchronisation.
Cisco uses an implementation of random early detection called weighted random early detection, WRED. The randomness of packet drops can be weighted with traffic weights detonated by IP Precedence or Differential Services Control Point values. Packets with a lower IP Precedence or DSCP will be dropped more frequently over higher values.
Weighted random early detection can set the IP Explicit Congestion Notification bits to notify devices that congestion was experienced in transit. It allows endpoints to be notified and instruct them to reduce packet transmission rates.