Slow Start is a technique to probe for unknown and time-varying available bandwidth of a network path. A sender increases its congestion window by one for each ACK received (when ACKs are not delayed), which effectively doubles its congestion window when receiving ACKs for all the packets within a congestion window. Even if an exponential increase of congestion window during Slow Start grabs unused bandwidth quite well, a large number of packet losses within an RTT is inevitable because of its over-shooting. Furthermore, for fast and long distance networks, a large number of packet losses would result in unnecessarily long timeouts and create system performance bottlenecks related to handling the recovery of lost packets. We propose a new algorithm, called Hybrid Slow Start that maintains the existing Slow Start mechanism of TCPNewReno but provides trust-worthy signals to Slow Start for safely switching to Congestion Avoidance without incurring an extremely large number of packet losses. Hybrid Slow Start uses two pieces of information ACK train length and increase in packet delays. By measuring ACK train length, a TCP sender roughly infers the maximum number of packets in flight which is typically smaller than the Bandwidth Delay Product (BDP) of the path if taken into account cross traffic and routing delays along the path. Increase in delays for the first few packets in each RTT round during Slow Start strongly indicates the path is getting congested by other traffic. Hybrid Slow Start is easy to implement using a only very small set of TCP state variables available in standard TCP. We validate our claims by applying Hybrid Slow Start to CUBIC and testing it under a realistic mix of background traffic with TCP receivers implemented in FreeBSD, Windows and Linux.
[1]
Srinivasan Keshav.
A control-theoretic approach to flow control
,
1991,
SIGCOMM 1991.
[2]
Larry L. Peterson,et al.
TCP Vegas: End to End Congestion Avoidance on a Global Internet
,
1995,
IEEE J. Sel. Areas Commun..
[3]
Janey C. Hoe.
Improving the start-up behavior of a congestion control scheme for TCP
,
1996,
SIGCOMM 1996.
[4]
Randy H. Katz,et al.
TCP Fast Start: A Technique For Speeding Up Web Transfers
,
1998
.
[5]
Paul Barford,et al.
Generating representative Web workloads for network and server performance evaluation
,
1998,
SIGMETRICS '98/PERFORMANCE '98.
[6]
Kang G. Shin,et al.
A simple refinement of slow-start of TCP congestion control
,
2000,
Proceedings ISCC 2000. Fifth IEEE Symposium on Computers and Communications.
[7]
Ren Wang,et al.
TCP westwood: Bandwidth estimation for enhanced transport over wireless links
,
2001,
MobiCom '01.
[8]
Sally Floyd.
Limited Slow-Start for TCP with Large Congestion Windows
,
2004,
RFC.
[9]
Parameswaran Ramanathan,et al.
Packet-dispersion techniques and a capacity-estimation methodology
,
2004,
IEEE/ACM Transactions on Networking.
[10]
Giovanni Pau,et al.
TCP Start up Performance in Large Bandwidth Delay Networks.
,
2004,
INFOCOM 2004.
[11]
Sally Floyd,et al.
Quick-Start for TCP and IP
,
2007,
RFC.
[12]
Marcel Dischinger,et al.
Characterizing residential broadband networks
,
2007,
IMC '07.
[13]
Injong Rhee,et al.
Impact of background traffic on performance of high-speed TCP variant protocols
,
2007,
Comput. Networks.
[14]
Robert Shorten,et al.
Delay-based AIMD congestion control
,
2007
.