GENEVE-Format

Die Generic Network Virtualization Encapsulation (GENEVE) ist ein Netzwerk-Encapsulation-Protokoll, das das ursprüngliche Paket mit zusätzlichen Metadaten kapselt. Diese zusätzlichen Metadaten ermöglichen eine flexible und erweiterbare Netzwerkvirtualisierung.

Das folgende Diagramm zeigt das Headerformat eines GENEVE-Pakets.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Ver|  Opt len  |O|C|   Rsvd.   |         Protocol type         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |        Virtual network identifier (VNI)       |     Rsvd.     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

In der folgenden Tabelle werden die im vorherigen Diagramm dargestellten GENEVE-Headerfelder beschrieben:

Feld Beschreibung Feldlänge
Ver Die Version des GENEVE-Protokolls. Die einzige unterstützte Version ist „0“. Weitere Informationen finden Sie unter Tunnel-Header-Felder. 2 Bits
Opt len Die Länge der Optionsfelder in 4‑Byte-Vielfachen, ohne den 8‑Byte-Tunnelheader. Weitere Informationen finden Sie unter Tunnel-Header-Felder. 6 Bits
O Das Kontrollpaketbit. Weitere Informationen finden Sie unter Tunnel-Header-Felder. 1-Bit
C Das kritische Optionsbit. Weitere Informationen finden Sie unter Tunnel-Header-Felder. 1-Bit
Rsvd Reserviertes Feld, das bei der Übertragung null (0) sein muss und beim Empfang ignoriert werden muss. Weitere Informationen finden Sie unter Tunnel-Header-Felder. 6 Bits
Protokolltyp Der Protokolltyp ermöglicht den Ethertype: IPv4 (0x0800) oder IPv6 (0x86DD). 16 Bit
Virtual Network Identifier (VNI) Eine eindeutige Kennung für ein virtuelles Netzwerkelement. Der VNI ist auf null (0) festgelegt. Weitere Informationen finden Sie unter GENEVE-Optionen. 24 Bit
Rsvd Reserviertes Feld, das bei der Übertragung null (0) sein muss und beim Empfang ignoriert werden muss. Weitere Informationen finden Sie unter Tunnel-Header-Felder. 8 Bit

GENEVE-Optionen für die Paketspiegelung in ULL-VPC-Netzwerken

Der GENEVE-Header verwendet für seine Optionen das TLV-Format (Typ-Länge-Wert). Jede Option wird mit einer Typkennung, einem Längenfeld, das die Größe des Werts angibt, und dem Wert selbst codiert. Dieses Format bietet Flexibilität und Erweiterbarkeit, sodass neue Optionen hinzugefügt werden können, ohne bestehende Implementierungen zu beeinträchtigen. In den folgenden Abschnitten werden die Optionen beschrieben. Da sich die Anzahl und Reihenfolge der Optionen ändern können, sollten Sie den GENEVE-Header anhand der TLV-Felder parsen, um die Vorwärtskompatibilität für die Geräteimplementierung zu gewährleisten.

Die GENEVE-Optionen, die speziell für die ULL-Paketspiegelung gelten, sind:

  • Netzwerk-ID (Netzwerk-Cookie)
  • Zeitstempel
  • Stabile Netzwerk-ID
  • Primäre IP-Adresse

Netzwerk-ID

Die Option „Netzwerk-ID“, auch als „Netzwerk-Cookie“ bezeichnet, identifiziert das virtuelle Netzwerk, das mit GENEVE-gekapseltem Traffic in der ULL-Paketspiegelung verknüpft ist. Diese Option wird durch die Optionsklasse 0x0132 (Google) und den Typ 0x1 (Network ID) identifiziert.

Bei der ULL-Paketspiegelung wird das Netzwerk-Cookie auf null (0) gesetzt. Die Option „data“ enthält 32 Bit. Die ersten 31 Bit sind reserviert und das letzte Bit gibt die Richtung des ursprünglichen Pakets an.

