From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6245A4592A; Sat, 7 Sep 2024 09:37:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 19AB640614; Sat, 7 Sep 2024 09:37:15 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 1C1294028F for ; Sat, 7 Sep 2024 09:37:13 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4876r9ib004492; Sat, 7 Sep 2024 00:37:11 -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=Kghhzd5IUic6af3x8kQ0zlJgpFd32Y5e6taR7Tb oyxpO3JezTfgVeHEMjsOYEMGD/Ddl9FRnEvGBEYZOch+PT+ReGGjHIGxULPRAUSp rCgfCQab+8MYGBjybGmokCmgT7aOj3AjOq1vhox1ojoK3J1ot/bhn2U+xnGdfUyX 9RA+V/VQPUzfA/dlDWAUIRV00LPjFi2nYqSQ/pdQbfjo94Px53orDFjc1BveHzaW WIcPwgtCZ+RUOlxmEHCSSm46LRvdncdquGWGZnB6W19mhWyXy6daJDroph6vhIiE MbyUNhKwWj+mTzzCQGZNjO7TOkFAkUhYhKJ0F7PQBGmRtaw== Received: from dc6wp-exch02.marvell.com ([4.21.29.225]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 41gdty8g6a-20 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 07 Sep 2024 00:37:10 -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:37:10 -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:37:10 -0700 Received: from cavium-PowerEdge-R640.. (unknown [10.28.36.207]) by maili.marvell.com (Postfix) with ESMTP id 1739F25FB26; Sat, 7 Sep 2024 00:05:04 -0700 (PDT) From: Nitin Saxena To: Jerin Jacob , Kiran Kumar K , Nithin Dabilpuram , Zhirun Yan CC: Subject: [RFC PATCH 0/3] add featur arc in rte_graph Date: Sat, 7 Sep 2024 12:34:46 +0530 Message-ID: <20240907070503.1529918-1-nsaxena@marvell.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Proofpoint-GUID: RfN1DCWZ48rhuUNDWvsuvzs8MhbCEEHA X-Proofpoint-ORIG-GUID: RfN1DCWZ48rhuUNDWvsuvzs8MhbCEEHA 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 -- 2.43.0