Hi Jesse,

Thanks a lot for your information, seems the commit have been merged to
v4.6+ kernel which may not be easily for us to upgrade.
We will try to upgrade to lastest OVS and do test again.

2016-07-13 22:48 GMT+08:00 Jesse Gross <je...@kernel.org>:

> On Wed, Jul 13, 2016 at 4:05 AM, 张东亚 <fortitude.zh...@gmail.com> wrote:
> > Hi,
> >
> > Recently we upgraded to ovs 2.5 and use the datapath in the ovs
> code(means
> > we do not use kernel datapath), however, when we test vxlan performance
> > between two VMs on different compute node, we observed the bandwidth can
> > only achieve 5Gbps on the 10Gbps intel nic pair, and we are still using
> > kernel v3.14.57.
> >
> > We found lots of following warning (see stack in the PS) in dmesg and
> thinks
> > it causes the bad performance.
> >
> > After trying to read the source code of the kernel and ovs 2.5 datapath
> > code, it seems gso_type 513(0x201) cause the problem, since our VM tap
> > interface does not have
> tx-udp_tnl-segmentation(NETIF_F_GSO_UDP_TUNNEL_BIT)
> > flag enabled by default, net_gso_ok return false which cause
> > __skb_gso_segment being called, and since tcpv4_gso_complete have set the
> > skb->ip_summed to CHECKSUM_UNCESSARY, which cause skb_warn_bad_offload
> being
> > called.
> >
> > My wonder is whether this is a desired behavior, or OVS should clear the
> > NETIF_F_GSO_UDP_TUNNEL_BIT bit when send the inner packet (may be GSOed)
> to
> > tap interface on the host?
>
> This is an upstream kernel problem, fixed by:
>
>     commit a09a4c8dd1ec7f830e1fb9e59eb72bddc965d168
>     Author: Jesse Gross <je...@kernel.org>
>
>     tunnels: Remove encapsulation offloads on decap.
>
>     If a packet is either locally encapsulated or processed through GRO
>     it is marked with the offloads that it requires. However, when it is
>     decapsulated these tunnel offload indications are not removed. This
>     means that if we receive an encapsulated TCP packet, aggregate it with
>     GRO, decapsulate, and retransmit the resulting frame on a NIC that does
>     not support encapsulation, we won't be able to take advantage of
> hardware
>     offloads even though it is just a simple TCP packet at this point.
>
>     This fixes the problem by stripping off encapsulation offload
> indications
>     when packets are decapsulated.
>
>     The performance impacts of this bug are significant. In a test where a
>     Geneve encapsulated TCP stream is sent to a hypervisor, GRO'ed,
> decapsulated,
>     and bridged to a VM performance is improved by 60% (5Gbps->8Gbps) as a
>     result of avoiding unnecessary segmentation at the VM tap interface.
>
>     Reported-by: Ramu Ramamurthy <srama...@linux.vnet.ibm.com>
>     Fixes: 68c33163 ("v4 GRE: Add TCP segmentation offload for GRE")
>     Signed-off-by: Jesse Gross <je...@kernel.org>
>     Signed-off-by: David S. Miller <da...@davemloft.net>
>
> The problem is not really related to OVS and so the right solution is
> really to upgrade your base kernel. However, since it does affect OVS
> users we have backported code into the OVS tree to avoid it.
> Unfortunately, the fix is too large to bring to OVS 2.5, so you'll
> need to use the current master branch.
>
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to