Bei der ULL-Paketspiegelung wird eine modifizierte Version der Option für die Netzwerk-ID verwendet. In dieser Version sind alle Bits außer den Richtungs- und reservierten Bits auf 0 gesetzt. Weitere Informationen zum Erfassungspunkt finden Sie unter Stabile Netzwerk-ID.

Das folgende Diagramm zeigt das Optionsformat im GENEVE-Paket.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                            Reserved                         |D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

In der folgenden Tabelle werden die im vorherigen Diagramm gezeigten Optionsfelder beschrieben:

Feld Beschreibung Feldlänge
Optionsklasse Gibt die Organisation oder das Rechtssubjekt an, das die Option definiert hat. Der Wert 0x0132 gibt Google als definierende Einheit an. 16 Bit
Typ Gibt den Typ der Option innerhalb einer Klasse an. Der Wert 0x1 gibt die Option „Network ID“ (Netzwerk-ID) an. Weitere Informationen finden Sie unter Tunneloptionen. 8 Bit
R Die Option „control“ ist für die zukünftige Verwendung reserviert. Diese Bits müssen bei der Übertragung null (0) sein und beim Empfang ignoriert werden. 3 Bits
Len Die Länge der Nutzlast der Option in 4‑Byte-Schritten. Die Nutzlast der Netzwerk-ID ist 32 Bit (4 Byte) lang. Die Länge für diese Option ist also auf 1 festgelegt. 5 Bits
Reserviert Muss bei der Übertragung auf null (0) gesetzt und beim Empfang ignoriert werden. 31 Bits
D Gibt die Richtung des ursprünglichen Pakets an. Null (0) gibt ein eingehendes und eins (1) ein ausgehendes Paket auf der ursprünglichen gespiegelten Ressource an. 1-Bit

Zeitstempel

Die Zeitstempeloption gibt die ursprüngliche Erfassungszeit des Pakets am Erfassungspunkt an (die Compute Engine-Instanz, auf der das Paket erfasst oder gespiegelt wurde). Diese Option wird durch die Optionsklasse 0x0132 (Google) und den Typ 0x0f (Zeitstempel) identifiziert.

Das folgende Diagramm zeigt das Optionsformat im GENEVE-Paket.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x0f   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Timestamp                           +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

In der folgenden Tabelle werden die im vorherigen Diagramm gezeigten Optionsfelder beschrieben:

Feld Beschreibung Feldlänge
Optionsklasse Gibt die Organisation oder das Rechtssubjekt an, das die Option definiert hat. Der Wert 0x0132 gibt Google als definierende Einheit an. 16 Bit
Typ Gibt den Typ der Option innerhalb einer Klasse an. Der Wert 0x0f gibt die Zeitstempeloption an. Weitere Informationen finden Sie unter Tunneloptionen. 8 Bit
R Die Option „control“ ist für die zukünftige Verwendung reserviert. Diese Bits müssen bei der Übertragung null (0) sein und beim Empfang ignoriert werden. 3 Bits
Len Die Länge der Nutzlast der Option in 4‑Byte-Schritten. Die Zeitstempel-Nutzlast hat eine Länge von 64 Bit (8 Byte). Die Länge für diese Option ist also auf 2 festgelegt. 5 Bits
Zeitstempel Die Erfassungszeit des ursprünglichen Pakets, dargestellt als Nanosekunden seit der Epoche. Die Granularität im Nanosekundenbereich garantiert keine Genauigkeit im Nanosekundenbereich. 64 Bit

Stabile Netzwerk-ID

Mit der Option „Network stable ID“ wird das Netzwerk der gespiegelten Instanz identifiziert. Diese Option wird durch die Optionsklasse 0x0132 (Google) und den Typ 0x10 (Network stable ID) identifiziert.

Das folgende Diagramm zeigt das Optionsformat im GENEVE-Paket. Die stabile ID des Netzwerks besteht aus einer Projektnummer und einer Netzwerk-ID.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x10   |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                       Project Number                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                         Network ID                            +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

