Sent from my iPad
On Dec 5, 2019, at 9:03 PM, Stephen Satchell <list@satchell.net> wrote:
For SP-grade routers, there isn't "code" that needs to be added to combat buffer bloat. All an admin has to do is cut back on the number of packet buffers on each interface -- an interface setting, you see.
A common misconception, and disagrees with the research on the topic. Let me describe this conceptually. Think of a file transfer (a streaming flow can be thought of in those terms, as can web pages etc) as four groups of packets - those that have been delivered correctly and therefore don’t affect the window or flow rate, those that have been delivered out of order and therefore reduce the window and might get retransmitted even though they need not be resent, those that are sitting in a queue somewhere and therefore add latency, and those that haven’t been transmitted yet. If I have a large number of sessions transiting an interface, each one is likely to have a packet or two near the head of the queue; after that, it tends to thin out, with the sessions with the largest windows having packets deep in the queue, and sessions with smaller windows not so much. If you reduce the queue depth, it does reduce that deep-in-the-queue group - there is no storage deep in the queue to hold it. What it does, however, is increase any given packet’s probability of loss (loss being the extreme case of delay, and when you reduce delay unintelligently is the byproduct), and therefore the second category of packets - the ones that managed to get through after a packet was lost, and therefore arrived out of order and have some probability of being retransmitted and therefore delivered multiple times. What AQM technologies attempt to do (we can argue about the relative degree of success in different technologies; I’m talking about them as a class) is identify sessions in that deep-in-the-queue category and cause them to temporarily reduce their windows - keeping most of their outstanding packets near the head of the queue. Reducing their windows has the effect of moving packets out of the network buffers (bufferbloat) and reordering queues in the receiving host to “hasn’t been sent yet” in the sending host. That also reduces median latency, meaning that the sessions with reduced windows don’t generally “slow down” - they simply keep less of their data streams in the network with reduced median latency.