Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 ======================================================
0004 Virtual eXtensible Local Area Networking documentation
0005 ======================================================
0006 
0007 The VXLAN protocol is a tunnelling protocol designed to solve the
0008 problem of limited VLAN IDs (4096) in IEEE 802.1q.  With VXLAN the
0009 size of the identifier is expanded to 24 bits (16777216).
0010 
0011 VXLAN is described by IETF RFC 7348, and has been implemented by a
0012 number of vendors.  The protocol runs over UDP using a single
0013 destination port.  This document describes the Linux kernel tunnel
0014 device, there is also a separate implementation of VXLAN for
0015 Openvswitch.
0016 
0017 Unlike most tunnels, a VXLAN is a 1 to N network, not just point to
0018 point. A VXLAN device can learn the IP address of the other endpoint
0019 either dynamically in a manner similar to a learning bridge, or make
0020 use of statically-configured forwarding entries.
0021 
0022 The management of vxlan is done in a manner similar to its two closest
0023 neighbors GRE and VLAN. Configuring VXLAN requires the version of
0024 iproute2 that matches the kernel release where VXLAN was first merged
0025 upstream.
0026 
0027 1. Create vxlan device::
0028 
0029     # ip link add vxlan0 type vxlan id 42 group 239.1.1.1 dev eth1 dstport 4789
0030 
0031 This creates a new device named vxlan0.  The device uses the multicast
0032 group 239.1.1.1 over eth1 to handle traffic for which there is no
0033 entry in the forwarding table.  The destination port number is set to
0034 the IANA-assigned value of 4789.  The Linux implementation of VXLAN
0035 pre-dates the IANA's selection of a standard destination port number
0036 and uses the Linux-selected value by default to maintain backwards
0037 compatibility.
0038 
0039 2. Delete vxlan device::
0040 
0041     # ip link delete vxlan0
0042 
0043 3. Show vxlan info::
0044 
0045     # ip -d link show vxlan0
0046 
0047 It is possible to create, destroy and display the vxlan
0048 forwarding table using the new bridge command.
0049 
0050 1. Create forwarding table entry::
0051 
0052     # bridge fdb add to 00:17:42:8a:b4:05 dst 192.19.0.2 dev vxlan0
0053 
0054 2. Delete forwarding table entry::
0055 
0056     # bridge fdb delete 00:17:42:8a:b4:05 dev vxlan0
0057 
0058 3. Show forwarding table::
0059 
0060     # bridge fdb show dev vxlan0
0061 
0062 The following NIC features may indicate support for UDP tunnel-related
0063 offloads (most commonly VXLAN features, but support for a particular
0064 encapsulation protocol is NIC specific):
0065 
0066  - `tx-udp_tnl-segmentation`
0067  - `tx-udp_tnl-csum-segmentation`
0068     ability to perform TCP segmentation offload of UDP encapsulated frames
0069 
0070  - `rx-udp_tunnel-port-offload`
0071     receive side parsing of UDP encapsulated frames which allows NICs to
0072     perform protocol-aware offloads, like checksum validation offload of
0073     inner frames (only needed by NICs without protocol-agnostic offloads)
0074 
0075 For devices supporting `rx-udp_tunnel-port-offload` the list of currently
0076 offloaded ports can be interrogated with `ethtool`::
0077 
0078   $ ethtool --show-tunnels eth0
0079   Tunnel information for eth0:
0080     UDP port table 0:
0081       Size: 4
0082       Types: vxlan
0083       No entries
0084     UDP port table 1:
0085       Size: 4
0086       Types: geneve, vxlan-gpe
0087       Entries (1):
0088           port 1230, vxlan-gpe