Thread (13 messages) 13 messages, 5 authors, 2020-08-03

Re: [dpdk-dev] [RFC] ethdev: add fragment attribute to IPv6 item

From: Dekel Peled <hidden>
Date: 2020-06-01 06:11:20

Thanks, PSB.
-----Original Message-----
From: Stephen Hemminger <stephen@networkplumber.org>
Sent: Monday, June 1, 2020 8:39 AM
To: Dekel Peled <redacted>
Cc: ferruh.yigit@intel.com; arybchenko@solarflare.com; Ori Kam
[off-list ref]; john.mcnamara@intel.com;
marko.kovacevic@intel.com; Asaf Penso [off-list ref]; Matan
Azrad [off-list ref]; Eli Britstein [off-list ref];
dev@dpdk.org
Subject: Re: [dpdk-dev] [RFC] ethdev: add fragment attribute to IPv6 item

On Sun, 31 May 2020 17:43:29 +0300
Dekel Peled [off-list ref] wrote:
quoted
Using the current implementation of DPDK, an application cannot match
on fragmented/non-fragmented IPv6 packets in a simple way.

In current implementation:
IPv6 header doesn't contain information regarding the packet
fragmentation.
Fragmented IPv6 packets contain a dedicated extension header, as
detailed in RFC [1], which is not yet supported in rte_flow.
Non-fragmented packets don't contain the fragment extension header.
For an application to match on non-fragmented IPv6 packets, the
current implementation doesn't provide a suitable solution.
Matching on the Next Header field is not sufficient, since additional
extension headers might be present in the same packet.
To match on fragmented IPv6 packets, the same difficulty exists.

Proposed update:
An additional value will be added to IPv6 header struct.
This value will contain the fragmentation attribute of the packet,
providing simple means for identification of fragmented and
non-fragmented packets.

This update changes ABI, and is proposed for the 20.11 LTS version.

[1]
https://eur03.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmails
quoted
.dpdk.org%2Farchives%2Fdev%2F2020-
March%2F160255.html&amp;data=02%7C01
quoted
%7Cdekelp%40mellanox.com%7C9ee87004dc3943b945c908d805ee0bcc%7Ca
652971c
quoted
7d2e4d9ba6a4d149256f461b%7C0%7C0%7C637265867256841029&amp;sdata
=rf1zYz
quoted
fNLGdqayXLHffO%2FrM%2FeX5op6KO91RDKq%2BYk3Q%3D&amp;reserved
=0
quoted
Signed-off-by: Dekel Peled <redacted>
---
 lib/librte_ethdev/rte_flow.h | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/lib/librte_ethdev/rte_flow.h
b/lib/librte_ethdev/rte_flow.h index b0e4199..3bc8ce1 100644
--- a/lib/librte_ethdev/rte_flow.h
+++ b/lib/librte_ethdev/rte_flow.h
@@ -787,6 +787,8 @@ struct rte_flow_item_ipv4 {
  */
 struct rte_flow_item_ipv6 {
 	struct rte_ipv6_hdr hdr; /**< IPv6 header definition. */
+	uint32_t is_frag:1; /**< Is IPv6 packet fragmented/non-fragmented.
*/
quoted
+	uint32_t reserved:31; /**< Reserved, must be zero. */
 };
You can't do this in the 20.08 release it would be an ABI breakage.
Please see above, I noted in the commit log that this is proposed for 20.11.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help