In der folgenden Tabelle werden die im vorherigen Diagramm gezeigten Optionsfelder beschrieben:

Feld Beschreibung Feldlänge
Optionsklasse Gibt die Organisation oder das Rechtssubjekt an, das die Option definiert hat. Der Wert 0x0132 gibt Google als definierende Einheit an. 16 Bit
Typ Gibt den Typ der Option innerhalb einer Klasse an. Der Wert 0x10 steht für die Option „Stabile Netzwerk-ID“. Weitere Informationen finden Sie unter Tunneloptionen. 8 Bit
R Die Option „control“ ist für die zukünftige Verwendung reserviert. Diese Bits müssen bei der Übertragung null (0) sein und beim Empfang ignoriert werden. 3 Bits
Len Die Länge der Nutzlast der Option in 4‑Byte-Schritten. Die Nutzlast der Netzwerk-ID ist 64 Bit (8 Byte) lang. Die Länge für diese Option ist also auf 4 festgelegt. 5 Bits
Projektnummer Projektnummer des Google Cloud -Projekts. 64 Bit
Netzwerk-ID Die ID des ULL-VPC-Netzwerk. 64 Bit

Primäre IP-Adresse

Mit der Option „Primäre IP-Adresse“ wird die IP-Adresse des Erfassungspunkts (die Compute Engine-Instanz, auf der das Paket erfasst oder gespiegelt wurde) angegeben. Diese Option wird durch die Optionsklasse 0x0132 (Google) und den Typ 0x11 (Primary IP Address) identifiziert.

Das folgende Diagramm zeigt das Optionsformat im GENEVE-Paket.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option class=0x0132 (Google) |   Type=0x11   |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Primary IP Address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

In der folgenden Tabelle werden die im vorherigen Diagramm gezeigten Optionsfelder beschrieben:

Feld Beschreibung Feldlänge
Optionsklasse Gibt die Organisation oder das Rechtssubjekt an, das die Option definiert hat. Der Wert 0x0132 gibt Google als definierende Einheit an. 16 Bit
Typ Gibt den Typ der Option innerhalb einer Klasse an. Der Wert 0x11 steht für die Option „Primäre IP-Adresse“. 8 Bit
R Die Option „control“ ist für die zukünftige Verwendung reserviert. Diese Bits müssen bei der Übertragung null (0) sein und beim Empfang ignoriert werden. 3 Bits
Len Die Länge der Nutzlast der Option in 4‑Byte-Schritten. Die Nutzlast der IP-Adresse ist 32 Bit (4 Byte) lang. Die Länge für diese Option ist also auf 1 festgelegt. 5 Bits
Primäre IP-Adresse Die primäre IP-Adresse der Compute Engine-Quellinstanz. 32 Bit

GENEVE-Header-Formate

In diesem Abschnitt werden die GENEVE-Headerformate beschrieben, die von Paketspiegelung für ULL-VPC-Netzwerke verwendet werden.

IPv4-Header

Das GENEVE-Paketformat kapselt einen kompakten Tunnelheader in UDP über IPv4. Ein kleiner, fester Tunnelheader enthält Kontrollinformationen sowie grundlegende Funktionen und Interoperabilität.

Das folgende Diagramm zeigt IPv4-Headerfelder für das GENEVE-Paket.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |Version|  IHL  |Type of service|          Total length         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |         Identification        |Flags|     Fragment offset     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Time to live | Proto=17 (UDP)|        Header checksum        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                         Source address                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      Destination address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

In der folgenden Tabelle werden die Google Cloud-spezifischen IPv4-Headerfelder beschrieben, die im vorherigen Diagramm dargestellt sind. Informationen zu allgemeinen IPv4-Headerfeldern finden Sie in RFC 8926.

