in my problem RSS did not have a good load balance between CPU cores case the rx packets has been modified by insert tags between mac and ip so the dpdk could not recognize it.assume I want to load balance by way of round-robin, Multiple rx queues have been set up. in this question answer: How to disable RSS but still using multiple RX queues in DPDK? it says its possible to load balance in round robin fashion by using RTE_FLOW. what is the right way to do it grammatically ? I would like to know the API or structs for setting up the round-robin method here is my runtime environment infomation: 1)dpdk version: 19.11.9 2)nic PMD :ixgbe 3) fireware:825999 and XXV710 4) os version: ubuntu 16.04 kernel:4.4.0-186
As per the question
RSS did not have a good load balance between CPU cores case the rx packets has been modified by insert tags between mac and ip
There are couple of items which needs to be clarified. so let me explain
RAW Pattern
. The intend of this feature is support Special protocol which by default the NIC does not understand like (VXLAN, GENEVE, RTP and other protocols).Hence depending upon NIC, vendor, RSS support for L2 and firmware the ability calculating RSS on fields between varies in port init or RTE_FLOW specific configuration. For example RSS ETH supported on
I40E_INSET_DMAC | I40E_INSET_SMAC
NH_FLD_ETH_TYPE and NET_PROT_ETH
RSS_DMAC_INDEX
FLOW_KEY_TYPE_VLAN and FLOW_KEY_TYPE_CH_LEN_90B
Hence for NIC ixgbe and XXV710
there is no ready support for the custom header
between ethernet and IP.
Alternatives:
RAW
header as defined 12.2.6.2. Once the support is added by the vendor you can create a simple traffic spread tool
which will ensure traffic distribution across the desired RX queues in round robin fashion.note: I am not recommending use of HW based static Round Robin as it will create 2 fold problem
For option 4 (Software Model):
rte_distributor
library to spread traffic based on the custom.rte_eventdev
with atomic model to spread the work load on multiple worker.[Clarification from Comments]:
[ANSWER] Since you are using custom header and not generic VLAN|IP|Port this suggestion is not correct. As you have clarified in question and comments you want to distribute like RSS for custom header.
[ANSWER] as explained above not all nic support RSS and RAW. Since your current NIC is ixgbe and i40e
the function of parsing and executing RSS for custom header is unlikely. you can try option 2 (work with intel create new ddp) for i40e to achieve the same or implement in SW as suggested in option 4.
[ANSWER] normally one updates with code snippets or steps used for reproducing the error. But the current question is more like clarification. Please refer above.