Hi, I'm getting great success with the "CAKE" qdisc on linux. It appears to use same or lower CPU than say HFSC and seems to work well with a fairly wide variety of network speeds without significant tuning (I'm using it between 330Mbit/s down to 100Kbit/s)

The needs of cake to support it aren't that great. Basically it has a few tunables to the basic qdisc that mostly affect overhead computations, plus some options for bandwidth. The overhead computations are quite similar to some of the existing Qdiscs params, but there are some new options. Finally the classes are fixed and not editable, other than there is a qdisc option to choose from one of several options for the classes (3, 4 or 8 classes)

After that I *think* directing traffic to classes is just the same as for other qdisc types. I'm marking up connmarks and applying those to incoming packets in the mangle table in order to be able to mark in the IFB device. However, I suspect I can ditch my custom support for this with latest shorewall?

One other feature which is useful for cake is that it can read the fwmark on it's own. You give it a mask and this is read from the packet and interpreted as the class to apply to the packet for queuing/policing.

Broadly I've found it very effective and low CPU. Quantum seems to be automatically set and other than I disagree with it's default mapping of TCP DSCP priorities to internal queues (which I've changed as a personal kernel patch) it works really well right out of the box

I also use it in conjunction with iptables NDPI filter which can automatically apply a firewall mark to traffic which is of a specific application type. So I simply maintain a simple text file which maps say "zoom" to a certain packet mark or "bittorrent" to another, etc. Very simple and takes care of 90% of my marking needs (albeit not the first few packets of any connection)


I wanted to add support for cake to shorewall, but a little poking in the code path shows that it's a bit hairy to add another qdisc type. I think I need a bit of support on the best way to go ahead... There are large sections of code protected with IF statements. My thought was to look to break this up a little and move to separate modules for the various qdisc types?

I dunno. I confess I lost my inertia on this a month back and so I'm mentioning more that I would be willing to sponsor some work here if someone wanted to pick it up?

Thanks

Ed W



_______________________________________________
Shorewall-users mailing list
Shorewall-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shorewall-users

Reply via email to