  Congestion is said to occur in the network when the resource demands exceed
the capacity and packets are lost due to too much queuing in the network.
During congestion, the network throughput may drop to zero and the path delay
may become very high. A congestion control scheme helps the network to recover
from the congestion state. A congestion avoidance scheme allows a network to
operate in the region of low delay and high throughput. Such schemes prevent a
network from entering the congested state. Congestion avoidance is a prevention
mechanism while congestion control is a recovery mechanism. We compare the
concept of congestion avoidance with that of flow control and congestion
control. A number of possible alternative for congestion avoidance have been
identified. From these a few were selected for study. The criteria for
selection and goals for these schemes have been described. In particular, we
wanted the scheme to be globally efficient, fair, dynamic, convergent, robust,
distributed, configuration independent, etc. These goals and the test cases
used to verify whether a particular scheme has met the goals have been
described. We model the network and the user policies for congestion avoidance
as a feedback control system. The key components of a generic congestion
avoidance scheme are: congestion detection, congestion feedback, feedback
selector, signal filter, decision function, and increase/decrease algorithms.
These components have been explained.
