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 79D1DA0548 for ; Thu, 11 Nov 2021 13:48:43 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5B34841144; Thu, 11 Nov 2021 13:48:43 +0100 (CET) Received: from mail1.sandvine.com (mail1.sandvine.com [207.219.248.234]) by mails.dpdk.org (Postfix) with ESMTP id 9CA5140E03 for ; Thu, 11 Nov 2021 13:48:42 +0100 (CET) Received: from WTL-EXCHSV2-2.sandvine.com (192.168.194.59) by WTL-EXCHSV2-2.sandvine.com (192.168.194.59) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521) id 15.1.2375.17; Thu, 11 Nov 2021 07:48:39 -0500 Received: from WTL-EXCHSV2-2.sandvine.com ([fe80::2498:2176:180e:c4b0]) by WTL-EXCHSV2-2.sandvine.com ([fe80::2498:2176:180e:c4b0%20]) with mapi id 15.01.2375.017; Thu, 11 Nov 2021 07:48:39 -0500 From: Daniel Romell To: "users@dpdk.org" CC: "orika@nvidia.com" , "andrew.rybchenko@oktetlabs.ru" , "barbette@kth.se" Subject: rte_flow MARK + JUMP with mlx5 Thread-Topic: rte_flow MARK + JUMP with mlx5 Thread-Index: AQHX1vhEPyg3NAnhck6mVeWQH9pUzg== Date: Thu, 11 Nov 2021 12:48:39 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.60.34.113] x-c2processedorg: b2f06e69-072f-40ee-90c5-80a34e700794 Content-Type: multipart/alternative; boundary="_000_a0168092b9214d2fb11bc0d791d834d2sandvinecom_" MIME-Version: 1.0 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_a0168092b9214d2fb11bc0d791d834d2sandvinecom_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hey all! A few questions about rte_flow, specifically the MARK + JUMP actions; What's the expected behavior of MARK + JUMP in the same flow? Is the mark e= xpected to survive to the target flow group? Is it driver specific? Undefin= ed? Unsupported? For example, when testing with the following flow setup in testpmd (mlx CX6= , DPDK 19.11.2 and latest mainline), none of the received packets are marke= d: flow create 0 ingress pattern eth / end actions mark id 0x1337 / jump group= 1 / end flow create 0 ingress group 1 pattern eth / end actions queue index 0 / end A single flow with MARK + QUEUE works as expected. What I want in the end is a set of simple RSS rules that would match most o= f the traffic, and another set of rules that would mark a small subset of t= he traffic before being processed by the RSS rule. I realize I *could* duplicate the RSS actions and have them in the same rul= e as the MARK, but that just seems like the wrong thing to do for a few dif= ferent reasons; * It would require one flow for each combination of MARK and RSS condition. * The MARK rules should be inserted and removed during runtime, while the R= SS rules should be long-lived and static. * The code inserting the MARK rule ideally shouldn't have be aware of the R= SS config (other than that it should continue to a new group for further ma= tching). What's the right way of doing something like this with DPDK? I've already implemented the same thing with a custom/proprietary mlx drive= r, so I know it should be doable. What I ended up doing there was simply to= have two flow tables. The root table (level 0) holds all "mark" rules (flo= w tag), and forwards to everything (including misses) to the next table. Th= e table at level 1 contains the RSS rules, and leaves all flows untagged so= the tag set in the first level is preserved. Is there a way to get to a si= milar setup through the rte_flow API? Thanks, Daniel Romell (CCs as suggested by Thomas in slack + Tom as this seems somewhat similar t= o https://www.mail-archive.com/users@dpdk.org/msg03900.html) Disclaimer: This communication (including any attachments) is intended for the use of t= he intended recipient(s) only and may contain information that is considere= d confidential, proprietary, sensitive and/or otherwise legally protected. = Any unauthorized use or dissemination of this communication is strictly pro= hibited. If you have received this communication in error, please immediate= ly notify the sender by return e-mail message and delete all copies of the = original communication. Thank you for your cooperation. --_000_a0168092b9214d2fb11bc0d791d834d2sandvinecom_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hey all!

A few questions about rte_flow, specifically the MARK + JUMP actions;
What's the expected behavior of MARK + JUMP in the same flow? Is the ma= rk expected to survive to the target flow group? Is it driver specific? Und= efined? Unsupported?

For example, when testing with the following flow setup in testpmd (mlx CX6= , DPDK 19.11.2 and latest mainline), none of the received packets are marke= d:

flow create 0 ingress pattern eth / end actions mark id 0x1337 / jump group= 1 / end
flow create 0 ingress group 1 pattern eth / end actions queue index 0 / end=

A single flow with MARK + QUEUE works as expected.

What I want in the end is a set of simple RSS rules that would match most o= f the traffic, and another set of rules that would mark a small subset of t= he traffic before being processed by the RSS rule.

I realize I *could* duplicate the RSS actions and have them in the same rul= e as the MARK, but that just seems like the wrong thing to do for a few dif= ferent reasons;
* It would require one flow for each combination of MARK and RSS condition.=
* The MARK rules should be inserted and removed during runtime, while the R= SS rules should be long-lived and static.
* The code inserting the MARK rule ideally shouldn't have be aware of the R= SS config (other than that it should continue to a new group for further ma= tching).

What's the right way of doing something like this with DPDK?
I've already implemented the same thing with a custom/proprietary mlx drive= r, so I know it should be doable. What I ended up doing there was simply to= have two flow tables. The root table (level 0) holds all "mark" = rules (flow tag), and forwards to everything (including misses) to the next table. The table at level 1 contains the RS= S rules, and leaves all flows untagged so the tag set in the first level is= preserved. Is there a way to get to a similar setup through the rte_flow A= PI?

Thanks,
Daniel Romell

(CCs as suggested by Thomas in slack + Tom as this seems somewhat = similar to https://www.mail-archive.com/users@dpdk.org/msg03900.html)

Disclaimer:
This communication (including any attachments) is intended for the use of t= he intended recipient(s) only and may contain information that is considere= d confidential, proprietary, sensitive and/or otherwise legally protected. = Any unauthorized use or dissemination of this communication is strictly prohibited. If you have received this co= mmunication in error, please immediately notify the sender by return e-mail= message and delete all copies of the original communication. Thank you for= your cooperation.

--_000_a0168092b9214d2fb11bc0d791d834d2sandvinecom_--