[dpdk-dev] Symmetric RSS Hashing in DPDK

Kamraan Nasim knasim at sidebandnetworks.com
Wed Dec 17 20:12:02 CET 2014


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
>>
>


More information about the dev mailing list