Taming the elephants: New TCP slow start

  • Authors:
  • Sangtae Ha;Injong Rhee

  • Affiliations:
  • Department of Electrical Engineering, Princeton University, Princeton, NJ 08544, United States;Department of Computer Science, North Carolina State University, Raleigh, NC 27606, United States

  • Venue:
  • Computer Networks: The International Journal of Computer and Telecommunications Networking
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Standard slow start does not work well under large bandwidth-delay product (BDP) networks. We find two reasons for this problem in three popular existing operating systems: Linux, FreeBSD and Windows XP. The first reason is that heavy packet losses occur because of the exponential increase of the congestion window during standard slow start. Recovering from heavy packet losses puts extremely high loads on end systems, rendering the end systems completely unresponsive for a long period of time, and results in a long blackout period without transmission. This problem commonly occurs with all three operating systems. The second reason is that some proprietary protocol optimizations applied to slow start happen to slow down the loss recovery followed by slow start. Although improving the system bottleneck by optimizing data structures is valuable especially for addressing the processing overload with heavy packet losses, it is not effective for the prolonged loss recovery caused by proprietary optimizations. In addition, a large number of packet losses are not desirable since they waste network bandwidth and lead TCP into frequent timeouts and loss synchronization which results in under-utilization of the network. We propose a new slow start algorithm, called Hybrid Start (HyStart), that finds a ''safe'' exit point for slow start at which it can terminate and safely advance to the congestion avoidance phase without causing heavy packet loss. HyStart uses ACK trains and RTT delay samples to detect whether (1) the forward path is congested or (2) the current size of the congestion window has reached the available capacity of the forward path. HyStart is a plugin to TCP senders and requires no change on TCP receivers. We implement HyStart for TCP-NewReno and TCP-SACK in Linux and compare its performance with five different slow start schemes on the TCP receivers of the three different operating systems on the Internet and also in lab testbeds. Our results indicate that HyStart works consistently well under diverse network environments, including asymmetric links, wireless networks, and high and low BDP networks. Especially with different operating system receivers (Windows XP and FreeBSD), HyStart improves the start-up throughput of TCP significantly by more than 2 to 3 times and is the default slow start algorithm of CUBIC since Linux 2.6.29.