From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 4F8283B29E for ; Thu, 23 Nov 2017 02:54:44 -0500 (EST) Received: from [192.168.250.101] ([134.76.241.253]) by mail.gmx.com (mrgmx002 [212.227.17.190]) with ESMTPSA (Nemesis) id 0M23zf-1fAYgr2jwR-00u4KI; Thu, 23 Nov 2017 08:54:42 +0100 Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) From: Sebastian Moeller In-Reply-To: Date: Thu, 23 Nov 2017 08:54:41 +0100 Cc: Cake List Content-Transfer-Encoding: quoted-printable Message-Id: <5F0EF936-563C-48AB-8099-9621E5FBF559@gmx.de> References: <1511309382-24060-1-git-send-email-dave.taht@gmail.com> To: =?utf-8?Q?Dave_T=C3=A4ht?= X-Mailer: Apple Mail (2.3273) X-Provags-ID: V03:K0:hmK1GLg8zCUxWQPA0E/telvO3ryqS6IIslID+eMu1CAlwdcd2B5 F2sCpJMvp1yCXILUSa4h2B0iI7mLaEbuxF5y7RO36OMdrhtOrg0RukboIhQlcJ9me1NB+Lj APsBmvvCVL2cfbIU6Qnk82hhi+XaBOSqHEfF5a/2y5doB1YvgEZfa/PP0Z+iTzJLxADXuSW V/Eok7oBsItiSCISAMpCg== X-UI-Out-Filterresults: notjunk:1;V01:K0:7dV3Z3e2DtU=:FUPwv6SGz/kw0OOow/SDl/ KcwaE7uuUqooZsfB92AOHMJLWPPrx1uKORglPk9tsPi+qftcxPPfqjgd7famnGo3UPY1NbmP+ G64KC40lnwKzsbi9QRlnPaCZnm2O/hfNktz4sQ4sMt8cTNr3UzvNAb5T1wUOTa3Rxg7q/OV94 MATvruJYY1HT9D9xnaVOQU8uUD6ccrmWrCzhQsoMhorTLANPDeA72dNiGTFuHIDfBn7WZCu1n o9uvGEyTu0TKEfKOK6zi+1fpo0i4NCjmGqW9TgQUhrx3h9Q3c4m6eEl3ifLjzrq+3giM/46rH b5sHPc85ADBPCEg3Tv55KH7ApEKpD2fpeGrqxEeOH/QyIQ9SB6Qv6POI4o26b0dT3Ktwu8o2l AJwvpAvmKTlu9txL512Tb7ni0TquGJ5mzi5eImUovCOfDWV1nWaVyyR5YWupD3V3MJ0MM0x3G fSLReP1obH1eLU2b62Akn7cZxtodPf6YpE6IAjWznObvv9JLBnMM0KZNwWJo2dFLTxfFa4KBn m2QGNlt+rjA1rdx/RiJ7R25qLqLnbY11s2px9AOhLkC6JXAKeYj9VWox5hxT9Oj3z+OaqpKky 3SGZHHjcu/Q/dkZgB5Nizet1DcSHKSEPlMXpdX1KBvGX0USR5A/a2lZupRsFeKrYLcWuHoxMr 0Kh03Foy6Hw2Kvvjh+khJ/Jtuq0jbDElfBsIGR5K1d7nNxJK+Y9uax9aTrXNun/U755zH+N+I HuAddJx0ez5u18uMjQGCPYdItJDBaS8e7P/YrM6raUFqEDufQ4ZPLiMzjxL4LTYtCDdF0dyT5 8O9RQh06NiZuYnN5W2Vh+VIvPVerOyGJS+MKbkSXf7Fwanl7Rs= Subject: Re: [Cake] [PATCH 0/3] Add Common Applications Kept Enhanced (sch_cake) qdisc X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Nov 2017 07:54:44 -0000 Hi Dave, > On Nov 22, 2017, at 19:03, Dave Taht wrote: >=20 > at what commit it worked properly? That is a good question, I will need to research that (and I also should = consider the possibilirty that maybe this issue is more related to my = ubuntu 16.4 LTS's Linux kernel: work-horse 4.10.0-38-generic = #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 x86_64 x86_64 x86_64 = GNU/Linux). Now it shows that I am quite a git novice, but I guess "git = bisect" should be my friend here, assuming I can divine a initial good = commit.. For that could you help me out with which command I need to use = to "checkout/rewind to" a specific git commit, so I can easily confirm I = start with a known good state? You might be able to tell this is all new territory for me, so it might = take longer than I would wish... Best Regards >=20 > On Wed, Nov 22, 2017 at 3:02 AM, Sebastian Moeller = wrote: >> Hi All, >>=20 >> Tl;dr: Automatic accounting of the kernel added dev->hard_header_len = seems currently broken at least in the cobalt branch... >>=20 >>=20 >> as far as I can tell overhead accounting is still busted: >>=20 >>=20 >> user@work-horse:~/CODE/sch_cake$ sudo ../tc-adv/tc/tc qdisc delete = dev eth0 root; sudo ../tc-adv/tc/tc qdisc replace dev eth0 root cake raw = overhead 5; ../tc-adv/tc/tc -s qdisc show dev eth0 >> sudo: unable to resolve host work-horse >> sudo: unable to resolve host work-horse >> qdisc cake 8014: root refcnt 6 unlimited diffserv3 triple-isolate rtt = 100.0ms noatm overhead 19 via-ethernet total_overhead 19 hard_header_len = 14 >> Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) >> backlog 0b 0p requeues 0 >> memory used: 0b of 15140Kb >> capacity estimate: 0bit >> Bulk Best Effort Voice >> thresh 0bit 0bit 0bit >> target 5.0ms 5.0ms 5.0ms >> interval 100.0ms 100.0ms 10.0ms >> pk_delay 0us 0us 0us >> av_delay 0us 0us 0us >> sp_delay 0us 0us 0us >> pkts 0 0 0 >> bytes 0 0 0 >> way_inds 0 0 0 >> way_miss 0 0 0 >> way_cols 0 0 0 >> drops 0 0 0 >> marks 0 0 0 >> ack_drop 0 0 0 >> sp_flows 0 0 0 >> bk_flows 0 0 0 >> un_flows 0 0 0 >> max_len 0 0 0 >>=20 >> user@work-horse:~/CODE/sch_cake$ sudo ../tc-adv/tc/tc qdisc delete = dev eth0 root; sudo ../tc-adv/tc/tc qdisc replace dev eth0 root cake = overhead 5; ../tc-adv/tc/tc -s qdisc show dev eth0 >> sudo: unable to resolve host work-horse >> sudo: unable to resolve host work-horse >> qdisc cake 8015: root refcnt 6 unlimited diffserv3 triple-isolate rtt = 100.0ms raw total_overhead 14 hard_header_len 14 >> Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) >> backlog 0b 0p requeues 0 >> memory used: 0b of 15140Kb >> capacity estimate: 0bit >> Bulk Best Effort Voice >> thresh 0bit 0bit 0bit >> target 5.0ms 5.0ms 5.0ms >> interval 100.0ms 100.0ms 10.0ms >> pk_delay 0us 0us 0us >> av_delay 0us 0us 0us >> sp_delay 0us 0us 0us >> pkts 0 0 0 >> bytes 0 0 0 >> way_inds 0 0 0 >> way_miss 0 0 0 >> way_cols 0 0 0 >> drops 0 0 0 >> marks 0 0 0 >> ack_drop 0 0 0 >> sp_flows 0 0 0 >> bk_flows 0 0 0 >> un_flows 0 0 0 >> max_len 0 0 0 >>=20 >> user@work-horse:~/CODE/sch_cake$ >>=20 >>=20 >> The first seems okay, but the second should not have reported "raw" = but rather total_overhead 5 hard_header_len 14 if I understand the = intention of the overhead keyword correctly. This also affects the = keywords like conservative: >>=20 >> user@work-horse:~/CODE/sch_cake$ sudo ../tc-adv/tc/tc qdisc delete = dev eth0 root; sudo ../tc-adv/tc/tc qdisc replace dev eth0 root cake = conservative; ../tc-adv/tc/tc -s qdisc show dev eth0 >> sudo: unable to resolve host work-horse >> sudo: unable to resolve host work-horse >> qdisc cake 8019: root refcnt 6 unlimited diffserv3 triple-isolate rtt = 100.0ms atm overhead 14 via-ethernet total_overhead 14 hard_header_len = 14 >> Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) >> backlog 0b 0p requeues 0 >> memory used: 0b of 15140Kb >> capacity estimate: 0bit >> Bulk Best Effort Voice >> thresh 0bit 0bit 0bit >> target 5.0ms 5.0ms 5.0ms >> interval 100.0ms 100.0ms 10.0ms >> pk_delay 0us 0us 0us >> av_delay 0us 0us 0us >> sp_delay 0us 0us 0us >> pkts 0 0 0 >> bytes 0 0 0 >> way_inds 0 0 0 >> way_miss 0 0 0 >> way_cols 0 0 0 >> drops 0 0 0 >> marks 0 0 0 >> ack_drop 0 0 0 >> sp_flows 0 0 0 >> bk_flows 0 0 0 >> un_flows 0 0 0 >> max_len 0 0 0 >>=20 >> user@work-horse:~/CODE/sch_cake$ sudo ../tc-adv/tc/tc qdisc delete = dev eth0 root; sudo ../tc-adv/tc/tc qdisc replace dev eth0 root cake raw = conservative; ../tc-adv/tc/tc -s qdisc show dev eth0 >> sudo: unable to resolve host work-horse >> sudo: unable to resolve host work-horse >> qdisc cake 801a: root refcnt 6 unlimited diffserv3 triple-isolate rtt = 100.0ms atm overhead 62 via-ethernet total_overhead 62 hard_header_len = 14 >> Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) >> backlog 0b 0p requeues 0 >> memory used: 0b of 15140Kb >> capacity estimate: 0bit >> Bulk Best Effort Voice >> thresh 0bit 0bit 0bit >> target 5.0ms 5.0ms 5.0ms >> interval 100.0ms 100.0ms 10.0ms >> pk_delay 0us 0us 0us >> av_delay 0us 0us 0us >> sp_delay 0us 0us 0us >> pkts 0 0 0 >> bytes 0 0 0 >> way_inds 0 0 0 >> way_miss 0 0 0 >> way_cols 0 0 0 >> drops 0 0 0 >> marks 0 0 0 >> ack_drop 0 0 0 >> sp_flows 0 0 0 >> bk_flows 0 0 0 >> un_flows 0 0 0 >> max_len 0 0 0 >>=20 >> user@work-horse:~/CODE/sch_cake$ >>=20 >>=20 >> So in other words currently the automatic accounting for the kernel = added hard_header_len seems broken as the raw keyword disables that = functionality. I will try to look deeper into that, but I guess with my = limited C skills this might do more harm than good... >>=20 >> Best Regards >> Sebastian >>=20 >>=20 >>> On Nov 22, 2017, at 01:09, Dave Taht wrote: >>>=20 >>> 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. >>>=20 >>> Example of use on an ISP uplink: >>>=20 >>> tc qdisc add dev eth0 cake bandwidth 20Mbit nat docsis ack-filter >>>=20 >>> Cake can also be used in unlimited mode to drive packets at the = speed >>> of the underlying link. >>>=20 >>> Cake is filled with: >>>=20 >>> * A hybrid Codel/Blue AQM algorithm, =E2=80=9CCobalt=E2=80=9D, 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. >>>=20 >>> There are some features still considered experimental, notably the >>> ingress_autorate bandwidth estimator and cobalt itself. >>>=20 >>> Various versions shipping 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. >>>=20 >>> sch_cake replaces a combination of iptables, tc filter, htb and = fq_codel in >>> the sqm-scripts, with sane defaults and vastly easier configuration. >>>=20 >>> Cake's principal author is Jonathan Morton, with contributions from >>> Kevin Darbyshire-Bryant, Toke H=C3=B8iland-J=C3=B8rgensen, Sebastian = Moeller, >>> Ryan Mounce, Dean Scarff, Guido Sarducci, Nils Andreas Svee, Dave = T=C3=A4ht, and >>> Loganaden Velvindron. >>>=20 >>> Dave Taht (3): >>> pkt_sched.h: add support for sch_cake API >>> Add Common Applications Kept Enhanced (sch_cake) qdisc >>> Add support for building the new cake qdisc >>>=20 >>> include/net/cobalt.h | 152 +++ >>> include/uapi/linux/pkt_sched.h | 58 + >>> net/sched/Kconfig | 11 + >>> net/sched/Makefile | 1 + >>> net/sched/sch_cake.c | 2551 = ++++++++++++++++++++++++++++++++++++++++ >>> 5 files changed, 2773 insertions(+) >>> create mode 100644 include/net/cobalt.h >>> create mode 100644 net/sched/sch_cake.c >>>=20 >>> -- >>> 2.7.4 >>>=20 >>> _______________________________________________ >>> Cake mailing list >>> Cake@lists.bufferbloat.net >>> https://lists.bufferbloat.net/listinfo/cake >>=20 >=20 >=20 >=20 > --=20 >=20 > Dave T=C3=A4ht > CEO, TekLibre, LLC > http://www.teklibre.com > Tel: 1-669-226-2619