Google has published a number of
recommendations on how to reduce latency for TCP connections between a web server and a browser. These recommendations summarize the research that the company has been conducting for several years.
1.
Increase the initial size of the congestion window to 10 (IW10) . Now at the beginning of a TCP connection, three data packets are sent in three rounds (RTT) for transmitting small information (15 KB). Our
experiments show that IW10 reduces network latency for web connections by more than 10%.
2.
Reduce the initial timeout from 3 seconds to 1 second . RTT in 3 seconds was acceptable a couple of decades ago, but on the modern Internet you need a much smaller timeout. Our rationale for this is well documented
here .
3. Use TCP Fast Open (TFO). For 33% of HTTP requests, the browser first needs to spend one RTT on establishing a TCP connection with a remote peer. Most HTTP responses fit into the first congestion window of ten packets, doubling the response time. TFO eliminates this redundancy by including an HTTP request in the first TCP SYN packet. We have shown that TFO reduces page load time by an average of 10%, and in many situations by more than 40%. There is a
scientific study , and we also prepared a
draft standard that aims to solve problems such as packet loss and DDoS attacks using TFO.
')
4. Use
PRR (Proportional Rate Reduction) for TCP. Packet loss indicates a network fault or congestion. PRR is a new loss recovery algorithm that evenly distributes retransmitted packets and recovers losses incurred due to network congestion. This algorithm is faster than the current RFC 3517 mechanism, because it can change the frequency of packet transmission depending on the level of losses. The PRR algorithm is already included in the Linux kernel and is now being issued as
part of the TCP standard .
In addition, we are developing algorithms for faster reconnection in overloaded cellular networks and for guaranteed delivery of 2-RTT during the download process. All our work on TCP is open-source and publicly available. We spread our innovations through the Linux kernel, the IETF standards proposals and scientific publications. Our goal is to improve TCP for the entire Internet with industry representatives and scientific organizations.