By Yuchung Cheng, Make The Web Faster Team
Transmission Control Protocol (TCP), the workhorse of the Internet, is designed to deliver all
the Web’s content and operate over a huge range of network types. To deliver content
effectively, Web browsers typically open
several dozen parallel TCP
connections ahead of making actual requests. This strategy overcomes inherent TCP
limitations but results in high latency in many situations and is not scalable.
Our research shows that the key to reducing latency is saving round trips. We’re experimenting
with several improvements to TCP. Here’s a summary of some of our recommendations to make TCP
faster:
1.
Increase TCP initial
congestion window to 10 (IW10). The amount of data sent at the beginning of a TCP
connection is currently 3 packets, implying 3 round trips (RTT) to deliver a tiny 15KB-sized
content. Our
experiments indicate that
IW10 reduces the network latency of Web transfers by over 10%.
2.
Reduce the initial timeout from 3
seconds to 1 second. An RTT of 3 seconds was appropriate a couple of decades ago,
but today’s Internet requires a much smaller timeout. Our rationale for this change is well
documented
here.
3. Use TCP Fast Open (TFO). For 33% of all HTTP requests, the browser needs to first spend one
RTT to establish a TCP connection with the remote peer. Most HTTP responses fit in the initial
TCP congestion window of 10 packets, doubling response time. TFO removes this overhead by
including the HTTP request in the initial TCP SYN packet. We’ve demonstrated TFO reducing Page
Load time by 10% on average, and over 40% in many situations. Our
research paper and
internet-draft
address concerns such as dropped packets and DOS attacks when using TFO.
4. Use Proportional Rate Reduction for TCP (PRR). Packet losses indicate the network is in
disorder or is congested.
PRR, a new loss recovery
algorithm, retransmits smoothly to recover losses during network congestion. The algorithm is
faster than the current mechanism by adjusting the transmission rate according to the degree
of losses. PRR is now part of the Linux kernel and is in the process of becoming part of the
TCP
standard.
In addition, we are developing algorithms to recover faster on noisy mobile networks, as well
as a guaranteed 2-RTT delivery during startup. All our work on TCP is open-source and publicly
available. We disseminate our innovations through the Linux kernel, IETF standards proposals,
and research publications. Our goal is to partner with industry and academia to improve TCP
for the whole Internet. Please watch this blog and
http://code.google.com/speed/ for further
information.
Yuchung Cheng works on the transport layer to make the Web faster. He believes the
current transport layer badly needs an overhaul to catch up with other (networking)
technologies. He can be reached at ycheng@google.com.
Posted by Scott Knaster,
Editor