datapath: Add support for VXLAN tunnels to Open vSwitch
authorKyle Mestery <kmestery@cisco.com>
Wed, 5 Dec 2012 21:06:46 +0000 (16:06 -0500)
committerJesse Gross <jesse@nicira.com>
Thu, 6 Dec 2012 02:11:06 +0000 (18:11 -0800)
commit79f827fa8be86099eb1523a51acc5dd1a5901505
treeab29403493c6df4e0b09588af892f3576e432fdd
parent5b8ab80c0897d9cc91488505a447dcf4a4e4b448
datapath: Add support for VXLAN tunnels to Open vSwitch

Add support for VXLAN tunnels to Open vSwitch. Add support
for setting the destination UDP port on a per-port basis.
This is done by adding a "dst_port" parameter to the port
configuration. This is only applicable currently to VXLAN
tunnels.

Please note this currently does not implement any sort of multicast
learning. With this patch, VXLAN tunnels must be configured similar
to GRE tunnels (e.g. point to point). A subsequent patch will implement
a VXLAN control plane in userspace to handle multicast learning.

This patch set is based on one posted by Ben Pfaff on Oct. 12, 2011
to the ovs-dev mailing list:

http://openvswitch.org/pipermail/dev/2011-October/012051.html

The patch has been maintained, updated, and freshened by me and a
version of it is available at the following github repository:

https://github.com/mestery/ovs-vxlan/tree/vxlan

I've tested this patch with multiple VXLAN tunnels between hosts
using different UDP port numbers. Performance is on par (though
slightly faster) than comparable GRE tunnels.

See the following IETF draft for additional information about VXLAN:
http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02

Signed-off-by: Kyle Mestery <kmestery@cisco.com>
[jesse: simplify error path in vxlan_tunnel_setup, don't print default VXLAN port,
        and remove dead code]
Signed-off-by: Jesse Gross <jesse@nicira.com>
14 files changed:
NEWS
README
datapath/Modules.mk
datapath/linux/.gitignore
datapath/tunnel.c
datapath/tunnel.h
datapath/vport-vxlan.c [new file with mode: 0644]
datapath/vport.c
datapath/vport.h
include/linux/openvswitch.h
include/openflow/nicira-ext.h
include/openvswitch/tunnel.h
lib/netdev-vport.c
vswitchd/vswitch.xml