This article is part of a series, which examine performance problems in high-speed internet connections. Unfortunately, in addition to being split over several pages, it is written in one of the most rambling and verbose styles I've ever seen. The best single explanation is found not in the submitted link, but in < http://gettys.wordpress.com/2010/12/03/introducing-the-crimi... >
My background in networking isn't strong enough to fully understand the problem, but here's an attempt:
--
When using a fast Internet connection, in the 20+ Mb/s range, throughput and latency for common residential use cases are both far worse than expected[1,3,4]. The problem is masked from most users because Windows XP is missing a feature required for maximum network performance, and because most American residential Internet connections are slow. As more users upgrade their operating systems and connection, significant performance will be lost.
The problem occurs due to excessive buffering, combined with the TCP window scaling feature. When a network stack with support for TCP window scaling is allowed to connect to a fast link, the link is saturated. Normally the dropped packets should signal the stack to back off, but buffering in the stack and local switch combine to cause massive latency (on the order of 10-20 seconds) before packets begin dropping. This latency, which the author terms "bufferbloat", is responsible for the performance degradation.
The author goes on to diagnose and correct excessive buffering in various nodes; his described fixes are beyond my understanding, but indicate that altering his Linux desktop's TCP queue parameters is sufficient to correct many cases. Similar fixes to OS X and Windows can likely be applied by their respective developers, once they become aware of the problem.
I've been using such a thing since about October of 2002 in linux. Its based (well it was at first anyway) on a quick little hack called "wonder-shaper".
Thanks for that, it's even included in Ubuntu. I'm just not sure if it will work if I install it on all my computers individually, because I don't have a router running Linux (pity me).
My background in networking isn't strong enough to fully understand the problem, but here's an attempt:
--
When using a fast Internet connection, in the 20+ Mb/s range, throughput and latency for common residential use cases are both far worse than expected[1,3,4]. The problem is masked from most users because Windows XP is missing a feature required for maximum network performance, and because most American residential Internet connections are slow. As more users upgrade their operating systems and connection, significant performance will be lost.
The problem occurs due to excessive buffering, combined with the TCP window scaling feature. When a network stack with support for TCP window scaling is allowed to connect to a fast link, the link is saturated. Normally the dropped packets should signal the stack to back off, but buffering in the stack and local switch combine to cause massive latency (on the order of 10-20 seconds) before packets begin dropping. This latency, which the author terms "bufferbloat", is responsible for the performance degradation.
The author goes on to diagnose and correct excessive buffering in various nodes; his described fixes are beyond my understanding, but indicate that altering his Linux desktop's TCP queue parameters is sufficient to correct many cases. Similar fixes to OS X and Windows can likely be applied by their respective developers, once they become aware of the problem.
--
The articles, in order:
[1] http://gettys.wordpress.com/2010/10/02/first-puzzle-piece/
[2] http://gettys.wordpress.com/2010/10/13/browsers-and-tcp-revi...
[3] http://gettys.wordpress.com/2010/11/29/home-router-puzzle-pi...
[4] http://gettys.wordpress.com/2010/12/02/home-router-puzzle-pi...
[5] http://gettys.wordpress.com/2010/12/03/introducing-the-crimi...
[6] http://gettys.wordpress.com/2010/12/06/whose-house-is-of-gla...
[7] http://gettys.wordpress.com/2010/12/07/bufferbloat-and-netwo...
[8] http://gettys.wordpress.com/2010/12/08/bufferbloat-mitigatio...
[9] http://gettys.wordpress.com/2010/12/09/bufferbloat-and-conge...
[10] http://gettys.wordpress.com/2010/12/13/mitigations-and-solut...