From: Vlad Buslov <vladbu@nvidia•com>
To: Victor Nogueira <victor@mojatatu•com>
Cc: <jhs@mojatatu•com>, <xiyou.wangcong@gmail•com>,
<jiri@resnulli•us>, <davem@davemloft•net>, <edumazet@google•com>,
<kuba@kernel•org>, <pabeni@redhat•com>, <netdev@vger•kernel.org>,
<mleitner@redhat•com>, <horms@kernel•org>,
<pctammela@mojatatu•com>, <kernel@mojatatu•com>
Subject: Re: [PATCH net-next v2 0/3] net/sched: Introduce tc block ports tracking and use
Date: Mon, 21 Aug 2023 22:07:48 +0300 [thread overview]
Message-ID: <875y586whs.fsf@nvidia.com> (raw)
In-Reply-To: <20230819163515.2266246-1-victor@mojatatu.com>
On Sat 19 Aug 2023 at 13:35, Victor Nogueira <victor@mojatatu•com> wrote:
> __context__
> The "tc block" is a collection of netdevs/ports which allow qdiscs to share
> match-action block instances (as opposed to the traditional tc filter per
> netdev/port)[1].
>
> Example setup:
> $ tc qdisc add dev ens7 ingress block 22
> $ tc qdisc add dev ens8 ingress block 22
>
> Once the block is created we can add a filter using the block index:
> $ tc filter add block 22 protocol ip pref 25 \
> flower dst_ip 192.168.0.0/16 action drop
>
> A packet with dst IP matching 192.168.0.0/16 arriving on the ingress of
> either ens7 or ens8 is dropped.
>
> __this patchset__
> Up to this point in the implementation, the block is unaware of its ports.
> This patch fixes that and makes the tc block ports available to the
> datapath as well as the offload control path (by virtue of the ports being
> in the tc block structure).
Could you elaborate on offload control path? I guess I'm missing
something here because struct flow_cls_offload doesn't seem to include
pointer to the parent tcf_block instance.
>
> For the datapath we provide a use case of the tc block in an action
> we call "blockcast" in patch 3. This action can be used in an example as
> such:
>
> $ tc qdisc add dev ens7 ingress block 22
> $ tc qdisc add dev ens8 ingress block 22
> $ tc qdisc add dev ens9 ingress block 22
> $ tc filter add block 22 protocol ip pref 25 \
> flower dst_ip 192.168.0.0/16 action blockcast
>
> When a packet(matching dst IP 192.168.0.0/16) arrives on the ingress of any
> of ens7, ens8 or ens9 it will be copied to all ports other than itself.
> For example, if it arrives on ens8 then a copy of the packet will be
> "blockcasted";-> to both ens7 and ens9 (unmodified), but not to ens7.
>
> For an offload path, one use case is to "group" all ports belonging to a
> PCI device into the same tc block.
>
> Patch 1 introduces the required infra. Patch 2 exposes the tc block to the
> tc datapath and patch 3 implements datapath usage via a new tc action
> "blockcast".
>
> __Acknowledgements__
> Suggestions from Vlad Buslov and Marcelo Ricardo Leitner made this patchset
> better. The idea of integrating the ports into the tc block was suggested
> by Jiri Pirko.
>
> [1] See commit ca46abd6f89f ("Merge branch 'net-sched-allow-qdiscs-to-share-filter-block-instances'")
>
> Changes in v2:
> - Remove RFC tag
> - Add more details in patch 0(Jiri)
> - When CONFIG_NET_TC_SKB_EXT is selected we have unused qdisc_cb
> Reported-by: kernel test robot <lkp@intel•com> (and horms@kernel•org)
> - Fix bad dev dereference in printk of blockcast action (Simon)
>
> Victor Nogueira (3):
> net/sched: Introduce tc block netdev tracking infra
> net/sched: cls_api: Expose tc block ports to the datapath
> Introduce blockcast tc action
>
> include/net/sch_generic.h | 8 +
> include/net/tc_wrapper.h | 5 +
> net/sched/Kconfig | 13 ++
> net/sched/Makefile | 1 +
> net/sched/act_blockcast.c | 299 ++++++++++++++++++++++++++++++++++++++
> net/sched/cls_api.c | 11 +-
> net/sched/sch_api.c | 79 +++++++++-
> net/sched/sch_generic.c | 40 ++++-
> 8 files changed, 449 insertions(+), 7 deletions(-)
> create mode 100644 net/sched/act_blockcast.c
next prev parent reply other threads:[~2023-08-21 19:12 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-19 16:35 [PATCH net-next v2 0/3] net/sched: Introduce tc block ports tracking and use Victor Nogueira
2023-08-19 16:35 ` [PATCH net-next v2 1/3] net/sched: Introduce tc block netdev tracking infra Victor Nogueira
2023-08-21 19:12 ` Vlad Buslov
2023-08-24 14:05 ` Jamal Hadi Salim
2023-08-19 16:35 ` [PATCH net-next v2 2/3] net/sched: cls_api: Expose tc block ports to the datapath Victor Nogueira
2023-08-23 17:33 ` Marcelo Ricardo Leitner
2023-08-24 14:09 ` Jamal Hadi Salim
2023-08-19 16:35 ` [PATCH net-next v2 3/3] net/sched: act_blockcast: Introduce blockcast tc action Victor Nogueira
2023-08-23 17:58 ` Marcelo Ricardo Leitner
2023-08-24 14:19 ` Jamal Hadi Salim
2023-08-24 14:30 ` Weird sparse error WAS( " Jamal Hadi Salim
2023-08-24 14:41 ` Paolo Abeni
2023-08-24 14:57 ` Jamal Hadi Salim
2023-09-05 9:18 ` Dan Carpenter
2023-08-21 19:07 ` Vlad Buslov [this message]
2023-08-24 13:47 ` [PATCH net-next v2 0/3] net/sched: Introduce tc block ports tracking and use Jamal Hadi Salim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=875y586whs.fsf@nvidia.com \
--to=vladbu@nvidia$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=edumazet@google$(echo .)com \
--cc=horms@kernel$(echo .)org \
--cc=jhs@mojatatu$(echo .)com \
--cc=jiri@resnulli$(echo .)us \
--cc=kernel@mojatatu$(echo .)com \
--cc=kuba@kernel$(echo .)org \
--cc=mleitner@redhat$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=pabeni@redhat$(echo .)com \
--cc=pctammela@mojatatu$(echo .)com \
--cc=victor@mojatatu$(echo .)com \
--cc=xiyou.wangcong@gmail$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox