Comprendere il formato GENEVE

Generic Network Virtualization Encapsulation (GENEVE) è un protocollo di incapsulamento di rete che incapsula il pacchetto originale con metadati aggiuntivi. Questi metadati aggiuntivi contribuiscono a rendere possibile una virtualizzazione di rete flessibile ed estensibile.

Il seguente diagramma mostra il formato dell'intestazione di un pacchetto GENEVE.

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

La seguente tabella descrive i campi dell'intestazione GENEVE mostrati nel diagramma precedente:

Campo Descrizione Lunghezza campo
Ver La versione del protocollo GENEVE. L'unica versione supportata è zero (0). Per saperne di più, consulta Campi dell'intestazione del tunnel. 2 bit
Opt len La lunghezza dei campi delle opzioni, espressa in multipli di 4 byte, escluso l'intestazione del tunnel fissa di 8 byte. Per saperne di più, consulta Campi di intestazione del tunnel. 6 bit
O Il bit del pacchetto di controllo. Per saperne di più, consulta Campi dell'intestazione del tunnel. 1 bit
C Il bit delle opzioni critiche. Per saperne di più, vedi Campi di intestazione del tunnel. 1 bit
Rsvd Campo riservato, che deve essere zero (0) durante la trasmissione e deve essere ignorato al ricevimento. Per saperne di più, consulta Campi di intestazione del tunnel. 6 bit
Tipo di protocollo Il tipo di protocollo consente ethertype: IPv4 (0x0800) o IPv6 (0x86DD). 16 bit
Identificatore di rete virtuale (VNI) Un identificatore univoco per un elemento di rete virtuale. Il VNI è impostato su zero (0). Per saperne di più, vedi Opzioni GENEVE. 24 bit
Rsvd Campo riservato, che deve essere zero (0) durante la trasmissione e deve essere ignorato al ricevimento. Per saperne di più, consulta Campi di intestazione del tunnel. 8 bit

Opzioni GENEVE per il mirroring pacchetto nelle reti VPC ULL

L'intestazione GENEVE utilizza un formato Type-Length-Value (TLV) per le opzioni. Ogni opzione è codificata con un identificatore di tipo, un campo di lunghezza che indica la dimensione del valore e il valore stesso. Questo formato offre flessibilità ed estensibilità, consentendo l'aggiunta di nuove opzioni senza interrompere le implementazioni esistenti. Le sezioni seguenti descrivono le opzioni. Poiché il numero e l'ordine delle opzioni potrebbero cambiare, analizza l'intestazione GENEVE in base ai campi TLV per garantire la compatibilità futura dell'implementazione del dispositivo.

Le opzioni GENEVE specifiche per il mirroring pacchetto ULL sono le seguenti:

  • ID rete (cookie di rete)
  • Timestamp
  • ID stabile della rete
  • Indirizzo IP principale

ID rete

L'opzione ID rete, nota anche come "cookie di rete", identifica la rete virtuale associata al traffico incapsulato GENEVE in Mirroring pacchetto ULL. Questa opzione è identificata dalla classe di opzioni 0x0132 (Google) e dal tipo 0x1 (ID rete).

Per il mirroring pacchetto ULL, il cookie di rete è impostato su zero (0). I dati dell'opzione contengono 32 bit; i primi 31 bit sono riservati e l'ultimo bit indica la direzione del pacchetto originale.

Mirroring pacchetto ULL utilizza una versione modificata dell'opzione ID rete. In questa versione, tutti i bit tranne quelli di direzione e riservati sono impostati su 0. Per saperne di più sul punto di acquisizione, vedi ID stabile di rete.

Il seguente diagramma mostra il formato dell'opzione nel pacchetto GENEVE.

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

La tabella seguente descrive i campi delle opzioni mostrati nel diagramma precedente:

Campo Descrizione Lunghezza campo
Classe di opzioni Identifica l'organizzazione o la persona giuridica che ha definito l'opzione. Il valore 0x0132 indica Google come entità di definizione. 16 bit
Tipo Identifica il tipo di opzione all'interno di una classe. Il valore 0x1 indica l'opzione ID rete. Per saperne di più, vedi Opzioni tunnel. 8 bit
R I flag di controllo delle opzioni riservati per un uso futuro. Questi bit devono essere zero (0) durante la trasmissione e devono essere ignorati al ricevimento. 3 bit
Len La lunghezza del payload dell'opzione con incrementi di 4 byte. Il payload dell'ID rete è di 32 bit (4 byte), quindi la lunghezza di questa opzione è impostata su 1. 5 bit
Prenotazione effettuata Deve essere impostato su zero (0) durante la trasmissione e deve essere ignorato al momento della ricezione. 31 bit
D Indica la direzione del pacchetto originale. Zero (0) indica un pacchetto in entrata e uno (1) indica un pacchetto in uscita nella risorsa originale sottoposta a mirroring. 1 bit

