On 3/22/22 03:08, Harold Huang wrote: > Hello, > Is there any opinion from the OVS or DPDK MLX5 driver maintainers? > This is a serious issue we've found when we use MLX5 PMD driver to > offload OVS-DPDK.
It looks like DPDK is very inconsistent and drivers do not really put any effort in setting up a "best effort" hashing mechanism. mlx5 driver seems to use just RTE_ETH_RSS_IP. I suppose, there is no harm in using the same set of hashing fields as we do for RSS configuration in netdev-dpdk. Ian, Eli, what do you think? > > On Fri, Mar 18, 2022 at 1:31 PM Tonghao Zhang <[email protected]> > wrote: >> >> On Thu, Mar 17, 2022 at 12:01 PM Harold Huang <[email protected]> wrote: >>> >>> Hi, >>> >>> On Wed, Mar 16, 2022 at 4:32 PM Tonghao Zhang <[email protected]> >>> wrote: >>>> >>>> On Wed, Mar 16, 2022 at 4:09 PM Harold Huang <[email protected]> wrote: >>>>> >>>>> When we send parallel flows such as VXLAN to a PF[1] port in OVS-DPDK with >>>>> multiple PMDs. OVS will create a RTE flow with Mark and RSS actions to >>>>> send >>>>> flows to the software data path. But the RSS action does not work well and >>>>> all the flows are forwarded to a single PMD. This is because RSS hash >>>>> types >>>>> should be set in RSS action. >>>>> >>>>> [1]: In our testbed, a Mellanox ConnectX-6 is used as a PF port. >>>> One question, did you test this patch on another NIC. e.g. ixgbe, i40e >>>> we hope ovs can run on more NIC. >>> >>> Thanks for your suggestions. I have tested it in Intel E810, Broadcom >>> NetXtreme-E. All of them could work well without this patch, ie. >>> parallel flows are RSS to different queues. And both of them could >>> work well after adding this patch. But 82599 NIC with IXGBE driver >>> does not support Mark action and the offloaded Mark and RSS action are >>> failed. AFAIK it does not matter because Mark and RSS action is used >>> to accelerate the software datapath with Mark ID lookup. I do not have >>> an I40E testbed at present. But I guess it could also work well >>> because Mark id action is also supported. Last but most important, we >>> should make sure anding RTE_ETH_RSS_IP | RTE_ETH_RSS_UDP | >>> RTE_ETH_RSS_TCP RSS types do not have a negative effect. It seems >>> that most physical network drivers which support mark could also >>> support these RSS hash types. It could be seen at [1] these RSS hash >>> types have been set in the DPDK port initialization. But IMO, it is >>> better to find a solution from the MLX5 dpdk driver. >>> >>> [1]: https://github.com/openvswitch/ovs/blob/master/lib/netdev-dpdk.c#L167 >> Ok, let's wait for maintainer comments. >>> >>>>> Signed-off-by: Harold Huang <[email protected]> >>>>> --- >>>>> lib/netdev-offload-dpdk.c | 3 ++- >>>>> 1 file changed, 2 insertions(+), 1 deletion(-) >>>>> >>>>> diff --git a/lib/netdev-offload-dpdk.c b/lib/netdev-offload-dpdk.c >>>>> index 94dc6a9b7..1b8fba2e3 100644 >>>>> --- a/lib/netdev-offload-dpdk.c >>>>> +++ b/lib/netdev-offload-dpdk.c >>>>> @@ -18,6 +18,7 @@ >>>>> >>>>> #include <sys/types.h> >>>>> #include <netinet/ip6.h> >>>>> +#include <rte_ethdev.h> >>>>> #include <rte_flow.h> >>>>> #include <rte_gre.h> >>>>> >>>>> @@ -1697,7 +1698,7 @@ add_flow_mark_rss_actions(struct flow_actions >>>>> *actions, >>>>> .conf = (struct rte_flow_action_rss) { >>>>> .func = RTE_ETH_HASH_FUNCTION_DEFAULT, >>>>> .level = 0, >>>>> - .types = 0, >>>>> + .types = RTE_ETH_RSS_IP | RTE_ETH_RSS_UDP | RTE_ETH_RSS_TCP, >>>>> .queue_num = netdev_n_rxq(netdev), >>>>> .queue = rss_data->queue, >>>>> .key_len = 0, >>>>> -- >>>>> 2.27.0 >>>>> >>>> >>>> >>>> -- >>>> Best regards, Tonghao >> >> >> >> -- >> Best regards, Tonghao > > Thanks, Harold. > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
