mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 04:42:12 +00:00
vxlan: virtual extensible lan
This is an implementation of Virtual eXtensible Local Area Network as described in draft RFC: http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02 The driver integrates a Virtual Tunnel Endpoint (VTEP) functionality that learns MAC to IP address mapping. This implementation has not been tested only against the Linux userspace implementation using TAP, not against other vendor's equipment. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
193ba92452
commit
d342894c5d
47
Documentation/networking/vxlan.txt
Normal file
47
Documentation/networking/vxlan.txt
Normal file
@ -0,0 +1,47 @@
|
||||
Virtual eXtensible Local Area Networking documentation
|
||||
======================================================
|
||||
|
||||
The VXLAN protocol is a tunnelling protocol that is designed to
|
||||
solve the problem of limited number of available VLAN's (4096).
|
||||
With VXLAN identifier is expanded to 24 bits.
|
||||
|
||||
It is a draft RFC standard, that is implemented by Cisco Nexus,
|
||||
Vmware and Brocade. The protocol runs over UDP using a single
|
||||
destination port (still not standardized by IANA).
|
||||
This document describes the Linux kernel tunnel device,
|
||||
there is also an implantation of VXLAN for Openvswitch.
|
||||
|
||||
Unlike most tunnels, a VXLAN is a 1 to N network, not just point
|
||||
to point. A VXLAN device can either dynamically learn the IP address
|
||||
of the other end, in a manner similar to a learning bridge, or the
|
||||
forwarding entries can be configured statically.
|
||||
|
||||
The management of vxlan is done in a similar fashion to it's
|
||||
too closest neighbors GRE and VLAN. Configuring VXLAN requires
|
||||
the version of iproute2 that matches the kernel release
|
||||
where VXLAN was first merged upstream.
|
||||
|
||||
1. Create vxlan device
|
||||
# ip li add vxlan0 type vxlan id 42 group 239.1.1.1 dev eth1
|
||||
|
||||
This creates a new device (vxlan0). The device uses the
|
||||
the multicast group 239.1.1.1 over eth1 to handle packets where
|
||||
no entry is in the forwarding table.
|
||||
|
||||
2. Delete vxlan device
|
||||
# ip link delete vxlan0
|
||||
|
||||
3. Show vxlan info
|
||||
# ip -d show vxlan0
|
||||
|
||||
It is possible to create, destroy and display the vxlan
|
||||
forwarding table using the new bridge command.
|
||||
|
||||
1. Create forwarding table entry
|
||||
# bridge fdb add to 00:17:42:8a:b4:05 dst 192.19.0.2 dev vxlan0
|
||||
|
||||
2. Delete forwarding table entry
|
||||
# bridge fdb delete 00:17:42:8a:b4:05
|
||||
|
||||
3. Show forwarding table
|
||||
# bridge fdb show dev vxlan0
|
@ -149,6 +149,19 @@ config MACVTAP
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called macvtap.
|
||||
|
||||
config VXLAN
|
||||
tristate "Virtual eXtensible Local Area Network (VXLAN)"
|
||||
depends on EXPERIMENTAL
|
||||
---help---
|
||||
This allows one to create vxlan virtual interfaces that provide
|
||||
Layer 2 Networks over Layer 3 Networks. VXLAN is often used
|
||||
to tunnel virtual network infrastructure in virtualized environments.
|
||||
For more information see:
|
||||
http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02
|
||||
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called vxlan.
|
||||
|
||||
config NETCONSOLE
|
||||
tristate "Network console logging support"
|
||||
---help---
|
||||
|
@ -21,6 +21,7 @@ obj-$(CONFIG_NET_TEAM) += team/
|
||||
obj-$(CONFIG_TUN) += tun.o
|
||||
obj-$(CONFIG_VETH) += veth.o
|
||||
obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
|
||||
obj-$(CONFIG_VXLAN) += vxlan.o
|
||||
|
||||
#
|
||||
# Networking Drivers
|
||||
|
1217
drivers/net/vxlan.c
Normal file
1217
drivers/net/vxlan.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -272,6 +272,22 @@ enum macvlan_mode {
|
||||
|
||||
#define MACVLAN_FLAG_NOPROMISC 1
|
||||
|
||||
/* VXLAN section */
|
||||
enum {
|
||||
IFLA_VXLAN_UNSPEC,
|
||||
IFLA_VXLAN_ID,
|
||||
IFLA_VXLAN_GROUP,
|
||||
IFLA_VXLAN_LINK,
|
||||
IFLA_VXLAN_LOCAL,
|
||||
IFLA_VXLAN_TTL,
|
||||
IFLA_VXLAN_TOS,
|
||||
IFLA_VXLAN_LEARNING,
|
||||
IFLA_VXLAN_AGEING,
|
||||
IFLA_VXLAN_LIMIT,
|
||||
__IFLA_VXLAN_MAX
|
||||
};
|
||||
#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
|
||||
|
||||
/* SR-IOV virtual function management section */
|
||||
|
||||
enum {
|
||||
|
Loading…
Reference in New Issue
Block a user