From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cong Wang Subject: Re: [PATCH net-next v6] Add Common Applications Kept Enhanced (cake) qdisc Date: Mon, 30 Apr 2018 16:04:38 -0700 Message-ID: References: <20180429213439.7389-1-toke@toke.dk> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Cc: =?UTF-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= , Linux Kernel Network Developers , Cake List To: Dave Taht Return-path: Received: from mail-pf0-f180.google.com ([209.85.192.180]:41379 "EHLO mail-pf0-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753792AbeD3XE7 (ORCPT ); Mon, 30 Apr 2018 19:04:59 -0400 Received: by mail-pf0-f180.google.com with SMTP id v63so7884612pfk.8 for ; Mon, 30 Apr 2018 16:04:59 -0700 (PDT) In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: On Mon, Apr 30, 2018 at 2:27 PM, Dave Taht wrote: > On Mon, Apr 30, 2018 at 2:21 PM, Cong Wang wro= te: >> On Sun, Apr 29, 2018 at 2:34 PM, Toke H=C3=B8iland-J=C3=B8rgensen wrote: >>> sch_cake targets the home router use case and is intended to squeeze th= e >>> most bandwidth and latency out of even the slowest ISP links and router= s, >>> 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 >>> >>> 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 bandwi= dth. >>> * 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 tradeoff= s. >>> * Support for zeroing diffserv markings for entering and exiting traffi= c. >>> * Support for interacting well with Docsis 3.0 shaper framing. >>> * Extensive support for DSL framing types. >>> * Support for ack filtering. >> >> Why this TCP ACK filtering has to be built into CAKE qdisc rather than >> an independent TC filter? Why other qdisc's can't use it? > > I actually have a tc - bpf based ack filter, during the development of > cake's ack-thinner, that I should submit one of these days. It > proved to be of limited use. Yeah. > > Probably the biggest mistake we made is by calling this cake feature a > filter. It isn't. It inspects the payload of each packet and drops packets, therefore it is a filter by definition, no matter how you name it. > > Maybe we should have called it a "thinner" or something like that? In > order to properly "thin" or "reduce" an ack stream > you have to have a queue to look at and some related state. TC filters > do not operate on queues, qdiscs do. Thus the "ack-filter" here is > deeply embedded into cake's flow isolation and queue structures. TC filters are installed on qdiscs and in the beginning qdiscs were queues,for example, pfifo. We already have flow-based filters too (cls_flower),so we can make them work together, although probably it is not straight forward.