Información sobre el formato GENEVE

La encapsulación genérica de virtualización de redes (GENEVE) es un protocolo de encapsulación de redes que encapsula el paquete original con metadatos adicionales. Estos metadatos adicionales ayudan a habilitar la virtualización de redes flexible y extensible.

En el siguiente diagrama, se muestra el formato del encabezado de un paquete 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.     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

En la siguiente tabla, se describen los campos de encabezado de GENEVE que se muestran en el diagrama anterior:

Campo Descripción Longitud del campo
Ver Es la versión del protocolo GENEVE. La única versión admitida es cero (0). Para obtener más información, consulta Campos de encabezado de túnel. 2 bits
Longitud de la opción Es la longitud de los campos de opciones, expresada en múltiplos de 4 bytes, sin incluir el encabezado fijo del túnel de 8 bytes. Para obtener más información, consulta Campos de encabezado de túnel. 6 bits
O Es el bit del paquete de control. Para obtener más información, consulta Campos de encabezado de túnel. 1 bit
C Es el bit de opciones críticas. Para obtener más información, consulta Campos de encabezado de túnel. 1 bit
Rsvd Campo reservado que debe ser cero (0) en la transmisión y debe ignorarse en la recepción. Para obtener más información, consulta Campos de encabezado de túnel. 6 bits
Tipo de protocolo El tipo de protocolo permite cualquier tipo de Ethernet. Sin embargo, la integración de seguridad de red solo permite IPv4 (0x0800) o IPv6 (0x86DD). 16 bits
Identificador de red virtual (VNI) Es un identificador único para un elemento de red virtual. La integración de la seguridad de la red no propaga este campo, lo que significa que el VNI se establece en cero (0). Para obtener más información, consulta Integración fuera de banda de GENEVE. 24 bits
Rsvd Campo reservado que debe ser cero (0) en la transmisión y debe ignorarse en la recepción. Para obtener más información, consulta Campos de encabezado de túnel. 8 bits

Opciones de GENEVE específicas deGoogle Cloud

El encabezado GENEVE usa un formato de Type-Length-Value (TLV) para sus opciones. Esto significa que cada opción se codifica con un identificador de tipo, un campo de longitud que indica el tamaño del valor y el valor en sí. Este formato permite flexibilidad y extensibilidad, ya que se pueden agregar opciones nuevas sin interrumpir las implementaciones existentes. En las siguientes secciones, se describen el orden y la cantidad de opciones. Ten en cuenta que la cantidad y el orden de las opciones variarán a medida que evolucione el producto. Por lo tanto, para garantizar la compatibilidad con versiones futuras de la implementación de tu dispositivo, analiza el encabezado GENEVE según los campos TLV.

Las opciones de GENEVE específicas para Google Cloud son las siguientes:

  • ID de red (cookie de red)
  • ID de extremo (cookie de extremo)
  • ID del perfil

ID de la red

La opción de ID de red, también conocida como "cookie de red", identifica la red virtual asociada con el tráfico encapsulado en GENEVE en Google Cloud. Esta opción se identifica con la clase de opción 0x0132 (Google) y el tipo 1 (ID de red). Los datos de la opción contienen 32 bits, de los cuales los primeros 28 representan un ID de red opaco. El propósito de los 4 bits restantes se describe en el siguiente diagrama y tabla.

En el siguiente diagrama, se muestra el formato de la opción en el paquete 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|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

En la siguiente tabla, se describen los campos de opciones que se muestran en el diagrama anterior:

Campo Descripción Longitud del campo
Clase de opción Identifica la organización o entidad que definió la opción. El valor 0x0132 designa a Google como la entidad definitoria. 16 bits
Tipo Identifica el tipo de opción dentro de una clase. El valor 0x1 designa la opción ID de red. Para obtener más información, consulta Opciones de túnel. 8 bits
R Son marcas de control de opciones reservadas para uso futuro. Estos bits deben ser cero (0) en la transmisión y deben ignorarse en la recepción. 3 bits
Len Es la longitud de la carga útil de la opción en incrementos de 4 bytes. La carga útil del ID de red es de 32 bits (4 bytes), por lo que la longitud de esta opción se establece en 1. 5 bits
Cookie de red Es la cookie de red opaca que identifica una red virtual. 28 bits
R Reservado para una futura implementación. Se debe establecer en cero (0) en la transmisión y se debe ignorar en la recepción. 2 bits
T Indica la descarga de TLS para el paquete encapsulado. No se usa. 1 bit
D Denota la dirección del paquete original. El valor cero (0) significa entrada y el valor uno (1) significa un paquete de salida en la máquina virtual (VM) duplicada original. 1 bit

