Tuesday, September 9, 2008

Congestion Avoidance

This paper approaches the problem of congestion avoidance from a more practical and less theoretical point of view than the previous paper. It answers one very important question that I had after reading the last paper, which was the question of initial conditions. The "slow start" described in this paper is an exponential growth algorithm that will bring the TCP window to approximately the right size before the additive increase/multiplicative decrease algorithm is used.

This paper also addresses the issue of retransmission, which is specific to TCP (unlike the previous paper, which assumed a constant stream of data, this paper actually considers the ACKs). They provide an improved algorithm for calculating the amount of time to wait before retransmission that fares better under both light and hevay congestion. In particular, it does not unnecessarily retransmit when a packet has been delayed rather than dropped. This is due to an improved measure of the variance in round-trip time. Having put these two pieces in place, it becomes clear that a timeout is almost always due to packet loss (from congestion) rather than any other cause. This means that the timeout can be used as the signal that indicates that the network is congested.

This paper is quite good at explaining TCP's current implementation. It does not delve into a lot of mathematical depth, but it backs up its claims with experimental results. This paper, in conjunction with the other one, is a very good introduction to TCP in its current form.

This paper touches on the question of an adversarial client by mentioning that the gateway can be configured to drop excess packets from a client that is using more than its share of the available bandwidth. The detection of such a scenario and the policy for the packets dropped is vague.

The paper argues that the use of the timeout to detect congestion is superior to the use of an extra bit sent from the gateway to the client, since this method does not require the modification of any hardware in the network. However, it also heavily cites the previous paper on additive increase/multiplicative decrease, which clearly states that it is assuming distinct time steps and that the results of one time step are available before the next transmission. By using the timeout, this is clearly no longer the case. An important question is whether or not this inconsistency matters, and whether the algorithm would perform better if the gateways actually did return a bit that broadcasted whether or not it was experiencing congestion.

No comments: