Stephen Hemminger <step...@networkplumber.org> writes: > 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.
Awesome, thanks! -Toke