TCP Congestion Control for GATE

Track cwnd at one fixed point in every round, apply the correct growth rule, and reset it according to the stated loss signal. This guide works through the full table.

Prashant Jain

KnowledgeGate AI educator

Updated 14 Jul 20265 min read

TCP congestion-control questions look unpredictable only when the window is updated mentally. Put one row per round-trip time on paper, record the phase, and apply exactly one rule at each boundary. The sawtooth then becomes bookkeeping rather than guesswork.

Slow start and congestion avoidance

The congestion window, cwnd, limits how much data a TCP sender may have outstanding. Exam questions usually measure it in maximum segment sizes, or MSS. The slow-start threshold, ssthresh, decides which growth rule applies.

In slow start, cwnd grows by roughly one MSS for every acknowledgement. Over a full RTT, all segments are acknowledged, so the window approximately doubles:

1, 2, 4, 8, 16, ... MSS

Despite its name, slow start is the faster growth phase. It starts cautiously from a small window but grows exponentially.

Once cwnd reaches ssthresh, TCP enters congestion avoidance. Its additive-increase rule grows cwnd by about one MSS per RTT:

8, 9, 10, 11, ... MSS

For a numerical, state your observation point. In this post, a row's cwnd is the window at the start of that RTT. A successful row shows the window to be used at the start of the next RTT. This prevents the classic one-round offset.

Timeout versus triple duplicate ACKs

TCP treats two loss signals differently because they suggest different network conditions.

Timeout

A timeout suggests serious congestion. Under the standard exam rule:

  • Set ssthresh = cwnd / 2 using the window at the loss.

  • Set cwnd = 1 MSS.

  • Restart slow start.

If cwnd is odd, follow the rounding convention supplied in the question. Do not silently invent one.

Triple duplicate acknowledgements

Three duplicate ACKs suggest that one segment is missing but later segments are still reaching the receiver. The sender can perform fast retransmit without waiting for a timer.

What happens to cwnd next depends on the TCP variant:

  • TCP Tahoe: set ssthresh to half and cwnd to 1 MSS, then slow start again.

  • TCP Reno: set ssthresh to half, enter fast recovery, and follow the stated inflation and deflation rule. A common model temporarily sets cwnd to ssthresh + 3 MSS, then sets it to ssthresh when a fresh ACK arrives.

GATE-style questions usually state a Tahoe-style rule or identify the TCP variant. Follow the convention in the question. A correct Reno answer and a correct Tahoe answer can differ even with the same loss event.

Worked cwnd evolution, RTT by RTT

Suppose the initial cwnd is 1 MSS and the initial ssthresh is 16 MSS. A timeout occurs during RTT 5, when cwnd is 16 MSS. Find the window evolution through RTT 10. At cwnd = ssthresh, use congestion avoidance.

RTT

cwnd at start (MSS)

Phase

Result during RTT

cwnd for next RTT

ssthresh after RTT

1

1

Slow start

ACKs received

2

16

2

2

Slow start

ACKs received

4

16

3

4

Slow start

ACKs received

8

16

4

8

Slow start

ACKs received

16

16

5

16

Congestion avoidance

Timeout

1

8

6

1

Slow start

ACKs received

2

8

7

2

Slow start

ACKs received

4

8

8

4

Slow start

ACKs received

8

8

9

8

Congestion avoidance

ACKs received

9

8

10

9

Congestion avoidance

ACKs received

10

8

Check the loss calculation separately. At the timeout, cwnd is 16 MSS, so:

new ssthresh = 16 / 2 = 8 MSS

new cwnd = 1 MSS

The next three successful slow-start rounds take cwnd from 1 to 2, then 4, then 8. Because cwnd has now reached ssthresh, the following round uses additive increase, not another doubling.

cwnd-versus-RTT sawtooth for the worked table with start-of-RTT points 1, 2, 4, 8, 16 for RTTs 1 to 5, a timeout drop from 16 to 1 before RTT 6, then points 1, 2, 4, 8, 9 for RTTs 6 to 10 and an ending cwnd of 10, with slow start and congestion avoidance phases labeled and ssthresh changing from 16 to 8.

Two independent checks confirm the final row. From RTT 6, three doublings reach 8 at the start of RTT 9. Two congestion-avoidance rounds then add one each, leaving cwnd = 10 MSS after RTT 10.

What the question may actually ask

The table supports several question forms:

  • cwnd at RTT k: decide whether this means the start or end of the round.

  • Rounds needed to reach a target: count successful updates, not just values in the sequence.

  • ssthresh after a loss: halve the window at that loss, not the original threshold.

  • Phase at a given window: compare cwnd with the current ssthresh, which may have changed after loss.

Here is a quick second example. Initial cwnd is 2 MSS, ssthresh is 8 MSS, and there is no loss. After RTT 1, cwnd doubles from 2 to 4. After RTT 2, it doubles from 4 to 8. RTT 3 uses congestion avoidance and ends at 9. RTT 4 ends at 10. Therefore, the sender first reaches 10 MSS after four successful RTTs.

Keep flow control separate from congestion control. The usable sending window is constrained by both the receiver-advertised window and cwnd, but a question that supplies only congestion-control values normally expects you to evolve cwnd. TCP vs UDP: Transport Layer Explained gives the surrounding transport context, while Computer Networks: TCP and UDP Transport Layer MCQs provides adjacent practice.

How GATE tests TCP congestion control

Expect a short event sequence with an initial cwnd, an ssthresh and one or more losses. The task may ask for the window after a named RTT, the new threshold, the number of rounds needed to reach a value, or the difference between timeout and triple duplicate ACK handling.

Write down whether each number is measured before or after the RTT. Also check whether the problem names Tahoe, Reno or its own simplified rule. For the current syllabus and official exam-specific instructions, use the official GATE portal of the organising IIT. GATE CS Exam Preparation Courses & Test Series helps place this topic within Computer Networks.

The short version and next step

Below ssthresh, double cwnd each successful RTT. At or above ssthresh, add about one MSS each RTT. On a timeout, halve the current window to get the new threshold, reset cwnd to 1 MSS, and restart slow start. For triple duplicate ACKs, follow the named variant.

The KnowledgeGate bank contains about 2,200 published Computer Networks questions. Use the GATE Test Series after you can reproduce the worked table without looking back. A fixed table convention is the habit that turns window evolution into dependable marks.