testers wanted for the "cake" qdisc on mainstream platforms
(too old to reply)
Dave Taht
2017-11-23 17:33:41 UTC
Raw Message
It is my hope to get the cake qdisc into the Linux kernel in the next
release cycle. We could definitely use more testers! The version we
have here will compile against almost any kernel on any platform,
dating back as far as 3.10, and has been integrated into the
sqm-scripts and shipped in lede for ages...

But what I'm hoping for is for people to try it against their current
linux kernels on x86, arm, ppc64, arm64, etc hardware, and document
the kernel version, linux distribution, and any anomalies.

To build it you need to have installed your kernel headers, and:

git clone -b cobalt https://github.com/dtaht/sch_cake.git
git clone https://github.com/dtaht/iproute2-cake-next.git
cd sch_cake; make; sudo make install; cd ..
cd iproute2-cake-next; make;
# don't do a make install, instead something like export TC=`pwd`/tc/tc

$TC qdisc add dev your_device root cake bandwidth XXMbit ack-filter

And then pound it flat with whatever traffic types you like. In particular,
getting some videoconferencing and flooding results would be great.

There are a TON of features documented on the man page, several
(ack-filter, wash) are not, as I write.

Please comment via the ***@lists.bufferbloat.net mailing list. THX!

NOTE: flent has gained a lot of new features of late, including
support for the new go based irtt tool, which can measure one way
delay (which is also pretty nifty at the command line)

flent: https://github.com/tohojo/
irtt: https://github.com/peteheist/irtt

From the pending commit message:

Add Common Applications Kept Enhanced (sch_cake) qdisc

sch_cake is intended to squeeze the most bandwidth and lowest
latency out of even the slowest ISP links and routers, while
presenting an API simple enough that even an ISP can configure it.

Example of use on an ISP uplink:

tc qdisc add dev eth0 cake bandwidth 20Mbit nat docsis ack-filter

Cake can also be used in unlimited mode to drive packets at the
speed of the underlying link.

Cake is filled with:

* A hybrid Codel/Blue AQM algorithm, “Cobalt”, tied to an FQ_Codel
derived Flow Queuing system, which autoconfigures based on the bandwidth.
* A unique "triple-isolate" mode (the default) which balances per-flow
and per-host flow FQ even through NAT.
* An integral deficit based shaper with extensive dsl and docsis support
that can also be used in unlimited mode.
* 8 way set associative queuing to reduce flow collisions to a minimum.
* A reasonable interpretation of various diffserv latency/loss tradeoffs.
* Support for washing diffserv for entering and exiting traffic.
* Perfect support for interacting with Docsis 3.0 shapers.
* Extensive support for DSL framing types.
* (New) Support for ack filtering.
- 20 % better throughput at a 16x1 down/up ratio on the rrul test.
* Extensive statistics for measuring, loss, ecn markings, latency variation.

There are some features still considered experimental, notably the
ingress_autorate bandwidth estimator and cobalt itself.

sch_cake replaces a combination of iptables, tc filter, htb and fq_codel in
the sqm-scripts, with sane defaults and vastly easier configuration.

Cake's principal author is Jonathan Morton, with contributions from
Kevin Darbyshire-Bryant, Toke Høiland-Jørgensen, Sebastian Moeller,
Ryan Mounce, Dean Scarff, Guido Sarducci, Nils Andreas Svee, Dave
Täht, and Loganaden Velvindron.
Dave Täht
CEO, TekLibre, LLC
Tel: 1-669-226-2619