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

Reply via email to