All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Herbert <tom@sipanda.io>
To: Simon Horman <simon.horman@corigine.com>
Cc: Jiri Pirko <jiri@resnulli.us>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Felipe Magno de Almeida <felipe@sipanda.io>,
	Jamal Hadi Salim <jhs@mojatatu.com>,
	Linux Kernel Network Developers <netdev@vger.kernel.org>,
	Boris Sukholitko <boris.sukholitko@broadcom.com>,
	Vadym Kochan <vadym.kochan@plvision.eu>,
	Ilya Lifshits <ilya.lifshits@broadcom.com>,
	Vlad Buslov <vladbu@nvidia.com>, Ido Schimmel <idosch@idosch.org>,
	paulb@nvidia.com, Davide Caratti <dcaratti@redhat.com>,
	Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>,
	Amritha Nambiar <amritha.nambiar@intel.com>,
	"Samudrala, Sridhar" <sridhar.samudrala@intel.com>,
	Pedro Tammela <pctammela@mojatatu.com>,
	Eric Dumazet <eric.dumazet@gmail.com>
Subject: Re: [PATCH RFC net-next 0/2] net:sched: Introduce tc flower2 classifier based on PANDA parser in kernel
Date: Wed, 22 Sep 2021 10:28:41 -0700	[thread overview]
Message-ID: <CAOuuhY9NPy+cEkBx3B=74A6ef0xfT_YFLASEOB4uvRn=W-tB5A@mail.gmail.com> (raw)
In-Reply-To: <20210922154929.GA31100@corigine.com>

On Wed, Sep 22, 2021 at 8:49 AM Simon Horman <simon.horman@corigine.com> wrote:
>
> On Wed, Sep 22, 2021 at 07:42:58AM -0700, Tom Herbert wrote:
> > On Tue, Sep 21, 2021 at 9:46 PM Jiri Pirko <jiri@resnulli.us> wrote:
> > >
> > > Wed, Sep 22, 2021 at 06:38:20AM CEST, xiyou.wangcong@gmail.com wrote:
> > > >On Thu, Sep 16, 2021 at 1:02 PM Felipe Magno de Almeida
> > > ><felipe@sipanda.io> wrote:
> > > >>
> > > >> The PANDA parser, introduced in [1], addresses most of these problems
> > > >> and introduces a developer friendly highly maintainable approach to
> > > >> adding extensions to the parser. This RFC patch takes a known consumer
> > > >> of flow dissector - tc flower - and  shows how it could make use of
> > > >> the PANDA Parser by mostly cutnpaste of the flower code. The new
> > > >> classifier is called "flower2". The control semantics of flower are
> > > >> maintained but the flow dissector parser is replaced with a PANDA
> > > >> Parser. The iproute2 patch is sent separately - but you'll notice
> > > >> other than replacing the user space tc commands with "flower2"  the
> > > >> syntax is exactly the same. To illustrate the flexibility of PANDA we
> > > >> show a simple use case of the issues described in [2] when flower
> > > >> consumes PANDA. The PANDA Parser is part of the PANDA programming
> > > >> model for network datapaths, this is described in
> > > >> https://github.com/panda-net/panda.
> > > >
> > > >My only concern is that is there any way to reuse flower code instead
> > > >of duplicating most of them? Especially when you specifically mentioned
> > > >flower2 has the same user-space syntax as flower, this makes code
> > > >reusing more reasonable.
> > >
> > > Exactly. I believe it is wrong to introduce new classifier which would
> > > basically behave exacly the same as flower, only has different parser
> > > implementation under the hood.
> > >
> > > Could you please explore the possibility to replace flow_dissector by
> > > your dissector optionally at first (kernel config for example)? And I'm
> > > not talking only about flower, but about the rest of the flow_dissector
> > > users too.
>
> +1
>
> > Hi Jiri,
> >
> > Yes, the intent is to replace flow dissector with a parser that is
> > more extensible, more manageable and can be accelerated in hardware
> > (good luck trying to HW accelerate flow dissector as is ;-) ). I did a
> > presentation on this topic at the last Netdev conf:
> > https://www.youtube.com/watch?v=zVnmVDSEoXc. FIrst introducing this
> > with a kernel config is a good idea.
>
> Can we drop hyperbole? There are several examples of hardware that
> offload (a subset of) flower. That the current kernel implementation has
> the properties you describe is pretty much irrelevant for current hw
> offload use-cases.

