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 F3FF145AF3; Wed, 9 Oct 2024 16:21:39 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C2FC6427AB; Wed, 9 Oct 2024 16:21:39 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 4EA4A4279D for ; Wed, 9 Oct 2024 16:21:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1728483697; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dr2tKA0JFAv/xzoS/PPCgdFjMx9ypd5WZ21LcuHZGeg=; b=gm9JBu5PnaZjFO7Ax9SDcpfDD3ROI0OYpbcOK9pB00KT+Bjfvhy4XANZU35eJwHvE2mLvN KBJR9m35O442wikoF5Y8qSy+x92dPW+u5MmUAQofvfjTKq+wkZA7+5YNigWp2iTFJ1ueCs nab3CdfqWivLcXu3xKa2M0l6lPJUvVI= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-30-U3AjpYN1Nuu1M6545iq-Wg-1; Wed, 09 Oct 2024 10:21:36 -0400 X-MC-Unique: U3AjpYN1Nuu1M6545iq-Wg-1 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-37d3986f5a4so344325f8f.3 for ; Wed, 09 Oct 2024 07:21:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728483695; x=1729088495; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZnI7EdytuPVet+X/VFhbNTXjz8rNRMeOtlA8XEB3/tI=; b=KTbstWEgyHXZM1uMUXurDTejersG37NSCSNtwtVXQTtBOa5H+2quiKQEXrraVsR66L SiVug4qEOEL10ADdNvprh010U577uGqCeys3Y3/c7oGVEPK/dS03EaxpDsov8wkwxBFe Z/uDjSsMdVHEWQAhGQ59XLzTXAMhXKq9TUTCH+mjYVcJobpwJh5av+dpgW9D18KbTdjA uB7TIa2CLSKvcPpvPFZ2ufSPANtTl0V70kaIP3SH9pBjgXDzXHWcMCjh4G0ezQqQUL/e BB13ZZi3TdaRHtWKhTBmOmEP2/ew9T/zhSwt4hy9xvcB3PP3tW36SHmPVcjAR0HGiDVa jmjg== X-Forwarded-Encrypted: i=1; AJvYcCXGWZY02GiZopQXvzfP4zVPw0lP5wcHCKVt6umbuChbMwDiGKQOS0zBTKAwrFzqWTgMIIw=@dpdk.org X-Gm-Message-State: AOJu0YzWDlLONS0GOFnc8w1euFDc+ms1xeM92mC0fK3SwTMXn034La9p 2563soqhd4RlXx+uSZE7K5YjKsrRwgllYGB4V6vHBJCO+uoCMcOiU/2kfOZr9Q80SbaDtVcjtZq S/q+qKnEmxoA57YaUHv4XlA/2pZeFbSFas9hF5noS X-Received: by 2002:a5d:4848:0:b0:37d:3650:fae5 with SMTP id ffacd0b85a97d-37d3ab1a0c1mr1556655f8f.52.1728483695481; Wed, 09 Oct 2024 07:21:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE9K77ZXwsOvz6AvXpLdplqcb8aHrIw1bJezolD7h30VADlekKHWlPngLlZw0TVU+MDvFQ6wA== X-Received: by 2002:a5d:4848:0:b0:37d:3650:fae5 with SMTP id ffacd0b85a97d-37d3ab1a0c1mr1556634f8f.52.1728483695009; Wed, 09 Oct 2024 07:21:35 -0700 (PDT) Received: from smtpclient.apple ([2a01:cb19:141e:f200:24b8:34a6:1592:95bd]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-37d1690f270sm10525215f8f.21.2024.10.09.07.21.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Oct 2024 07:21:34 -0700 (PDT) Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3818.100.11.1.3\)) Subject: Re: [PATCH v3 0/5] add feature arc in rte_graph From: Christophe Fontaine In-Reply-To: <20241009133009.1152321-1-nsaxena@marvell.com> Date: Wed, 9 Oct 2024 16:21:23 +0200 Cc: Jerin Jacob , Kiran Kumar K , Nithin Dabilpuram , Zhirun Yan , Robin Jarry , dev@dpdk.org, Nitin Saxena Message-Id: <69C65413-0D01-492D-825B-960BF496EC89@redhat.com> References: <20241008133020.814101-1-nsaxena@marvell.com> <20241009133009.1152321-1-nsaxena@marvell.com> To: Nitin Saxena X-Mailer: Apple Mail (2.3818.100.11.1.3) X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable 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 > On 9 Oct 2024, at 15:29, Nitin Saxena wrote: >=20 > 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. >=20 > 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. >=20 > 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 >=20 > Feature arc abstraction allows rte_graph based application to >=20 > 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. >=20 > 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. >=20 > 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 Hi, As a general comment, I would have expected a modification on rte_graph_wal= k so the nodes would *not* need to be aware of the enabled feature arcs. Yet, in the series, the nodes need to be aware if a feature arc is enabled = or not. Isn=E2=80=99t this a contradiction or did I miss something ? Christophe >=20 > 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. >=20 > This patch series adds feature arc library in rte_graph and also adds > "ipv4-output" feature arc handling in "ipv4-rewrite" node. >=20 > Changes in v3: > - rte_graph_feature_arc_t typedef from uint64_t to uintptr_t to fix > compilation on 32-bit machine > - Updated images in .png format > - Added ABI change section in release notes > - Fixed DPDK CI failures >=20 > Changes in v2: > - Added unit tests for feature arc > - Fixed issues found in testing > - Added new public APIs rte_graph_feature_arc_feature_to_node(), > rte_graph_feature_arc_feature_to_name(), > rte_graph_feature_arc_num_features() > - Added programming guide for feature arc > - Added release notes for feature arc >=20 > Nitin Saxena (5): > graph: add feature arc support > graph: add feature arc option in graph create > graph: add IPv4 output feature arc > test/graph_feature_arc: add functional tests > docs: add programming guide for feature arc >=20 > app/test/meson.build | 1 + > app/test/test_graph_feature_arc.c | 1410 +++++++++++++++++++ > doc/guides/prog_guide/graph_lib.rst | 288 ++++ > doc/guides/prog_guide/img/feature_arc-1.png | Bin 0 -> 61532 bytes > doc/guides/prog_guide/img/feature_arc-2.png | Bin 0 -> 155806 bytes > doc/guides/prog_guide/img/feature_arc-3.png | Bin 0 -> 143697 bytes > doc/guides/rel_notes/release_24_11.rst | 13 + > lib/graph/graph.c | 1 + > lib/graph/graph_feature_arc.c | 1223 ++++++++++++++++ > 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 | 431 ++++++ > lib/graph/rte_graph_feature_arc_worker.h | 674 +++++++++ > lib/graph/version.map | 20 + > lib/node/ip4_rewrite.c | 476 +++++-- > lib/node/ip4_rewrite_priv.h | 15 +- > lib/node/node_private.h | 20 +- > lib/node/rte_node_ip4_api.h | 3 + > 21 files changed, 4494 insertions(+), 98 deletions(-) > create mode 100644 app/test/test_graph_feature_arc.c > create mode 100644 doc/guides/prog_guide/img/feature_arc-1.png > create mode 100644 doc/guides/prog_guide/img/feature_arc-2.png > create mode 100644 doc/guides/prog_guide/img/feature_arc-3.png > 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 >=20 > --=20 > 2.43.0 >=20