From: Wilson Peng <pweis...@vmware.com>

In the recent upstream OVS Geneve IPV6 tunnel coding job, it is only 
supportting the case when the uplink offload
(UDP v6 offload parameter setting on the network adapter configuration) is 
disabled.
For Geneve IPV6 header setting, it needs set Transmit.IpHeaderChecksum in 
NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO
to be 0. Elsewise we could observe the found issue on the report page.

After this patch,  even the uplink UDP v6 offload is enabled(On WindowsServer 
2019) by default the IPV6 Geneve tunnel
could send/receive packets without issues now. I have tested four kinds of 
network adapter drivers( E1000e ,vmxnet3 and
 physical network adapter "Intel(R) Ethernet 10G X710 rNDC " and "Mellanox 
ConnectX-5 Adapter”.  On the default offload
setting for the network adapter(Windows server2019) the IPV6 Geneve tunnel 
could be setup.

This patch needs to be applied to master and branch-3.0.

Test topo,
Setup one IPV6 Geneve Tunnel between 1 Windows VM and 1 Ubuntu server.
Windows VM(Windows server2019), vif0( 6000::2/40.1.1.10) vif1(5000:ed4d::2) 
------
Ubuntu VM Eth2(5000:ed4d::9), name space ns1 with interface 
ns1_link(6000::9/40.1.1.2)

WinVM: ovs-vsctl.exe add-port br-int bms-tun0 -- set interface bms-tun0 
type=geneve options:key=flow options:csum=true
options:local_ip="5000:ed4d::2" options:remote_ip="5000:ed4d::9" 
options:tos=inherit

Ubuntu VM:ovs-vsctl add-port br-int dst_tunnel -- set interface dst_tunnel 
type=geneve options:local_ip="5000:ed4d::1"
options:remote_ip="5000:ed4d::2"

Reported-at: https://github.com/openvswitch/ovs-issues/issues/260
Signed-off-by: Wilson Peng <pweis...@vmware.com>
---
 datapath-windows/ovsext/Geneve.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/datapath-windows/ovsext/Geneve.c b/datapath-windows/ovsext/Geneve.c
index e4e81c157..793cee36b 100644
--- a/datapath-windows/ovsext/Geneve.c
+++ b/datapath-windows/ovsext/Geneve.c
@@ -286,6 +286,7 @@ NDIS_STATUS OvsEncapGeneve(POVS_VPORT_ENTRY vport,
         } else if (tunKey->dst.si_family == AF_INET6) {
             csumInfo.Transmit.IsIPv4 = 0;
             csumInfo.Transmit.IsIPv6 = 1;
+            csumInfo.Transmit.IpHeaderChecksum = 0;
         }
 
         if (tunKey->flags & OVS_TNL_F_CSUM) {
-- 
2.32.1 (Apple Git-133)

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to