Thank you Jeriel. 0x00 0x01 works and I can get bi-directional symmetry but you are right, it compromises the packet distribution. I am seeing vastly different 5 tuples hashed with the same value.
Will let you know if I find a better alternative. --Kam On Tue, Dec 16, 2014 at 5:17 PM, Jeriel Smith <sjeriel2 at gmail.com> wrote: > > Hi Kamraan, > Even i noticed it with "0x6d5a". Currently, I use a continuous > pattern of "0x00 0x01" which helps in getting a symmetrical hashing. But, > the packet spraying is not that good as "0x6d5a". Please let me know if you > find a alternative. > Thanks, > Jeriel > > >> ---------- Forwarded message ---------- >> From: Kamraan Nasim <knasim at sidebandnetworks.com> >> Date: Tue, Dec 16, 2014 at 11:52 AM >> Subject: [dpdk-dev] Symmetric RSS Hashing in DPDK >> To: dev at dpdk.org >> Cc: Steve Noble <snoble at sidebandnetworks.com>, Jun Du < >> jdu at sidebandnetworks.com>, Ashish Juneja <ajuneja at sidebandnetworks.com> >> >> Hello, >> >> My DPDK application requires bidirectional TCP flows to have the same RSS >> hash however default RSS hashing is *asymmetric*. >> >> >> There are posts such as: >> http://dpdk.info/ml/archives/dev/2014-February/001460.html >> >> which point to a symmetric RSS key(0x6d5a). I have tried using it but it >> is >> still hashing bi-directional flows separately. I am using an 82599 NIC. >> >> Have others come across this? What other options are available(I presume >> S/W hashing)? >> >> Appreciate any help I can get on this :) >> >> #define RSS_HASH_KEY_LENGTH 40 >> static uint8_t hash_key[RSS_HASH_KEY_LENGTH] = { >> 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, >> 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, >> 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, >> 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, >> 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, >> }; >> // ethernet rx config >> static struct rte_eth_conf port_conf = { >> .rxmode = { >> .mq_mode = ETH_MQ_RX_RSS, >> .split_hdr_size = 0, >> .header_split = 0, /**< Header Split disabled */ >> .hw_ip_checksum = 1, /**< IP checksum offload enabled */ >> .hw_vlan_filter = 0, /**< VLAN filtering disabled */ >> .jumbo_frame = 0, /**< Jumbo Frame Support disabled */ >> .hw_strip_crc = 0, /**< CRC stripped by hardware */ >> }, >> .rx_adv_conf = { >> .rss_conf = { >> .rss_key = hash_key, >> .rss_hf = ETH_RSS_PROTO_MASK, >> }, >> }, >> .txmode = { >> .mq_mode = ETH_MQ_TX_NONE, >> }, >> }; >> >> >> Thanks, >> Kam >> >