So, this is probably a good time to couch my observations with a few qualifications:
- My analysis wasn't particularly rigorous, and I didn't even save my data (other than in the blog post). If I had know how much attention this would get, I would have done a lot more test runs of more sites from more locations (and I may as a follow-up).
- It's entirely possible that I'm misinterpreting what I saw. In particular, there may be some cwnd caching going on somewhere a la RFC-2140. However, since Google mentions that they don't believe cwnd caching is effective in their presentation on IW10, I think that's unlikely in the www.google.com case. It does, however, seem like a plausible explanation for the www.microsoft.com behavior.
- A number of commenters have taken issue with my invocation of network neutrality. They make a good point. This isn't a net neutrality issue, strictly speaking. It is (arguably) an issue of network fairness, however.

7 comments:
"The important thing is not to stop questioning. Curiosity has its own reason for existing." (Albert Einstein)
Sharing some of your goals, I can certainly identify myself with your quest for understanding.
Here is what I did: the fastest (ever) Web App. server with ANSI C scripts:
http://gwan.ch/
Taking ping delays into account, your test looks pretty good on gwan.ch (which does not benefit from any fancy tricks, either hardware or software).
How is this an issue of network fairness? Can't anyone set their server to deliver content like this? Maybe they have to recompile their TCP/IP stack but I don't see how this shows google is doing something bad or unfair. 1) It works. 2) It helps the user. 3) It doesn't hurt anyone 4)Anyone can do it.
I think some of the video streaming servers are cheating on their speed calculation algorithms, or in how they respond to loss or congestion.
I think it is why some servers can't play without those annoying pauses. They are outsmarting themselves.
Great post(s).
I just wanted to point out (you'll hear it eventually on these internets) that "begs the question" is incorrect.
Begging a question is a logical fallacy (http://en.wikipedia.org/wiki/Begging_the_question). I would go with "prompts" the question, or "raises" the question" in the future.
Keep up the writing and ignore any negativity from pedants.
Regards,
Daniel
It was surprisingly easy to change a RHEL (CentOS) 5.4 webserver front-end node to use an initial congestion window of 10 rather than 2 --
# ip route change default via 192.168.1.1 dev eth1 initcwnd 10
After that change the total initial page download for my primary landing page (that's < 12KB compressed) dropped from about ~400 to ~200ms. YSlow net graph seems to show the decreased time and I think even Keynote monitoring shows the effects but I haven't bothered figuring out how to graph first byte/first page download by itself.
Anyone else try this yet?
Thanks,
Juefeng Ge -- Internet Marking Genius
http://jeufeng.com
If you have at least 2.6.34, you should be able to perform the above initcwnd command
http://linux.derkeiler.com/Mailing-Lists/Kernel/2010-05/msg07856.html
otherwise, you will get the:
RTNETLINK answers: No such file or directory
error
One factual correction to what you say here - Google is *not* giving preference to their own data flows. To do that they'd have to mess with TCP's normal congestion control algorithm, not merely slow start (which should really be called fast start, and the problem they're addressing is that it isn't fast enough). In fact, with SPDY Google is making their own connections take much less precedence over everything else, because it only uses one connection instead of 4 or 8 or even 16, which makes it have 1/4 or 1/8 or 1/16 the proportion of a congested link it would normally. What they are doing is reducing latency to the end user, which is a far, far bigger issue for real world end users than congestive fairness.
Post a Comment