Skip to content

Commit

Permalink
vxlan: virtual extensible lan
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
stephen hemminger authored and davem330 committed Oct 1, 2012
1 parent 193ba92 commit d342894
Show file tree
Hide file tree
Showing 5 changed files with 1,294 additions and 0 deletions.
47 changes: 47 additions & 0 deletions Documentation/networking/vxlan.txt
Original file line number Diff line number Diff line change
@@ -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
13 changes: 13 additions & 0 deletions drivers/net/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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---
Expand Down
1 change: 1 addition & 0 deletions drivers/net/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading

0 comments on commit d342894

Please sign in to comment.