netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Kicinski <kuba@kernel.org>
To: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: netdev@vger.kernel.org, deb.chatterjee@intel.com,
	anjali.singhai@intel.com, namrata.limaye@intel.com,
	tom@sipanda.io, mleitner@redhat.com, Mahesh.Shirshyad@amd.com,
	tomasz.osinski@intel.com, jiri@resnulli.us,
	xiyou.wangcong@gmail.com, davem@davemloft.net,
	edumazet@google.com, pabeni@redhat.com, vladbu@nvidia.com,
	horms@kernel.org, khalidm@nvidia.com, toke@redhat.com,
	victor@mojatatu.com, pctammela@mojatatu.com, Vipin.Jain@amd.com,
	dan.daly@intel.com, andy.fingerhut@gmail.com,
	chris.sommers@keysight.com, mattyk@nvidia.com,
	bpf@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>
Subject: Re: [PATCH net-next v16  00/15] Introducing P4TC (series 1)
Date: Tue, 11 Jun 2024 07:21:07 -0700	[thread overview]
Message-ID: <20240611072107.5a4d4594@kernel.org> (raw)
In-Reply-To: <20240410140141.495384-1-jhs@mojatatu.com>

Since the inevitable LWN article has been written, let me put more
detail into what I already mentioned here:

https://lore.kernel.org/all/20240301090020.7c9ebc1d@kernel.org/

for the benefit of non-networking people.

On Wed, 10 Apr 2024 10:01:26 -0400 Jamal Hadi Salim wrote:
> P4TC builds on top of many years of Linux TC experiences of a netlink
> control path interface coupled with a software datapath with an equivalent
> offloadable hardware datapath.

The point of having SW datapath is to provide a blueprint for the
behavior. This is completely moot for P4 which comes as a standard.

Besides we already have 5 (or more) flow offloads, we don't need
a 6th, completely disconnected from the existing ones. Leaving
users guessing which one to use, and how they interact.

In my opinion, reasonable way to implement programmable parser for
Linux is:

 1. User writes their parser in whatever DSL they want
 2. User compiles the parser in user space
   2.1 Compiler embeds a representation of the graph in the blob
 3. User puts the blob in /lib/firmware
 4. devlink dev $dev reload action parser-fetch $filename
 5. devlink loads the file, parses it to extract the representation
    from 2.1, and passes the blob to the driver
   5.1 driver/fw reinitializes the HW parser
   5.2 user can inspect the graph by dumping the common representation
       from 2.1 (via something like devlink dpipe, perhaps)
 6. The parser tables are annotated with Linux offload targets (routes,
    classic ntuple, nftables, flower etc.) with some tables being left
    as "raw"* (* better name would be great)
 7. ethtool ntuple is extended to support insertion of arbitrary rules
    into the "raw" tables
 8. The other tables can only be inserted into using the subsystem they
    are annotated for

This builds on how some devices _already_ operate. Gives the benefits
of expressing parser information and ability to insert rules for
uncommon protocols also for devices which are not programmable.
And it uses ethtool ntuple, which SW people actually want to use.

Before the tin foil hats gather - we have no use for any of this at
Meta, I'm not trying to twist the design to fit the use cases of big
bad hyperscalers.

  parent reply	other threads:[~2024-06-11 14:21 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-10 14:01 [PATCH net-next v16 00/15] Introducing P4TC (series 1) Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 01/15] net: sched: act_api: Introduce P4 actions list Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 02/15] net/sched: act_api: increase action kind string length Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 03/15] net/sched: act_api: Update tc_action_ops to account for P4 actions Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 04/15] net/sched: act_api: add struct p4tc_action_ops as a parameter to lookup callback Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 05/15] net: sched: act_api: Add support for preallocated P4 action instances Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 06/15] p4tc: add P4 data types Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 07/15] p4tc: add template API Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 08/15] p4tc: add template pipeline create, get, update, delete Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 09/15] p4tc: add template action create, update, delete, get, flush and dump Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 10/15] p4tc: add runtime action support Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 11/15] p4tc: add template table create, update, delete, get, flush and dump Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 12/15] p4tc: add runtime table entry create and update Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 13/15] p4tc: add runtime table entry get, delete, flush and dump Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 14/15] p4tc: add set of P4TC table kfuncs Jamal Hadi Salim
