From patchwork Sat Sep 7 07:31:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nitin Saxena X-Patchwork-Id: 1323 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C50984592A; Sat, 7 Sep 2024 09:31:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 929014029B; Sat, 7 Sep 2024 09:31:29 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id AD90240281 for ; Sat, 7 Sep 2024 09:31:28 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4877UdTC021767; Sat, 7 Sep 2024 00:31:20 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=pfpt0220; bh=TLeBhOYsWfmhzRmmGNAM8C8 ixUAvIlZqcIQ5vEuwg5c=; b=K36zLDabC9Dgu/NNfcSrmxAQrdsOfzf4PjenU5M Pa7Z6PeikawqBm9IXXXgteaOU4wyhNROzqJdoQXQjNEVbNMuEKsaKdxR2n/lDpHU VjuQU61juEFImnFSWmyA6sHC5kTxSnRaHihvXiVoT+4nkr46gZrcYhyefv1+MhWr 6m8gDXciC8n16aoJEnTJSqV0KvfITVSL5wEnPSvufV7qEkkeSvf3GNwOp8yO/Lng NNnGJJLJNke1MsmT09Y78BFq/Aeft1TQSVJGCwSfjKTukr78jNv19c6TVN7ljdac Ie/mKoG9HQd523yvCL8xrPxkCf0SU3uPKdhSQgYFrB4yF+Q== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 41gddj0j1n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 07 Sep 2024 00:31:20 -0700 (PDT) Received: from DC6WP-EXCH02.marvell.com (10.76.176.209) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Sat, 7 Sep 2024 00:31:19 -0700 Received: from maili.marvell.com (10.69.176.80) by DC6WP-EXCH02.marvell.com (10.76.176.209) with Microsoft SMTP Server id 15.2.1544.4 via Frontend Transport; Sat, 7 Sep 2024 00:31:19 -0700 Received: from cavium-PowerEdge-R640.. (unknown [10.28.36.207]) by maili.marvell.com (Postfix) with ESMTP id 16CD15B697A; Sat, 7 Sep 2024 00:31:16 -0700 (PDT) From: Nitin Saxena To: Jerin Jacob , Kiran Kumar K , Nithin Dabilpuram , Zhirun Yan CC: , Nitin Saxena Subject: [RFC PATCH 0/3] add feature arc in rte_graph Date: Sat, 7 Sep 2024 13:01:05 +0530 Message-ID: <20240907073115.1531070-1-nsaxena@marvell.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-Proofpoint-GUID: 4cembJIeW_Qgc2KLP3F43FAANKihnE-W X-Proofpoint-ORIG-GUID: 4cembJIeW_Qgc2KLP3F43FAANKihnE-W X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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 wheter 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. Nitin Saxena (3): graph: add feature arc support graph: add feature arc option in graph create graph: add IPv4 output feature arc lib/graph/graph.c | 1 + lib/graph/graph_feature_arc.c | 959 +++++++++++++++++++++++ lib/graph/graph_populate.c | 7 +- lib/graph/graph_private.h | 3 + lib/graph/meson.build | 2 + lib/graph/node.c | 2 + lib/graph/rte_graph.h | 3 + lib/graph/rte_graph_feature_arc.h | 373 +++++++++ lib/graph/rte_graph_feature_arc_worker.h | 548 +++++++++++++ lib/graph/version.map | 17 + lib/node/ip4_rewrite.c | 476 ++++++++--- lib/node/ip4_rewrite_priv.h | 9 +- lib/node/node_private.h | 19 +- lib/node/rte_node_ip4_api.h | 3 + 14 files changed, 2325 insertions(+), 97 deletions(-) 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