From: Jesper Dangaard Brouer <brouer@redhat.com>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>
Cc: Adam Moffett <adam@plexicomm.net>,
cake@lists.bufferbloat.net, brouer@redhat.com
Subject: Re: [Cake] Cake implementations
Date: Fri, 22 Nov 2019 17:40:08 +0100 [thread overview]
Message-ID: <20191122174008.3128f5d2@carbon> (raw)
In-Reply-To: <878so85e2d.fsf@toke.dk>
On Fri, 22 Nov 2019 12:46:18 +0100
Toke Høiland-Jørgensen <toke@redhat.com> wrote:
> "Adam Moffett" <adam@plexicomm.net> writes:
>
> >>>
> >>> Are there any commercial products already using Cake?
> >>
> >>Evenroute, eero, ubnt top that list. Evenroute's implementation is
> >>superb, the first one that used active line measurements to handle
> >>"sag". Anything derived from openwrt (somewhere between 10-30% of the
> >>home router market). I'm not sure if preseem is using it or not.
> >>dd-wrt. Most other things doing "SQM" are doing it via htb + fq_codel.
> >>
> >>
> > An idea which was floated was to experiment with routing ISP
> > customer traffic through a Linux server using cake to improve
> > customer experience. Basically like Preseem. My colleague has
> > toyed with it a bit in small test cases and was impressed with the
> > outcomes.
> >
> > He's looked closer than I have, but I'm trying to picture how his
> > idea would scale. I believe I'm seeing a CLI tool for configuring
> > policies. It seems like we'd have to create a middle layer to
> > create/update policies for customer's IP address based on
> > information obtained from our AAA and CRM systems. I can picture
> > some shapes that might take, but I think it would ultimately have
> > to revolve around scripting the tc command. There would be
> > thousands of policies and a policy would be created/updated
> > whenever a subscriber reconnects (e.g. when a DHCP lease renews or
> > a RADIUS auth event happens or similar).
>
> I know several ISPs that do this (route traffic through a Linux box and
> shape there). This deployment mode has not been the primary focus of
> CAKE, though; the "standard" way to do it is with HTB+FQ-CoDel, which
> allows you to set up arbitrarily complex configurations on a single
> interface.
Yes, I worked for an ISP back in 2005, that route traffic through a
Linux box and does shaping. There were a number of scalabilities
issues, that we fixed (upstream) and also Open Sources components for
others to reuse.
I did a public talk in 2008 about how we made it scale:
http://people.netfilter.org/hawk/presentations/osd2008/osd2008_iptables_rules_JesperDangaardBrouer.pdf
This was before Codel and even-before Bufferbloat was coined/defined.
Our setup was HTB+SFQ, with a shaper per customer. This actually
solved the bufferbloat problem in-practice for people, as SFQ gave each
end-user 128 queues.
Today I would not use iptables for this. Instead I would use BPF or
nftables 'set' infrastructure.
> This can also be made to scale, but there's a central qdisc
> lock in Linux that you have to get around to scale to multiple cores.
> Fortunately, Jesper has already solved this particular issue:
>
> https://github.com/netoptimizer/xdp-cpumap-tc
The central qdisc TX lock is a major scalability issue. But I've
solved in above link, via XDP and TC. This actually runs in production
at an ISP.
> > Should we even pursue this idea?
>
> In my own totally non-biased opinion: Yes! :)
It would be great.
> > Although most staff who would touch this will have studied programming
> > in college, I would not qualify any of us as "programmers" per se. My
> > biggest concern would be hitting a service affecting problem that we
> > can't solve.
>
> One way to go about this would be to open source the entire solution.
> There are already bits and pieces available as open source (such as
> Jesper's repository above, and sqm-scripts[0]) that you can build on,
> and this way you could enlist community help to solve any issues with
> the Linux side. You'd still need to get the data from your internal
> systems, of course, but you could define a simple configuration format
> that was part of the open source code; then you'll just need to write a
> script that grabs customer info from your CRM and outputs the config
> format...
Yes, this is the advantage of Open Source! :-)
If you create this as Open Source, then feel free to reach out to me
directly. And I know of several other people (working at ISPs) that
would likely be interested in collaborating.
As Toke wrote, you can still keep your CRM system proprietary and
closed-source, we don't care anyhow ;-)
> > Second concern is that many of our equipment vendors already use
> > Linux. Even Cisco now in some products. Maybe we'll waste our time
> > trying to roll our own solution and then find that a software update
> > from a vendor next year gives us everything we needed anyway.
I would not hold my breath... and if it does come as a software
upgrade, you can expect to pay plenty for it...
Maybe I'm the wrong guy to ask, but I really think it is straight
forward to implement an ISP Linux router with per customer handling.
All the components seems avail as Open Source. (There do seem to be a
lack around a DHCP server that can handle this well).
> This would be great, of course, and do go and bug your vendors to
> solve this problem! Note, however, that just because a system is
> running Linux on the control plane, it may be using a
> hardware-offloaded data plane that does not have any of the
> bufferbloat mitigation features (unless the vendor specifically
> implemented them). I'm hoping that *eventually* these things will be
> ubiquitous across the industry, but thus far this has seemed to be an
> "any decade now" kind of proposition :/
I would prefer, not to waste time on creating bugs for your vendor, but
instead actually have the ability to fix the issue myself, or hire some
Linux consultant that can...
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
prev parent reply other threads:[~2019-11-22 16:40 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-21 21:05 Adam Moffett
2019-11-21 21:53 ` Dave Taht
2019-11-22 11:07 ` Adam Moffett
2019-11-22 11:46 ` Toke Høiland-Jørgensen
2019-11-22 12:09 ` Justin Kilpatrick
2019-11-22 12:59 ` Toke Høiland-Jørgensen
2019-11-22 13:33 ` Adam Moffett
2019-11-22 14:26 ` Jonathan Morton
2019-11-22 14:33 ` Toke Høiland-Jørgensen
2019-11-22 16:40 ` Jesper Dangaard Brouer [this message]
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=20191122174008.3128f5d2@carbon \
--to=brouer@redhat.com \
--cc=adam@plexicomm.net \
--cc=cake@lists.bufferbloat.net \
--cc=toke@redhat.com \
/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