I must say I don't really understand bufferbloat. I only heard of it this week for the first time, and from skimming, my take-away is:
1. Excessive bufferbloat can make even a fast connection seem seem choppy or slow to respond.
2. It really only manifests a problem when your connection is near saturation.
3. I may be wrong.
I recently had my service increased from 25Mbps to 150. I tried the dslreports speed test and got an F for bufferbloat.
I turned on QoS on my RT-N66U/Merlin 378.56_2, and got an A for bufferbloat, but went down from >150Mbps to about 110Mbps.
I suspect, as some have said above, the RT-N66U may not have the horsepower to do QoS at that full speed?
Anyway, I've decided to turn QoS off and enjoy my full speed until I see some problem that I can attribute to bb. Am I being selfish and helping to break the Internet?
Let me try to explain the issue in my own words, rather than with technical mojo:
Initially, the main goal of a network was to transfer a lot of data as fast as possible (which was, not THAT fast at all). Networks weren't always reliable (cut offs, retransmition of lost packets, etc...), the speed of all the elements (starting with the CPUs) wasn't always good enough to keep up. So, at various stages in a network you will have a buffer, which will compensate for temporary loss of connectivity, or the CPU being temporarily unable to keep up. That way, if there is a slowdown on one end, the buffer can compensate by keeping the destination fed. This is identical to what audio streaming does (remember the good old days of Realplayer?).
These days, processing power increased, and the speed at which we can transfer data also increased, so buffers also increased in size, to keep up with all of this. Speed mismatch also increased, when an ISP's 100 Gbps pipe is feeding your 10 Mbps cable connection. Another change occurred over the years: people are now starting to use an increasing number of time-sensitive applications over a network. VoIP and online gaming are the two biggest cases that come to mind. This means that the data sent from point A ends up at various transit points sitting in a buffer, and waits there as the data ahead of it is still being sent. This introduces a delay between the time the data is sent from A, and it reaches B. Too much buffering equals too much delay, which will negatively impact the performance of your VoIP or online gaming.
One way to limit the impact is to reduce the buffer sizes. This will potentially have some drawbacks (potential drop in speed, interrupted flow as there is a temporary hiccup in the connection, etc...).
Another is to ensure that your portion of the pipe is never fully utilized, so there is never any data waiting in the buffer. That's where setting up Adaptive QoS with the speed limited slightly below that of your connection will help.
And another method is to more intelligently manage that buffer, what ends up there, what to send first and what to queue for later. Queue management is what things like Codel do.
All of these have one big cave eat however: it only applies to the portion of the network that YOU control. Buffering occurs at many levels, including (but not limited to):
- The ISP's network, between their uplink and their customers
- The router between the ISP and your WAN
- Your modem
- Your router
- The network card of your computer
- The networking stack of the OS on your computer
One extremely simplified way to explain this:
John has 10 apples, he wants to give them to Lucy. John drinks too much coffee and Lucy just woke up, so she's not as fast as John. Each time Lucy gets an apple, she must count it out loud, so Marc can write it down. A few ways this can be done:
1) John can throw all 10 of them at Lucy, which will miss most of them
2) John can throw them one by one as fast as he can, and if it takes too long for her to put them down, she'll miss some
3) John can put them on a table between both of them as fast as he can, and Lucy picks them up as fast as she can. If she's too slow, no worry - the table will keep them during that time. However, it means she won't be counting them as soon as John has handed them out - there will be a delay between the apple leaving John's hands, and the moment she calls it out loud.
The table here, is the buffer.
(PS: don't quote my post, something in it triggers the forum's spam filter...)