VXLAN(4P) | Protocols | VXLAN(4P) |
VXLAN
, vxlan
— Virtual eXtensible Local Area Network
#include
<sys/vxlan.h>
VXLAN
(RFC 7348) is a network
encapsulation protocol that is used by
overlay(7) devices. A payload,
commonly an Ethernet frame, is placed inside of a UDP packet and prepended
with an 8-byte VXLAN
header.
The VXLAN
header contains two 32-bit
words. The first word is an 8-bit flags field followed by 24 reserved bits.
The second word is a 24-bit virtual network identifier followed by 8
reserved bits. The virtual network identifier identifies a unique
VXLAN
and is similar in concept to an IEEE 802.1Q
VLAN identifier.
The system provides access to VXLAN
through dladm overlays. See dladm(8)
and overlay(7) for more
information.
The
<sys/vxlan.h>
header
provides information for working with the VXLAN
protocol. The contents of this header are
uncommitted.
The header defines a structure that may be used to encode and decode a VXLAN
header. It defines a packed structure type
vxlan_hdr_t
which represents the VXLAN
frame header and has the
following members:
uint32_t vxlan_flags; /* flags in upper 8 bits */ uint32_t vxlan_id; /* VXLAN ID in upper 24 bits */
Example
1 Decoding a VXLAN
header
The following example shows how to validate a
header.
For more information on this process, see
RFC 7348.
#include <sys/types.h> #include <netinet/in.h> #include <inttypes.h> #include <sys/vxlan.h> ... /* * Validate the following bytes as a VXLAN header. If valid, return * 0 and store the VXLAN identifier in *vidp. Otherwise, return an * error. */ int validate_vxlan(void *buf, int len, uint32_t *vidp) { vxlan_hdr_t *hdr; if (len < sizeof (vxlan_hdr_t)) return (EINAVL); hdr = buf; if ((ntohl(hdr->vxlan_flags) & VXLAN_MAGIC) == 0) return (EINAVL); *vidp = ntohl(vxlan->vxlan_id) >> VXLAN_ID_SHIFT; return (0); }
The contents of
<sys/vxlan.h>
are
Uncommitted.
Mahalingam, M., Dutt, D., Duda, K., Agarwal, P., Kreeger L., Sridhar, T., Bursell, M., and C. Wright, RFC 7348, Virtual eXtensible Local Area Network (VXLAN): A Framework, for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks, August 2014.
April 10, 2015 | OmniOS |