From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp113.ord1c.emailsrvr.com (smtp113.ord1c.emailsrvr.com [108.166.43.113]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by huchra.bufferbloat.net (Postfix) with ESMTPS id 751AB21F35E for ; Fri, 16 May 2014 07:21:17 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp7.relay.ord1c.emailsrvr.com (SMTP Server) with ESMTP id 6F7541B90F3; Fri, 16 May 2014 10:21:16 -0400 (EDT) X-Virus-Scanned: OK Received: by smtp7.relay.ord1c.emailsrvr.com (Authenticated sender: dpreed-AT-reed.com) with ESMTPSA id 787BD1B8C2C; Fri, 16 May 2014 10:21:15 -0400 (EDT) User-Agent: K-@ Mail for Android X-Priority: 3 In-Reply-To: References: <3583FA43-EF5B-42D7-A79C-54C87AA514D5@gmail.com> <5373EEFF.5030407@pollere.com> <1400161663.82913275@apps.rackspace.com> <1400202105.4274862@apps.rackspace.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----PRVIYV7JS94Q087DMYAPQC27JM38F0" Content-Transfer-Encoding: 8bit From: "David P. Reed" Date: Fri, 16 May 2014 10:21:13 -0400 To: David Lang Message-ID: <975c158e-a174-4df9-bc1d-f25a10359209@katmail.1gravity.com> Cc: cerowrt-devel , bloat Subject: Re: [Cerowrt-devel] [Bloat] fq_codel is two years old X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 May 2014 14:21:18 -0000 ------PRVIYV7JS94Q087DMYAPQC27JM38F0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 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 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. ------PRVIYV7JS94Q087DMYAPQC27JM38F0 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit 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@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.
------PRVIYV7JS94Q087DMYAPQC27JM38F0--