Abstract

TCP Vegas is not used, because it can’t be deployed alongside TCP Reno or TCP Cubic

TCP Vegas: Reducing Latency

  • Key insight: if sending faster than the network can deliver, packets will be queued
  • TCP Reno and Cubic wait until the queue overflows and packets are lost before slowing down
  • TCP Vegas watches for the increase in delay as the queue starts to fill up → slows down before the queue overflows
    • Queues are smaller → lower latency
    • Packets are not lost, so don’t need retransmission
  • Only affects congestion avoidance; slow start unchanged

Congestion Control

Measure BaseRTT

  • The smallest time between sending a packet and getting its acknowledgement
  • BaseRTT will be from a packet delivered without much queueing Calculate ExpectedRate =
  • The congestion window, W, determines how many packets are sent each RTT
  • If the network can support this sending rate, the complete window should be delivered within the RTT Measure ActualRate
  • Bytes sent divided by actual RTT, for each packet
  • Measure how fast packets are actually received, based on acknowledgements returned
  • ActualRate ≤ ExpectedRate since packets can’t be delivered faster than they’re sent

Compare ExpectedRate with ActualRate and adjust window: • If ExpectedRate - ActualRate < R1 then additive increase to window • Data arriving at close to expected rate, can likely send faster • If ExpectedRate - ActualRate > R2 then additive decrease to window • Data arriving slower than it’s being sent, slow down • Parameters R1 and R2, where R1 < R2, critical to performance

Limitations:

Delay-based congestion control is a good idea in principle • Reduces latency • Reduces packet loss But loss- and delay-based congestion control don’t cooperate • TCP Reno and TCP Cubic aggressively increase queue sizes • Increases RTT and reduces ActualRate as measured by TCP Vegas • Forces TCP Vegas to slow down; cycle repeats → TCP Vegas sending rate drops to zero over time