DPDK usage discussions
 help / color / mirror / Atom feed
From: Vishal Mohan <vishal.mohan@tatacommunications.com>
To: "Zhang, AlvinX" <alvinx.zhang@intel.com>,
	"Xing, Beilei" <beilei.xing@intel.com>,
	"users@dpdk.org" <users@dpdk.org>
Subject: Re: [dpdk-users] DPDK 20.11 - i40e 2 tuple RSS configuration
Date: Sun, 30 May 2021 14:22:43 +0000	[thread overview]
Message-ID: <SG2PR04MB31735118786E71A771379BC8E4209@SG2PR04MB3173.apcprd04.prod.outlook.com> (raw)
In-Reply-To: <SG2PR04MB31739D832E8A30388305BCAFE4229@SG2PR04MB3173.apcprd04.prod.outlook.com>

Hi Alvin and Beilei,

I was able to implement 1 tuple for all the flows after not defining .queue and .queue_num in struct rte_flow_action_rss.  Im still trying to do 2 tuple (src and dst) at the same level which seems not possible by the documentations. Any suggestions to address that ?

Thank you for the inputs.

Regards,
Vishal Mohan
From: Vishal Mohan
Sent: 28 May 2021 02:18 PM
To: Zhang, AlvinX <alvinx.zhang@intel.com>; Xing, Beilei <beilei.xing@intel.com>; users@dpdk.org
Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration

Hi Alvin,

Thanks for your effort in verifying. As mentioned below I was able to achieve the same behaviour as below but not when I do it manually using rte_flow apis. Can you please take a look at the code snippet in the trail mail to point me if I'm missing anything.

Thanks & Regards,

Vishal Mohan
From: Zhang, AlvinX <alvinx.zhang@intel.com<mailto:alvinx.zhang@intel.com>>
Sent: 28 May 2021 12:27 PM
To: Xing, Beilei <beilei.xing@intel.com<mailto:beilei.xing@intel.com>>; Vishal Mohan <vishal.mohan@tatacommunications.com<mailto:vishal.mohan@tatacommunications.com>>; users@dpdk.org<mailto:users@dpdk.org>
Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration

Hi Vishal Mohan

We have tried based on commit b1d36cf828771e28eb0130b59dcf606c2a0bc94d(version: 20.11.0)

0000:81:00.0 'Ethernet Controller XXV710 for 25GbE SFP28 158b' drv=vfio-pci unused=i40e
./x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -c 0xff -n 4 -a 0000:81:00.0 -- -i --rxq=64 --txq=64 --port-topology=loop

flow create 0 ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only end queues end / end

