I'll answer this way... The endpoints can use information to slow down as early as possible. That's the whole point of control loop tuning. The fundamental resonance of a control loop depends on its speed of draining and filling the storage element.<br>
<br>
So you want to sample and deliver ASAP two things in a network that is trying to stay in a ballistic state. One is the aggregate instantaneous controlled (by TCP receiver windows and individual application demand) input rate affecting each switch and the other is the buffered amount on a path.<br>
<br>
The two factors are not the same, and buffered amount wants to be minimized. For max throughput you need only be in ballistic-maximum buffering. Which is the phase when the bottleneck buffers always have a packet to send but no more (analogous to double buffering).<br>
<br>
This is a phase in phase space. There can be waves of buffer expansion traveling in the medium at the critical phase boundary, but you don't want to allow a phase transition to backlogged because then the buffers begin to back up and the time to drain adds to the time to recover from sustained descent into colllapse.<br>
<br>
All flow receivers ideally would be receiving the two sampled measures.<br>
<br>
You are right that no action can be taken at a switch... but flow receivers can use earlier sampled measures to decide to take action more quickly to prevent incipient buffer growth.<br>
<br>
Though the situation is different in a highway network, the phase when a jam has developed at an intersection is similar. You want a highway system to operate at the point where no sustained jams exist.<br>
<br>
On May 15, 2014, David Lang <david@lang.hm> wrote:<br>
<br>
Well, if the link isn't congested, why do you need to do anything to the traffic <br>
other than forward it? You have no way of knowing what paths the traffic is <br>
going to follow once it hits the next router, so you don't know which streams <br>
are independent of each other.<br>
<br>
Now, if you are saying that fq_codel can be enhanced to gather stats even when <br>
there is no congestion so that it has a better idea of what to do once <br>
congestion starts, then you may have a point.<br>
<br>
but fq_codel is very happy to run and do basically nothing if there is no <br>
congestion. It doesn't delay things to create a buffer.<br/>