the problem is that figuring out the right size queue to use is really hard to do
If you have a 1Gb/sec connection across the country, you need to have a large buffer on your machine.
the default buffer sized in the kernel are sized for this sort of thing.
however, if your 1G network is connected to a 1M network, then your server buffer size should be 1/1000 the size to maintain the correct latency, but your desktop has no way of knowing that there is a 1m link somewhere in the middle.
in this situation (1G - 1M - 1G links) you need the routers connecting to the 1M link to have small buffers and drop packets
in practice, things are actually worse than this
you have a laptop (1g) connecting to to your firewall/access point (1G) connecting to your DSL modem (10M or 100M) connecting to the ISP (1M) and similar setup on the other end.
you don't have any control over the buffers on the DSL modem, and the buffers there are much larger than they should be, and genrally not configurable, so you can easily fill them up and generate the high latency.
to work around this, you need to shrink the buffers on the firewall to have it drop packets sooner, or on your laptop to have it not generate the packets.
AQM is needed to have these devices detect that there is a problem and shrink the buffers in response.
everybody knows that the current buffer sizes are far too large, but there isn't a clear answer to the question of what the buffer size should be.
variable link speeds (wireless or cable 'turbo mode') greatly complicate this issue.