openvswitch / ovs-issues

Issue tracker repo for Open vSwitch
10 stars 3 forks source link

[Windows] Geneve IPV6 tunnel UDPV6 with uplink(offload is enabled) is not working #260

Closed twofish197 closed 1 year ago

twofish197 commented 2 years ago

In the upstream OVS recent feature Geneve IPV6 tunnel coding job, it is only support the case when the UPLINK offload(UDP v6 offload on the network adapter configuration) is off.

datapath-windows: Add IPv6 Geneve tunnel support in Windows https://github.com/openvswitch/ovs/commit/edb2335861d629f791467f77729e743378dac15f

In common configuration the UDP V6 offload is enabled for most of the network adapter. For Geneve IPV4 tunnel, it could be no traffic drop issue on the default offload setting.

I have tested four kinds of network drivers. Two types are E1000e and another is vmxnet3 and both are used for Windows VM. For physical server I have also tried network adapter "Intel(R) Ethernet 10G X710 rNDC " and "Mellanox ConnectX-5 Adapter".

Only the nework adapter "Mellanox ConnectX-5 Adapter" could work with current codebase(master/3.0 branch for upstream OVS) for IPV6 Geneve tunnel with uplink settting UPDV6 offload enabled.

I have attached the pcap file when using vmxnet3 driver(for uplink) and when uplink UDPv6 offload is enabled, the Geneve V6 tunnel could be encapulated and be sent out but the source-IP of Geneve V6 is always changed.

For network driver such as E1000e and "Intel(R) Ethernet 10G X710 rNDC ", the Geneve V6 tunnel packet is not sent out when uplink UPD IPV6 offload is enabled.

It could be some issue on current code base for upstream OVS and needs to be fixed ASAP.

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"

PS C:\openvswitch> Get-NetAdapterChecksumOffload -Name `Ethernet3 2'

Name IpIPv4Enabled TcpIPv4Enabled TcpIPv6Enabled UdpIPv4Enabled UdpIPv6Enabled


Ethernet3 2 RxTxEnabled RxTxEnabled RxTxEnabled RxTxEnabled RxTxEnabled

The network adapter 'Ethernet3 2' is running E1000e driver, Ethernet3 2 Intel(R) 82574L Gigabit Network Co...#4 22 Up 00-50-56-B0-6B-D3 1 Gbp

vmxnet3_driver_v6t_drop_packet.pcap.zip

aserdean commented 1 year ago

Fixed in commit: https://github.com/ovsrobot/ovs/commit/1c67a01b3a6bc7922a2d606a3b99c9338f871c36