DPDK patches and discussions
 help / color / mirror / Atom feed
From: Nitin Saxena <nsaxena16@gmail.com>
To: dev@dpdk.org
Subject: Feature arc slides
Date: Fri, 3 Jan 2025 20:29:15 +0530	[thread overview]
Message-ID: <CAG6-93z2G2yniUkS_90yRSuMGgO_VZQEK55JwiazAj-3oyh1dQ@mail.gmail.com> (raw)
In-Reply-To: <SJ0PR18MB5111B56B4323FB3DFD147801B6152@SJ0PR18MB5111.namprd18.prod.outlook.com>

[-- Attachment #1: Type: text/plain, Size: 6082 bytes --]

Sending to DPDK community again

Thanks,
Nitin

---------- Forwarded message ---------
From: Nitin Saxena <nsaxena@marvell.com>
Date: Fri, Jan 3, 2025 at 8:11 PM
Subject: RE: [EXTERNAL] [PATCH v6 0/4] add feature arc in rte_graph
To: Jerin Jacob <jerinj@marvell.com>, Kiran Kumar Kokkilagadda
<kirankumark@marvell.com>, Nithin Kumar Dabilpuram
<ndabilpuram@marvell.com>, Zhirun Yan <yanzhirun_163@163.com>, Robin
Jarry <rjarry@redhat.com>, Christophe Fontaine <cfontain@redhat.com>
Cc: dev@dpdk.org <dev@dpdk.org>, Nitin Saxena <nsaxena16@gmail.com>


Hi,



Please find attached slides explaining feature arc concept and its
usage in graph library



I can also present these slides to community to facilitate this patch
series review process



Thanks,

Nitin



From: Nitin Saxena <nsaxena@marvell.com>
Sent: Friday, January 3, 2025 11:36 AM
To: Jerin Jacob <jerinj@marvell.com>; Kiran Kumar Kokkilagadda
<kirankumark@marvell.com>; Nithin Kumar Dabilpuram
<ndabilpuram@marvell.com>; Zhirun Yan <yanzhirun_163@163.com>; Robin
Jarry <rjarry@redhat.com>; Christophe Fontaine <cfontain@redhat.com>
Cc: dev@dpdk.org; Nitin Saxena <nsaxena16@gmail.com>
Subject: [EXTERNAL] [PATCH v6 0/4] add feature arc in rte_graph



Feature arc represents an ordered list of features/protocols at a
given networking layer. It is a high level abstraction to connect
various rte_graph nodes, as feature nodes, and allow packets steering
across these nodes in a generic manner.

Feature arc represents an ordered list of features/protocols at a given

networking layer. It is a high level abstraction to connect various

rte_graph nodes, as feature nodes, and allow packets steering across

these nodes in a generic manner.



Features (or feature nodes) are nodes which handles partial or complete

handling of a protocol in fast path. Like ipv4-rewrite node, which adds

rewrite data to an outgoing IPv4 packet.



However in above example, outgoing interface(say "eth0") may have

outbound IPsec policy enabled, hence packets must be steered from

ipv4-rewrite node to ipsec-outbound-policy node for outbound IPsec

policy lookup. On the other hand, packets routed to another interface

(eth1) will not be sent to ipsec-outbound-policy node as IPsec feature

is disabled on eth1. Feature-arc allows rte_graph applications to manage

such constraints easily



Feature arc abstraction allows rte_graph based application to



1. Seamlessly steer packets across feature nodes based on whether

feature is enabled or disabled on an interface. Features enabled on one

interface may not be enabled on another interface with in a same feature

arc.



2. Allow enabling/disabling of features on an interface at runtime,

so that if a feature is disabled, packets associated with that interface

won't be steered to corresponding feature node.



3. Provides mechanism to hook custom/user-defined nodes to a feature

node and allow packet steering from feature node to custom node without

changing former's fast path function



4. Allow expressing features in a particular sequential order so that

packets are steered in an ordered way across nodes in fast path. For

eg: if IPsec and IPv4 features are enabled on an ingress interface,

packets must be sent to IPsec inbound policy node first and then to ipv4

lookup node.



This patch series adds feature arc library in rte_graph and also adds

"ipv4-output" feature arc handling in "ipv4-rewrite" node.



Changes in v6:

- Rebased to latest main for DPDK-25.03

- Added constructor based feature arc/feature registration

- Changed design to handle fast path synchronization via RCU mechanism

  when any feature is enabled or disabled

- Added feature arc specific mbuf dynamic field to carry feature data

  across nodes

- Added feature arc example in app/graph

- Programming guide and functional test cases in future versions



Nitin Saxena (4):

  graph: add API to override node process function

  graph: add feature arc abstraction

  ip4: add ip4 output feature arc

  app/graph: add custom feature nodes for ip4 output arc



 app/graph/commands.list                  |    6 +

 app/graph/feature.c                      |  141 ++

 app/graph/feature.h                      |   13 +

 app/graph/graph.c                        |    4 +

 app/graph/ip4_output_hook.c              |  169 ++

 app/graph/main.c                         |   15 +-

 app/graph/meson.build                    |    2 +

 app/graph/module_api.h                   |    2 +

 doc/api/doxy-api-index.md                |    2 +

 doc/guides/rel_notes/release_25_03.rst   |   10 +

 lib/graph/graph_feature_arc.c            | 1780 ++++++++++++++++++++++

 lib/graph/graph_private.h                |   15 +

 lib/graph/meson.build                    |    4 +-

 lib/graph/node.c                         |   23 +

 lib/graph/rte_graph_feature_arc.h        |  552 +++++++

 lib/graph/rte_graph_feature_arc_worker.h |  608 ++++++++

 lib/graph/version.map                    |   20 +

 lib/node/ethdev_ctrl.c                   |    8 +

 lib/node/interface_tx_feature.c          |  133 ++

 lib/node/interface_tx_feature_priv.h     |   33 +

 lib/node/ip4_rewrite.c                   |  298 +++-

 lib/node/meson.build                     |    1 +

 lib/node/node_private.h                  |    1 +

 lib/node/rte_node_ip4_api.h              |    4 +

 24 files changed, 3838 insertions(+), 6 deletions(-)

 create mode 100644 app/graph/feature.c

 create mode 100644 app/graph/feature.h

 create mode 100644 app/graph/ip4_output_hook.c

 create mode 100644 lib/graph/graph_feature_arc.c

 create mode 100644 lib/graph/rte_graph_feature_arc.h

 create mode 100644 lib/graph/rte_graph_feature_arc_worker.h

 create mode 100644 lib/node/interface_tx_feature.c

 create mode 100644 lib/node/interface_tx_feature_priv.h



-- 

2.43.0

[-- Attachment #2: dpdk_graph_feature_arc_v1.pdf --]
[-- Type: application/pdf, Size: 757136 bytes --]

  parent reply	other threads:[~2025-01-05 22:07 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-07  7:31 [RFC PATCH 0/3] add feature arc in rte_graph Nitin Saxena
2024-09-07  7:31 ` [RFC PATCH 1/3] graph: add feature arc support Nitin Saxena
2024-09-11  4:41   ` Kiran Kumar Kokkilagadda
2024-10-10  4:42     ` Nitin Saxena
2024-09-07  7:31 ` [RFC PATCH 2/3] graph: add feature arc option in graph create Nitin Saxena
2024-09-07  7:31 ` [RFC PATCH 3/3] graph: add IPv4 output feature arc Nitin Saxena
2024-10-08  8:04 ` [RFC PATCH 0/3] add feature arc in rte_graph David Marchand
2024-10-08 14:26   ` [EXTERNAL] " Nitin Saxena
2024-10-14 11:11   ` Nitin Saxena
2024-10-16  9:24     ` David Marchand
2024-10-16  9:38       ` Robin Jarry
2024-10-16 13:50         ` Nitin Saxena
2024-10-17  7:03           ` Nitin Saxena
2024-10-17  7:50             ` Robin Jarry
2024-10-17  8:32               ` [EXTERNAL] " Christophe Fontaine
2024-10-17 10:56                 ` Nitin Saxena
2024-10-17  8:48               ` [EXTERNAL] " Nitin Saxena
2024-10-08 13:30 ` [RFC PATCH v2 0/5] " Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 1/5] graph: add feature arc support Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 2/5] graph: add feature arc option in graph create Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 3/5] graph: add IPv4 output feature arc Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 4/5] test/graph_feature_arc: add functional tests Nitin Saxena
2024-10-08 13:30   ` [RFC PATCH v2 5/5] docs: add programming guide for feature arc Nitin Saxena
2024-10-09 13:29   ` [PATCH v3 0/5] add feature arc in rte_graph Nitin Saxena
2024-10-09 13:29     ` [PATCH v3 1/5] graph: add feature arc support Nitin Saxena
2024-10-09 13:29     ` [PATCH v3 2/5] graph: add feature arc option in graph create Nitin Saxena
2024-10-09 13:30     ` [PATCH v3 3/5] graph: add IPv4 output feature arc Nitin Saxena
2024-10-09 13:30     ` [PATCH v3 4/5] test/graph_feature_arc: add functional tests Nitin Saxena
2024-10-09 13:30     ` [PATCH v3 5/5] docs: add programming guide for feature arc Nitin Saxena
2024-10-09 14:21     ` [PATCH v3 0/5] add feature arc in rte_graph Christophe Fontaine
2024-10-10  4:13       ` [EXTERNAL] " Nitin Saxena
2024-10-09 17:37     ` Stephen Hemminger
2024-10-10  4:24       ` [EXTERNAL] " Nitin Saxena
2024-10-10 13:31     ` [PATCH v4 " Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 1/5] graph: add feature arc support Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 2/5] graph: add feature arc option in graph create Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 3/5] graph: add IPv4 output feature arc Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 4/5] test/graph_feature_arc: add functional tests Nitin Saxena
2024-10-10 13:31       ` [PATCH v4 5/5] docs: add programming guide for feature arc Nitin Saxena
2024-10-14 14:33       ` [PATCH v5 0/5] add feature arc in rte_graph Nitin Saxena
2024-10-14 14:33         ` [PATCH v5 1/5] graph: add feature arc support Nitin Saxena
2024-10-14 14:33         ` [PATCH v5 2/5] graph: add feature arc option in graph create Nitin Saxena
2024-10-14 14:33         ` [PATCH v5 3/5] graph: add IPv4 output feature arc Nitin Saxena
2024-10-14 14:33         ` [PATCH v5 4/5] test/graph_feature_arc: add functional tests Nitin Saxena
2024-10-14 19:54           ` Stephen Hemminger
2024-10-14 14:33         ` [PATCH v5 5/5] docs: add programming guide for feature arc Nitin Saxena
2025-01-03  6:06         ` [PATCH v6 0/4] add feature arc in rte_graph Nitin Saxena
2025-01-03  6:06           ` [PATCH v6 1/4] graph: add API to override node process function Nitin Saxena
2025-01-03  6:06           ` [PATCH v6 2/4] graph: add feature arc abstraction Nitin Saxena
2025-01-03  6:06           ` [PATCH v6 3/4] ip4: add ip4 output feature arc Nitin Saxena
2025-01-03  6:06           ` [PATCH v6 4/4] app/graph: add custom feature nodes for ip4 output arc Nitin Saxena
     [not found]           ` <SJ0PR18MB5111B56B4323FB3DFD147801B6152@SJ0PR18MB5111.namprd18.prod.outlook.com>
2025-01-03 14:59             ` Nitin Saxena [this message]
2025-01-06  0:15               ` Feature arc slides Stephen Hemminger
2025-01-07 12:37                 ` Nitin Saxena

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=CAG6-93z2G2yniUkS_90yRSuMGgO_VZQEK55JwiazAj-3oyh1dQ@mail.gmail.com \
    --to=nsaxena16@gmail.com \
    --cc=dev@dpdk.org \
    /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).