What Is Congestion?

When more packets than the network has bandwidth for are sent through, some of them start getting dropped and others get delayed. This phenomenon leads to an overall drop in performance and is called congestion.

This is analogous to vehicle traffic congestion when too many vehicles drive on the same road at the same time. This slows the overall traffic down.

How Do We Fix It?

Congestion physically occurs at the network layer (i.e. in routers), however it’s mainly caused by the transport layer sending too much data at once. That means it will have to be dealt with or ‘controlled’ at the transport layer as well.

Note: Congestion control also occurs in the network layer, but we’re skipping over that detail for now since the focus of this chapter is the transport layer. So congestion control with TCP is end-to-end; it exists on the end-systems and not the network. Also note that in this lesson, the term delay means end-to-end message delay.

Congestion control is really just congestion avoidance. Here’s how the transport layer controls congestion:

  1. It sends packets at a slower rate in response to congestion,
  2. The ‘slower rate’ is still fast enough to make efficient use of the available capacity,
  3. Changes in the traffic are also kept track of.

Congestion control algorithms are based on these general ideas and are built into transport layer protocols like TCP. Let’s also look at a few principles of bandwidth allocation before moving on.

Bandwidth Allocation Principles

Should Allocation Be on a per Host or per Connection Basis?

Before we get into the key principles of bandwidth allocation, we have to answer the question: should bandwidth be allocated to each host or to each connection made by a host?

Not all hosts are created equal; Some can send and receive at a higher data rate than others. Furthermore, if the bottleneck bandwidth was allocated equally to all hosts, some of them wouldn’t be able to use the bandwidth to its full capacity and some wouldn’t have enough. For example, if an Internet-enabled doorbell and a busy server had the same bandwidth, the doorbell would have too much and the server would likely not have enough.

The per-connection allocation, on the other hand, can be exploited by hosts opening multiple connections to the same end-system.

Usually, bandwidth is allocated per connection.

Efficiency & Power

Bursts of Traffic

Suppose 44 end-systems are to use a link with a bandwidth of 200200 Mbps. It may seem that in order to make the most efficient use of this link, the bandwidth should be divided equally i.e., 2004=50\frac{200}{4}=50 Mbps should be allocated to each host. However, in a real setting, each end-system would be able to use less than the anticipated 5050 while avoiding congestion. Why? Because real traffic is transmitted in bursts and not in one continuous stream. Have a look at the following plot of a Wireshark traffic capture for a clearer picture.

Press + to interact
Plot of a Wireshark traffic capture depicting three prominent bursts of traffic
Plot of a Wireshark traffic capture depicting three prominent bursts of traffic

Simultaneous bursts of traffic from all end-systems can cause more than the allocated bandwidth to be used which results in congestion and a consequent drop in performance.

Therefore, bandwidth cannot be divided and allocated equally amongst end-systems!

Transmission Threshold

The graph below depicts the effect of an increase in transmission rate on ‘useful traffic’ (traffic that is actually received by the receiver). The number of packets received by the receiver drastically drop past a certain threshold of the transmission rate despite the fact that the threshold is less than the capacity.

Press + to interact
The effect of the increase in transmission rate on useful traffic
The effect of the increase in transmission rate on useful traffic

The following graph shows that the end-to-end delay in the delivery of the packets increases exponentially when the packet transmission rate increases beyond a certain threshold. Furthermore, the delay can never be infinite, so the packets are simply dropped instead after a certain point.

Press + to interact
The effect of the increase in transmission rate on delay
The effect of the increase in transmission rate on delay

Note: congestion collapse occurs when all end-systems are sending a lot of traffic but nothing is being received, for example, when all or most packets are dropped. There a few causes for this, including but not limited to Spurious retransmissions. Spurious retransmissions occur when a retransmission timer times out for packets that are not lost but have not yet reached the destination. So, much of the network’s bandwidth ends up being consumed by a small number of packets.

To sum up, congestion occurs before the maximum capacity of the network is reached and congestion collapse occurs as it’s approached.

Lastly, according to Kleinrock’s 1979 paper, the optimal transmission rate is such that powerpower, given by the following equation, is maximized:

Note that after a certain threshold, increase in transmission rate will cause a very high increase in delay decreasing the overall power.

Quick Quiz!

1

If the applications increase sending rate, the throughput ______ at first, then ______.

A)

increases, keeps increasing

B)

increases, drops

C)

drops, increases

D)

decreases, keeps decreasing.

Question 1 of 30 attempted

We’ve now learned the first principle of congestion control: the entire bandwidth of a network should not be allocated. Let’s continue with the next two in the next lesson!

Get hands-on with 1400+ tech skills courses.