[dpdk-dev] Symmetric RSS Hashing in DPDK
Jim Thompson
jim at netgate.com
Thu Dec 18 07:55:41 CET 2014
The issues are outlined in this paper: http://www.ndsl.kaist.edu/~shinae/papers/TR-symRSS.pdf
> On Dec 17, 2014, at 7:28 PM, Kamraan Nasim <knasim at sidebandnetworks.com> wrote:
>
> 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
>>>>
>>>
More information about the dev
mailing list