Congestion Control in Computer Networks
Congestion Control in Computer Networks
What is congestion?
A state occurring in network layer when the message traffic is so heavy that it slows down network
response time.
Effects of Congestion
Imagine a bucket with a small hole in the bottom.No matter at what rate water enters the bucket, the
outflow is at constant rate.When the bucket is full with water additional water entering spills over the
sides and is lost.
Similarly, each network interface contains a leaky bucket and the following steps are involved in leaky
bucket algorithm:
1. When host wants to send packet, packet is thrown into the bucket.
2. The bucket leaks at a constant rate, meaning the network interface transmits packets at a
constant rate.
The leaky bucket algorithm enforces output pattern at the average rate, no matter how bursty the traffic
is. So in order to deal with the bursty traffic we need a flexible algorithm so that the data is not lost. One
such algorithm is token bucket algorithm.
3. If there is a ready packet, a token is removed from the bucket, and the packet is sent.
In figure (A) we see a bucket holding three tokens, with five packets waiting to be transmitted. For a
packet to be transmitted, it must capture and destroy one token. In figure (B) We see that three of the
five packets have gotten through, but the other two are stuck waiting for more tokens to be generated.
The leaky bucket algorithm controls the rate at which the packets are introduced in the network, but it is
very conservative in nature. Some flexibility is introduced in the token bucket algorithm. In the token
bucket, algorithm tokens are generated at each tick (up to a certain limit). For an incoming packet to be
transmitted, it must capture a token and the transmission takes place at the same rate. Hence some of
the busty packets are transmitted at the same rate if tokens are available and thus introduces some
amount of flexibility in the system.
Formula: M * s = C + ρ * s
where S – is time taken
M – Maximum output rate
ρ – Token arrival rate
C – Capacity of the token bucket in byte
Congestion control refers to the techniques used to control or prevent congestion. Congestion control
techniques can be broadly classified into two categories:
Open loop congestion control policies are applied to prevent congestion before it happens. The
congestion control is handled either by the source or the destination.
Retransmission Policy :
It is the policy in which retransmission of the packets are taken care. If the sender feels that a sent
packet is lost or corrupted, the packet needs to be retransmitted. This transmission may increase the
congestion in the network.
To prevent congestion, retransmission timers must be designed to prevent congestion and also able to
optimize efficiency.
Window Policy :
The type of window at the sender side may also affect the congestion. Several packets in the Go-back-
n window are resent, although some packets may be received successfully at the receiver side. This
duplication may increase the congestion in the network and making it worse.
Therefore, Selective repeat window should be adopted as it sends the specific packet that may have
been lost.
Discarding Policy :
A good discarding policy adopted by the routers is that the routers may prevent congestion and at the
same time partially discards the corrupted or less sensitive package and also able to maintain the quality
of a message.
In case of audio file transmission, routers can discard less sensitive packets to prevent congestion and
also maintain the quality of the audio file.
Acknowledgment Policy :
Since acknowledgement are also the part of the load in network, the acknowledgment policy imposed
by the receiver may also affect congestion. Several approaches can be used to prevent congestion
related to acknowledgment.
The receiver should send acknowledgement for N packets rather than sending acknowledgement for a
single packet. The receiver should send a acknowledgment only if it has to sent a packet or a timer
expires.
Admission Policy :
In admission policy a mechanism should be used to prevent congestion. Switches in a flow should first
check the resource requirement of a network flow before transmitting it further. If there is a chance of a
congestion or there is a congestion in the network, router should deny establishing a virtual network
connection to prevent further congestion.
Closed loop congestion control technique is used to treat or alleviate congestion after it happens.
Several techniques are used by different protocols; some of them are:
Backpressure :
Backpressure is a technique in which a congested node stop receiving packet from upstream node.
This may cause the upstream node or nodes to become congested and rejects receiving data from above
nodes. Backpressure is a node-to-node congestion control technique that propagate in the opposite
direction of data flow. The backpressure technique can be applied only to virtual circuit where each
node has information of its above upstream node.
In above diagram the 3rd node is congested and stops receiving packets as a result 2nd node may be get
congested due to slowing down of the output data flow. Similarly 1st node may get congested and
informs the source to slow down.
Choke packet technique is applicable to both virtual networks as well as datagram subnets. A choke
packet is a packet sent by a node to the source to inform it of congestion. Each router monitor its
resources and the utilization at each of its output lines. whenever the resource utilization exceeds the
threshold value which is set by the administrator, the router directly sends a choke packet to the source
giving it a feedback to reduce the traffic. The intermediate nodes through which the packets has
traveled are not warned about congestion.
Implicit Signaling
In implicit signaling, there is no communication between the congested nodes and the source.
The source guesses that there is congestion in a network. For example when sender sends several
packets and there is no acknowledgment for a while, one assumption is that there is a congestion.
Explicit Signaling :
In explicit signaling, if a node experiences congestion it can explicitly sends a packet to the
source or destination to inform about congestion. The difference between choke packet and
explicit signaling is that the signal is included in the packets that carry data rather than creating
different packet as in case of choke packet technique.
Explicit signaling can occur in either forward or backward direction.