5. VXLAN Frame Format (VXLAN-Frameformat)
Das VXLAN-Frameformat ist unten dargestellt. Bei der Analyse von unten nach oben -- oberhalb der äußeren Frame Check Sequence (FCS) befindet sich ein innerer MAC-Frame mit eigenem Ethernet-Header mit Quell- und Ziel-MAC-Adressen sowie dem Ethernet-Typ, plus einem optionalen VLAN. Weitere Details zur Handhabung innerer VLAN-Tags finden Sie in Abschnitt 6.
Der innere MAC-Frame wird mit den folgenden vier Headern gekapselt (beginnend mit dem innersten Header):
VXLAN Header (VXLAN-Header): Dies ist ein 8-Byte-Feld, das Folgendes enthält:
-
Flags (Flags, 8 Bit): wobei das I-Flag für eine gültige VXLAN-Netzwerk-ID (VNI) auf 1 gesetzt werden muss (MUST). Die anderen 7 Bits (bezeichnet als "R") sind reservierte Felder und müssen (MUST) bei der Übertragung auf Null gesetzt und beim Empfang ignoriert werden.
-
VXLAN Segment ID/VXLAN Network Identifier (VNI) (VXLAN-Segment-ID/VXLAN-Netzwerkidentifikator): Dies ist ein 24-Bit-Wert, der verwendet wird, um das individuelle VXLAN-Overlay-Netzwerk zu bezeichnen, auf dem sich die kommunizierenden VMs befinden. VMs in verschiedenen VXLAN-Overlay-Netzwerken können nicht miteinander kommunizieren.
-
Reserved fields (Reservierte Felder, 24 Bit und 8 Bit): müssen (MUST) bei der Übertragung auf Null gesetzt und beim Empfang ignoriert werden.
Outer UDP Header (Äußerer UDP-Header): Dies ist der äußere UDP-Header mit einem vom VTEP bereitgestellten Quellport und dem Zielport als einem wohlbekannten UDP-Port.
-
Destination Port (Zielport): IANA hat den Wert 4789 für den VXLAN-UDP-Port zugewiesen, und dieser Wert sollte (SHOULD) standardmäßig als Ziel-UDP-Port verwendet werden. Einige frühe Implementierungen von VXLAN haben andere Werte für den Zielport verwendet. Um die Interoperabilität mit diesen Implementierungen zu ermöglichen, sollte (SHOULD) der Zielport konfigurierbar sein.
-
Source Port (Quellport): Es wird empfohlen (RECOMMENDED), dass die UDP-Quellportnummer unter Verwendung eines Hash von Feldern aus dem inneren Paket berechnet wird -- ein Beispiel ist ein Hash der Header des inneren Ethernet-Frames. Dies dient dazu, ein gewisses Maß an Entropie für das ECMP/Load-Balancing des VM-zu-VM-Verkehrs über das VXLAN-Overlay zu ermöglichen. Bei der Berechnung der UDP-Quellportnummer auf diese Weise wird empfohlen (RECOMMENDED), dass der Wert im dynamischen/privaten Portbereich 49152-65535 [RFC6335] liegt.
-
UDP Checksum (UDP-Prüfsumme): Sie sollte (SHOULD) als Null übertragen werden. Wenn ein Paket mit einer UDP-Prüfsumme von Null empfangen wird, muss (MUST) es für die Entkapselung akzeptiert werden. Optional, wenn der kapselnde Endpunkt eine Nicht-Null-UDP-Prüfsumme enthält, muss (MUST) sie korrekt über das gesamte Paket berechnet werden, einschließlich IP-Header, UDP-Header, VXLAN-Header und gekapseltem MAC-Frame. Wenn ein entkapselender Endpunkt ein Paket mit einer Nicht-Null-Prüfsumme empfängt, kann (MAY) er wählen, den Prüfsummenwert zu überprüfen. Wenn er eine solche Überprüfung durchführt und die Überprüfung fehlschlägt, muss (MUST) das Paket verworfen werden. Wenn das entkapselnde Ziel wählt, die Überprüfung nicht durchzuführen oder sie erfolgreich durchführt, muss (MUST) das Paket für die Entkapselung akzeptiert werden.
Outer IP Header (Äußerer IP-Header): Dies ist der äußere IP-Header mit der Quell-IP-Adresse, die die IP-Adresse des VTEP angibt, über den die kommunizierende VM (dargestellt durch die innere Quell-MAC-Adresse) läuft. Die Ziel-IP-Adresse kann eine Unicast- oder Multicast-IP-Adresse sein (siehe Abschnitte 4.1 und 4.2). Wenn es sich um eine Unicast-IP-Adresse handelt, repräsentiert sie die IP-Adresse des VTEP, der die kommunizierende VM verbindet, wie durch die innere Ziel-MAC-Adresse dargestellt. Für Multicast-Ziel-IP-Adressen verweisen Sie bitte auf die in Abschnitt 4.2 detaillierten Szenarien.
Outer Ethernet Header (Äußerer Ethernet-Header, Beispiel): Abbildung 1 ist ein Beispiel eines inneren Ethernet-Frames, der in einem äußeren Ethernet + IP + UDP + VXLAN-Header gekapselt ist. Die äußere Ziel-MAC-Adresse in diesem Frame kann die Adresse des Ziel-VTEP oder eines zwischengeschalteten Layer-3-Routers sein. Das äußere VLAN-Tag ist optional. Falls vorhanden, kann es zur Abgrenzung von VXLAN-Verkehr im LAN verwendet werden.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Abbildung 1: VXLAN-Frameformat mit IPv4-Außenheader
Das oben gezeigte Frameformat zeigt das Tunneling von Ethernet-Frames unter Verwendung von IPv4 für den Transport. Die Verwendung von VXLAN mit IPv6-Transport wird im Folgenden detailliert beschrieben.
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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Abbildung 2: VXLAN-Frameformat mit IPv6-Außenheader