O encapsulamento genérico de virtualização de rede (GENEVE) é um protocolo de encapsulamento de rede que encapsula o pacote original com metadados adicionais. 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 fixo de túnel 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, mas 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 de um elemento de rede virtual. A integração da segurança de rede não preenche esse campo, o que significa que o VNI é definido como zero (0). Para mais informações, consulte Integração fora da banda GENEVE. | 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 |
Opções GENEVE específicas deGoogle Cloud
O cabeçalho GENEVE usa um formato Type-Length-Value (TLV) 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 variam conforme 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 do GENEVE específicas para Google Cloud são as seguintes:
- ID da rede (cookie de rede)
- ID do endpoint (cookie do endpoint)
- ID do perfil
ID da rede
A opção de ID de rede, também conhecida como "cookie de rede", identifica a rede virtual associada ao tráfego encapsulado em GENEVE em Google Cloud.
Essa opção é identificada pela classe 0x0132 (Google) e pelo tipo 1 (ID de 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 está 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 da opção em uma classe. O valor 0x1 designa a opção "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 |
Código 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 VM Google Cloud. Essa opção é identificada pela classe 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 da opção em uma classe. O valor 0x2 designa a opção "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 tamanho 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 do 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 pela classe 0x0132 (Google) e pelo 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 da opção em uma classe. O valor 0x3 designa a opção "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 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 e interoperabilidade de nível básico.
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 de origem | 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 realizam vários caminhos de custo igual (ECMP).
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 do 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 (em 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 de checksum do datagrama UDP, usado para detecção de erros. |
Integração fora da banda GENEVE
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 de 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 Opções GENEVE específicas doGoogle Cloud.
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 +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Integração na banda GENEVE
A integração em 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 metadados específicos do Google Cloud, como o cookie de rede.
A integração no mesmo canal usa as seguintes opções GENEVE específicas de Google Cloud: cookie de rede, cookie de endpoint e ID do perfil. Para mais informações, consulte Opções GENEVE específicas doGoogle Cloud.
A integração em 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.
- Garante que os checksums estejam corretos.
O diagrama a seguir mostra como as opções GENEVE específicas do Google Cloudsão usadas na integração em 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) é o tamanho, em bytes, do maior pacote de IP possível que cabe 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, 396 bytes precisam ser mantidos para o overhead de encapsulamento GENEVE. Essa necessidade de retenção tem implicações para as redes de consumidores e produtores:
MTU da rede do consumidor: a MTU da rede do consumidor não pode ser maior que 8.500 bytes. Esse limite garante que haja espaço suficiente para a sobrecarga do GENEVE sem exceder a MTU máxima.
MTU da rede produtora: a MTU da rede produtora precisa ser pelo menos 396 bytes maior do que a MTU da rede consumidora. Essa permissão acomoda o encapsulamento GENEVE adicional.
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
- Visão geral da integração da segurança de rede
- Visão geral da integração fora da banda
- Monitorar a integração fora da banda