Conceitos avançados de VPC

Esta página apresenta mais detalhes sobre as redes da nuvem privada virtual (VPC). Antes de ler esta página, consulte a visão geral da rede VPC.

Detalhes avançados da rede VPC

Nesta seção, apresentamos alguns detalhes da rede VPC de maneira mais aprofundada. Não é necessário lê-la para saber sobre o uso comum, mas ela proporciona um maior entendimento do funcionamento da rede VPC. No diagrama a seguir, descrevemos esses detalhes de maneira mais aprofundada, com mais informações nas seções correspondentes.

Um diagrama mais detalhado da rede VPC

O que cada parte faz

Nos bastidores, vários recursos da rede VPC são processados por diferentes partes do sistema. Algumas dessas partes são os recursos padrão de rede que já estão bem documentados, outras são específicas das redes VPC. Alguns recursos podem ser configurados e outros não. As redes VPC usam o módulo de rede VIRTIO do Linux para definir a funcionalidade do cartão e roteador Ethernet, mas os níveis mais altos da pilha de rede, como as consultas ARP, são processados por software de rede padrão.

Consulta ARP
O kernel da instância emite solicitações ARP e a rede VPC emite respostas ARP. O mapeamento entre os endereços MAC e IP é processado pelo kernel da instância.
Tabela de consulta MAC, tabela de consulta IP, tabela de conexão ativa
Essas tabelas são hospedadas na rede VPC básica e não podem ser inspecionadas ou configuradas.
Servidor DNS

O servidor de metadados de cada instância atua como um servidor DNS. Ele armazena as entradas DNS de todos os endereços IP de rede VPC na rede VPC local e chama o servidor DNS público do Google para as entradas de fora dessa rede. Não é possível configurar esse servidor DNS. O cliente DHCP em cada instância é configurado para gerenciar o arquivo /etc/resolv.conf da instância.

É possível adicionar os próprios domínios de pesquisa ou servidores de nomes ao /etc/resolv.conf da instância modificando a política de DHCP. Muitas distribuições Linux permitem que essas modificações sejam mantidas por meio do /etc/dhcp/dhclient.conf. Consulte a documentação sobre DNS interno para mais informações.

Processamento de pacotes entre a rede VPC e o ambiente externo

Os pacotes que entram ou saem da rede VPC são processados pelo código da rede, que os examina em relação às regras de firewall, à tabela de consulta de IP externo e à tabela de conexões ativas. A rede VPC também executa a NAT nos pacotes que entram e saem dela.

Pacotes recebidos por uma instância

Esses pacotes são recebidos e transformados em stream pelo kernel da instância da maneira padrão.

Pacotes enviados por uma instância

Os pacotes são enviados pelo kernel da instância da maneira padrão. A interface e a funcionalidade da rede são definidas usando o módulo de rede VIRTIO (em inglês).

Instruções detalhadas de conexão

Veja mais detalhes sobre o que acontece quando uma instância faz uma chamada à rede VPC.

