EOF - Whatever Sinks Your Boat
Lately I've been urged by friends in the Linux community to write here about a topic dear to the infrastructure we share. So, rather than give away that topic in this intro, I'll turn the floor over to one of those worthy others: my old friend Dave Täht, who now will treat us to a guest EOF. Take it away, Dave.—Doc.
Do your movies stutter when you stream them? Does your kid get fragged when you fire off a Flickr upload? Can you not make a VOIP call while surfing the Web? These common problems may have one common cause: bufferbloat.
Although bufferbloat masquerades as inadequate network provisioning, it's actually a result of mis-design. To prevent packet loss, manufacturers have been putting vastly overlarge—bloated—buffers for data everywhere in the Internet: routers, switches, cable modems, wireless access points and other devices. This has badly worsened both average latency and latency under load—what you should think of as “speed” on the Internet. As a result, even after large increases in bandwidth, we often find we can't share a connection anymore. Movies stutter, calls drop, uploads interfere with gaming and so on.
In a string of painstaking and now well-publicized experiments, Jim Gettys has outlined (en.wordpress.com/tag/bufferbloat) the breathtaking, almost Y2K scope (mirrors.bufferbloat.net/Talks/BellLabs01192011), of the problem. He also coined bufferbloat (gettys.wordpress.com/what-is-bufferbloat-anyway) as the name for the pain. (Some of you may recall that Jim also originated the Unobtainium handheld.)
Jim's experiments showed, clearly, that even on high-speed 10–50Mbit lines, operations that should take 1/100th of a second might now take seconds. He also showed how the core protocol of the Web, TCP/IP, is now misbehaving, thanks to bufferbloat. The consequences might include widespread problems similar to the NSFnet collapse in 1986. And there are a lot more people on the Net now than there were then.
The RMS Titanic hit an iceberg and sank because it was unable to turn fast enough to avoid disaster. The Tesla sports car carries two, goes from 0 to 60 in less than four seconds and turns on a dime. Which would you rather drive?
The Titanic is actually a more fitting analogy than you might think. The Titanic, like the Internet, was built during a major shift in technology. Steel was replacing iron. Nobody knew for sure what worked and what didn't. Bolting a giant ship together took advanced skills and advanced rivets. But, in the rush to launch that ship, essential risks were misunderstood and under-tested technology was pushed too far.
The Internet we've built has the carrying capacity and the turning speed of the Titanic. The great big bloated buffers we've built in to all the newest (and supposedly fastest) kit have been breaking the Net. Bufferbloat is the risk we now understand, and it's being tested now under increasing stress.
Jim Gettys is also no longer alone on the bufferbloat case. Since he sounded the alarm in November 2010, Robert Cringely, Slashdot and LWN have all covered the problem. Vint Cerf—a father of TCP/IP—put out a call for help at LCA as well.
Since then, many members of the Open Source and Internet engineering communities have leaped forward to help beat the bloat. As I write this (in early March 2011), more than 180 people have joined the bloat mailing list. In less than two months, we've also produced a new (debloat-testing) Linux kernel that puts many of the core ideas for fixes in one place.
Bufferbloat is a subtle bug that has been bugging everybody for a very long time, only we didn't know it. Now it has a name, plus a bunch of highly motivated people working on fixing it, from top to bottom, across multiple operating systems.
Much work and testing remain. There are already simple solutions for home routers out there, and more fixes for wireless and other devices are on their way. Unfortunately, some problems still only have theoretical solutions (gettys.wordpress.com/2010/12/17/red-in-a-different-light).
While the network neutrality debate is over regulatory fixes to the threat of carrier favoritism toward certain kinds of traffic, a technological solution to the bufferbloat problem may turn down the heat a bit. It may be possible for your son's game, your wife's Facebook, your Flickr upload and your business calls all to co-exist happily on one network, and for content to travel much more smoothly through ISPs once good fixes for bufferbloat appear.
Best of all, fixing bufferbloat from end to end will make new edge applications feasible, from immersive video-conferencing to VRM.
Meanwhile, the bufferbloat problem remains huge, largely unrecognized, and it's all around us. Hundreds of millions of bloated products are in the field, and hundreds of millions more are in the pipeline. Fortunately, fixing new designs is fairly simple. Unfortunately, fixing already-deployed hardware is complicated and often expensive.
Can we turn our Titanic back into a Tesla, with a little trunk space? I'm betting: Yes! But we need all the help we can get.
There's still a shortage of good rivets, and good riveters.
If you design network software or hardware, use VoIP, upload/download video, play games, run a Web site, administer a network, purchase hardware, or merely care about the future of new, innovative applications on the Net, please don't stop reading here. Go to bufferbloat.net. Then read on, pass on, and apply what you learn.
The network you save may be your own.
Doc Searls is Senior Editor of Linux Journal and a fellow with the Center for Information Technology and Society at UC Santa Barbara.
Dave Täht is an IPv6 and mesh networking researcher who surfs (literally) on the side.
Doc Searls is Senior Editor of Linux Journal
- William Rothwell and Nick Garner's Certified Ethical Hacker Complete Video Course (Pearson IT Certification)
- Preseeding Full Disk Encryption
- Hodge Podge
- Two Factors Are Better Than One
- GRUB Boot from ISO
- Google Begins Making DMCA Takedowns Public
- Minifree Ltd.'s GNU+Linux Computers
- HOSTING Monitoring Insights
- FinTech and SAP HANA
- Returning Values from Bash Functions