Curious. Then the objective of buffering would be to absorb the entire window for each TCP flow. Is this a good thing to do? That will only add more delay, so TCP will use larger windows and you need more buffering... Kind of an arms race between the routers and the hosts to see which can buffer more data.
You usually end up with 64k window with modern systems anyway. Hardly anything uses window scaling bits actively. Obviously by dropping select packets you can keep the window at a more moderate size. Doing this effectively would require the box to regocnize flows which is not feasible at high speeds. (unless you´re caspian sales person :-)
Also, well-behaved TCP implementations shouldn't send a full window worth of data back to back. The only way I can see this happening is when the application at the receiving end stalls and then absorbs all the data buffered by the receiving TCP at once. But then the sending TCP should initiate the congestion avoidance algorithm, IMO.
I didn´t want to imply that the packets would be back to back in the queue but if you have a relatively short path with real latency in order of few tens of milliseconds and introduce extra 1000ms to the path, you have a full window of packets on the same queue. They will not be adjacent to each other but they would be sitting in the same packet memory.
Under normal circumstances, the full window worth of data will be spread out over the entire path with no more than two packets arriving back to back at routers along the way (unless one session monopolizes a link).
This discussion started as a discussion of non-normal circumstances. Not sure if the consensus is that congestion is non-normal. It´s very complicated to agree on metrics that define a "normal" network. Most people consider some packet loss normal and some jitter normal. Some people even accept their DNS to be offline for 60 seconds every hour for a "reload" as normal. Pete