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 di 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 dell'intestazione del tunnel. | 6 bit |
| O | Il bit del pacchetto di controllo. Per saperne di più, consulta Campi di 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 momento della ricezione. Per saperne di più, consulta Campi dell'intestazione del tunnel. | 6 bit |
| Tipo di protocollo | Il tipo di protocollo consente qualsiasi ethertype, tuttavia,
l'integrazione della sicurezza di rete consente solo IPv4
(0x0800) o IPv6 (0x86DD). |
16 bit |
| Identificatore di rete virtuale (VNI) | Un identificatore univoco per un elemento di rete virtuale. L'integrazione della sicurezza di rete non compila questo campo, il che significa che il VNI è impostato su zero (0). Per maggiori informazioni, vedi Integrazione out-of-band GENEVE. | 24 bit |
| Rsvd | Campo riservato, che deve essere zero (0) durante la trasmissione e deve essere ignorato al momento della ricezione. Per saperne di più, consulta Campi dell'intestazione del tunnel. | 8 bit |
Opzioni GENEVE specifiche perGoogle Cloud
L'intestazione GENEVE utilizza un formato Type-Length-Value (TLV) per le opzioni. Ciò significa che ogni opzione è codificata con un identificatore di tipo, un campo di lunghezza che indica la dimensione del valore e il valore stesso. Questo formato consente flessibilità ed estensibilità, in quanto è possibile aggiungere nuove opzioni senza interrompere le implementazioni esistenti. Le sezioni seguenti descrivono l'ordine e il numero di opzioni. Tieni presente che il numero e l'ordine delle opzioni variano con l'evolversi del prodotto. Pertanto, per garantire la compatibilità futura dell'implementazione del dispositivo, analizza l'intestazione GENEVE in base ai campi TLV.
Le opzioni GENEVE specifiche per Google Cloud sono le seguenti:
- ID rete (cookie di rete)
- ID endpoint (cookie endpoint)
- ID profilo
ID rete
L'opzione ID rete, nota anche come "cookie di rete", identifica la rete virtuale associata al traffico incapsulato GENEVE in Google Cloud.
Questa opzione è identificata dalla classe di opzioni 0x0132 (Google) e dal tipo 1 (ID rete).
I dati dell'opzione contengono 32 bit, di cui i primi 28 rappresentano un ID di rete opaco. Lo scopo dei 4 bit rimanenti è descritto nel diagramma e nella tabella
seguenti.
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=01 |R|R|R| Len=1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network cookie |R|R|T|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à che definisce il valore. |
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 |
| Cookie di rete | Il cookie di rete opaco, che identifica una rete virtuale. | 28 bit |
| R | Riservato per l'implementazione futura. Deve essere impostato su zero (0) durante la trasmissione e deve essere ignorato al ricevimento. | 2 bit |
| T | Indica l'offload TLS per il pacchetto incapsulato. Non utilizzato. | 1 bit |
| D | Indica la direzione del pacchetto originale. Zero (0) indica un pacchetto in entrata e uno (1) indica un pacchetto in uscita sulla macchina virtuale (VM) originale sottoposta a mirroring. | 1 bit |
ID endpoint
L'opzione ID endpoint, nota anche come "cookie endpoint", identifica in modo univoco il
punto di acquisizione, ovvero un controller di interfaccia di rete su una VM Google Cloud. Questa opzione è identificata dalla classe di opzioni 0x0132 (Google) e dal tipo
2 (ID endpoint). I dati dell'opzione sono un valore opaco a 128 bit.
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=02 |R|R|R| Len=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Endpoint cookie +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
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à che definisce il valore. |
16 bit |
| Tipo | Identifica il tipo di opzione all'interno di una classe. Il valore
0x2 indica l'opzione ID endpoint.
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 in incrementi di 4 byte. Il payload dell'ID endpoint è di 128 bit (16 byte), quindi la lunghezza per questa opzione è impostata su 4. | 5 bit |
| Cookie dell'endpoint | Un identificatore opaco per il punto di acquisizione (una NIC VM). | 128 bit |
ID profilo
L'opzione ID profilo identifica il gruppo di profili di sicurezza di mirroring applicato al traffico. Questa opzione è identificata dalla classe di opzioni 0x0132 (Google) e dal tipo 3 (ID profilo). I dati dell'opzione sono un identificatore a 64 bit che corrisponde al campo data_path_id nel gruppo di profili di sicurezza. Il dispositivo di destinazione potrebbe applicare criteri di sicurezza
in base all'identificatore del gruppo di profili.
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=03 |R|R|R| Len=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Profile 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à che definisce il valore. |
16 bit |
| Tipo | Identifica il tipo di opzione all'interno di una classe. Il valore
0x3 indica l'opzione ID profilo.
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 durante la trasmissione e devono essere ignorati al momento della ricezione. | 3 bit |
| Len | La lunghezza del payload dell'opzione con incrementi di 4 byte. Il payload dell'ID profilo è di 64 bit (8 byte), quindi la lunghezza di questa opzione è impostata su 2. | 5 bit |
| ID profilo | L'identificatore del gruppo di profili di sicurezza di mirroring. | 64 bit |
Formati di intestazione GENEVE per l'integrazione della sicurezza della rete
Questa sezione descrive i formati di intestazione GENEVE utilizzati dai servizi di integrazione della sicurezza di rete.
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 dell'intestazione IPv4 mostrati nel diagramma precedente:
| 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 dell'indirizzo 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 seguente tabella descrive i campi dell'intestazione UDP mostrati nel diagramma precedente:
| Campi | Descrizione |
|---|---|
| Porta di origine | Un hash opaco sull'intero intervallo di 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, inclusi l'intestazione UDP e il pacchetto GENEVE incapsulato. |
| checksum UDP | Il valore del checksum per il datagramma UDP, utilizzato per il rilevamento degli errori. |
Integrazione fuori banda GENEVE
Questa sezione descrive i formati delle intestazioni GENEVE utilizzati dai servizi di integrazione della sicurezza di rete, in particolare l'integrazione out-of-band. L'integrazione fuori banda utilizza un tunnel GENEVE per incapsulare e distribuire i pacchetti duplicati. I pacchetti sono indirizzati all'indirizzo IP virtuale (VIP) del bilanciatore del carico interno del raccoglitore e sono annotati con metadati specifici di Google Cloud, come il cookie di rete.
Le opzioni GENEVE specifiche per Google Cloudutilizzate nell'integrazione out-of-band sono cookie di rete, cookie dell'endpoint e ID profilo. Per maggiori informazioni, vedi Opzioni GENEVE specifiche perGoogle Cloud.
Il seguente diagramma mostra come vengono utilizzate le opzioni GENEVE specifiche di Google Cloudnell'integrazione out-of-band.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=0| Opt len |O|C| Rsvd | Protocol type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Virtual network identifier (VNI) = 0 | Rsvd. |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option class=0x0132 (Google) | Type=01 |R|R|R| Len=1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network cookie |R|R|T|D|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option class=0x0132 (Google) | Type=02 |R|R|R| Len=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Endpoint cookie +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option class=0x0132 (Google) | Type=03 |R|R|R| Len=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Profile ID +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Integrazione in banda GENEVE
L'integrazione in banda utilizza un tunnel GENEVE per incapsulare e distribuire i pacchetti intercettati. L'indirizzo IP virtuale (VIP) del bilanciatore del carico interno del produttore riceve i pacchetti annotati con metadati specifici di Google Cloud, come il cookie di rete.
L'integrazione in banda utilizza le seguenti opzioni GENEVE specifiche per Google Cloud: cookie di rete, cookie dell'endpoint e ID profilo. Per maggiori informazioni, vedi Opzioni GENEVE specifiche perGoogle Cloud.
L'integrazione in banda supporta la reiniezione dei pacchetti all'endpoint originale utilizzando un tunnel GENEVE bidirezionale logico, costituito da due tunnel GENEVE unidirezionali. Dopo che l'appliance di rete del produttore intercetta e ispeziona un pacchetto, può eliminarlo o reinserirlo. Per reinserire il pacchetto, l'appliance esegue le seguenti operazioni:
- Rincapsula il pacchetto utilizzando l'intestazione GENEVE originale (stesse opzioni).
- Inverte gli indirizzi di origine e di destinazione nell'intestazione IP esterna.
- Assicura che i checksum siano corretti.
Il seguente diagramma mostra come vengono utilizzate le opzioni GENEVE specifiche di Google Cloudnell'integrazione in banda.
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=0| Opt len |O|C| Rsvd | Protocol type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Virtual network identifier (VNI) = 0 | Rsvd. |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=01 |R|R|R| Len=1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Cookie |R|R|T|D|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=02 |R|R|R| Len=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ Endpoint Cookie +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Option Class=0x0132 (Google) | Type=03 |R|R|R| Len=2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Profile ID +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Requisiti di incapsulamento GENEVE e 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.
Nelle reti Google Cloud , l'MTU consentita è di 8896 byte. Tuttavia, per Network Security Integration, è necessario conservare 396 byte per l'overhead di incapsulamento GENEVE. Questa necessità di conservazione ha implicazioni per le reti consumer e producer:
MTU della rete consumer: l'MTU della rete consumer non deve superare gli 8500 byte. Questo limite garantisce che ci sia spazio sufficiente per l'overhead GENEVE senza superare l'MTU massima.
MTU della rete producer: l'MTU della rete producer deve essere almeno 396 byte in più rispetto all'MTU della rete consumer. Questa concessione tiene conto dell'incapsulamento GENEVE aggiuntivo.
Se non ci sono limiti MTU sufficienti per l'incapsulamento GENEVE, il pacchetto può essere eliminato. Ciò può verificarsi a livello di rete virtuale o nel sistema operativo della VM.
Passaggi successivi
- Panoramica dell'integrazione di Network Security
- Panoramica dell'integrazione fuori banda
- Monitorare l'integrazione fuori banda