On Fri, 27 Apr 2018 21:57:20 +0200 Toke Høiland-Jørgensen <t...@toke.dk> wrote:
> sch_cake is intended to squeeze the most bandwidth and 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 a cable ISP uplink: > > tc qdisc add dev eth0 cake bandwidth 20Mbit nat docsis ack-filter > > To shape a cable download link (ifb and tc-mirred setup elided) > > tc qdisc add dev ifb0 cake bandwidth 200mbit nat docsis ingress wash > besteffort > > 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 novel "triple-isolate" mode (the default) which balances per-host > and per-flow FQ even through NAT. > * An deficit based shaper, that can also be used in an unlimited mode. > * 8 way set associative hashing to reduce flow collisions to a minimum. > * A reasonable interpretation of various diffserv latency/loss tradeoffs. > * Support for zeroing diffserv markings for entering and exiting traffic. > * Support for interacting well with Docsis 3.0 shaper framing. > * Support for DSL framing types and shapers. > * Support for ack filtering. > * Extensive statistics for measuring, loss, ecn markings, latency variation. > > Various versions baking have been available as an out of tree build for > kernel versions going back to 3.10, as the embedded router world has been > running a few years behind mainline Linux. A stable version has been > generally available on lede-17.01 and later. > > sch_cake replaces a combination of iptables, tc filter, htb and fq_codel > in the sqm-scripts, with sane defaults and vastly simpler configuration. > > Cake's principal author is Jonathan Morton, with contributions from > Kevin Darbyshire-Bryant, Toke Høiland-Jørgensen, Sebastian Moeller, > Ryan Mounce, Guido Sarducci, Dean Scarff, Nils Andreas Svee, Dave Täht, > and Loganaden Velvindron. > > Testing from Pete Heist, Georgios Amanakis, and the many other members of > the c...@lists.bufferbloat.net mailing list. > > Signed-off-by: Dave Taht <dave.t...@gmail.com> > Signed-off-by: Toke Høiland-Jørgensen <t...@toke.dk> > --- > Changelog: > v7: > - Move the target/interval presets to a table and check that only > one is passed. > > v6: > - Identical to v5 because apparently I don't git so well... :/ > > v5: > - Print the SPLIT_GSO flag > - Switch to print_u64() for JSON output > - Fix a format string for mpu option output > > v4: > - Switch stats parsing to use nested netlink attributes > - Tweaks to JSON stats output keys > > v3: > - Remove accidentally included test flag > > v2: > - Updated netlink config ABI > - Remove diffserv-llt mode > - Various tweaks and clean-ups of stats output > man/man8/tc-cake.8 | 632 ++++++++++++++++++++++++++++++++++++++ > man/man8/tc.8 | 1 + > tc/Makefile | 1 + > tc/q_cake.c | 748 +++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 1382 insertions(+) > create mode 100644 man/man8/tc-cake.8 > create mode 100644 tc/q_cake.c Looks good to me, when cake makes it into net-next.