Paper Review:
TCP Vegas: End to End Congestion Avoidance on a Global Internet

Reviewer: Oleg Elkhunovich


Makeing changes to the implementation of TCP that would significantly improve performance.


This paper describes an alternative to current TCP protocol - TCP Vegas that seems to have a significantly better throughput and losses rates. It presents the modification made to the TCP Reno protocol without changing the actual TCP implementation.

Main Ideas

  • Improvement in throughput is not achieved by an aggressive strategy of retransmission. Thus bandwidth is not been stolen from other TCP transmissions.
  • Vegas uses new retransmission mechanism that allows for better efficiency. It does not always wait for 3 ACKs but instead keeps track of RTT. The main contribution of this mechanism is to detect lost packets even though there may be no second or third duplicate ACK. It greatly reduces the number of coarse-grained timeouts.
  • Vegas addresses a problem of Reno's congestion avoidance mechanism being reactive, rather than proactive. It compares measured throughput rate with expected rate. The scheme is based on changes in the estimated amount of extra data in the network, and not only on dropped segments.
  • The slow-start mechanism is also modified to avoid exponential growth when it is harmful.


    Significance: 4
    The paper is very significant as it clearly presents some very interesting improvements to the TCP protocol. It claims that a new protocol is significantly better in terms of throughput and packet loss rate and comparable in other metrics.
    The methodology of this paper is very good. It starts off presenting techniques and ideas, explains them intuitively and then gives very good experimental data to show that a new protocol is in fact better than Reno.
    While paper presents very good experimental data it does not really give any theoretical proves of why their scheme works so much better. Intuitively, it makes sense, but more rigorous theoretical treatment would be helpful.

    It is important to be able to change the implementation without changing the specification and create a more efficient protocol.