What is Bufferbloat, Anyway?
Bufferbloat is the cause of much of the poor performance and human pain experienced using today’s Internet. It can be the cause of a form of congestion collapse of networks, though with slightly different symptoms than that of the 1986 NSFnet collapse. Since discussion of the best terminology for the problem reached no consensus, I invented a term that might best convey the sense of the problem.
I’ll take a stab at a formal definition:
Bufferbloat is existence of excessively large (bloated) buffers in systems, particularly network communication systems.
Transport protocols such as TCP by design run “as fast as possible”, and will fill any size buffer. Buffers then cease to be useful to absorb bursts of packets, and then just introduce delay. Systems suffering from bufferbloat will have bad latency under load under some or all circumstances, depending on if and where the bottleneck in the communication’s path exists. Bufferbloat encourages congestion of networks; bufferbloat destroys congestion avoidance in transport protocols such as HTTP, TCP, Bittorrent, etc. Network congestion avoidance algorithms depend upon timely packet drops or ECN; bloated buffers invalidate this design presumption. Without active queue management, these bloated buffers will fill, and stay full, causing delay and frustration.
More subtlety, poor latency, besides being painful to users, can cause complete failure of applications and/or networks, and extremely aggravated people suffering with them.
Worse, in today’s Internet of CDN’s and highly variable bandwidth links, even estimating the “correct” buffer size has become impossible.
Bufferbloat is seldom detected during the design and implementations of systems as engineers are methodical people, seldom if ever systematically test latency under load, and today’s memory is so cheap buffers are often added without thought of the consequences, thereby becoming hidden in many different parts of network systems.
You see manifestations of bufferbloat today in your operating systems, your home network, your broadband connections, possibly your ISP’s and corporate networks, at busy conference wireless networks, and on 3G networks.
Bufferbloat is an endemic disease of today’s Internet.
Bufferbloat is a mistake we’ve all made together.
For more information, see the CACM article on bufferbloat, and the conversation with Vint Cerf, Van Jacobson, Nick Weaver and Jim Gettys and YouTube videos and demonstrations of Bufferbloat.
We’re all Bozos on This Bus.