ID de extremo

La opción de ID de extremo, también conocida como "cookie de extremo", identifica de forma única el punto de captura, que es un controlador de interfaz de red en una VM de Google Cloud. Esta opción se identifica con la clase de opción 0x0132 (Google) y el tipo 2 (ID de extremo). Los datos de la opción son un valor opaco de 128 bits.

En el siguiente diagrama, se muestra el formato de la opción en el paquete 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                        +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

En la siguiente tabla, se describen los campos de opciones que se muestran en el diagrama anterior:

Campo Descripción Longitud del campo
Clase de opción Identifica la organización o entidad que definió la opción. El valor 0x0132 designa a Google como la entidad definitoria. 16 bits
Tipo Identifica el tipo de opción dentro de una clase. El valor 0x2 designa la opción ID del extremo. Para obtener más información, consulta Opciones de túnel. 8 bits
R Son marcas de control de opciones reservadas para uso futuro. Estos bits deben ser cero (0) en la transmisión y deben ignorarse en la recepción. 3 bits
Len Es la longitud de la carga útil en incrementos de 4 bytes. La carga útil del ID del extremo es de 128 bits (16 bytes), por lo que la longitud de esta opción se establece en 4. 5 bits
Cookie de extremo Es un identificador opaco para el punto de captura (una NIC de VM). 128-bits

ID del perfil

La opción de ID de perfil identifica el grupo de perfiles de seguridad de duplicación que se aplica al tráfico. Esta opción se identifica con la clase de opción 0x0132 (Google) y el tipo 3 (ID de perfil). Los datos de la opción son un identificador de 64 bits que corresponde al campo data_path_id en el grupo de perfiles de seguridad. Es posible que el dispositivo de destino aplique políticas de seguridad según el identificador del grupo de perfiles.

En el siguiente diagrama, se muestra el formato de la opción en el paquete 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                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

En la siguiente tabla, se describen los campos de opciones que se muestran en el diagrama anterior:

Campo Descripción Longitud del campo
Clase de opción Identifica la organización o entidad que definió la opción. El valor 0x0132 designa a Google como la entidad definitoria. 16 bits
Tipo Identifica el tipo de opción dentro de una clase. El valor 0x3 designa la opción ID de perfil. Para obtener más información, consulta Opciones de túnel. 8 bits
R Son marcas de control de opciones reservadas para uso futuro. Estos bits deben ser cero en la transmisión y deben ignorarse en la recepción. 3 bits
Len Es la longitud de la carga útil de la opción en incrementos de 4 bytes. La carga útil del ID de perfil es de 64 bits (8 bytes), por lo que la longitud de esta opción se establece en 2. 5 bits
ID del perfil Es el identificador del grupo de perfiles de seguridad de duplicación. 64 bits

Formatos de encabezado de GENEVE para la integración de seguridad de redes

En esta sección, se describen los formatos de encabezado de GENEVE que utilizan los servicios de integración de seguridad de red.

Encabezado IPv4

El formato de paquete GENEVE encapsula un encabezado de túnel compacto en UDP a través de IPv4. Un pequeño encabezado de túnel fijo proporciona información de control y capacidades e interoperabilidad de nivel básico.

En el siguiente diagrama, se muestran los campos de encabezado IPv4 para el paquete 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                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

En la siguiente tabla, se describen los campos del encabezado IPv4 que se muestran en el diagrama anterior:

Campo Descripción
Proto=17 (siempre UDP para GENEVE) Indica que la carga útil encapsulada usa el protocolo UDP.
Dirección de origen Es la dirección IP de la puerta de enlace de la subred local.
Dirección de destino Es la VIP del balanceador de cargas propiedad del cliente.

Encabezado de UDP

El encabezado RFC 0768 de UDP encapsula los datos y mantiene la semántica sin conexión de Ethernet y la dirección IP. También proporciona entropía a los routers que realizan varias rutas de igual costo (ECMP).

