Entender o formato GENEVE

O encapsulamento de virtualização de rede genérico (GENEVE) é um protocolo de encapsulamento de rede que encapsula o pacote original com metadados extras. Esses metadados extras ajudam a ativar a virtualização de rede flexível e extensível.

O diagrama a seguir mostra o formato do cabeçalho de um pacote 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.     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

A tabela a seguir descreve os campos de cabeçalho GENEVE mostrados no diagrama anterior:

Campo Descrição Comprimento do campo
Ver A versão do protocolo GENEVE. A única versão compatível é zero (0). Para mais informações, consulte Campos de cabeçalho de túnel. 2 bits
Opt len O comprimento dos campos de opção, expresso em múltiplos de 4 bytes, sem incluir o cabeçalho de túnel fixo de 8 bytes. Para mais informações, consulte Campos de cabeçalho de túnel. 6 bits
O O bit do pacote de controle. Para mais informações, consulte Campos de cabeçalho de túnel. 1 bit
C O bit de opções críticas. Para mais informações, consulte Campos de cabeçalho de túnel. 1 bit
Rsvd Campo reservado, que precisa ser zero (0) na transmissão e ignorado no recebimento. Para mais informações, consulte Campos de cabeçalho de túnel. 6 bits
Tipo de protocolo O tipo de protocolo permite qualquer ethertype. No entanto, a Integração de Segurança de Rede permite apenas IPv4 (0x0800) ou IPv6 (0x86DD). 16 bits
Identificador de rede virtual (VNI) Um identificador exclusivo para um elemento de rede virtual. A Integração de Segurança de Rede não preenche esse campo, o que significa o VNI é definido como zero (0). Para mais informações, consulte GENEVE de integração fora da banda. 24 bits
Rsvd Campo reservado, que precisa ser zero (0) na transmissão e ignorado no recebimento. Para mais informações, consulte Campos de cabeçalho de túnel. 8 bits

Google CloudOpções GENEVE específicas do

O cabeçalho GENEVE usa um formato de tipo-comprimento-valor (TLV, na sigla em inglês) para as opções. Isso significa que cada opção é codificada com um identificador de tipo, um campo de comprimento que indica o tamanho do valor e o próprio valor. Esse formato permite flexibilidade e extensibilidade, já que novas opções podem ser adicionadas sem interromper as implementações atuais. As seções a seguir descrevem a ordem e o número de opções. O número e a ordem das opções vão variar à medida que o produto evolui. Portanto, para garantir a compatibilidade futura da implementação do dispositivo, analise o cabeçalho GENEVE com base nos campos TLV.

As opções GENEVE específicas do Google Cloud são as seguintes:

  • ID da rede (cookie de rede)
  • ID do endpoint (cookie de endpoint)
  • ID do perfil

ID da rede

A opção de ID da rede, também conhecida como "cookie de rede", identifica a rede virtual associada ao tráfego encapsulado em GENEVE no Google Cloud. Essa opção é identificada pela classe de opção 0x0132 (Google) e pelo tipo 1 (ID da rede). Os dados da opção contêm 32 bits, dos quais os primeiros 28 representam um ID de rede opaco. A finalidade dos 4 bits restantes é descrita no diagrama e na tabela a seguir.

O diagrama a seguir mostra o formato da opção no pacote 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|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

A tabela a seguir descreve os campos de opção mostrados no diagrama anterior:

Campo Descrição Comprimento do campo
Classe de opção Identifica a organização ou entidade que definiu a opção. O valor 0x0132 designa o Google como a entidade definidora. 16 bits
Tipo Identifica o tipo de opção em uma classe. O valor 0x1 designa a opção de ID da rede. Para mais informações, consulte Opções de túnel. 8 bits
R As flags de controle de opção reservadas para uso futuro. Esses bits precisam ser zero (0) na transmissão e ignorados no recebimento. 3 bits
Len O comprimento do payload da opção em incrementos de 4 bytes. O payload do ID da rede é de 32 bits (4 bytes), então o comprimento dessa opção é definido como 1. 5 bits
Cookie de rede O cookie de rede opaco, que identifica uma rede virtual. 28 bits
R Reservado para implementação futura. Precisa ser definido como zero (0) na transmissão e ignorado no recebimento. 2 bits
T Indica o descarregamento de TLS para o pacote encapsulado. Não utilizado. 1 bit
D Indica a direção do pacote original. Zero (0) significa entrada e um (1) significa um pacote de saída na máquina virtual (VM) espelhada original . 1 bit

