summaryrefslogtreecommitdiff
path: root/datapath
diff options
context:
space:
mode:
authorMartin Varghese <martin.varghese@nokia.com>2020-12-17 12:48:41 +0530
committerIlya Maximets <i.maximets@ovn.org>2020-12-22 12:51:22 +0100
commitebe0e518b0489aafbe385ba90133f6bacba33353 (patch)
tree73972f43dc33161d91cb93684f153da5919b0290 /datapath
parent55f2b065acd477a6810d5279fcace8b42bd594f5 (diff)
downloadopenvswitch-ebe0e518b0489aafbe385ba90133f6bacba33353.tar.gz
tunnel: Bareudp Tunnel Support.
There are various L3 encapsulation standards using UDP being discussed to leverage the UDP based load balancing capability of different networks. MPLSoUDP (__ https://tools.ietf.org/html/rfc7510) is one among them. The Bareudp tunnel provides a generic L3 encapsulation support for tunnelling different L3 protocols like MPLS, IP, NSH etc. inside a UDP tunnel. An example to create bareudp device to tunnel MPLS traffic is given $ ovs-vsctl add-port br_mpls udp_port -- set interface udp_port \ type=bareudp options:remote_ip=2.1.1.3 options:local_ip=2.1.1.2 \ options:payload_type=0x8847 options:dst_port=6635 The bareudp device supports special handling for MPLS & IP as they can have multiple ethertypes. MPLS procotcol can have ethertypes ETH_P_MPLS_UC (unicast) & ETH_P_MPLS_MC (multicast). IP protocol can have ethertypes ETH_P_IP (v4) & ETH_P_IPV6 (v6). The bareudp device to tunnel L3 traffic with multiple ethertypes (MPLS & IP) can be created by passing the L3 protocol name as string in the field payload_type. An example to create bareudp device to tunnel MPLS unicast & multicast traffic is given below.:: $ ovs-vsctl add-port br_mpls udp_port -- set interface udp_port \ type=bareudp options:remote_ip=2.1.1.3 options:local_ip=2.1.1.2 \ options:payload_type=mpls options:dst_port=6635 Signed-off-by: Martin Varghese <martin.varghese@nokia.com> Acked-By: Greg Rose <gvrose8192@gmail.com> Tested-by: Greg Rose <gvrose8192@gmail.com> Acked-by: Eelco Chaudron <echaudro@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Diffstat (limited to 'datapath')
-rw-r--r--datapath/linux/compat/include/linux/openvswitch.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/datapath/linux/compat/include/linux/openvswitch.h b/datapath/linux/compat/include/linux/openvswitch.h
index 2d884312f..875de2025 100644
--- a/datapath/linux/compat/include/linux/openvswitch.h
+++ b/datapath/linux/compat/include/linux/openvswitch.h
@@ -246,6 +246,7 @@ enum ovs_vport_type {
OVS_VPORT_TYPE_IP6ERSPAN = 108, /* ERSPAN tunnel. */
OVS_VPORT_TYPE_IP6GRE = 109,
OVS_VPORT_TYPE_GTPU = 110,
+ OVS_VPORT_TYPE_BAREUDP = 111, /* Bareudp tunnel. */
__OVS_VPORT_TYPE_MAX
};
@@ -308,6 +309,14 @@ enum {
#define OVS_VXLAN_EXT_MAX (__OVS_VXLAN_EXT_MAX - 1)
+enum {
+ OVS_BAREUDP_EXT_UNSPEC,
+ OVS_BAREUDP_EXT_MULTIPROTO_MODE,
+ __OVS_BAREUDP_EXT_MAX,
+};
+
+#define OVS_BAREUDP_EXT_MAX (__OVS_BAREUDP_EXT_MAX - 1)
+
/* OVS_VPORT_ATTR_OPTIONS attributes for tunnels.
*/
enum {