A Client-Side Argument for Changing TCP Slow Start Mike Belshe - [email protected] - Jan 11, 2010

Slow Start is a key part of TCP's congestion control algorithms... http://www.faqs.org/rfcs/rfc2581.html

And, ''lack of attention to the dynamics of packet forwarding can result in severe service degradation or "Internet meltdown "'. - Sally Floyd, http://www.rfc-editor.org/rfc/rfc2914.txt

But Web Browsers today are inadvertently subverting slow start....

HTTP Background

HTTP originally was simple... 1. 2. 3. 4.

Open a connection Send a request Receive a response When the server hangs up, you're done!

Couldn't be easier to implement... But not very efficient on the network...

But Inefficiency Didn't Matter Much Web Pages were tiny Just a little text and a picture of a dog or two No CSS, JS, Video, etc. As Web Pages grew, simple optimizations were built: Keep-Alives recycle TCP connections Better caching support etc But....

Web Pages Continued to Grow Technologies evolved. CSS, JavaScript, and image usage ballooned The average site in the Top-100 now makes ~40 requests per page (uncached) Browsers were still limited to 2 connections per site (per spec). Workarounds were easy...

Circumventing Slow Start Sending only two concurrent requests was a bottleneck Sites seeking speed needed more connections "Subdomain sharding" was invented, since existing browsers would open 2 connections to each subdomain Eventually browsers kicked up connection limits 2 connections per domain became 6 And voila! Slow Start is subverted. 6 Connections Per Domain * 6 Subdomains * 3 initial cwnd per connection -----108 initial cwnd (not exactly what RFC2581 suggests!)

Who is Wrong? Is the TCP specification wrong? Is Slow Start too aggressive? Maybe the internet won't break if you turn it off... Or maybe this is why we measure 1-1.5% packet loss on web pages today... I don't know, but these are the facts.

Trying to Build a Better Protocol SPDY attempts to solve some of HTTP's more fundamental problems: serialized requests not enough compression And it is more efficient: Overall 40% reduction in packets 15% reduction in bytes transmitted And most of the time it is faster.

Slow Start Gets In The Way SPDY attempts to be efficient by using the network more intelligently. Fewer TCP Connections. But SPDY uses a single connection per domain. HTTP uses 6 connections per domain. This gives HTTP an initial cwnd 6 times larger than an "efficient" protocol!

Example: The Slow Start Bottleneck in Action

In This Example Network: 100Mbps 200ms RTT 0% loss Browser Chrome Using SPDY, to load the page over a single connection No resources are cached WebPage http://www.facebook.com/ But this can be witnessed on many many webpages. There is nothing wrong with the facebook page content.

What happens if we increase the initial cwnd to..... 18?

Compare to Traditional HTTP

Increasing Initial CWND?

It's not a matter of whether we should increase initial cwnd. For HTTP, it is already increased. Data: Sites are already using init-cwnd = 3. HTTP uses 6 connections per domain, enabling init-cwnd = 18. Sites use 3-8 subdomains, increasing init-cwnd to 54-144.

But Is It Realistic? initcwnd is generally a global setting hidden inside TCP. If we increase it globally, HTTP's init-cwnd is always at least 6X larger than it should be. Even with SPDY, until sites stop using subdomain sharding, effective cwnd is higher than what TCP is attempting to enforce. Will the internet at large increase their cwnd? Needs a kernel patch at the minimum - possibly a sockets API change.

Conclusions Any TCP-based protocol attempting to be maximally efficient on the network will use fewer TCP connections than HTTP. But using fewer connections is a handicap due to TCP's Slow Start on high latency links. Slow Start, while specified at ~2-4 pkts, has, in practice, already been increased far beyond that by use of multiple connections and subdomains. If TCP cannot increase initcwnd, the next generation HTTP protocol will likely not be TCP based.

An Argument For Changing TCP Slow Start - PDFKUL.COM

Page 1. A Client-Side Argument for. Changing TCP Slow Start. Mike Belshe - mbelshe@chromium.org - Jan 11, 2010. Page 2. Slow Start is a key part of. TCP's congestion control algorithms... http://www.faqs.org/rfcs/rfc2581.html. Page 3. And, ''lack of attention to the dynamics of packet forwarding can result in severe service.

856KB Sizes 0 Downloads 201 Views

Recommend Documents

An Argument For Changing TCP Slow Start -
Browsers were still limited to 2 connections per site (per spec). ... Sites seeking speed needed more connections ... 2 connections per domain became 6.

An Argument For Changing TCP Slow Start -
... on many many webpages. There is nothing wrong with the facebook page content. ... Needs a kernel patch at the minimum - possibly a sockets API change.

An argument for education-application based methods for speech ...
Reframing competitive critical analyses: An argument for education-application based methods for speech writing in CA and Rhetorical Criticism. Katherine L. Hatfield-Edstrom, Ph.D. This project offers a contemporary exemplar that students and coaches

Educational Criteria in Forensics: An Argument for ...
This educational function is best served when forensic students are .... judges are that members of the host school's administration and community ... Company.

An Argument for Increasing TCP's Initial Congestion Window
mining flow completion time. Our premise is that the initial congestion window should ... per domain, partly to increase parallelism and avoid head-of- line blocking of independent HTTP requests/responses, ... spread content over multiple domains so

An Argument for Increasing TCP's Initial ... Developers
page [16] showed Firefox 2.0 opened 24 connections and IE8 opened 180 ..... TCP connections, and iGoogle or Blogger photos that have relatively large ...

Frame _large_ for an argument essay.pdf
Page 1. Whoops! There was a problem loading more pages. Frame _large_ for an argument essay.pdf. Frame _large_ for an argument essay.pdf. Open. Extract.

An Argument for Increasing TCP's Initial ... Developers
bandwidth networks also improved by a significant amount in our experiments. .... as shown in the response size distribution of Figure 1. The distribution also ...

An Argument for Increasing TCP's Initial ... Developers
cations devised their own mechanisms for faster download of. Web pages. ... (4) Allow faster recovery from losses. ..... http://code.google.com/speed/articles/.

An Argument for Increasing TCP's Initial ... - Research at Google
3rd Quarter 2009. http://www.akamai.com/stateoftheinternet, 2009. [5] M. Allman, S. Floyd, and C. Partridge. Increasing TCP's. Initial Window. RFC 3390, 2002.

Burst TCP: an approach for benefiting mice flows
Abstract. Standard TCP congestion control mechanisms degrade performance of small flows, especially during the Slow Start phase, which often causes.

Burst TCP: an approach for benefiting mice flows
The TCP Fast Retransmit algorithm is activated when the sender receives three duplicated. ACKs. However, small flows frequently do not possess enough data ...

Programming TCP for responsiveness - GitHub
for data that couldn't be stored in TCP send buffer ... packet (wasting packets during slow start!) ⁃ overhead of TLS header & HTTP frame becomes bigger. 5 ...

RFC 6937 - Proportional Rate Reduction for TCP
N N N N N N N N. Rate-Halving (Linux) ack# X 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cwnd: 20 20 19 18 18 17 17 16 16 15 15 14 14 13 13 12 12 ...

[Read] Ebook Everything s an Argument with Readings ...
your course. Access unique, book-specific materials in a fully customizable online course space; then adapt, assign, and integrate our resources with yours. This.