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
- Visão geral da Integração de Segurança de Rede
- Visão geral da integração fora da banda
- Monitorar a integração fora da banda