| 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 |