summaryrefslogtreecommitdiff
path: root/Documentation/intro
diff options
context:
space:
mode:
authorWilson Peng <pweisong@vmware.com>2022-04-06 21:18:19 +0800
committerAlin-Gabriel Serdean <aserdean@ovn.org>2022-04-10 05:18:59 +0300
commitedb2335861d629f791467f77729e743378dac15f (patch)
tree82268b884ee34ba9aa689eec2ea3708649971ee4 /Documentation/intro
parent9d70f4a7c3df3bb33e64d8866e3aa752d747de70 (diff)
downloadopenvswitch-edb2335861d629f791467f77729e743378dac15f.tar.gz
datapath-windows: Add IPv6 Geneve tunnel support in Windows
In the first step OVS Windows will support IPv6 tunnel(Geneve IPv6 tunnel). Implementation on Windows ------------------------- 1. For the IPv6 tunnel support,  OvsIPTunnelKey will replace original OvsIPv4TunnelKey in the related flow context handing. 2. The related src and dst address will be  changed to SOCKADDR_INET type from UINT32. 3. For the IPv6 tunnel,  one node running OVS-Windows could encapsulate IPv4/IPv6 Packets via IPV6 Geneve Tunnel, and the node could also encapsulate IPv4/IPv6 packet Via IPv4 Geneve tunnel. 4. Related IPHelper data structure will be adapted to support IPv6 Tunnel. In the IPHelper part the related Windows API(such as GetUnicastIpAddressTable/GetBestRoute2/GetIpNetEntry2/ ResolveIpNetEntry2) and Windows data structure(MIB_IPFORWARD_ROW2/MIB_IPNET_ROW2/IP_ADDRESS_PREFIX) Have already supported both IPv4 and IPV6. Now OVS Windows has been adjusted some functions And data structured to support IPV6 tunnel also. 5. OVS_TUNNEL_KEY_ATTR_IPV6_SRC and OVS_TUNNEL_KEY_ATTR_IPV6_DST filed will be supported in OVS-Windows kernel for IPV6 tunnel. Testing done. ------------------------- Related topo, 1 Windows VM(Win2019) and 2 Ubuntu 16.04 server. Both VMs Are running on one ESX host. 1. Setup one IPV6 Geneve Tunnel between 1 Windows VM and 1 Ubuntu server. Windows VM, vif0( 6000::2/40.1.1.10) vif1(5000::2)—— Ubuntu VM Eth2(5000::9), name space ns1 with interface ns1_link_peer(6000::9/40.1.1.2) Related tunnnel, ovs-vsctl.exe add-port br-int bms-tun0 -- set interface bms-tun0 type=Geneve options:csum=true options:key=flow options:local_ip="5000::2" options:remote_ip=flow In this topo, traffic from Vif0(Win) to ns1_link_peer(Ubuntu) will be gone through the Geneve tunnel (5000::2—>5000::9) for both IPv4 traffic(40.1.1.10-->40.1.1.2) and IPv6 traffic(6000::2—>6000::9) 2. Setup one IPV4 Geneve Tunnel between Windows VM and 1 Ubuntu server. Windows VM, vif0( 6000::2/40.1.1.10) vif1(50.1.1.11)—— Ubuntu, Eth2(50.1.1.9), name space ns1 with interface ns1_link_peer(6000::19/40.1.1.9) Related tunnnel, ovs-vsctl.exe -- set Interface bms-tun0 type=geneve options:csum=true options:key=flow options:local_ip="50.1.1.11" options:remote_ip=flow In this topo, traffic from Vif0(Win) to ns1_link_peer(Ubuntu) will be gone through the Geneve Tunnel (50.1.1.11—>50.1.1.9) for both IPv4 traffic(40.1.1.10-->40.1.1.9) and IPv6 traffic(6000::2—>6000::19). 3.Regression test for IpV4 in Antrea project (about 60 test case) is PASS Future Work ----------- Add other type IPv6 tunnel support for Gre/Vxlan/Stt. Signed-off-by: Wilson Peng <pweisong@vmware.com> Signed-off-by: Alin-Gabriel Serdean <aserdean@ovn.org>
Diffstat (limited to 'Documentation/intro')
-rw-r--r--Documentation/intro/install/windows.rst70
1 files changed, 48 insertions, 22 deletions
diff --git a/Documentation/intro/install/windows.rst b/Documentation/intro/install/windows.rst
index fb6c2c5ec..8e9442efb 100644
--- a/Documentation/intro/install/windows.rst
+++ b/Documentation/intro/install/windows.rst
@@ -701,36 +701,62 @@ Re-Add the VIF ports with the VLAN tag:
Add tunnels
~~~~~~~~~~~
-The Windows Open vSwitch implementation support VXLAN and STT tunnels. To add
-tunnels. For example, first add the tunnel port between 172.168.201.101 <->
-172.168.201.102:
+#. IPv4 tunnel, e.g.:
-::
+ The Windows Open vSwitch implementation support VXLAN and STT tunnels.
+ To add tunnels. For example, first add the tunnel port between
+ 172.168.201.101 <->172.168.201.102:
- > ovs-vsctl add-port br-int tun-1
- > ovs-vsctl set Interface tun-1 type=<port-type>
- > ovs-vsctl set Interface tun-1 options:local_ip=172.168.201.101
- > ovs-vsctl set Interface tun-1 options:remote_ip=172.168.201.102
- > ovs-vsctl set Interface tun-1 options:in_key=flow
- > ovs-vsctl set Interface tun-1 options:out_key=flow
+ ::
-...and the tunnel port between 172.168.201.101 <-> 172.168.201.105:
+ > ovs-vsctl add-port br-int tun-1
+ > ovs-vsctl set Interface tun-1 type=<port-type>
+ > ovs-vsctl set Interface tun-1 options:local_ip=172.168.201.101
+ > ovs-vsctl set Interface tun-1 options:remote_ip=172.168.201.102
+ > ovs-vsctl set Interface tun-1 options:in_key=flow
+ > ovs-vsctl set Interface tun-1 options:out_key=flow
-::
+ ...and the tunnel port between 172.168.201.101 <-> 172.168.201.105:
- > ovs-vsctl add-port br-int tun-2
- > ovs-vsctl set Interface tun-2 type=<port-type>
- > ovs-vsctl set Interface tun-2 options:local_ip=172.168.201.102
- > ovs-vsctl set Interface tun-2 options:remote_ip=172.168.201.105
- > ovs-vsctl set Interface tun-2 options:in_key=flow
- > ovs-vsctl set Interface tun-2 options:out_key=flow
+ ::
-Where ``<port-type>`` is one of: ``stt`` or ``vxlan``
+ > ovs-vsctl add-port br-int tun-2
+ > ovs-vsctl set Interface tun-2 type=<port-type>
+ > ovs-vsctl set Interface tun-2 options:local_ip=172.168.201.102
+ > ovs-vsctl set Interface tun-2 options:remote_ip=172.168.201.105
+ > ovs-vsctl set Interface tun-2 options:in_key=flow
+ > ovs-vsctl set Interface tun-2 options:out_key=flow
-.. note::
+ Where ``<port-type>`` is one of: ``stt`` or ``vxlan``
+
+ .. note::
+
+ Any patch ports created between br-int and br-pif MUST be deleted prior
+ to adding tunnels.
+
+#. IPv6 tunnel, e.g.:
+
+ To add IPV6 Geneve tunnels. For example, add the tunnel port between
+ 5000::2 <-> 5000::9.
+
+ ::
+
+ > ovs-vsctl add-port br-int tun-3 -- set interface tun-3 type=Geneve \
+ options:csum=true options:key=flow options:local_ip="5000::2"\
+ options:remote_ip=flow
+
+ add the tunnel port between 5000::2 <-> 5000::9
+
+ > ovs-ofctl add-flow br-int "table=0,priority=100,ipv6,ipv6_src=6000::2 \
+ actions=load:0x9->NXM_NX_TUN_IPV6_DST[0..63], \
+ load:0x5000000000000000->NXM_NX_TUN_IPV6_DST[64..127], output:tun-3"
+
+ add the specified flow from 6000::2 go via IPV6 Geneve tunnel
+
+ .. note::
- Any patch ports created between br-int and br-pif MUST be deleted prior
- to adding tunnels.
+ Till the checksum offload support is complete we recommend
+ disabling TX/RX offloads for IPV6 on Windows VM.
Windows Services
----------------