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 illustre 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 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 n'importe quel type Ethernet. Toutefois, l'intégration de la sécurité réseau n'autorise que les protocoles IPv4 (0x0800) ou IPv6 (0x86DD). 16 bits
Identifiant de réseau virtuel (VNI) Identifiant unique d'un élément de réseau virtuel. L'intégration de la sécurité réseau ne remplit pas ce champ, ce qui signifie que le VNI est défini sur zéro (0). Pour en savoir plus, consultez Intégration hors bande 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 spécifiques àGoogle Cloud

L'en-tête GENEVE utilise un format TLV (Type-Length-Value) pour ses options. Cela signifie que chaque option est encodée avec un identifiant de type, un champ de longueur indiquant la taille de la valeur et la valeur elle-même. Ce format offre flexibilité et extensibilité, car de nouvelles options peuvent être ajoutées sans perturber les implémentations existantes. Les sections suivantes décrivent l'ordre et le nombre d'options. Notez que le nombre et l'ordre des options varieront à mesure que le produit évoluera. Par conséquent, pour assurer la compatibilité ascendante de l'implémentation de votre appareil, analysez l'en-tête GENEVE en fonction des champs TLV.

Les options GENEVE spécifiques à Google Cloud sont les suivantes :

  • ID du réseau (cookie réseau)
  • ID de point de terminaison (cookie de point de terminaison)
  • ID du profil

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 Google Cloud. Cette option est identifiée par la classe d'option 0x0132 (Google) et le type 1 (ID de réseau). Les données d'option contiennent 32 bits, dont les 28 premiers représentent un ID de réseau opaque. L'objectif des 4 bits restants est décrit dans le diagramme et le tableau suivants.

Le schéma 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=01    |R|R|R|  Len=1  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                     Network cookie                    |R|R|T|D|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

Le tableau suivant décrit les champs d'options présentés dans le schéma précédent :

Champ Description Longueur du champ
Classe d'options 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 ultérieure. 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), de sorte que la longueur de cette option est définie sur 1. 5 bits
Cookie réseau Cookie réseau opaque, identifiant un réseau virtuel. 28 bits
R Réservé pour une implémentation future. Doit être défini sur zéro (0) lors de la transmission et doit être ignoré lors de la réception. 2 bits
T Indique le déchargement TLS pour le paquet encapsulé. Non utilisé. 1 bit
D Indique la direction du paquet d'origine. La valeur 0 indique un paquet entrant et la valeur 1 indique un paquet sortant sur la machine virtuelle (VM) d'origine mise en miroir. 1 bit

ID de point de terminaison

L'option d'ID de point de terminaison, également appelée "cookie de point de terminaison", identifie de manière unique le point de capture, qui est un contrôleur d'interface réseau sur une VM Google Cloud. Cette option est identifiée par la classe d'option 0x0132 (Google) et le type 2 (ID de point de terminaison). Les données d'option sont une valeur opaque de 128 bits.

Le schéma 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=02   |R|R|R|  Len=4  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                                                               +
      |                                                               |
      +                        Endpoint cookie                        +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

Le tableau suivant décrit les champs d'options présentés dans le schéma précédent :

