Back to the 2024 paper

Module 4: Transport Layer & Congestion Control

20247m

What is congestion? Explain three congestion control policies in Transport Layer with suitable diagram?

Worked SolutionAI Assisted

Congestion

Congestion occurs when the load offered to a network (or part of it) exceeds its capacity, so routers' buffers fill up, delay increases and packets are dropped. Lost packets are retransmitted, adding even more load, and throughput can collapse (congestion collapse).

Throughput
   |        ____________
   |      /             \___   <- beyond capacity: packets dropped,
   |     /                    \    throughput falls
   |    /
   +---------------------------- Offered load
        (no congestion)  (congestion)

Causes: limited router buffers and link bandwidth, slow processors, many senders sending bursts, retransmissions of lost packets.

Difference from flow control: flow control is between one sender and one receiver; congestion control is a global issue involving all hosts and routers.

TCP controls congestion by using a congestion window (cwnd) in addition to the receiver's window: the sender may have at most min(rwnd, cwnd) bytes unacknowledged. The window is managed with three policies (phases).

Three congestion control policies in TCP

1. Slow start (exponential increase)

  • Starts with cwnd = 1 MSS.
  • For every ACK received, cwnd increases by 1 MSS, so cwnd doubles every RTT (1, 2, 4, 8, ...).
  • Continues until cwnd reaches the slow-start threshold (ssthresh), then switches to congestion avoidance.

2. Congestion avoidance (additive increase)

  • When cwnd ≥ ssthresh, cwnd grows linearly: +1 MSS per RTT (each ACK adds MSS²/cwnd).
  • This probes for extra bandwidth carefully, avoiding congestion.

3. Congestion detection (multiplicative decrease)

Congestion is detected by packet loss:

Event Meaning Reaction (TCP Tahoe / Reno)
Timeout Strong congestion ssthresh = cwnd / 2; cwnd = 1 MSS; restart slow start
3 duplicate ACKs Mild congestion (some segments still get through) Fast retransmit of the lost segment; Reno: ssthresh = cwnd / 2; cwnd = ssthresh (fast recovery) and continue with congestion avoidance

Together these implement AIMD (Additive Increase, Multiplicative Decrease).

Diagram: cwnd versus time

Initial ssthresh = 8 MSS. A timeout occurs when cwnd = 12 (after RTT 8), so ssthresh becomes 6 and cwnd drops to 1.

cwnd (MSS)
 12 |                      *
 11 |                   *
 10 |                *
  9 |             *
  8 |          *                             *   <- ssthresh = 8, later 6
  7 |                                     *
  6 |                                  *
  5 |
  4 |       *                       *
  3 |
  2 |    *                       *
  1 | *                       *
    +------------------------------------------
      1  2  3  4  5  6  7  8  9 10 11 12 13 14   RTT
RTT 1 2 3 4 5 6 7 8 9 10 11 12 13 14
cwnd 1 2 4 8 9 10 11 12 1 2 4 6 7 8
Phase slow start (exponential) reaches ssthresh congestion avoidance (linear) timeout slow start reaches new ssthresh = 6 congestion avoidance

Summary

Phase Increase Trigger
Slow start Exponential (×2 per RTT) Start, or after a timeout; until ssthresh
Congestion avoidance Linear (+1 MSS per RTT) cwnd ≥ ssthresh
Congestion detection Multiplicative decrease Timeout or 3 duplicate ACKs

(Other techniques in the network layer include traffic shaping with leaky and token buckets, load shedding, and RED.)

Similar questions

Official AppAndroid App

PYQDeck for Android

Solve BEU previous-year exam papers anywhere, anytime. Fast search, offline paper viewing, and step-by-step solutions designed specifically for your phone.