Feld Beschreibung
Proto=17 (immer UDP für GENEVE) Gibt an, dass für die gekapselte Nutzlast das UDP-Protokoll verwendet wird.
Quelladresse Die Gateway-IP-Adresse des lokalen Subnetzes.
Zieladresse Die virtuelle IP-Adresse des vom Kunden bereitgestellten Load Balancers.

UDP-Header

Der UDP-Header (RFC 0768) kapselt Daten und behält dabei die verbindungslosen Semantiken von Ethernet und IP-Adressen bei. Außerdem wird für Router, die Equal Cost Multi-Path (ECMP) ausführen, Entropie bereitgestellt.

Das folgende Diagramm zeigt das Headerformat für ein GENEVE-Paket, das in einem UDP-Paket gekapselt ist.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      Source port = <hash>     |   Dest port = 6081 (Geneve)   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           UDP length          |          UDP checksum         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

In der folgenden Tabelle werden die im vorherigen Diagramm gezeigten UDP-Headerfelder beschrieben:

Feld Beschreibung
Quellport Ein undurchsichtiger Hash über den gesamten 16‑Bit-Bereich. Der Wert ist für alle Pakete, die zu einem einzelnen gekapselten Flow gehören (beide Richtungen), gleich.
Zielport Die angegebene Zielportnummer für GENEVE-Traffic, die auf 6081 festgelegt ist.
UDP-Länge Die Gesamtlänge des UDP-Datagramms, einschließlich des UDP-Headers und des gekapselten GENEVE-Pakets.
UDP-Prüfsumme Der Prüfsummenwert für das UDP-Datagramm, der zur Fehlererkennung verwendet wird.

GENEVE-Optionen

Die Google Cloud-spezifischen GENEVE-Optionen, die bei der Paketspiegelung für ULL-VPC-Netzwerke verwendet werden, sind Netzwerk-Cookie, Zeitstempel, stabile Netzwerk-ID, primäre IP-Adresse und Zeitstempel für die Verarbeitung in der richtigen Reihenfolge. Weitere Informationen finden Sie unter GENEVE-Optionen für die Paketspiegelung in ULL-VPC-Netzwerken.

Das folgende Diagramm zeigt, wie Google Cloud-spezifische GENEVE-Optionen in der Paketspiegelung für ULL-VPC-Netzwerke verwendet werden.

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                          Network Cookie                     |D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x0f   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Timestamp                           +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |    Type=0x10   |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                         Project Number                        +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Network ID                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x11   |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Primary IP Address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |  Option Class=0x0132 (Google) |   Type=0x13   |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                Fair order processing timestamp                +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

Das Opt len im obigen Diagramm steht für die Länge der Optionsfelder in 4‑Byte-Vielfachen. Diese Länge umfasst nicht den 8 Byte langen Tunnelheader mit fester Länge. Weitere Informationen finden Sie unter Tunnel-Header-Felder.

GENEVE-Datenkapselung und MTU-Anforderungen

Die maximale Übertragungseinheit (MTU) gibt die Bytezahl des größten IP-Pakets an, einschließlich IP-Header, Layer-4-Protokoll-Header und Daten der Layer 4, die in einen Ethernet-Frame passen. Weitere Informationen finden Sie unter Maximale Übertragungseinheit.

ULL-VPC-Netzwerke haben eine maximale MTU von 1.500 Byte. Für die ULL-Paketspiegelung sind jedoch 308 Bytes für den Aufwand für die GENEVE-Datenkapselung erforderlich. Damit gespiegelter Traffic Ihre Collector-Instanzen ohne Fragmentierung erreicht, muss das Netzwerk, in dem sich Ihr Collector befindet, eine MTU von mindestens 1.808 Byte haben (1.500 Byte für Standard-Traffic plus 308 Byte für den GENEVE-Encapsulation-Overhead).

Wenn die MTU-Grenzwerte nicht ausreichen, um die GENEVE-Kapselung zu ermöglichen, werden Pakete möglicherweise verworfen. Dies kann auf der Ebene des virtuellen Netzwerks oder im Betriebssystem auftreten.