2024-04-10 14:01 ` [PATCH net-next v16 15/15] p4tc: add P4 classifier Jamal Hadi Salim
2024-04-11 14:07 ` [PATCH net-next v16 00/15] Introducing P4TC (series 1) Paolo Abeni
2024-04-11 16:24   ` Jamal Hadi Salim
2024-04-19 12:08     ` Jamal Hadi Salim
2024-04-19 14:23       ` Alexei Starovoitov
2024-04-19 14:33         ` Jamal Hadi Salim
2024-04-19 14:37           ` Alexei Starovoitov
2024-04-19 14:45             ` Jamal Hadi Salim
2024-04-19 14:49               ` Alexei Starovoitov
2024-04-19 14:55                 ` Jamal Hadi Salim
2024-04-19 17:20       ` Paolo Abeni
2024-04-19 18:01         ` Jamal Hadi Salim
2024-04-26 17:12           ` Jamal Hadi Salim
2024-04-26 17:21             ` Paolo Abeni
2024-04-26 17:43               ` Alexei Starovoitov
2024-04-26 18:03                 ` Jamal Hadi Salim
2024-05-20 15:34                   ` Jamal Hadi Salim
2024-05-21 12:35                     ` On the NACKs on P4TC patches Jamal Hadi Salim
2024-05-22 22:19                       ` Jakub Kicinski
2024-05-22 23:03                         ` Jamal Hadi Salim
2024-05-23  0:30                           ` Singhai, Anjali
     [not found]                             ` <MW4PR12MB71927C9E4B94871B45F845DF97F52@MW4PR12MB7192.namprd12.prod.outlook.com>
2024-05-25 16:43                               ` Jain, Vipin
2024-05-28 20:17                                 ` John Fastabend
2024-05-28 22:17                                   ` Singhai, Anjali
2024-05-28 23:01                                     ` Tom Herbert
2024-05-28 23:43                                       ` Chris Sommers
2024-05-29 11:10                                         ` Jamal Hadi Salim
     [not found]                                         ` <CAM0EoMnyn9Bfufar5rv6cbRRTHKCaZ1q-b93T2EWUKcBv_ibNw@mail.gmail.com>
2024-05-29 14:45                                           ` Tom Herbert
2024-05-30 16:59                                             ` Jamal Hadi Salim
2024-05-30 18:16                                               ` Tom Herbert
2024-05-28 23:45                                     ` John Fastabend
2024-05-29  1:55                                       ` IR for Programmable Datapaths [WAS Re: On the NACKs on P4TC patches] Tom Herbert
2024-05-29 11:21                                       ` On the NACKs on P4TC patches Jamal Hadi Salim
2024-05-29 11:22                                         ` Jamal Hadi Salim
     [not found]                                   ` <MW4PR12MB71928072B3524CCC71B191F497F22@MW4PR12MB7192.namprd12.prod.outlook.com>
2024-05-29  1:44                                     ` Jain, Vipin
2024-05-23  0:44                           ` Chris Sommers
     [not found]                           ` <SN6PR17MB211069668AF4C8031B116B9D96EB2@SN6PR17MB2110.namprd17.prod.outlook.com>
2024-05-23  0:54                             ` Tom Herbert
2024-05-23  1:13                               ` DSL vs low level language WAS(Re: " Jamal Hadi Salim
2024-05-23  2:29                                 ` Chris Sommers
2024-05-23  3:34                                   ` Tom Herbert
2024-05-24 16:50                                     ` Tom Herbert
2024-05-24 18:45                                       ` Jamal Hadi Salim
2024-05-24 22:36                                       ` Chris Sommers
2024-06-11 14:21 ` Jakub Kicinski [this message]
2024-06-11 15:10   ` [PATCH net-next v16 00/15] Introducing P4TC (series 1) Jamal Hadi Salim
2024-06-11 15:33     ` Jakub Kicinski
2024-06-11 15:53       ` Jamal Hadi Salim
2024-06-11 16:34         ` Tom Herbert
2024-06-11 17:21           ` John Fastabend
2024-06-11 17:53         ` Jakub Kicinski
2024-06-11 19:13           ` 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=20240611072107.5a4d4594@kernel.org \
    --to=kuba@kernel.org \
    --cc=Mahesh.Shirshyad@amd.com \
    --cc=Vipin.Jain@amd.com \
    --cc=andy.fingerhut@gmail.com \
    --cc=anjali.singhai@intel.com \
    --cc=bpf@vger.kernel.org \
    --cc=chris.sommers@keysight.com \
    --cc=corbet@lwn.net \
    --cc=dan.daly@intel.com \
    --cc=davem@davemloft.net \
    --cc=deb.chatterjee@intel.com \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=jhs@mojatatu.com \
    --cc=jiri@resnulli.us \
    --cc=khalidm@nvidia.com \
    --cc=mattyk@nvidia.com \
    --cc=mleitner@redhat.com \
    --cc=namrata.limaye@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=pctammela@mojatatu.com \
    --cc=toke@redhat.com \
    --cc=tom@sipanda.io \
    --cc=tomasz.osinski@intel.com \
    --cc=victor@mojatatu.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).