[Cake] Cake implementations

Jesper Dangaard Brouer brouer at redhat.com
Fri Nov 22 11:40:08 EST 2019


On Fri, 22 Nov 2019 12:46:18 +0100
Toke Høiland-Jørgensen <toke at redhat.com> wrote:

> "Adam Moffett" <adam at 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



More information about the Cake mailing list