Timestamp

L'opzione timestamp indica l'ora di acquisizione originale del pacchetto nel punto di acquisizione (l'istanza Compute Engine in cui è stato acquisito o sottoposto a mirroring). Questa opzione è identificata dalla classe di opzioni 0x0132 (Google) e dal tipo 0x0f (Timestamp).

Il seguente diagramma mostra il formato dell'opzione nel pacchetto GENEVE.

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

La tabella seguente descrive i campi delle opzioni mostrati nel diagramma precedente:

Campo Descrizione Lunghezza campo
Classe di opzioni Identifica l'organizzazione o la persona giuridica che ha definito l'opzione. Il valore 0x0132 indica Google come entità di definizione. 16 bit
Tipo Identifica il tipo di opzione all'interno di una classe. Il valore 0x0f indica l'opzione timestamp. Per saperne di più, vedi Opzioni tunnel. 8 bit
R I flag di controllo delle opzioni riservati per un uso futuro. Questi bit devono essere zero (0) durante la trasmissione e devono essere ignorati al ricevimento. 3 bit
Len La lunghezza del payload dell'opzione con incrementi di 4 byte. Il payload del timestamp è di 64 bit (8 byte), quindi la lunghezza di questa opzione è impostata su 2. 5 bit
Timestamp L'ora di acquisizione del pacchetto originale, rappresentata come nanosecondi dall'epoca. La granularità al nanosecondo non garantisce un'accuratezza al nanosecondo. 64 bit

ID stabile della rete

L'opzione ID stabile di rete identifica la rete dell'istanza sottoposta a mirroring. Questa opzione è identificata dalla classe di opzioni 0x0132 (Google) e dal tipo 0x10 (ID stabile di rete).

Il seguente diagramma mostra il formato dell'opzione nel pacchetto GENEVE. L'ID stabile della rete è composto da un numero di progetto e un ID rete.

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

La tabella seguente descrive i campi delle opzioni mostrati nel diagramma precedente:

Campo Descrizione Lunghezza campo
Classe di opzioni Identifica l'organizzazione o la persona giuridica che ha definito l'opzione. Il valore 0x0132 indica Google come entità di definizione. 16 bit
Tipo Identifica il tipo di opzione all'interno di una classe. Il valore 0x10 indica l'opzione ID stabile di rete. Per saperne di più, vedi Opzioni tunnel. 8 bit
R I flag di controllo delle opzioni riservati per un uso futuro. Questi bit devono essere zero (0) durante la trasmissione e devono essere ignorati al ricevimento. 3 bit
Len La lunghezza del payload dell'opzione con incrementi di 4 byte. Il payload dell'ID rete è di 64 bit (8 byte), quindi la lunghezza di questa opzione è impostata su 4. 5 bit
Numero progetto Numero di progetto del progetto Google Cloud . 64 bit
ID rete L'ID della rete VPC ULL. 64 bit

Indirizzo IP principale

L'opzione Indirizzo IP primario identifica l'indirizzo IP del punto di acquisizione (l'istanza Compute Engine in cui è stato acquisito o sottoposto a mirroring il pacchetto). Questa opzione è identificata dalla classe di opzioni 0x0132 (Google) e dal tipo 0x11 (indirizzo IP principale).

Il seguente diagramma mostra il formato dell'opzione nel pacchetto GENEVE.

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

La tabella seguente descrive i campi delle opzioni mostrati nel diagramma precedente:

Campo Descrizione Lunghezza campo
Classe di opzioni Identifica l'organizzazione o la persona giuridica che ha definito l'opzione. Il valore 0x0132 indica Google come entità di definizione. 16 bit
Tipo Identifica il tipo di opzione all'interno di una classe. Il valore 0x11 indica l'opzione Indirizzo IP principale. 8 bit
R I flag di controllo delle opzioni riservati per un uso futuro. Questi bit devono essere zero (0) durante la trasmissione e devono essere ignorati al ricevimento. 3 bit
Len La lunghezza del payload dell'opzione con incrementi di 4 byte. Il payload dell'indirizzo IP è di 32 bit (4 byte), quindi la lunghezza di questa opzione è impostata su 1. 5 bit
Indirizzo IP principale L'indirizzo IP principale dell'istanza Compute Engine di origine. 32 bit

Formati dell'intestazione GENEVE

Questa sezione descrive i formati di intestazione GENEVE utilizzati da Mirroring pacchetto per le reti VPC ULL.

Intestazione IPv4

Il formato del pacchetto GENEVE incapsula un'intestazione del tunnel compatta in UDP su IPv4. Un'intestazione del tunnel fissa di piccole dimensioni fornisce informazioni di controllo e funzionalità e interoperabilità di base.

Il seguente diagramma mostra i campi di intestazione IPv4 per il pacchetto GENEVE.

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

La tabella seguente descrive i campi di intestazione IPv4 specifici di Google Cloud mostrati nel diagramma precedente. Per informazioni sui campi di intestazione IPv4 comuni, consulta RFC 8926.

Campo Descrizione
Proto=17 (sempre UDP per GENEVE) Indica che il payload incapsulato utilizza il protocollo UDP.
Indirizzo di origine L'indirizzo IP del gateway della subnet locale.
Indirizzo di destinazione Il VIP del bilanciatore del carico di proprietà del cliente.

Intestazione UDP

L'intestazione UDP RFC 0768 incapsula i dati mantenendo la semantica senza connessione di Ethernet e degli indirizzi IP. Fornisce inoltre entropia ai router che eseguono il routing ECMP (Equal-cost multipath).

Il seguente diagramma mostra il formato dell'intestazione di un pacchetto GENEVE incapsulato in un pacchetto UDP.

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

La tabella seguente descrive i campi dell'intestazione UDP mostrati nel diagramma precedente:

Campo Descrizione
Porta di origine Un hash opaco sull'intero intervallo a 16 bit. Il valore è lo stesso per tutti i pacchetti appartenenti a un singolo flusso incapsulato (in entrambe le direzioni).
Porta di destinazione Il numero di porta di destinazione designato per il traffico GENEVE, impostato su 6081.
Lunghezza UDP La lunghezza totale del datagramma UDP, inclusa l'intestazione UDP e il pacchetto GENEVE incapsulato.
checksum UDP Il valore del checksum per il datagramma UDP, utilizzato per il rilevamento degli errori.

Opzioni GENEVE

Le opzioni GENEVE specifiche per Google Cloudutilizzate in Mirroring pacchetto per le reti VPC ULL sono cookie di rete, timestamp, ID stabile di rete, indirizzo IP principale e timestamp di elaborazione dell'ordine equo. Per saperne di più, consulta Opzioni GENEVE per il mirroring pacchetto nelle reti VPC ULL.

Il seguente diagramma mostra come vengono utilizzate le opzioni GENEVE specifiche di Google Cloudin Mirroring pacchetto per le reti VPC ULL.

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

Il Opt len nel diagramma precedente rappresenta la lunghezza dei campi delle opzioni in multipli di 4 byte. Questa lunghezza non include l'intestazione del tunnel fissa di 8 byte. Per saperne di più, consulta Campi di intestazione del tunnel.

Incapsulamento GENEVE e requisiti MTU

L'unità massima di trasmissione (MTU) è la dimensione in byte del pacchetto IP più grande possibile che può essere inserito in un frame Ethernet, incluse le intestazioni IP, le intestazioni del protocollo di livello 4 e i dati di livello 4. Per saperne di più, consulta Unità massima di trasmissione.

Le reti VPC ULL hanno una MTU massima di 1500 byte. Tuttavia, il mirroring pacchetto ULL richiede 308 byte per l'overhead di incapsulamento GENEVE. Per garantire che il traffico sottoposto a mirroring raggiunga le istanze del collector senza frammentazione, la rete in cui si trova il collector deve avere un'MTU di almeno 1808 byte (1500 byte per il traffico standard più 308 byte per l'overhead di incapsulamento GENEVE).

Se i limiti MTU non sono sufficienti per ospitare l'incapsulamento GENEVE, i pacchetti potrebbero essere eliminati. Ciò può verificarsi a livello di rete virtuale o nel sistema operativo.