Bufferbloats—an amusing word for a less-than-delightful issue (we reported on these last year). A bufferbloat is the proliferation of more and more buffering of IP packets in routers, switches, modems, and other devices that connect both users to the Internet and different parts of the Internet together. Having packets stuck in buffers unnecessarily means communication slows down. Van Jacobson, creator of the TCP congestion control mechanisms, and Kathleen Nichols now propose a general purpose solution to the bufferbloat problem.
In their paper, Nichols and Jacobson point out the difference between a good and bad queue. A good queue consists of a number of buffered packets that come in faster than the device in question can send them on their way. A good queue quickly drains as packets are transmitted. Such queues are necessary to smooth over the inherent bursts of arriving packets at bottlenecks in the network. Such bottlenecks can be between a fast LAN and a slower Internet connection, between a 1Gbps Ethernet link and a 100Mbps one, between a wired and a wireless network, and so on. But without buffering, burst can't be accommodated, which makes it impossible to make use of the full capacity of a given network link.
A bad queue, on the other hand, is filled up at the same rate as packets are transmitted, so the queue never empties. In its steady state, the TCP protocol will release more packets as the reception of earlier packets is acknowledged. At this point, a queue at the bottleneck between the sender and the receiver will become a standing queue—filling up and draining at the same rate to stay the same size.