packet=[Ether()/IP(dst="192.168.1.1", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480) -->RSS hash = 0x6a12e180
packet=[Ether()/IP(dst="192.168.1.2", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480) -->RSS hash = 0x6a12e180

packet=[Ether()/IP(dst="192.168.1.2", src="192.168.0.2")/TCP(sport=22,dport=23)/("X"*480) -->RSS hash = 0x6a12e180
packet=[Ether()/IP(dst="192.169.1.2", src="192.16.0.2")/TCP(sport=22,dport=23)/("X"*480) -->RSS hash = 0xead3c21e

packet=[Ether()/IP(dst="192.169.1.2", src="192.16.0.2")/TCP(sport=22,dport=23)/("X"*480) -->RSS hash = 0xead3c21e
packet=[Ether()/IP(dst="192.169.1.2", src="192.16.0.2")/TCP(sport=22,dport=230)/("X"*480) -->RSS hash = 0xead3c21e
packet=[Ether()/IP(dst="192.169.1.2", src="192.16.0.2")/TCP(sport=202,dport=23)/("X"*480) -->RSS hash = 0xead3c21e

Is this you expected?

BRs,
Alvin Zhang

From: Xing, Beilei <beilei.xing@intel.com<mailto:beilei.xing@intel.com>>
Sent: Friday, May 28, 2021 9:24 AM
To: Vishal Mohan <vishal.mohan@tatacommunications.com<mailto:vishal.mohan@tatacommunications.com>>; users@dpdk.org<mailto:users@dpdk.org>; Zhang, AlvinX <alvinx.zhang@intel.com<mailto:alvinx.zhang@intel.com>>
Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration

+ Alvin.

Could you please help on it? Thanks.

BR,
Beilei

From: Vishal Mohan <vishal.mohan@tatacommunications.com<mailto:vishal.mohan@tatacommunications.com>>
Sent: Thursday, May 27, 2021 5:45 PM
To: Xing, Beilei <beilei.xing@intel.com<mailto:beilei.xing@intel.com>>; users@dpdk.org<mailto:users@dpdk.org>
Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration

Hi Beilei,

Thanks for the pointer. By using l3-src-only, I was able to run testpmd on 1 tuple mode. But no success when configured manually. Please find the snippet below of my rte_eth_conf and flow conf for your kind perusal:

static struct rte_eth_conf port_conf_default = {
        .rxmode = {
                .mq_mode = ETH_MQ_RX_RSS,
        },
        .rx_adv_conf = {
                .rss_conf = {
                        .rss_key = NULL,
                        .rss_key_len = 40,
                        .rss_hf = ETH_RSS_NONFRAG_IPV4_UDP,
                },
        }
};

struct rte_flow_item pattern[] = {
        [0] = {
                .type = RTE_FLOW_ITEM_TYPE_ETH,
        },
        [1] = {
                .type = RTE_FLOW_ITEM_TYPE_IPV4,
        },
        [2] = {
                .type = RTE_FLOW_ITEM_TYPE_UDP,
        },
[3] = {
                .type = RTE_FLOW_ITEM_TYPE_END,
        }
};

struct rte_flow_action_rss action_rss = {
        .types = ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L3_SRC_ONLY,
        .queue_num = 10,
        .queue = queue_ids,
};

struct rte_flow_action action[] = {

        [0] = {
                .type = RTE_FLOW_ACTION_TYPE_RSS,
                .conf = &action_rss
        },

        [1] = {
                .type = RTE_FLOW_ACTION_TYPE_END,
        }
};

struct rte_flow_attr attr = {
        .egress = 0,
        .ingress = 1
};

struct rte_flow_error err;

retval = rte_flow_validate(portid, &attr,
                        pattern, action, &err);
printf("retval %d %d\n",retval,-ENOTSUP);

if(!retval){
        struct rte_flow *flow = rte_flow_create(portid, &attr, pattern, action, &err);
}

The above given flow validates and adds successfully but no effect on RSS hashing. Also I did not set .spec and .mask for patterns assuming ETH_RSS_L3_SRC_ONLY will take care of the fields looked into.
Can you please point out if im missing anything here ?

Thanks & Regards,
Vishal Mohan

-----Original Message-----
From: Xing, Beilei <beilei.xing@intel.com<mailto:beilei.xing@intel.com>>
Sent: 27 May 2021 01:42 PM
To: Vishal Mohan <vishal.mohan@tatacommunications.com<mailto:vishal.mohan@tatacommunications.com>>; users@dpdk.org<mailto:users@dpdk.org>
Subject: RE: DPDK 20.11 - i40e 2 tuple RSS configuration

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

Hi,

I remember there's no legacy API rte_eth_dev_filter_ctrl()  supported in 20.11.
Please refer to RSS Flow part in i40e.rst:

Enable hash and set input set for ipv4-tcp.
    testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end \
      actions rss types ipv4-tcp l3-src-only end queues end / end

BR,
Beilei

> -----Original Message-----
> From: users <mailto:users-bounces@dpdk.org> On Behalf Of Vishal Mohan
> Sent: Thursday, May 27, 2021 3:40 PM
> To: mailto:users@dpdk.org
> Subject: [dpdk-users] DPDK 20.11 - i40e 2 tuple RSS configuration
>
> I'm trying to implement RSS with 2 tuple (src ip, dst ip) hashing with
> X710 - quad port in DPDK 20.11 with no success. I was able to
> implement the same in DPDK 17.11 with a combination of RSS flags
> given below and
> rte_eth_dev_filter_ctrl():
>
> .rss_hf = (ETH_RSS_IPV4 | ETH_RSS_NONFRAG_IPV4_OTHER |
> ETH_RSS_FRAG_IPV4 | ETH_RSS_NONFRAG_IPV4_UDP |
> ETH_RSS_NONFRAG_IPV4_TCP)
>
> and selecting input fields as dst and src ip for every rss_hf flag
> using rte_eth_dev_filter_ctrl().
>
> In DPDK 20.11, I believe there is no explicit usage of using
> rte_eth_dev_filter_ctrl() instead we can configure the hashing with
> the generic rte_flow api. I did configure a flow validate and create
> the same, but the hashing is not working as expected. Without flags
> ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_NONFRAG_IPV4_TCP no hashing takes
> place and with those flags included in .rss_hf, 5 tuple hashing takes
> place.
>
> When using rte_flow api, any flags given in rte_flow_action_rss.types
> has no effect on the final RSS hash result. Also the RSS hashing in
> the given testpmd isn't working when it is configured in "ip" (2 tuple) mode.
>
> Any inputs for configuring RSS hashing for 2 tuple is much appreciated.
>
>
> Thanks & Regards,
>  Vishal Mohan


  reply	other threads:[~2021-05-30 14:22 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <SG2PR04MB3173B935587AE7E8599C7DF9E4239@SG2PR04MB3173.apcprd04.prod.outlook.com>
2021-05-27  7:39 ` Vishal Mohan
2021-05-27  8:11   ` Xing, Beilei
2021-05-27  9:45     ` Vishal Mohan
2021-05-28  1:23       ` Xing, Beilei
2021-05-28  3:36         ` Zhang, AlvinX
2021-05-28  6:56         ` Zhang, AlvinX
2021-05-28  8:47           ` Vishal Mohan
2021-05-30 14:22             ` Vishal Mohan [this message]
2021-05-31  1:52               ` Zhang, AlvinX

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=SG2PR04MB31735118786E71A771379BC8E4209@SG2PR04MB3173.apcprd04.prod.outlook.com \
    --to=vishal.mohan@tatacommunications.com \
    --cc=alvinx.zhang@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=users@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).