Comprendre le format GENEVE
L'encapsulation générique de la virtualisation du réseau (GENEVE) est un protocole d'encapsulation réseau qui encapsule le paquet d'origine avec des métadonnées supplémentaires. Ces métadonnées supplémentaires permettent une virtualisation du réseau flexible et extensible.
Le schéma suivant montre le format d'en-tête d'un paquet 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. |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le tableau suivant décrit les champs d'en-tête GENEVE affichés dans le schéma précédent :
| Champ | Description | Longueur du champ |
|---|---|---|
| Ver | Version du protocole GENEVE. La seule version acceptée est zéro (0). Pour en savoir plus, consultez Champs d'en-tête de tunnel. | 2 bits |
| Opt len | Longueur des champs d'options, exprimée en multiples de 4 octets, sans inclure l'en-tête de tunnel fixe de 8 octets. Pour en savoir plus, consultez Champs d'en-tête de tunnel. | 6 bits |
| O | Bit du paquet de contrôle. Pour en savoir plus, consultez Champs d'en-tête de tunnel. | 1 bit |
| C | Le bit des options critiques. Pour en savoir plus, consultez Champs d'en-tête de tunnel. | 1 bit |
| Rsvd | Champ réservé, qui doit être égal à zéro (0) lors de la transmission et doit être ignoré lors de la réception. Pour en savoir plus, consultez Champs d'en-tête de tunnel. | 6 bits |
| Type de protocole | Le type de protocole autorise le type Ethernet : IPv4 (0x0800) ou IPv6 (0x86DD). |
16 bits |
| Identifiant de réseau virtuel (VNI) | Identifiant unique d'un élément de réseau virtuel. La VNI est définie sur zéro (0). Pour en savoir plus, consultez Options GENEVE. | 24 bits |
| Rsvd | Champ réservé, qui doit être égal à zéro (0) lors de la transmission et doit être ignoré lors de la réception. Pour en savoir plus, consultez Champs d'en-tête de tunnel. | 8 bits |
Options GENEVE pour la mise en miroir de paquets dans les réseaux VPC ULL
L'en-tête GENEVE utilise un format Type-Length-Value (TLV) pour ses options. Chaque option est encodée avec un identifiant de type, un champ de longueur qui indique la taille de la valeur et la valeur elle-même. Ce format offre flexibilité et extensibilité, ce qui permet d'ajouter de nouvelles options sans perturber les implémentations existantes. Les sections suivantes décrivent les options. Étant donné que le nombre et l'ordre des options peuvent changer, analysez l'en-tête GENEVE en fonction des champs TLV pour assurer la compatibilité de l'implémentation de votre appareil.
Les options GENEVE spécifiques à la mise en miroir de paquets ULL sont les suivantes :
- ID du réseau (cookie réseau)
- Horodatage
- ID stable du réseau
- Adresse IP principale
ID du réseau
L'option d'ID de réseau, également appelée "cookie réseau", identifie le réseau virtuel associé au trafic encapsulé GENEVE dans la mise en miroir de paquets ULL. Cette option est identifiée par la classe d'option 0x0132 (Google) et le type 0x1 (ID de réseau).
Pour la mise en miroir de paquets ULL, le cookie réseau est défini sur zéro (0). Les données d'option contiennent 32 bits. Les 31 premiers bits sont réservés et le dernier bit indique la direction du paquet d'origine.
La mise en miroir de paquets ULL utilise une version modifiée de l'option d'ID de réseau. Dans cette version, tous les bits, à l'exception des bits de direction et réservés, sont définis sur 0. Pour en savoir plus sur le point de capture, consultez ID stable du réseau.
Le diagramme suivant montre le format des options dans le paquet 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|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le tableau suivant décrit les champs d'option affichés dans le schéma précédent :
| Champ | Description | Longueur du champ |
|---|---|---|
| Classe d'option | Identifie l'organisation ou l'entité qui a défini l'option.
La valeur 0x0132 désigne Google comme entité de définition. |
16 bits |
| Type | Identifie le type d'option dans une classe. La valeur 0x1 désigne l'option "ID du réseau".
Pour en savoir plus, consultez Options de tunnel. |
8 bits |
| R | Indicateurs de contrôle des options réservés pour une utilisation future. Ces bits doivent être définis sur zéro (0) lors de la transmission et doivent être ignorés lors de la réception. | 3 bits |
| Len | Longueur de la charge utile de l'option par incréments de 4 octets. La charge utile de l'ID de réseau est de 32 bits (4 octets). La longueur de cette option est donc définie sur 1. | 5 bits |
| Réservée | Doit être défini sur zéro (0) lors de la transmission et doit être ignoré lors de la réception. | 31 bits |
| D | Indique la direction du paquet d'origine. Zéro (0) indique un paquet d'entrée et un (1) indique un paquet de sortie sur la ressource mise en miroir d'origine. | 1 bit |
Horodatage
L'option d'horodatage indique l'heure de capture du paquet d'origine au point de capture (l'instance Compute Engine où le paquet a été capturé ou mis en miroir).
Cette option est identifiée par la classe d'option 0x0132 (Google) et le type 0x0f (code temporel).
Le diagramme suivant montre le format des options dans le paquet 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 +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le tableau suivant décrit les champs d'option affichés dans le schéma précédent :
| Champ | Description | Longueur du champ |
|---|---|---|
| Classe d'option | Identifie l'organisation ou l'entité qui a défini l'option.
La valeur 0x0132 désigne Google comme entité de définition. |
16 bits |
| Type | Identifie le type d'option dans une classe. La valeur 0x0f désigne l'option de code temporel.
Pour en savoir plus, consultez Options de tunnel. |
8 bits |
| R | Indicateurs de contrôle des options réservés pour une utilisation future. Ces bits doivent être définis sur zéro (0) lors de la transmission et doivent être ignorés lors de la réception. | 3 bits |
| Len | Longueur de la charge utile de l'option par incréments de 4 octets. La charge utile du code temporel est de 64 bits (8 octets). La longueur de cette option est donc définie sur 2. | 5 bits |
| Horodatage | Heure de capture du paquet d'origine, exprimée en nanosecondes depuis l'epoch. La précision au niveau de la nanoseconde ne garantit pas l'exactitude à ce niveau. | 64 bits |
ID stable du réseau
L'option "ID stable du réseau" identifie le réseau de l'instance mise en miroir. Cette option est identifiée par la classe d'option 0x0132 (Google) et le type 0x10 (ID stable du réseau).
Le diagramme suivant montre le format des options dans le paquet GENEVE. L'ID stable du réseau comprend un numéro de projet et un ID de réseau.
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 +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le tableau suivant décrit les champs d'option affichés dans le schéma précédent :
| Champ | Description | Longueur du champ |
|---|---|---|
| Classe d'option | Identifie l'organisation ou l'entité qui a défini l'option.
La valeur 0x0132 désigne Google comme entité de définition. |
16 bits |
| Type | Identifie le type d'option dans une classe. La valeur 0x10 désigne l'option "ID stable du réseau".
Pour en savoir plus, consultez Options de tunnel. |
8 bits |
| R | Indicateurs de contrôle des options réservés pour une utilisation future. Ces bits doivent être définis sur zéro (0) lors de la transmission et doivent être ignorés lors de la réception. | 3 bits |
| Len | Longueur de la charge utile de l'option par incréments de 4 octets. La charge utile de l'ID de réseau est de 64 bits (8 octets). La longueur de cette option est donc définie sur 4. | 5 bits |
| Numéro du projet | Numéro du projet Google Cloud . | 64 bits |
| ID du réseau | ID du réseau VPC ULL. | 64 bits |
Adresse IP principale
L'option "Adresse IP principale" identifie l'adresse IP du point de capture (l'instance Compute Engine où le paquet a été capturé ou mis en miroir). Cette option est identifiée par la classe d'option 0x0132 (Google) et le type 0x11 (adresse IP principale).
Le diagramme suivant montre le format des options dans le paquet 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le tableau suivant décrit les champs d'option affichés dans le schéma précédent :
| Champ | Description | Longueur du champ |
|---|---|---|
| Classe d'option | Identifie l'organisation ou l'entité qui a défini l'option.
La valeur 0x0132 désigne Google comme entité de définition. |
16 bits |
| Type | Identifie le type d'option dans une classe. La valeur 0x11 désigne l'option "Adresse IP principale". |
8 bits |
| R | Indicateurs de contrôle des options réservés pour une utilisation future. Ces bits doivent être définis sur zéro (0) lors de la transmission et doivent être ignorés lors de la réception. | 3 bits |
| Len | Longueur de la charge utile de l'option par incréments de 4 octets. La charge utile de l'adresse IP est de 32 bits (4 octets). La longueur de cette option est donc définie sur 1. | 5 bits |
| Adresse IP principale | Adresse IP principale de l'instance Compute Engine source. | 32 bits |
Formats d'en-tête GENEVE
Cette section décrit les formats d'en-tête GENEVE utilisés par la mise en miroir de paquets pour les réseaux VPC ULL.
En-tête IPv4
Le format de paquet GENEVE encapsule un en-tête de tunnel compact dans UDP sur IPv4. Un petit en-tête de tunnel fixe fournit des informations de contrôle, des fonctionnalités de base et l'interopérabilité.
Le schéma suivant présente les champs d'en-tête IPv4 pour le paquet 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le tableau suivant décrit les champs d'en-tête IPv4 spécifiques à Google Cloudqui figurent dans le diagramme précédent. Pour en savoir plus sur les champs d'en-tête IPv4 courants, consultez la norme RFC 8926.
| Champ | Description |
|---|---|
| Proto=17 (toujours UDP pour GENEVE) | Indique que la charge utile encapsulée utilise le protocole UDP. |
| Adresse source | Adresse IP de la passerelle du sous-réseau local. |
| Adresse destinataire | Adresse IP virtuelle de l'équilibreur de charge appartenant au client. |
En-tête UDP
L'en-tête UDP RFC 0768 encapsule les données tout en conservant la sémantique sans connexion des adresses Ethernet et IP. Il fournit également de l'entropie aux routeurs qui effectuent un routage multichemin à coût égal (ECMP).
Le diagramme suivant illustre le format d'en-tête d'un paquet GENEVE encapsulé dans un paquet 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le tableau suivant décrit les champs d'en-tête UDP affichés dans le schéma précédent :
| Champ | Description |
|---|---|
| Port source | Hachage opaque sur l'ensemble de la plage de 16 bits. La valeur est la même pour tous les paquets appartenant à un même flux encapsulé (dans les deux sens). |
| Port de destination | Numéro de port de destination désigné pour le trafic GENEVE, défini sur 6081. |
| Longueur UDP | Longueur totale du datagramme UDP, y compris l'en-tête UDP et le paquet GENEVE encapsulé. |
| Somme de contrôle UDP | Valeur de la somme de contrôle pour le datagramme UDP, utilisée pour la détection des erreurs. |
Options GENEVE
Les options GENEVE spécifiques à Google Cloudutilisées dans la mise en miroir de paquets pour les réseaux VPC ULL sont le cookie réseau, le code temporel, l'ID stable du réseau, l'adresse IP principale et le code temporel de traitement de l'ordre équitable. Pour en savoir plus, consultez Options GENEVE pour la mise en miroir de paquets dans les réseaux VPC ULL.
Le diagramme suivant montre comment les options GENEVE spécifiques à Google Cloudsont utilisées dans la mise en miroir de paquets pour les réseaux 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 +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Le Opt len du schéma précédent représente la longueur des champs d'options en multiples de 4 octets. Cette longueur n'inclut pas l'en-tête de tunnel fixe de 8 octets. Pour en savoir plus, consultez Champs d'en-tête de tunnel.
Encapsulation GENEVE et exigences concernant la MTU
L'unité de transmission maximale (MTU) correspond à la taille, en octets, du plus grand paquet IP possible pouvant figurer dans une trame Ethernet, y compris les en-têtes IP, les en-têtes de protocole de couche 4 et les données de couche 4. Pour en savoir plus, consultez Unité de transmission maximale.
Les réseaux VPC à latence ultra-faible ont une MTU maximale de 1 500 octets. Toutefois, la mise en miroir de paquets ULL nécessite 308 octets pour les frais généraux d'encapsulation GENEVE. Pour vous assurer que le trafic mis en miroir atteint vos instances de collecteur sans fragmentation, le réseau sur lequel réside votre collecteur doit avoir une MTU d'au moins 1 808 octets (1 500 octets pour le trafic standard plus 308 octets pour la surcharge d'encapsulation GENEVE).
Si les limites de MTU sont insuffisantes pour prendre en charge l'encapsulation GENEVE, les paquets peuvent être supprimés. Cela peut se produire au niveau du réseau virtuel ou du système d'exploitation.