Simon,

"current hw offload use-cases" is the problem; these models offer no
extensibility. For instance, if a new protocol appears or a user wants
to support their own custom protocol in things like tc-flower there is
no feasible way to do this. Unfortunately, as of today it seems, we
are still bound by the marketing department at hardware vendors that
pick and choose the protocols that they think their customers want and
are willing to invest in-- we need to get past this once and for all!
IMO, what we need is a common way to extend the kernel, tc, and other
applications for new protocols and features, but also be able to apply
that method to extend to the hardware which is _offloading_ kernel
functionality which in this case is flow dissector. The technology is
there to do this as programmable NICs for instance are the rage, but
we do need to create common APIs to be able to do that. Note this
isn't just tc, but a whole space of features; for instance, XDP hints
is nice idea for the NIC to provide information about protocols in a
packet, but unless/until there is a way to program the device to pull
out arbitrary information that the user cares about like something
from their custom protocol, then it's very limited utility...

Tom

  reply	other threads:[~2021-09-22 17:29 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-16 20:00 [PATCH RFC net-next 0/2] net:sched: Introduce tc flower2 classifier based on PANDA parser in kernel Felipe Magno de Almeida
2021-09-16 20:00 ` [PATCH RFC net-next 1/2] net: Add PANDA network packet parser Felipe Magno de Almeida
2021-09-16 20:00 ` [PATCH RFC net-next 2/2] net/sched: Add flower2 packet classifier based on flower and PANDA parser Felipe Magno de Almeida
2021-09-22 20:33   ` Marcelo Ricardo Leitner
2021-09-23 13:33     ` Felipe Magno de Almeida
2021-09-22  4:38 ` [PATCH RFC net-next 0/2] net:sched: Introduce tc flower2 classifier based on PANDA parser in kernel Cong Wang
2021-09-22  4:46   ` Jiri Pirko
2021-09-22 14:42     ` Tom Herbert
2021-09-22 15:49       ` Simon Horman
2021-09-22 17:28         ` Tom Herbert [this message]
2021-09-22 18:00           ` Simon Horman
2021-09-22 21:06             ` Tom Herbert
2021-09-22 21:40               ` John Fastabend
2021-09-22 23:51                 ` Tom Herbert
2021-09-23  1:28                   ` John Fastabend
     [not found]                     ` <CAOuuhY-ujF_EPm6qeHAfgs6O0_-yyfZLMryYx4pS=Yd1XLor+A@mail.gmail.com>
2021-09-23  3:25                       ` John Fastabend
2021-09-23  4:34                         ` Tom Herbert
2021-09-23 13:26                         ` Jamal Hadi Salim
2021-09-24  3:55                           ` John Fastabend
2021-09-24 16:21                             ` Tom Herbert
2021-09-24 19:14                               ` John Fastabend
2021-09-26 15:54                             ` Jamal Hadi Salim
2021-09-22 20:25           ` Marcelo Ricardo Leitner
2021-09-22 23:04             ` Tom Herbert

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='CAOuuhY9NPy+cEkBx3B=74A6ef0xfT_YFLASEOB4uvRn=W-tB5A@mail.gmail.com' \
    --to=tom@sipanda.io \
    --cc=amritha.nambiar@intel.com \
    --cc=boris.sukholitko@broadcom.com \
    --cc=dcaratti@redhat.com \
    --cc=eric.dumazet@gmail.com \
    --cc=felipe@sipanda.io \
    --cc=idosch@idosch.org \
    --cc=ilya.lifshits@broadcom.com \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=marcelo.leitner@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=paulb@nvidia.com \
    --cc=pctammela@mojatatu.com \
    --cc=simon.horman@corigine.com \
    --cc=sridhar.samudrala@intel.com \
    --cc=vadym.kochan@plvision.eu \
    --cc=vladbu@nvidia.com \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.