En el siguiente diagrama, se muestra el formato del encabezado de un paquete Geneve encapsulado dentro de un 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         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

En la siguiente tabla, se describen los campos del encabezado de UDP que se muestran en el diagrama anterior:

Campos Descripción
Puerto de origen Es un hash opaco en todo el rango de 16 bits. El valor es el mismo para todos los paquetes que pertenecen a un solo flujo encapsulado (en ambas direcciones).
Puerto de destino Es el número de puerto de destino designado para el tráfico de GENEVE, establecido en 6081.
Longitud del UDP Longitud total del datagrama de UDP, incluido el encabezado de UDP y el paquete GENEVE encapsulado.
Suma de comprobación de UDP Es el valor de la suma de verificación del datagrama UDP, que se usa para la detección de errores.

Integración fuera de banda de GENEVE

En esta sección, se describen los formatos de encabezado de GENEVE que utilizan los servicios de integración de seguridad de red, específicamente la integración fuera de banda. La integración fuera de banda usa un túnel GENEVE para encapsular y entregar paquetes duplicados. Los paquetes se dirigen a la dirección IP virtual (VIP) del balanceador de cargas interno del recopilador y se anotan con metadatos específicos de Google Cloud, como la cookie de red.

Las opciones de GENEVE específicas de Google Cloudque se usan en la integración fuera de banda son la cookie de red, la cookie de extremo y el ID de perfil. Para obtener más información, consulta Opciones de GENEVE específicas deGoogle Cloud.

En el siguiente diagrama, se muestra cómo se usan las opciones de GENEVE específicas de Google Clouden la integración fuera de 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                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

Integración en banda de GENEVE

La integración dentro de la banda usa un túnel GENEVE para encapsular y entregar los paquetes interceptados. La dirección IP virtual (VIP) del balanceador de cargas interno del productor recibe los paquetes anotados con metadatos específicos de Google Cloud, como la cookie de red.

La integración dentro de la banda usa las siguientes opciones de GENEVE específicas de Google Cloud: cookie de red, cookie de extremo y ID de perfil. Para obtener más información, consulta Opciones de GENEVE específicas deGoogle Cloud.

La integración dentro de la banda admite la reinyección de paquetes en el extremo original a través de un túnel GENEVE bidireccional lógico, que consta de dos túneles GENEVE unidireccionales. Después de que el dispositivo de red del productor intercepta e inspecciona un paquete, puede descartarlo o volver a insertarlo. Para reinyectar el paquete, el dispositivo hace lo siguiente:

  • Vuelve a encapsular el paquete con el encabezado GENEVE original (las mismas opciones).
  • Intercambia las direcciones de origen y destino en el encabezado IP externo.
  • Garantiza que las sumas de verificación sean correctas.

En el siguiente diagrama, se muestra cómo se usan las opciones de GENEVE específicas de Google Clouden la integración dentro de la 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                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

Encapsulamiento GENEVE y requisitos de MTU

La unidad máxima de transmisión (MTU) es el tamaño en bytes del paquete de IP más grande posible que puede caber dentro de una trama Ethernet, incluidos los encabezados IP, los encabezados de protocolo de capa 4 y los datos de capa 4. Para obtener más información, consulta Unidad de transmisión máxima.

En las redes Google Cloud , la MTU permitida es de 8,896 bytes. Sin embargo, para la integración de seguridad de redes, se deben retener 396 bytes para la sobrecarga de encapsulación GENEVE. Esta necesidad de retención tiene implicaciones para las redes de consumidores y productores:

  • MTU de la red del consumidor: La MTU de la red del consumidor no debe ser superior a 8,500 bytes. Este límite garantiza que haya suficiente espacio para la sobrecarga de GENEVE sin exceder la MTU máxima.

  • MTU de la red del productor: La MTU de la red del productor debe ser al menos 396 bytes más grande que la MTU de la red del consumidor. Este margen tiene en cuenta la encapsulación adicional de GENEVE.

Si no hay suficientes límites de MTU para admitir la encapsulación de GENEVE, se puede descartar el paquete. Esto puede ocurrir a nivel de la red virtual o en el sistema operativo de la VM.

¿Qué sigue?