ID do endpoint

A opção de ID do endpoint, também conhecida como "cookie de endpoint", identifica exclusivamente o ponto de captura, que é um controlador de interface de rede em uma Google Cloud VM. Essa opção é identificada pela classe de opção 0x0132 (Google) e pelo tipo 2 (ID do endpoint). Os dados da opção são um valor opaco de 128 bits.

O diagrama a seguir mostra o formato da opção no pacote 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                        +
      |                                                               |
      +                                                               +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

A tabela a seguir descreve os campos de opção mostrados no diagrama anterior:

Campo Descrição Comprimento do campo
Classe de opção Identifica a organização ou entidade que definiu a opção. O valor 0x0132 designa o Google como a entidade definidora. 16 bits
Tipo Identifica o tipo de opção em uma classe. O valor 0x2 designa a opção de ID do endpoint. Para mais informações, consulte Opções de túnel. 8 bits
R As flags de controle de opção reservadas para uso futuro. Esses bits precisam ser zero (0) na transmissão e ignorados no recebimento. 3 bits
Len O comprimento do payload em incrementos de 4 bytes. O payload do ID do endpoint é de 128 bits (16 bytes), então o comprimento dessa opção é definido como 4. 5 bits
Cookie de endpoint Um identificador opaco para o ponto de captura (uma NIC de VM). 128 bits

ID do perfil

A opção de ID do perfil identifica o grupo de perfis de segurança de espelhamento aplicado ao tráfego. Essa opção é identificada por classe de opção 0x0132 (Google) e tipo 3 (ID do perfil). Os dados da opção são um identificador de 64 bits que corresponde ao campo data_path_id no grupo de perfis de segurança. O dispositivo de destino pode aplicar políticas de segurança com base no identificador do grupo de perfis.

O diagrama a seguir mostra o formato da opção no pacote 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                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

A tabela a seguir descreve os campos de opção mostrados no diagrama anterior:

Campo Descrição Comprimento do campo
Classe de opção Identifica a organização ou entidade que definiu a opção. O valor 0x0132 designa o Google como a entidade definidora. 16 bits
Tipo Identifica o tipo de opção em uma classe. O valor 0x3 designa a opção de ID do perfil. Para mais informações, consulte Opções de túnel. 8 bits
R As flags de controle de opção reservadas para uso futuro. Esses bits precisam ser zero na transmissão e ignorados no recebimento. 3 bits
Len O comprimento do payload da opção em incrementos de 4 bytes. O payload do ID do perfil é de 64 bits (8 bytes), então o comprimento dessa opção é definido como 2. 5 bits
ID do perfil O identificador do grupo de perfis de segurança de espelhamento. 64 bits

Formatos de cabeçalho GENEVE para a Integração de Segurança de Rede

Esta seção descreve os formatos de cabeçalho GENEVE usados pelos serviços de Integração de Segurança de Rede.

Cabeçalho IPv4

O formato de pacote GENEVE encapsula um cabeçalho de túnel compacto em UDP sobre IPv4. Um pequeno cabeçalho de túnel fixo fornece informações de controle e recursos de nível básico e interoperabilidade.

O diagrama a seguir mostra os campos de cabeçalho IPv4 para o pacote 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                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

A tabela a seguir descreve os campos de cabeçalho IPv4 mostrados no diagrama anterior:

Campo Descrição
Proto=17 (sempre UDP para GENEVE) Indica que o payload encapsulado usa o protocolo UDP.
Endereço da fonte O endereço IP do gateway da sub-rede local.
Endereço de destino O VIP do balanceador de carga de propriedade do cliente.

Cabeçalho UDP

O cabeçalho UDP RFC 0768 encapsula dados, mantendo a semântica sem conexão do Ethernet e do endereço IP. Ele também fornece entropia para roteadores que executam vários caminhos de custo igual (ECMP, na sigla em inglês).

