Transmission Control Protocol (TCP), the workhorse of the Internet, typically open several dozen parallel TCP connections ahead of making actual requests to the Internet to deliver all the Web's content. This strategy overcomes inherent TCP limitations but results in high latency in many situations and is not scalable.
In a January 23 blog post over at Google Code blog, Yuchung Cheng of the transport layer department of Google that they 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," said Cheng.
Cheng also shared a few tips to make the TCP faster:
- 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," cheng writes. Adding, he said "Our experiments indicate that IW10 reduces the network latency of Web transfers by over 10%."
- Reduce the initial timeout from 3 seconds to 1 second. Today's Internet requires a much smaller timeout, "our rationale for this change is well documented here."
- 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." You can refer to these research paper and internet-draft address concerns such as dropped packets and DOS attacks when using TFO.
- 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," Chengs writes. "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," added Cheng.