Google To Make Internet Faster
Google's researchers claims that they will speed up the Internet by improving the transport layer of the Transmission Control Protocol (TCP) protocol.
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.
Google's recommendations to make TCP faster include:
- 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. Google's experiments indicate that IW10 reduces the network latency of Web transfers by over 10%.
- 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.
- 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. Google has demonstrated TFO reducing Page Load time by 10% on average, and over 40% in many situations. Google's 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. 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, Google is developing algorithms to recover faster on noisy mobile networks, as well as a guaranteed 2-RTT delivery during startup. The company's work on TCP is open-source and publicly available through the Linux kernel, IETF standards proposals, and research publications.
Google's recommendations to make TCP faster include:
- 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. Google's experiments indicate that IW10 reduces the network latency of Web transfers by over 10%.
- 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.
- 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. Google has demonstrated TFO reducing Page Load time by 10% on average, and over 40% in many situations. Google's 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. 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, Google is developing algorithms to recover faster on noisy mobile networks, as well as a guaranteed 2-RTT delivery during startup. The company's work on TCP is open-source and publicly available through the Linux kernel, IETF standards proposals, and research publications.