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:[email protected]] 发送时间: 2021年2月7日 0:02 收件人: Yi Yang (杨燚)-云服务集团 <[email protected]> 抄送: [email protected]; [email protected]; [email protected]; [email protected] 主题: 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 (杨燚)-云服务集团 <[email protected]> wrote: > > -----邮件原件----- > 发件人: dev [mailto:[email protected]] 代表 Ilya Maximets > 发送时间: 2020年10月27日 21:12 > 收件人: [email protected]; [email protected] > 抄送: [email protected]; [email protected] > 主题: 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, [email protected] wrote: > > From: Yi Yang <[email protected]> > > > > 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 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
