rssdpdkmultiqueue

Does the vhost-user driver ensures the distribution of traffic between multiple RX queues?


I have a question for you. I know that vhost-user NICs can be configured with many RX/TX queues, but does the vhost-user driver ensures the distribution of traffic between RX queues?

I used the sample application l3fdw to switch traffic between two vhost-user NICs, each with 4 queues. The traffic was generated using TREX (and testpmd also), running inside a VM. When I traced my experiment, I noticed that the traffic was only received in queue "0", while the other RX queues were empty.

The l3fdw app tells me that "Port 0 modified RSS hash function based on hardware support,requested:0xa38c configured:0". For offloading capabilities, testpmd indicates that the vhost-user nic NIC has only support for VLAN STRIP (and not for RSS)!

I appreciate any clarification on this matter.

Thank you,

PS:

Adele


Solution

  • Answer for the original question does the vhost-user driver ensures the distribution of traffic between RX queues? is

    There is no mechanism like RSS or RTE_FLOW from DPDK Libraries which will ensure software packet distribution on the RX queues of VHOST NIC.

    @AdelBelkhiri there are multiple aspects to be clarified to understand this better.

    1. Features supported by VHOST PMD do not advertise either RTE_FLOW or RSS.
    2. Driver code for vhost pmd in file rte_eth_vhost.c does not advertise RSS or RTE_FLOW capability

    there is an article which describes the use of OVS and Multiple queues. The RSS is configured on the Physical NIC with 2 RX queues. The RSS is done on the Physical NIC, 2 separate threads picks the packets from the Physical RX queue and puts the same in VHOST queues. Thus achieving pass-through RSS.

    hence in your case where you have 2 VM with 2 NIC ports each having 4 queues, please try 8 PMD threads on OVS to concurrently fwd packets between queues. Where the TREX (TX) VM will ensure to put appropriate packets into each queue seperately.

    But the simple answer is there is no RSS or RTE_FLOW logic to distribute traffic