Chapter 6: Congestion

This chapter deals withTCP's congestion-reduction mechanisms. The chapter also contains some other, more general, discussion of congestion management issues. 

TCP's congestion-control mechanisms were pretty much finalized by 1988, at a time when the nascent Internet was facing severe congestion issues. These mechanisms have been, overall, very successful over a decade later even though they were originally developed for an Internet with only two to three transcontinental connections at a time. Today there are thousands of such simultaneous connections. An active topic of current Internet research is to extend TCP's congestion algorithms to other, non-TCP-based, protocols (eg RealAudio). 

Section 6.3 - TCP Congestion control

TCP tries to monitor the connection for signs of congestion, and, whencongestion is encountered, tries to reduce the flow in order to reducecongestion. Specifically, TCP interprets lost packets as congestion indicators.On a typical Ethernet, perhaps one packet in 100,000 might be lost purelyto noise and error, but one in 10 might be lost due to congestion. Interpretingloss as a sign of congestion is usually a pretty safe bet.

TCP reduces the rate of flow by reducing the window size. Specifically, TCP maintains a variable CongestionWindow, which is an upper bound on the window size used.

The general strategy TCP uses is sometimes called additive increase/multiplicative decrease. On loss, TCP (eventually) reduces CongestionWindow by a factorof 2 (the multiplicative decrease). Each windowful of successful transmissions, on the other hand, causes CongestionWindow to be incremented by 1 (theadditive increase). TCP is thus quick to reduce the window, but slow togrow it.

Actually, whenever TCP starts up cold or restarts (initially, or after a packet loss) it sets CongestionWindow to 1. It then enters the so-called "slow-start" phase, where the window size doubles for each roundtrip.

Study Questions

Exercises

14    Counting RTTs in slow start
15    Simple congestion-control example
20    TCP congestion at a router R
24    Detecting whether TCP implementations are behaving
25    Examining a TCP trace diagram
28    Sharing connections
39a  Two kinds of congestion (don't do 39b)