How can i calculate rss hash value from c++ code, to reassemble packet and send them to the same process . Packet that have the same ip + port arrive to the same queue. If some packet are ip fragmented packet arrive to different process. It is a problem

I am using Mellanox Technologies MT27800 Family [ConnectX-5], using dpdk multi rx queue with rss “ETH_RSS_IP | ETH_RSS_UDP | ETH_RSS_TCP”

I analyzer traffic and need all packet of same session to arrive to the same process ( session for now can be ip+port)

So Packet that have the same ip + port arrive to the same queue.

But If some packet are ip fragmented, packet arrive to different process. It is a problem!

How can i calculate the hash value in the c++ code, like it is done in the card, so i can reassemble packets and send them to the same process like the non fragmented packets

Hi Yaron,

In MLX5 poll mode driver, RSS hash for fragmented packets is not supported.

The RSS offload types supported in DPDK & ConnectX family are the types mentioned in dpdk.org - MLX5 poll mode driver section.

Which are:

IPv4, IPv6, TCPv4, TCPv6, UDPv4 and UDPv6 RSS on any number of queues.

RSS using different combinations of fields: L3 only, L4 only or both, and source only, destination only or both.

Regards,

Chen