[Cerowrt-devel] [Bloat] fq_codel is two years old
David P. Reed
dpreed at reed.com
Fri May 16 10:21:13 EDT 2014
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.
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.
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).
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.
All flow receivers ideally would be receiving the two sampled measures.
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.
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.
On May 15, 2014, David Lang <david at lang.hm> wrote:
Well, if the link isn't congested, why do you need to do anything to the traffic
other than forward it? You have no way of knowing what paths the traffic is
going to follow once it hits the next router, so you don't know which streams
are independent of each other.
Now, if you are saying that fq_codel can be enhanced to gather stats even when
there is no congestion so that it has a better idea of what to do once
congestion starts, then you may have a point.
but fq_codel is very happy to run and do basically nothing if there is no
congestion. It doesn't delay things to create a buffer.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Cerowrt-devel