Champ Description Longueur du champ
Classe d'options 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 0x2 désigne l'option "ID du point de terminaison". Pour en savoir plus, consultez Options de tunnel. 8 bits
R Indicateurs de contrôle des options réservés pour une utilisation ultérieure. 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 par incréments de quatre octets. La charge utile de l'ID de point de terminaison est de 128 bits (16 octets). La longueur de cette option est donc définie sur 4. 5 bits
Cookie de point de terminaison Identifiant opaque du point de capture (carte d'interface réseau de VM). 128 bits

ID du profil

L'option d'ID de profil identifie le groupe de profils de sécurité de mise en miroir appliqué au trafic. Cette option est identifiée par la classe d'option 0x0132 (Google) et le type 3 (ID de profil). Les données d'option sont un identifiant de 64 bits qui correspond au champ data_path_id du groupe de profils de sécurité. L'appareil cible peut appliquer des règles de sécurité en fonction de l'identifiant du groupe de profils.

Le schéma 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=03    |R|R|R|  Len=2  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      +                           Profile ID                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

Le tableau suivant décrit les champs d'options présentés dans le schéma précédent :

Champ Description Longueur du champ
Classe d'options 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 0x3 désigne l'option "ID de profil". Pour en savoir plus, consultez Options de tunnel. 8 bits
R Indicateurs de contrôle des options réservés pour une utilisation ultérieure. Ces bits doivent être à zéro 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 profil est de 64 bits (8 octets). La longueur de cette option est donc définie sur 2. 5 bits
ID du profil Identifiant du groupe de profils de sécurité de mise en miroir. 64 bits

Formats d'en-tête GENEVE pour Network Security Integration

Cette section décrit les formats d'en-tête GENEVE utilisés par les services d'intégration de la sécurité réseau.

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 montre 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 affichés dans le schéma précédent :

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, en conservant la sémantique sans connexion d'Ethernet et de l'adresse IP. Il fournit également de l'entropie aux routeurs qui effectuent un routage multichemin à coût égal (ECMP).

Le schéma suivant montre 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 :

Champs Description
Port source Hachage opaque sur l'ensemble de la plage de 16 bits. La valeur est identique 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.

Intégration hors bande GENEVE

Cette section décrit les formats d'en-tête GENEVE utilisés par les services d'intégration de la sécurité réseau, en particulier l'intégration hors bande. L'intégration hors bande utilise un tunnel GENEVE pour encapsuler et distribuer les paquets mis en miroir. Les paquets sont adressés à l'adresse IP virtuelle (VIP) de l'équilibreur de charge interne du collecteur et sont annotés avec des métadonnées spécifiques à Google Cloud, telles que le cookie réseau.

Les options GENEVE spécifiques à Google Cloudutilisées dans l'intégration hors bande sont le cookie réseau, le cookie de point de terminaison et l'ID de profil. Pour en savoir plus, consultez Options GENEVE spécifiques àGoogle Cloud.

Le schéma suivant montre comment les options GENEVE spécifiques à Google Cloudsont utilisées dans l'intégration hors bande.

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

Intégration en bande GENEVE

L'intégration intrabande utilise un tunnel GENEVE pour encapsuler et distribuer les paquets interceptés. L'adresse IP virtuelle (VIP) de l'équilibreur de charge interne du producteur reçoit les paquets annotés avec des métadonnées spécifiques à Google Cloud, telles que le cookie réseau.

L'intégration dans la bande utilise les options GENEVE spécifiques suivantes : cookie réseau, cookie de point de terminaison et ID de profil. Google CloudPour en savoir plus, consultez Options GENEVE spécifiques àGoogle Cloud.

L'intégration dans la bande permet la réinjection de paquets vers le point de terminaison d'origine à l'aide d'un tunnel GENEVE bidirectionnel logique, qui se compose de deux tunnels GENEVE unidirectionnels. Une fois que l'appliance réseau du producteur intercepte et inspecte un paquet, elle peut le supprimer ou le réinjecter. Pour réinjecter le paquet, l'appliance procède comme suit :

  • Réencapsule le paquet à l'aide de l'en-tête GENEVE d'origine (mêmes options).
  • Inverse les adresses source et de destination dans l'en-tête IP externe.
  • S'assure que les sommes de contrôle sont correctes.

Le schéma suivant montre comment les options GENEVE spécifiques à Google Cloudsont utilisées dans l'intégration intra-bande.

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

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 la section Unité de transmission maximale.

Dans les réseaux Google Cloud , la MTU autorisée est de 8 896 octets. Toutefois, pour Network Security Integration, 396 octets doivent être conservés pour les frais généraux d'encapsulation GENEVE. Cette exigence de conservation a des implications pour les réseaux de consommateurs et de producteurs :

  • MTU du réseau consommateur : la MTU du réseau consommateur ne doit pas dépasser 8 500 octets. Cette limite permet de s'assurer qu'il y a suffisamment d'espace pour le protocole GENEVE sans dépasser la MTU maximale.

  • MTU du réseau de producteurs : la MTU du réseau de producteurs doit être supérieure d'au moins 396 octets à celle du réseau de consommateurs. Cette marge tient compte de l'encapsulation GENEVE supplémentaire.

Si les limites de MTU ne sont pas suffisantes pour prendre en charge l'encapsulation GENEVE, le paquet peut être supprimé. Cela peut se produire au niveau du réseau virtuel ou dans le système d'exploitation de la VM.

Étapes suivantes