Hmmmm....the article prelude, and points 1 and 3, and the rationale document linked for point 2, all seem to be about optimising TCP for HTTP/the Web.<p>The thing is, a heck of a lot more runs over the Internet/TCP than just HTTP/the web. Also, it can very well be argued that a lot of the "end-user" perceived problems they are trying to fix (e.g. HTTP total request-response round trip latency) are acutally problems with HTTP, rather than TCP - notably the fact that for "small" web requests all HTTP effectively does is re-implement a datagram protocol (albeit with larger packets than UDP) on top of TCP, with all the consequent overhead of setting up and tearing down a TCP connection.<p>It's an interesting set of fixes. But are they the right fixes, at the right level? Would moving to SPDY instead of HTTP fix the problems better, at a more appropriate level? With less chance of impacting all the other protocols that run (and are yet to run) over TCP?
I found this part to be the real great news:<p><i>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.</i>
OK, dumb question which I'm too lazy to look up for myself: what is TCP Fast Open, and how is it different from T/TCP? My vague memory is that the latter was dropped because allocating port numbers without requiring an explicit round trip simply could not be made robust vs. DDOS attacks. What tricks is TFO using that T/TCP didn't?<p>(<i>edit: Not so lazy after all I guess. The draft RFC here: <a href="http://tools.ietf.org/html/draft-cheng-tcpm-fastopen-00" rel="nofollow">http://tools.ietf.org/html/draft-cheng-tcpm-fastopen-00</a> and after a very quick perusal I don't see an attempt to solve the DOS problem either. It seems like it just requires apps to handle the transactions really fast and then close the connection?</i>)
Lots of things about TCP&Co are stale, and don't work well in a modern network. That paper covers connection establishment. Other issues include network address establishment, device discovery and LAN broadcast.<p>In my last job creating mobile wireless drivers, we had a problem with wireless roaming. TCP/DHCP are set up assuming IP address establishment is a very infrequent operation. Typically it could take several seconds, which is fine if it only happens at boot or when a human trips over a cable and plugs it back in.<p>But wireless devices 'plug back in' each time they roam to a new AP. In an industrial environment (warehouse, 60 APs installed over several acres, forklift driving 20MPH) you may need to roam every second or so.<p>Its time to examine every aspect of TCP for large (huge) installations, very frequent device discovery (power-save in handheld devices), rapidly changing network topologies and so on.
I hope that this really actually helps everyone. SPDY has been in Chrome & on Google Maps and such for a long time, but not elsewhere: it's disabled on Firefox, unavailable on Safari and the like. And it's not implemented elsewhere: node-spdy is getting awesome but has taken a while to get there. Working for a place that could really benefit from something like SPDY, it seemed a bummer that only a duo of competitors products would work with an open protocol, for lack of documentation, interest, or what-have-you.
Of course I don't know much about this, but I find the first call to action a bit surprising:<p><i>1. Increase TCP initial congestion window to 10 (IW10).</i><p>It seems contradictory with the general concept that too much buffering harms latency and may actually be aggravating congestion:
<a href="http://queue.acm.org/detail.cfm?id=2071893" rel="nofollow">http://queue.acm.org/detail.cfm?id=2071893</a>
2 years ago we were discussing a few of the direct advantages of this in a comment here <a href="http://news.ycombinator.com/item?id=1143317" rel="nofollow">http://news.ycombinator.com/item?id=1143317</a> including tcp_slow_start_after_idle which also interacts with icwnd.<p>Also it's much easier as of late to get the benefit from a larger initial cwnd. Back then you needed to recompile the kernel with source tweaks, now you just use a backport or depending on your distro version you already have the benefit as kernel 2.6.39 has the change... <a href="http://kernelnewbies.org/Linux_2_6_39" rel="nofollow">http://kernelnewbies.org/Linux_2_6_39</a>
TCP fast open (TFO) effectively fires data in the blind in the establishment phase and then handles the timeout gracefully. That sounds like vanilla UDP (or your favorite best-effort protocol) to me.
I can't see to find kernel patches for #2 or #3. Anyone else have better luck?<p>Also, I would like to see more emphasis given to research on mobile networks, which is my area of interest. Perf for large stable networks is not the same for choppy 3G-ish mobile networks.
Why do us small business owners care about optimizing TCP?<p>Why does Google? Because web search is behind billions of dollars of revenue. Micro-optimizations matter to them.