Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
From: Jonathan Morton <chromatix99@gmail.com>
To: Justin Kilpatrick <justin@althea.net>
Cc: cake@lists.bufferbloat.net
Subject: Re: [Cake] Fighting bloat in the face of uncertinty
Date: Sun, 8 Sep 2019 02:09:50 +0300	[thread overview]
Message-ID: <2825CE14-2109-4580-A086-9701F4D3ADF0@gmail.com> (raw)
In-Reply-To: <ac3db996-6769-4e38-b19b-eaa08ac40cd5@www.fastmail.com>

> On 8 Sep, 2019, at 1:42 am, Justin Kilpatrick <justin@althea.net> wrote:
> 
> I'm using Cake on embedded OpenWRT devices. You probably saw this video on the list a month or two ago. 
> 
> https://www.youtube.com/watch?v=G4EKbgShyLw

I haven't actually watched that one yet...

> Anyways up until now I've left cake totally untuned and had pretty great results. But we've finally encountered a scenario where untuned Cake allowed for unacceptable bufferbloat on a link.
> 
> Hand configuration in accordance with the best practices provided in the RFC works out perfectly, but I need a set of settings I can ship with any device with the expectation that it will be used and abused in many non-standard situations. Producing non-optimal outcomes is fine, producing dramatically degraded outcomes is unacceptable. 

What was the scenario that gave you trouble?

I note that Cake is not defined in an RFC.  Were you referring to a Codel RFC?  Cake is a bit more sophisticated, with the aim of making it easier to configure.

> Which leads to a few questions
> 
> 1) What happens if the target is dramatically too low? 
> 
> Most of our links can expect latency between 1-10ms, but they may occasionally go much longer than that. What are the consequences of having a 100ms link configured with a target of 10ms?

The default 'target' parameter is normally 5ms, which goes with a default 'rtt' and 'interval' parameter of 100ms.

You shouldn't normally need to set 'target' and 'interval' manually, only 'rtt', and there are various keywords to assist with choosing an appropriate 'rtt'.  The default of 100ms is provided by the 'internet' keyword, and this should be able to cope reasonably well with paths down to 10ms.  You could also try "regional" which gives you tuning for 30ms, or "metro" which gives you 10ms, with good behaviour on paths within about an order of magnitude of that.

Remember, it's the path RTT that matters for this, not the link itself.

Should the bandwidth setting correspond to a serialisation delay per packet that approaches the 'target' implied by the above, 'target' will automatically be tuned to avoid the nasty effects that might cause - *unless* you manually override it.  So don't do that.

ECN enabled flows should not easily notice an 'rtt' setting that's too small.  RFC-3168 compliant transports only care about how many RTTs contain at least one CE mark.  Non-ECN flows may see elevated packet loss, however, and thus more retransmissions, but the same congestion control behaviour.  Cake protects these flows from experiencing "tail loss" which could lead to an RTO that the end-user would notice.

> 2) If interval is dramatically unpredictable is it best to err on the side of under or over estimating?
> 
> The user may select an VPN/exit server of their own choosing, the path to it over the network may change or the exit may be much further away. Both 10ms and 80ms would be sane choices of target depending on factors that may change on the fly.

Generally the default 'rtt' of 100ms is suitable for generic Internet paths, including nearby 10ms hops and 500ms satellite-linked islands.  The default 5ms target actually puts a floor on the minimum effective RTT that the marking schedule has to cope with.  There's also a good chance that the "hystart" algorithm in CUBIC will drop it out of slow-start on very short-RTT paths before the AQM triggers.

 - Jonathan Morton


  reply	other threads:[~2019-09-07 23:09 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-07 22:42 Justin Kilpatrick
2019-09-07 23:09 ` Jonathan Morton [this message]
2019-09-07 23:31   ` Justin Kilpatrick
2019-09-07 23:42     ` Jonathan Morton
2019-09-08  0:03       ` Justin Kilpatrick
2019-09-08  0:59         ` Jonathan Morton
2019-09-08 14:29           ` Justin Kilpatrick
2019-09-08 17:27             ` Jonathan Morton
2019-09-16 10:21               ` [Cake] cake memory consumption Sebastian Gottschall
2019-09-16 12:00                 ` Dave Taht
2019-09-16 12:51                   ` Dave Taht
2019-09-16 13:31                     ` Sebastian Gottschall
2019-09-16 13:22                   ` Sebastian Gottschall
2019-09-16 13:28                     ` Justin Kilpatrick
2019-09-16 13:39                       ` Jonathan Morton
2019-09-16 13:54                         ` Sebastian Gottschall
2019-09-16 14:06                           ` Jonathan Morton
2019-09-17  5:10                             ` Sebastian Gottschall
2019-09-16 13:47                       ` Sebastian Gottschall
2019-09-16 12:08                 ` Toke Høiland-Jørgensen
2019-09-16 13:25                   ` Sebastian Gottschall
2019-09-16 14:01                     ` Toke Høiland-Jørgensen
2019-09-17  5:06                       ` Sebastian Gottschall
2019-09-17  5:21                       ` Sebastian Gottschall
2019-09-17  5:31                       ` Sebastian Gottschall
2019-09-17  9:21                         ` Jonathan Morton
2019-09-17  9:55                           ` Sebastian Gottschall
2019-09-17  5:33                       ` Sebastian Gottschall
2019-09-17  9:40                         ` Toke Høiland-Jørgensen
2019-09-18  7:19                           ` Sebastian Gottschall
2019-09-18  9:53                             ` Toke Høiland-Jørgensen
2019-09-18  9:57                               ` Sebastian Gottschall
2019-09-18 10:22                                 ` Toke Høiland-Jørgensen
2019-10-03 17:52               ` [Cake] Fighting bloat in the face of uncertinty Justin Kilpatrick
2019-10-03 18:41                 ` Dave Taht
2019-10-03 19:04                 ` Jonathan Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/cake.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2825CE14-2109-4580-A086-9701F4D3ADF0@gmail.com \
    --to=chromatix99@gmail.com \
    --cc=cake@lists.bufferbloat.net \
    --cc=justin@althea.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox