Hi DPDK community, Any better RSS hash keys out there?
--Kam On Wed, Dec 17, 2014 at 2:12 PM, Kamraan Nasim <knasim at sidebandnetworks.com> wrote: > > 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 >>> >>