O diagrama a seguir mostra o formato do cabeçalho de um pacote Geneve encapsulado em um 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         |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

A tabela a seguir descreve os campos de cabeçalho UDP mostrados no diagrama anterior:

Campos Descrição
Porta de origem Um hash opaco em todo o intervalo de 16 bits. O valor é o mesmo para todos os pacotes pertencentes a um único fluxo encapsulado (ambas as direções).
Porta de destino O número da porta de destino designada para o tráfego GENEVE, definido como 6081.
Comprimento do UDP O comprimento total do datagrama UDP, incluindo o cabeçalho UDP e o pacote GENEVE encapsulado.
Soma de verificação UDP O valor da soma de verificação do datagrama UDP, usado para detecção de erros.

GENEVE de integração fora da banda

Esta seção descreve os formatos de cabeçalho GENEVE usados pelos serviços de Integração de Segurança de Rede, especificamente a integração fora da banda. A integração fora da banda usa um túnel GENEVE para encapsular e entregar pacotes espelhados. Os pacotes são endereçados ao endereço IP virtual (VIP) do balanceador de carga interno do coletor e são anotados com metadados específicos do Google Cloud- , como o cookie de rede.

As opções GENEVE específicas do Google Cloudusadas na integração fora da banda são cookie de rede, cookie de endpoint e ID do perfil. Para mais informações, consulte Google CloudOpções GENEVE específicas do.

O diagrama a seguir mostra como as opções GENEVE específicas do Google Cloudsão usadas na integração fora da 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                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

GENEVE de integração na banda

A integração na banda usa um túnel GENEVE para encapsular e entregar pacotes interceptados. O endereço IP virtual (VIP) do balanceador de carga interno do produtor recebe os pacotes anotados com Google Cloud-metadados específicos, como o cookie de rede.

A integração na banda usa as seguintes Google Cloud-opções GENEVE específicas do: cookie de rede, cookie de endpoint e ID do perfil. Para mais informações, consulte Google CloudOpções GENEVE específicas do.

A integração na banda oferece suporte à reinjeção de pacotes no endpoint original usando um túnel GENEVE bidirecional lógico, que consiste em dois túneis GENEVE unidirecionais. Depois que o dispositivo de rede do produtor intercepta e inspeciona um pacote, ele pode descartar ou reinjetar o pacote. Para reinjetar o pacote, o dispositivo faz o seguinte:

  • Reencapsula o pacote usando o cabeçalho GENEVE original (mesmas opções).
  • Troca os endereços de origem e destino no cabeçalho IP externo.
  • Verifica se as somas de verificação estão corretas.

O diagrama a seguir mostra como as opções GENEVE específicas do Google Cloudsão usadas na integração na 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                          +
      |                                                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   

Encapsulamento GENEVE e requisitos de MTU

A unidade máxima de transmissão (MTU, na sigla em inglês) é o tamanho, em bytes, do maior pacote de IP possível que pode caber em um frame Ethernet, incluindo cabeçalhos IP, cabeçalhos de protocolo da camada 4 e dados da camada 4. Saiba mais em Unidade de transmissão máxima.

Em Google Cloud redes, a MTU permitida é de 8.896 bytes. No entanto, para a Integração de Segurança de Rede, 308 bytes precisam ser mantidos para o overhead de encapsulamento GENEVE. Essa necessidade de retenção tem implicações para redes de consumidores e produtores:

  • MTU da rede do consumidor: a MTU da rede do consumidor não pode ser maior que 8.588 bytes. Esse limite garante que haja espaço suficiente para o overhead GENEVE sem exceder a MTU máxima.

  • MTU da rede do produtor: a MTU da rede do produtor precisa ser pelo menos 308 bytes maior que a MTU da rede do consumidor. Essa permissão acomoda o encapsulamento GENEVE extra.

Se não houver limites de MTU suficientes para acomodar o encapsulamento GENEVE, o pacote poderá ser descartado. Isso pode acontecer no nível da rede virtual ou no sistema operacional da VM.

A seguir