VXLAN(4P) | Protocols | VXLAN(4P) |
VXLAN
, vxlan
—
#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 */
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); }
<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 |