[ovs-dev] 答复: 答复: [PATCH V3 3/4] Add VXLAN TCP and UDP GRO support for DPDK data path

Yi Yang (杨燚)-云服务集团 yangyi01 at inspur.com
Sun Feb 7 01:22:21 UTC 2021


I have sent v4 patch to remove GRO and GSO code to avoid such concern.

GRO and GSO must use multi-seg mbuf, our local openstack environment has used these code but didn't see any corrupt issue, so I'm not sure what case will result in corrupt.

Linearizing mbuf means copying, that will have huge impact on performance. 

-----邮件原件-----
发件人: William Tu [mailto:u9012063 at gmail.com] 
发送时间: 2021年2月7日 0:02
收件人: Yi Yang (杨燚)-云服务集团 <yangyi01 at inspur.com>
抄送: i.maximets at ovn.org; yang_y_yi at 163.com; ovs-dev at openvswitch.org; fbl at sysclose.org
主题: Re: [ovs-dev] 答复: [PATCH V3 3/4] Add VXLAN TCP and UDP GRO support for DPDK data path

On Tue, Oct 27, 2020 at 5:50 PM Yi Yang (杨燚)-云服务集团 <yangyi01 at inspur.com> wrote:
>
> -----邮件原件-----
> 发件人: dev [mailto:ovs-dev-bounces at openvswitch.org] 代表 Ilya Maximets
> 发送时间: 2020年10月27日 21:12
> 收件人: yang_y_yi at 163.com; ovs-dev at openvswitch.org
> 抄送: fbl at sysclose.org; i.maximets at ovn.org
> 主题: Re: [ovs-dev] [PATCH V3 3/4] Add VXLAN TCP and UDP GRO support for 
> DPDK data path
>
> On 8/7/20 12:56 PM, yang_y_yi at 163.com wrote:
> > From: Yi Yang <yangyi01 at inspur.com>
> >
> > GRO(Generic Receive Offload) can help improve performance when TSO 
> > (TCP Segment Offload) or VXLAN TSO is enabled on transmit side, this 
> > can avoid overhead of ovs DPDK data path and enqueue vhost for VM by 
> > merging many small packets to large packets (65535 bytes at most) 
> > once it receives packets from physical NIC.
>
> IIUC, this patch allows multi-segment mbufs to float across different parts of OVS.  This will definitely crash it somewhere.  Much more changes all over the OVS required to make it safely work with such mbufs.  There were few attempts to introduce this support, but all of them ended up being rejected.  As it is this patch is not acceptable as it doesn't cover almost anything beside simple cases inside netdev implementation.
>
> Here is the latest attempt with multi-segment mbufs:
> https://patchwork.ozlabs.org/project/openvswitch/list/?series=130193&s
> tate=*

Thanks, that's very helpful. Looks like a huge amount of work to introduce multi-seg mbuf.
>
> Best regards, Ilya Maximets.
>
> [Yi Yang] We have to support this because we have supported TSO for TCP, it can't handle big UDP, this is why we must introduce GSO, the prerequisite of GSO is multi-segment  must be enabled because GSOed mbufs are multi-segmented, but it is just last  step before dpdk Tx, so I don't think it is an issue, per my test in our openstack environment, I didn't encounter any crash, this just enabled DPDK PMD driver to handle GSOed mbuf. For GRO, reassembling also use chained multi-segment mbuf to avoid copy, per long time test, it also didn't lead to any crash. We can fix some corner cases if they aren't covered.
>
I just started to understand the problem. Sorry if I missed something.
So currently what do we do to prevent DPDK sending OVS using multi-seg mbuf?
Do we check it and linearize the mbuf?
Can we make GSO/GRO working using linearized mbuf?

Regards,
William


More information about the dev mailing list