Cake - FQ_codel the next generation
 help / color / mirror / Atom feed
From: Pete Heist <pete@heistp.net>
To: Cake List <cake@lists.bufferbloat.net>
Subject: [Cake] the Cake stalemate
Date: Tue, 19 Jun 2018 11:31:57 +0200	[thread overview]
Message-ID: <B2B34613-D0FA-4A64-942E-213F40E9052E@heistp.net> (raw)

Whether or not it helps with the upcoming talk or future plans, I’m thinking about the most recent experience with trying to upstream Cake and how to break the stalemate.

Cake stretches (arguably breaks) what qdiscs were designed for, which, correct me if I’m wrong, is what caused a lot of the pushback. I’m thinking of NAT support, ingress mode, host isolation, diffserv modes, and ack filtering, at a minimum. Each of those things can be useful in one case or another both individually and together, as evidenced by a satisfied user base. But when upstreaming I think each got a response with some variation on “no swimming in my bathtub.”

It seems that some would rather see Cake broken into pieces, and yet Dave points out that what makes Cake useful is the ability to easily address some common real world scenarios from one place:

> On Jun 19, 2018, at 3:46 AM, Dave Taht <dave.taht@gmail.com> wrote:
> 
> One of cake's "minor" features is the *perfect* defeat of the htb
> based shaper in cable modems. If you know the set-rate on the modem,
> you just set it to the same thing and get vastly superior performance to
> docsis 3.1, pie, or the sqm-scripts.

Some of its functionality is painful to implement using separate qdiscs, iptables rules, misc kernel modules, etc. So Cake is something useful that can’t be delivered to the world because of something like an impedance mismatch. There’s something wrong here, right? I’m just asking the question, what is it:

1) Should we accept qdiscs and Linux networking as they are and work within their borders?

or

2) Are there problems with the qdisc architecture or improvements from our experience that we can suggest for Linux networking that would help?

Or some combination?

Thoughts on this:

- The need to use an IFB device to control the ingress queue seems cumbersome, and that one should be able to control both the egress and ingress queues with one qdisc and one device, since egress and ingress traffic can be related (say for half-duplex devices).

- And let’s say you wanted to try to control the queue of a half-duplex physical layer with varying, asymmetrical rates and airtime considerations like WiFi. That would be a real challenge within the qdisc architecture. Realistically, you’d have to write a driver for every device that exists, right? It seems that situation could be better.

- Is there a right way to implement host isolation with NAT support?

- Just as a brainstorm, if I understand it right, qdiscs and tc live outside of the netfilter framework and within iproute2. Wouldn’t it have more conceptual integrity if netfilter and iproute2 were integrated? I’m thinking of a modular architecture that regardless of whether you queue, route, filter, prioritize, etc, you work in the same space. Or if that sounds like mayhem, then at least I question, does queueing belong with routing?

- Related: instead of a qdisc, could Cake rather be written as a netfilter module or series of modules with a common configuration utility?

I’m writing a bit beyond my experience here and those who’ve written a qdisc could surely have better ideas on what the path forward is…


             reply	other threads:[~2018-06-19  9:31 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-19  9:31 Pete Heist [this message]
2018-06-19  9:55 ` Toke Høiland-Jørgensen
2018-06-19 10:04   ` Pete Heist
2018-06-19 11:32   ` Jonathan Morton
2018-06-19 11:54     ` Toke Høiland-Jørgensen
2018-06-19 12:26       ` Pete Heist
2018-06-19 13:41         ` Kevin Darbyshire-Bryant
2018-06-19 14:48           ` Pete Heist
2018-06-19 16:24             ` Dave Taht
2018-06-19 20:14               ` Pete Heist
2018-06-19 20:35                 ` Jonathan Morton
2018-06-19 21:48                   ` Dave Taht
2018-06-19 23:41                     ` Sebastian Moeller
2018-06-19 22:34                   ` Pete Heist
2018-06-19 23:38                   ` Sebastian Moeller
2018-06-20  3:36                     ` Jonathan Morton
2018-06-20  4:34                       ` Sebastian Moeller
2018-06-19 12:08     ` Pete Heist

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=B2B34613-D0FA-4A64-942E-213F40E9052E@heistp.net \
    --to=pete@heistp.net \
    --cc=cake@lists.bufferbloat.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