hashrssdpdkoffloading

DPDK - RSS Offloads (Hash Calculations): ETH_RSS_IPV6_EX - Explanation


So I am currently working on understanding how to Receive Side Scaling (RSS) Offloads work inside DPDK (Data Plane Development Kit). So basically from my understanding depending on which offload you have selected, it calculates a Hash value and uses that to place your packet for processing on a specific Queue, which is binded to a specific CPU Core.

So I have 2 Queries regarding this:

Please feel free for any clarifications or elaboration you require.

Thanks in Advance.

Edit_1 (In response to Vipin's comment):

  1. I am enabling the RSS in this strucutre (ETH_RSS_IPV6_EX):

    static struct rte_eth_conf port_conf = { .rxmode = { .mq_mode = ETH_MQ_RX_RSS, .max_rx_pkt_len = RTE_ETHER_MAX_LEN, .split_hdr_size = 0, .offloads = DEV_RX_OFFLOAD_CHECKSUM, }, .rx_adv_conf = { .rss_conf = { .rss_key = NULL, .rss_hf = ETH_RSS_IPV6_EX, //ETH_RSS_IP //Orignal, //AU: Changing Hash Application }, }, .txmode = { .mq_mode = ETH_MQ_TX_NONE, }, };

  2. DPDK Version I am using is 20.08.

  3. NIC being used is Mellanox ConnectX-5

  4. I am using the DPDK l3fwd application as the base and testing on it.


Solution

  • As explained in the comments, ETH_RSS_IPV6_EX is a generic place holder. Not all drivers support the same. So depending upon PMD, driver and firmware extended features like RSS based on SRC-IP/DST-IP or some part of fields will be supported. example ETH_RSS_IPV6_TCP will be used if IPV6 has TCP in it and ETH_RSS_IPV6_TCP_EX will use if TCP is extended header.

    note: igb and ixgbe supports _EX while i40e does not, you check intel NIC. DPDK mail thread discussion. Hence do not expect every NIC will has same features set for RSS