This paper introduces a new implementation of TCP, modifying TCP Reno for better congestion control. The main points are:
- New retransmit mechanism: TCP Reno retransmits packet when a timeout occurs before receiving ACK or when n (generally set to 3) duplicate ACKs arrive for a packet. This, the authors show is a rather inefficient way because most of the time is left ununsed waiting for arrival of duplicate ACKs, even when checking of timestamps would make the need for retransmission clear. Vegas takes this approach. It retransmits when the time between sending of a packet and receipt of first duplicate exceeds timeout.
- Proactive congestion avoidance:While Reno congestion avoidance is reactive, Vegas adjusts the congestion window by measuring expected throughput against actual throughput. It defines thresholds for optimal use of buffers in network routers, and dynamically adjusts bandwidth utilization. Unlike Reno, it does not rely on dropped packets to adjust the TCP window.
- Modified Slow Start mechanism: Vegas adopts exponential growth for congestion window size only after every second RTT of a sent packet. This maintains the congestion window size constant until the RTT is measured. Now, if the actual throughput rates at the RTT is less than the expected, the window size grows exponentially. Otherwise, it grows linearly.
One reason I find Vegas heavy on the sender side is that it has to maintain the state information (like the timestamp etc) for every packet it has sent. This could introduce scalability problems.
For future research, Vegas could be deployed on current Internet topologies to see whether there is substantial benefit from the current TCP implementations.