On Mon, Nov 16, 2020 at 08:39:54PM +0200, Grygorii Strashko wrote:
> 
> 
> On 14/11/2020 21:17, Vladimir Oltean wrote:
> > On Sat, Nov 14, 2020 at 05:56:54AM +0200, Grygorii Strashko wrote:
> > > This patch enables support for ingress broadcast(BC)/multicast(MC) rate 
> > > limiting
> > > in TI AM65x CPSW driver (the corresponding ALE support was added in 
> > > previous
> > > patch) by implementing HW offload for simple tc-flower policer with 
> > > matches
> > > on dst_mac:
> > >   - ff:ff:ff:ff:ff:ff has to be used for BC rate limiting
> > >   - 01:00:00:00:00:00 fixed value has to be used for MC rate limiting
> > > 
> > > Hence tc policer defines rate limit in terms of bits per second, but the
> > > ALE supports limiting in terms of packets per second - the rate limit
> > > bits/sec is converted to number of packets per second assuming minimum
> > > Ethernet packet size ETH_ZLEN=60 bytes.
> > > 
> > > Examples:
> > > - BC rate limit to 1000pps:
> > >    tc qdisc add dev eth0 clsact
> > >    tc filter add dev eth0 ingress flower skip_sw dst_mac 
> > > ff:ff:ff:ff:ff:ff \
> > >    action police rate 480kbit burst 64k
> > > 
> > >    rate 480kbit - 1000pps * 60 bytes * 8, burst - not used.
> > > 
> > > - MC rate limit to 20000pps:
> > >    tc qdisc add dev eth0 clsact
> > >    tc filter add dev eth0 ingress flower skip_sw dst_mac 
> > > 01:00:00:00:00:00 \
> > >    action police rate 9600kbit burst 64k
> > > 
> > >    rate 9600kbit - 20000pps * 60 bytes * 8, burst - not used.
> > > 
> > > Signed-off-by: Grygorii Strashko <grygorii.stras...@ti.com>
> > > ---
> > 
> > I understand this is unpleasant feedback, but don't you want to extend
> > tc-police to have an option to rate-limit based on packet count and not
> > based on byte count?
> 
> Huh.
> I'd be appreciated if you could provide more detailed opinion of how it can 
> look like?
> Sry, it's my first experience with tc.

Same as above, just in packets per second.

tc qdisc add dev eth0 clsact
tc filter add dev eth0 ingress flower skip_sw \
        dst_mac 01:00:00:00:00:00/01:00:00:00:00:00 \
        action police rate 20kpps

> > The assumption you make in the driver that the
> > packets are all going to be minimum-sized is not a great one.
> > I can
> > imagine that the user's policer budget is vastly exceeded if they enable
> > jumbo frames and they put a policer at 9.6 Mbps, and this is not at all
> > according to their expectation. 20Kpps assuming 60 bytes per packet
> > might be 9.6 Mbps, and the user will assume this bandwidth profile is
> > not exceeded, that's the whole point. But 20Kpps assuming 9KB per packet
> > is 1.44Gbps. Weird.
> 
> Sry, not sure I completely understood above. This is specific HW feature, 
> which can
> imit packet rate only. And it is expected to be applied by admin who know 
> what he is doing.

Yes but you're not helping the admin to "know what he's doing" if you're
asking them to translate apples into oranges. A policer that counts
packets is not equivalent to a policer that counts bytes, unless all
packets are guaranteed to be of equal length, something which you cannot
ensure.

> The main purpose is to preserve CPU resource, which first of all affected by 
> packet rate.
> So, I see it as not "assumption", but requirement/agreement which will be 
> reflected
> in docs and works for a specific use case which is determined by presence of:
>  - skip_sw flag
>  - specific dst_mac/dst_mac_mask pair
> in which case rate determines pps and not K/Mbps.
> 
> 
> Also some ref on previous discussion [1] [2]
> [1] https://www.spinics.net/lists/netdev/msg494630.html
> [2] https://lore.kernel.org/patchwork/patch/481285/

ethtool coalescing as a tool to configure a policer makes zero sense.

You are definitely on the right path with the tc-police action. This was
just trying to be constructive feedback that the software implementation
of tc-police needs more work before your hardware could offload its job
in a way that would not violate its semantics.

Reply via email to