Uma instância faz uma chamada:

  1. Se o endereço de destino for um nome de instância ou um URL como www.google.com, a instância chamará o serviço DNS no servidor de metadados dele e receberá o endereço IP correspondente. É possível configurar a instância para consultar outro serviço DNS, mas isso impede a resolução de nomes de instância.
  2. O endereço IP de destino é examinado em relação ao intervalo de endereços IP da sub-rede, que todas as instâncias reconhecem.

    1. Se o endereço IP estiver fora da rede VPC:

      1. a instância enviará o pacote para o endereço MAC do gateway da sub-rede com o destino final do pacote definido. Talvez a instância precise fazer uma solicitação ARP para resolver o endereço MAC do gateway;

      2. a rede VPC reescreverá o cabeçalho IP para declarar o endereço IP externo da instância como a origem. Se a instância não tiver nenhum endereço IP externo, a chamada não será permitida, e a rede VPC descartará o pacote sem informar o remetente;

      3. a rede VPC registrará o pacote de saída e adicionará a origem e o destino à tabela de conexões ativas;

      4. a rede VPC enviará o pacote ao respectivo destino;

      5. o destino receberá o pacote e responderá, se for o caso;

      6. a rede VPC receberá a resposta, consultará a tabela de conexões ativas, constatará que se trata de uma conexão ativa e a permitirá. A rede VPC consultará a tabela de consulta de IP externo/rede, substituirá o endereço IP externo da instância pelo endereço de rede correspondente e enviará o pacote à instância de origem;

      7. a instância receberá o pacote.

    2. Se o endereço IP de destino estiver dentro da rede VPC:

      1. a instância será configurada com um IP com a máscara 255.255.255.255, para que possa enviar o pacote ao endereço MAC do gateway da sub-rede. Talvez a instância precise fazer uma solicitação ARP para resolver o endereço MAC do gateway;

      2. a rede VPC, por meio do Proxy ARP, responderá com o endereço MAC da instância de destino;

      3. o Google Cloud encaminhará o pacote para o IP de destino na rede VPC;

      4. a instância de destino receberá o pacote. A instância de destino verificará o firewall de entrada para determinar se o pacote é permitido. Se não for, o pacote será simplesmente descartado. Caso contrário, a instância processará o pacote.

Uma instância externa ou um computador chama uma instância:

  1. O autor da chamada externa envia um pacote ao endereço IP externo de uma instância, que pertence à rede VPC.

  2. A rede VPC compara o pacote com a tabela de conexões ativas para verificar se essa é uma conexão atual:

    1. Se ela não for uma conexão atual, a rede VPC procurará uma regra de firewall para permitir a conexão.
    2. Se não houver uma regra de firewall, a rede VPC descartará o pacote sem informar o remetente.
  3. Se houver uma conexão atual ou uma regra de firewall válida, a rede VPC examinará a tabela de consulta e substituirá o IP externo pelo IP interno correspondente no pacote, registrará o pacote de entrada na tabela de conexões ativas e o enviará para a instância de destino.

  4. A instância recebe o pacote e responde conforme descrito em Se o endereço IP estiver fora do intervalo de IPs da rede VPC ao enviar um pacote fora do intervalo da rede.

  5. A rede VPC recebe a resposta, encontra a solicitação de entrada correspondente na tabela de conexões ativas e permite a passagem do pacote. Antes de enviar, ela modifica o endereço IP de origem substituindo o IP interno da instância pelo IP externo correspondente na tabela de consulta.

Como medir a capacidade da rede VPC

O tráfego de saída de uma máquina virtual está sujeito a um limite de capacidade de saída por VM. Esse limite não pode ser excedido e não indica a capacidade real do tráfego de saída. Não há garantia de que o tráfego atingirá a capacidade máxima, que depende de muitos fatores além do limite. Por exemplo, o uso de endereços IP externos para comunicação entre instâncias de VM exige mais sobrecarga do que o uso de endereços IP internos. Consequentemente, a capacidade máxima do tráfego que usa endereços IP externos é menor que a do tráfego que usa endereços IP internos.

Para medir o desempenho da capacidade de saída das suas instâncias em relação a esses limites, use o PerfKitBenchMarker.

Por exemplo, execute os comandos a seguir quando você estiver em um computador local. O comando cria uma instância e mede o desempenho dela. Em que:

  • [MACHINE_TYPE] é o tipo de máquina que você quer testar, por exemplo, n1-standard-32;
  • [ZONE] é a zona em que a instância será criada;
  • [NUMBER_OF_VCPUS] é o número de vCPUs da instância, por exemplo, 32 para o tipo de máquina n1-standard-32.

Para medir o desempenho de stream único:

./pkb.py --cloud=GCP --machine_type=[MACHINE_TYPE] --benchmarks=iperf --ip_addresses=INTERNAL --zones=[ZONE]
    

Para medir o desempenho de multistream:

./pkb.py --cloud=GCP --machine_type=[MACHINE_TYPE] --benchmarks=iperf --ip_addresses=INTERNAL --zones=[ZONE] --iperf_sending_thread_count=[NUMBER_OF_VCPUS]
    

A seguir