5. VXLAN Frame Format (Format de trame VXLAN)
Le format de trame VXLAN est présenté ci-dessous. En analysant cela depuis le bas de la trame -- au-dessus de la séquence de vérification de trame externe (Frame Check Sequence, FCS), il y a une trame MAC interne avec son propre en-tête Ethernet avec les adresses MAC source et destination ainsi que le type Ethernet, plus un VLAN optionnel. Voir la section 6 pour plus de détails sur la gestion des balises VLAN internes.
La trame MAC interne est encapsulée avec les quatre en-têtes suivants (en commençant par l'en-tête le plus interne) :
VXLAN Header (En-tête VXLAN) : Il s'agit d'un champ de 8 octets qui contient :
-
Flags (Drapeaux, 8 bits) : où le drapeau I doit (MUST) être défini sur 1 pour un ID de réseau VXLAN (VNI) valide. Les 7 autres bits (désignés "R") sont des champs réservés et doivent (MUST) être définis sur zéro lors de la transmission et ignorés à la réception.
-
VXLAN Segment ID/VXLAN Network Identifier (VNI) (ID de segment VXLAN/Identifiant de réseau VXLAN) : il s'agit d'une valeur de 24 bits utilisée pour désigner le réseau de superposition VXLAN individuel sur lequel les VM communicantes sont situées. Les VM dans différents réseaux de superposition VXLAN ne peuvent pas communiquer entre elles.
-
Reserved fields (Champs réservés, 24 bits et 8 bits) : doivent (MUST) être définis sur zéro lors de la transmission et ignorés à la réception.
Outer UDP Header (En-tête UDP externe) : Il s'agit de l'en-tête UDP externe avec un port source fourni par le VTEP et le port de destination étant un port UDP bien connu.
-
Destination Port (Port de destination) : L'IANA a attribué la valeur 4789 pour le port UDP VXLAN, et cette valeur devrait (SHOULD) être utilisée par défaut comme port UDP de destination. Certaines implémentations précoces de VXLAN ont utilisé d'autres valeurs pour le port de destination. Pour permettre l'interopérabilité avec ces implémentations, le port de destination devrait (SHOULD) être configurable.
-
Source Port (Port source) : Il est recommandé (RECOMMENDED) que le numéro de port source UDP soit calculé en utilisant un hachage des champs du paquet interne -- un exemple étant un hachage des en-têtes de la trame Ethernet interne. Ceci est pour permettre un niveau d'entropie pour l'ECMP/l'équilibrage de charge du trafic VM-à-VM à travers la superposition VXLAN. Lors du calcul du numéro de port source UDP de cette manière, il est recommandé (RECOMMENDED) que la valeur soit dans la plage de ports dynamiques/privés 49152-65535 [RFC6335].
-
UDP Checksum (Somme de contrôle UDP) : Elle devrait (SHOULD) être transmise comme zéro. Lorsqu'un paquet est reçu avec une somme de contrôle UDP de zéro, il doit (MUST) être accepté pour la décapsulation. Optionnellement, si le point de terminaison d'encapsulation inclut une somme de contrôle UDP non nulle, elle doit (MUST) être correctement calculée sur l'ensemble du paquet, y compris l'en-tête IP, l'en-tête UDP, l'en-tête VXLAN et la trame MAC encapsulée. Lorsqu'un point de terminaison de décapsulation reçoit un paquet avec une somme de contrôle non nulle, il peut (MAY) choisir de vérifier la valeur de la somme de contrôle. S'il choisit d'effectuer une telle vérification et que la vérification échoue, le paquet doit (MUST) être abandonné. Si la destination de décapsulation choisit de ne pas effectuer la vérification, ou l'effectue avec succès, le paquet doit (MUST) être accepté pour la décapsulation.
Outer IP Header (En-tête IP externe) : Il s'agit de l'en-tête IP externe avec l'adresse IP source indiquant l'adresse IP du VTEP sur lequel la VM communicante (représentée par l'adresse MAC source interne) s'exécute. L'adresse IP de destination peut être une adresse IP unicast ou multicast (voir sections 4.1 et 4.2). Lorsqu'il s'agit d'une adresse IP unicast, elle représente l'adresse IP du VTEP connectant la VM communicante telle que représentée par l'adresse MAC de destination interne. Pour les adresses IP de destination multicast, veuillez vous référer aux scénarios détaillés dans la section 4.2.
Outer Ethernet Header (En-tête Ethernet externe, exemple) : La figure 1 est un exemple d'une trame Ethernet interne encapsulée dans un en-tête Ethernet + IP + UDP + VXLAN externe. L'adresse MAC de destination externe dans cette trame peut être l'adresse du VTEP cible ou d'un routeur de couche 3 intermédiaire. La balise VLAN externe est optionnelle. Si présente, elle peut être utilisée pour délimiter le trafic VXLAN sur le LAN.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Outer Ethernet Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outer Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outer Destination MAC Address | Outer Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outer Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|OptnlEthtype = C-Tag 802.1Q | Outer.VLAN Tag Information |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethertype = 0x0800 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Outer IPv4 Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live |Protocl=17(UDP)| Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outer Source IPv4 Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outer Destination IPv4 Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Outer UDP Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Dest Port = VXLAN Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| UDP Length | UDP Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
VXLAN Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|R|R|R|I|R|R|R| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VXLAN Network Identifier (VNI) | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Inner Ethernet Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Inner Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Inner Destination MAC Address | Inner Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Inner Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|OptnlEthtype = C-Tag 802.1Q | Inner.VLAN Tag Information |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Payload:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethertype of Original Payload | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Original Ethernet Payload |
| |
|(Note that the original Ethernet Frame's FCS is not included) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Frame Check Sequence:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| New FCS (Frame Check Sequence) for Outer Ethernet Frame |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1 : Format de trame VXLAN avec en-tête externe IPv4
Le format de trame ci-dessus montre le tunneling de trames Ethernet en utilisant IPv4 pour le transport. L'utilisation de VXLAN avec le transport IPv6 est détaillée ci-dessous.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Outer Ethernet Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outer Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outer Destination MAC Address | Outer Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Outer Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|OptnlEthtype = C-Tag 802.1Q | Outer.VLAN Tag Information |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethertype = 0x86DD |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Outer IPv6 Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| Traffic Class | Flow Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Length | NxtHdr=17(UDP)| Hop Limit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Outer Source IPv6 Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Outer Destination IPv6 Address +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Outer UDP Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Dest Port = VXLAN Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| UDP Length | UDP Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
VXLAN Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R|R|R|R|I|R|R|R| Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| VXLAN Network Identifier (VNI) | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Inner Ethernet Header:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Inner Destination MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Inner Destination MAC Address | Inner Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Inner Source MAC Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|OptnlEthtype = C-Tag 802.1Q | Inner.VLAN Tag Information |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Payload:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Ethertype of Original Payload | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Original Ethernet Payload |
| |
|(Note that the original Ethernet Frame's FCS is not included) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Frame Check Sequence:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| New FCS (Frame Check Sequence) for Outer Ethernet Frame |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2 : Format de trame VXLAN avec en-tête externe IPv6