Wednesday, September 3, 2008

Increase/Decrease Algorithms

This paper was about the algorithms to enforce congestion avoidance. They make a distinction between congestion avoidance (staying in low congestion) and congestion control (staying out of high congestion). They find that additive increase/multiplicative decrease is the appropriate answer. This is done with a rigorous proof of its correctness.

Some background on these algorithms from the TCP Daytona paper by Savage. In this, he shows the assumptions shown in this work. The biggest thing is that they trust the client to implement the protocol correctly. If they don't they can game this algorithm to improve their performance. Very cool result there.

I consider the above an interesting discussion topic. Also, an interesting question revolves around the appropriate layer in the stack for this functionality. Anything above IP likely violates the skinny waist model, as the intermediate routers are the ones using this. However, a basic layer without any control flow is useful for more generic systems. There's seemingly no obvious answer, though I expect that implementing it at IP is probably correct, as control flow is a basic property of networks.

The paper was nice, although it was went into too much depth on the deep proofs. The graphical proofs were valuable enough.

They punted on a great deal of questions, from the guessing of the number of users to async operation. They worked on a very abstract, singular problem and didn't leave that area.

As to the implications of this work, this is what's currently used, as far as I know. Greatly impactful.

No comments: