Congestion Collapse
RFC 896 · the prophecy: a network drowning in its own retries
Step 1 of 2 — understand the idea. Read this first and the packet trace will confirm what you already expect, instead of teaching you two things at once.
What you'll be able to do
- ▸Watch a burst overflow a router queue — congestion loss with no villain
- ▸See an impatient timer resend data that wasn't lost, only slow
- ▸Follow duplicates crowding out fresh data: rising traffic, falling delivery
- ▸Name the two modern defences this trace is missing
✗ Common misunderstanding: Flow control and congestion control are two names for the same thing.
Why that's wrong: They protect different victims with different mechanisms. Flow control protects the RECEIVER's buffer using the advertised window; congestion control protects the NETWORK using the sender's private cwnd.
Correct model: Two independent brakes, always both active. The sender may have min(rwnd, cwnd) bytes in flight.
The packets prove it: In the rwnd-limited scenario cwnd is large but the 4 KB advertised window is the binding limit; in the congestion-collapse scenario the window is huge and the network is the problem.
✗ Common misunderstanding: A duplicate ACK always means a packet was lost.
Why that's wrong: It means data arrived OUT OF ORDER. Reordering on the path produces the same signal, which is why TCP waits for three duplicates before concluding loss.
Correct model: One or two duplicate ACKs mean 'something arrived early'. Three mean 'it's probably genuinely gone'.
The packets prove it: The three-duplicate threshold in the congestion-control lesson exists precisely because one or two are not trustworthy evidence.
- Throughput
- How many bytes per second the link carries — including retransmitted copies of data that already crossed it once, and including packets that are about to be dropped.
- Goodput
- How many bytes per second of USEFUL, non-duplicate application data actually reach the far end. This is the number users experience, and it is the one that collapses.
- Queue
- The buffer inside a router where packets wait for a busy link. Small queues absorb bursts, which is good. Persistently full queues add delay to everything and drop what doesn't fit — and a full queue is what turns one host's aggression into everyone's loss.
- Congestion collapse
- The stable state where high throughput coexists with near-zero goodput, because most of what the network carries is retransmissions of data it already dropped.
✓ Concept check — before you open the packets
These test the idea, not the trace. You should be able to answer them from the explanation above.
Now that you understand the concept, observe how it appears in the packet exchange.
The lab runs a real simulated capture — pause, step, click any packet, and inspect every byte.