Tuesday, September 9, 2008

Congestion Avoidance and Control

This paper describes several early algorithms put in place for TCP congestion control and avoidance. Initially, the authors introduce the slow-start algorithm as a means to gradually increase the amount of data in transit. This algorithm starts with a congestion window of one packet and increases the window in response to acknowledgments - in this sense, it is a self-clocking mechanism that moves towards equilibrium. Unlike other start-up mechanisms, the authors argue, slow-start contains the data rate to within twice the maximum allowable on the network path. Next, a method to estimate the round-trip time is presented and a case is made for exponential back-off. Although the need for such a retransmission mechanism is rather obvious, the actual proof is not provided here. Finally, the authors delve into congestion avoidance - what happens around the "knee" of the curve. The additive increase, multiplicative decrease scheme from the previous paper is substantiated here in a congestion avoidance algorithm for TCP. There is also some talk on adding congestion control mechanisms at network gateways. This definitely seems to be very important in promoting fair sharing of the network. One interesting caveat here is that misbehaving hosts will have their packets dropped even if they try to ignore gateway signals - that's pretty neat.

Given the background from the previous paper, this was very appropriate and took a different angle on congestion control and avoidance. The authors probably should have spent more time talking about edge cases as the basic mechanisms presented seem pretty obvious, but that's probably with hindsight more than anything else. Finally, it was good to see appended sections with more rigorous explanations of the algorithms.

No comments: