TCP Congestion Control: AIMD
The last part of TCP that we're going to study is congestion control.
We’ve already looked at what congestion control is in a previous lesson. Let’s get into some TCP-specific congestion control algorithms now!
But first:
Requirements of a Congestion Control Algorithm
-
The congestion control scheme must avoid congestion. In practice, this means that the algorithm should ensure that the bandwidth allocated to a certain host at any given time does not exceed the bandwidth of the bottleneck link.
-
The congestion control scheme must be efficient. The congestion control scheme should ensure that the available bandwidth is efficiently used. Namely that the bandwidth allocated to a certain host at any given time doesn’t fall too far below the bandwidth of the bottleneck link.
-
The congestion control scheme should be fair. Most congestion schemes aim at achieving max-min fairness, which we had a lesson dedicated to.
TCP Congestion Control Algorithms
To implement most TCP congestion control algorithms, a TCP host must be able to control its transmission rate. In order to do so, it can constrain its sending window. Recall that after transmitting data equal to the window size, the sender must pause and wait at least one RTT for the ACK before it can transmit more data. Thus the maximum data rate is: ...