O Google Cloud é responsável pela largura de banda por instância de máquina virtual (VM), e não por interface de rede (NIC, na sigla em inglês) ou endereço IP. O tipo de máquina de uma VM define a maior taxa de saída possível. No entanto, só é possível atingir essa taxa de saída máxima em circunstâncias específicas.
Nesta página, descrevemos as expectativas, que são úteis para o planejamento das implantações. Ele categoriza a largura de banda a partir de duas dimensões:
- A direção de tráfego: conforme usada nesta página, a direção do tráfego é sempre
da perspectiva de uma VM do Google Cloud:
- Os pacotes enviados de uma VM do Google Cloud compõem o tráfego de saída (envio).
- Os pacotes enviados a uma VM do Google Cloud compõem o tráfego de entrada (recebimento).
Tipo de endereço IP de destino: o Google Cloud categoriza os endereços IP como internos ou externos:
- Um endereço IP dentro de uma rede VPC é chamado de endereço IP interno. Por exemplo, a NIC de cada VM tem um endereço IP interno principal localizado em uma rede VPC. Os endereços IP internos podem ser qualquer intervalo válido de endereço IP particular ou público reutilizado.
- Um endereço IP com acesso pela Internet é um endereço IP externo. Os endereços IP externos podem estar localizados no Google Cloud, como o atribuído à NIC de uma VM. Endereços IP externos são sempre públicos, incluindo endereços IP públicos na Internet e fora do Google Cloud.
Para definições precisas, consulte Endereços IP na documentação da VPC. Por exemplo, se você reutilizar um endereço IP público que seja interno na rede VPC e o endereço IP externo correspondente não estiver mais acessível.
Todas as informações nesta página são aplicáveis às VMs do Compute Engine, bem como a produtos que dependam delas. Por exemplo, um nó do Google Kubernetes Engine é uma VM do Compute Engine.
Nem outras interfaces de rede
(NICs), nem endereços IP adicionais por
NIC aumentam a largura de banda de entrada ou saída de uma VM. Por exemplo, uma
VM n1-standard-8
com duas NICs é limitada a 16 Gbps de largura de banda de
saída total, e não 16 Gbps de largura de banda por NIC.
Tabela de resumo da largura de banda
A tabela a seguir resume as expectativas de largura de banda:
Endereço de destino do pacote | ||
Direção do trânsito | Destino de endereço IP interno | Destino de endereço IP externo |
---|---|---|
Saída de uma VM do Google Cloud |
|
A saída máxima de uma única VM não pode exceder o seguinte:
|
|
||
Entrada para uma VM do Google Cloud |
|
O Google Cloud protege cada VM limitando o tráfego de entrada
entregue a um endereço IP externo associado à VM. O limite é
a primeira das seguintes taxas encontradas:
|
Largura de banda de saída
O Google Cloud limita a largura de banda de envio (saída) por VM e por projeto. A largura de banda de saída inclui o tráfego enviado de todas as NICs da VM e os dados transferidos para todos os discos permanentes conectados à VM.
A largura de banda de saída máxima padrão depende do tipo de máquina da VM. A largura de banda de saída máxima geralmente é de 2 Gbps por vCPU, mas há algumas diferenças e exceções, dependendo da série de máquinas. A tabela a seguir mostra os limites mínimo e máximo para a largura de banda de saída apenas para o nível de rede padrão, não por desempenho de rede do nível 1 da VM.
Série de máquina | Limite de saída mínimo padrão | Limite máximo de saída padrão |
---|---|---|
E2 | 1 Gbps | 16 Gbps |
T2D | 10 Gbps | 32 Gbps |
N2,C2, N2D e C2D | 10 Gbps | 32 Gbps |
N1 (excluindo VMs com 1 vCPU) | 10 Gbps | 32 Gbps na plataforma de CPU Skylake 16 Gbps em plataformas de CPU mais antigas |
Tipos de máquina N1 com 1 vCPU, f1-micro e g1-small | 2 Gbps | 2 Gbps |
A2 | Com base em GPUs | Com base em GPUs |
Por exemplo, uma VM baseada no tipo de máquina t2d-standard-6
tem uma largura de banda de saída
padrão de 12 Gbps. Esse valor é baseado em seis vCPUs, com 2 Gbps para cada vCPU. O resultado, 12 Gbps, é maior que o valor mínimo
da série de máquina e não excede o limite máximo de 32.
Você pode encontrar a largura de banda máxima de saída para cada tipo de máquina listado na página da família de máquinas específica:
- Família de máquinas de uso geral
- Família de máquinas com otimização de computação
- Família de máquinas com otimização de memória
- Família de máquinas com otimização de acelerador
A largura de banda de saída máxima não é uma garantia. Além do tipo de máquina, a largura de banda de saída é afetada por fatores como os seguintes exemplos, que não são exaustivos:
- Driver Ethernet convidado: o GVNIC oferece um desempenho melhor do que a interface de rede VirtIO
- Tamanho do pacote
- Sobrecarga de protocolo
- O número de fluxos
- configurações do driver Ethernet do SO convidado da VM, como descarregamento de soma de verificação e descarga de segmentação TCP (TSO, na sigla em inglês)
- Congestionamento da rede
- O destino do pacote: o Google Cloud processa o tráfego de saída de uma VM de maneira diferente, caso o endereço de destino do pacote de saída seja um endereço IP interno ou externo.
- Em uma situação em que os discos permanentes concorrem com outro tráfego de saída de rede, 60% da largura de banda máxima da rede é destinada às gravações em disco permanente, deixando 40% para o outro tráfego de saída. Veja outros fatores que afetam o desempenho na documentação do Persistent Disk para mais detalhes.
É possível ativar o desempenho de rede por VM de nível_1 com tipos de máquinas de uso geral otimizados para computação, que oferecem larguras de banda de rede mais altas.
Saída para destinos de endereços IP internos
Da perspectiva de uma VM de envio, o Google Cloud restringe a saída máxima possível aos destinos de endereços IP internos de acordo com o tipo de máquina da VM de envio. Os endereços IP internos são aqueles em uma rede VPC, em uma rede VPC diferente conectada usando peering de rede VPC ou em uma rede conectada à sua VPC com o Cloud VPN ou o Cloud Interconnect.
A lista a seguir classifica o tráfego entre VMs usando origens e destinos de endereços IP internos, desde a maior largura de banda possível até a menor:
- Entre VMs na mesma zona
- Entre VMs em zonas diferentes na mesma região
- Entre VMs em zonas diferentes em regiões diferentes
- De uma VM para APIs e serviços do Google usando o Private Service Connect
Ao enviar tráfego de uma VM a um endereço IP interno localizado em outra rede VPC conectada a partir de túneis do Cloud VPN, a largura de banda de saída fica limitada à taxa máxima de dados de um túnel do Cloud VPN.
Para utilizar plenamente a largura de banda de vários túneis e roteamento ECMP, é necessário usar várias conexões TCP (cinco tuplas únicas). Um componente com cinco tuplas consiste em um protocolo, endereço IP de origem, porta de origem, endereço IP de destino e porta de destino.
Saída para destinos de endereços IP externos
Da perspectiva de uma VM de envio, o Google Cloud limita o tráfego de saída enviado a um destino público ou de endereço IP externo para qualquer uma das seguintes taxas que for alcançada primeiro. Um endereço IP externo é roteável publicamente: um endereço IP externo de um recurso do Google Cloud ou um endereço na Internet.
- 25 Gbps, no total, para todos os fluxos de pacote e conexões em VMs com a rede Tier_1 ativada
- 7 Gbps, no total, para todos os fluxos de pacote e conexões em VMs sem a rede Tier_1 ativada
- 3 Gbps por fluxo (hash exclusivo de cinco tuplas)
É possível associar um endereço IP externo a uma VM do Google Cloud em uma das seguintes capacidades:
- Você pode atribuir um endereço IP externo à interface de rede de uma VM.
- Uma regra de encaminhamento externo usada para encaminhamento de protocolo exige um endereço IP externo.
- O endereço IP da regra de encaminhamento de um balanceador de carga TCP/UDP de rede exige um endereço IP externo.
- Endereços IP externos são associados a um gateway do Cloud NAT.
Por exemplo, mesmo que uma instância n2-standard-16
tenha um limite de largura de banda
de saída de 32 Gbps, para a Internet, esse limite é de
7 Gbps.
Cotas e limites de saída agregados por projeto
O Google Cloud também aplica o seguinte aos projetos:
Largura de banda máxima da saída da Internet de todas as VMs em cada região para endereços IP externos fora do Google Cloud: esse máximo é definido por cada cota de largura de banda de saída da Internet da região.
Largura de banda de saída máxima de todas as VMs em uma determinada região para todas as outras regiões do Google Cloud: aplica-se ao tráfego enviado a ambos os destinos de endereços IP internos e externos. Esse limite é calculado usando telemetria interna e provavelmente não restringe a largura de banda entre regiões para a maioria dos projetos. Se tiver perguntas sobre como alcançar a largura de banda de região para região necessária, entre em contato com a equipe de vendas.
Largura de banda de entrada
O Google Cloud processa o tráfego de entrada para uma VM de maneira diferente, caso o destino do pacote seja um endereço IP interno ou externo.
Entrada para destinos de endereços IP internos
O Google Cloud não implementa restrição de propósito na entrada de tráfego para um endereço IP interno associado. O tipo de máquina, sistema operacional e outras condições de rede e recursos definem quanto tráfego interno uma VM pode receber. Um endereço IP interno associado é um dos seguintes:
- O endereço IP interno principal da interface de rede de uma VM
- Um endereço IP de alias de um intervalo de IP do alias atribuído à interface de rede de uma VM
- O endereço IP de uma regra de encaminhamento interno usada para encaminhamento de protocolo interno
- O endereço IP de uma regra de encaminhamento do balanceador de carga TCP/UDP interno
Entrada para destinos de endereços IP externos
O Google Cloud limita o tráfego de entrada enviado para o endereço IP externo associado de uma VM para qualquer uma das seguintes taxas que for alcançada primeiro:
- 180.000.000 pacotes por segundo
- 20 Gbps
Para esse limite, um endereço IP externo associado é um dos seguintes:
- Um endereço IP externo atribuído à interface de rede de uma VM.
- O endereço IP de uma regra de encaminhamento externo usada para encaminhamento de protocolo externo.
- O endereço IP de uma regra de encaminhamento do balanceador de carga TCP/UDP da rede.
- Respostas de entrada estabelecidas que foram processadas pelo Cloud NAT.
Para as duas últimas definições de um endereço IP externo associado: se um endereço IP externo for compartilhado entre várias VMs, o Google Cloud limitará o tráfego de entrada individualmente para cada VM de back-end.
Filas de recebimento e transmissão
Cada NIC de VM recebe um número de filas de recebimento e transmissão para o processamento de pacotes da rede.
- Fila de recebimento (RX): fila para receber pacotes. Quando a NIC recebe um pacote da rede, a NIC seleciona o descritor de um pacote recebido da fila, o processa e o envia para o SO convidado em uma fila de pacotes anexada a uma vCPU núcleo por interrupção. Se a fila RX estiver cheia e não houver buffer disponível para colocar um pacote, o pacote será descartado. Isso normalmente pode acontecer se um aplicativo estiver superutilizando um núcleo de vCPU que também está anexado à fila de pacotes selecionada.
- Fila de transmissão (TX): fila para transmitir pacotes. Quando o SO convidado envia um pacote, um descritor é alocado e colocado na fila do TX. Em seguida, a NIC processa o descritor e transmite o pacote.
Alocação de fila padrão
A menos que você atribua contagens de fila para NICs explicitamente, é possível modelar o algoritmo que o Google Cloud usa para atribuir um número fixo de filas de RX e TX por NIC desta maneira:
Use um dos seguintes métodos, dependendo do seu tipo de interface de rede:
- VirtIO: divida o número de vCPUs pelo número de NICs e descarte um restante —[
number of vCPUs/number of NICs
]. - GVNIC: divida o número de vCPUs pelo número de NICs, divida
o resultado por 2 e descarte qualquer resto —
[
number of vCPUs/number of NICs/2
].
Esse cálculo sempre resulta em um número inteiro (não uma fração).
- VirtIO: divida o número de vCPUs pelo número de NICs e descarte um restante —[
Se o número calculado for menor que 1, atribua uma NIC a cada fila.
Determine se o número calculado é maior que o número máximo de filas por NIC. O número máximo de filas por NIC depende do tipo de driver:
- Usando virtIO ou um
driver personalizado, o número máximo de filas por NIC é
32
. Se o número calculado for maior que32
: ignore o número calculado e atribua 32 filas a cada NIC. - Usando gvNIC, o número máximo de
filas por NIC é
16
. Se o número calculado for maior que16
, ignore o número calculado e atribua 16 filas a cada NIC.
- Usando virtIO ou um
driver personalizado, o número máximo de filas por NIC é
Veja nos exemplos a seguir como calcular o número padrão de filas:
Se uma VM usar a VirtIO e tiver 16 vCPUs e 4 NICs, o número calculado será
[16/4] = 4
. O Google Cloud atribui quatro filas a NIC.Se uma VM usar GVNIC e tiver 128 vCPUs e duas NICs, o número calculado será
[128/2/2] = 32
. O Google Cloud atribui a cada NIC o número máximo de filas por NIC possível. O Google Cloud atribui16
filas por NIC.
Em sistemas Linux, use ethtool
para configurar uma NIC com menos filas do que o
número de filas que o Google Cloud atribui por NIC.
Alocação de fila personalizada
Em vez da alocação padrão de filas, é possível atribuir uma contagem de filas personalizada (total de RX e TX) a cada NIC ao criar uma nova VM usando a API Compute Engine.
O número de filas personalizadas que são especificadas precisa aderir às seguintes regras:
a contagem mínima de filas que pode ser atribuída por NIC é uma;
A contagem máxima de filas que você pode atribuir é a menor contagem de vCPUs ou a contagem máxima de filas por NIC, com base no tipo de driver:
Se você atribuir contagens de filas personalizadas a todas as NICs da VM, a soma das atribuições de filas precisará ser menor ou igual ao número de vCPUs atribuídas à instância de VM.
Por exemplo:
Se uma VM tiver 8 vCPUs e 3 NICs, a contagem máxima de filas da VM será o número de vCPUs, ou seja, 8. É possível atribuir uma fila a
nic0
, quatro filas anic1
e três filas anic2
. Neste exemplo, não é possível atribuir quatro filas posteriormente anic2
enquanto mantém as outras duas atribuições de filas de NIC porque a soma das filas atribuídas não pode exceder o número de vCPUs (oito).Se uma VM tiver 96 vCPUs e duas NICs, você poderá atribuir até 32 fila às duas NICs usando o driver virtIO ou até 16 filas usando o driver gvNIC. Neste exemplo, a soma das filas atribuídas é sempre menor que o número de vCPUs.
Também é possível atribuir uma contagem de filas personalizadas para apenas algumas NICs, permitindo que o Google Cloud atribua filas para as NICs restantes. O número de filas que podem ser atribuídas por NIC ainda está sujeito às regras acima. Simule a possibilidade da configuração e, se for possível, o número de filas que o Google Cloud atribui às NICs restantes com este processo:
Calcule a soma das filas das NICs usando a atribuição de filas personalizada. Para uma VM de exemplo com 20 vCPUs e 6 NICs, suponha que você atribua
nic0
5 filas,nic1
6 filas,nic2
4 filas e deixe o Google Cloud atribuir filas paranic3
,nic4
enic5
. Neste exemplo, a soma das filas personalizadas atribuídas é5+6+4 = 15
.Subtraia a soma das filas personalizadas atribuídas do número de vCPUs. Se a diferença não for pelo menos igual ao número de NICs restantes a que o Google Cloud precisa atribuir filas, o Google Cloud retornará um erro. Continuando com o exemplo de VM de 20 vCPUs e uma soma de filas personalizadas atribuídas
15
, o Google Cloud tem filas20-15 = 5
restantes para atribuir às outras NICs (nic3
,nic4
enic5
).Divida a diferença da etapa anterior pelo número de NICs restantes e descarte qualquer sobra:
⌊(number of vCPUs - sum of assigned queues)/(number of remaining NICs)⌋
. Este cálculo sempre resulta em um número inteiro (não uma fração) que é pelo menos igual a um por causa da restrição explicada na etapa anterior. O Google Cloud atribui a cada NIC restante uma contagem de filas correspondente ao número calculado, desde que o número calculado não seja maior que o número máximo de filas por NIC. O número máximo de filas por NIC depende do tipo de driver:- Usando virtIO ou um driver personalizado se o número calculado de filas para cada NIC restante for
maior que
32
, o Google Cloud atribui32
filas a cada NIC restante. - Usando gvNIC, se o número calculado de filas para cada NIC restante for maior que
16
, o Google Cloud atribuirá16
filas a cada NIC.
- Usando virtIO ou um driver personalizado se o número calculado de filas para cada NIC restante for
maior que
API
Crie uma VM com quantidades de filas específicas para placas de rede (NIC, na sigla em inglês) usando o método instances.insert.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "machineTypes/MACHINE_TYPE" "networkInterfaces": [ { "network": string, "subnetwork": string, "networkIP": string, "name": string, "queueCount": "QUEUE_SIZE", .... ], } ], }
Substitua:
PROJECT_ID
: ID do projeto em que a VM será criadaZONE
: zona em que a VM será criadaMACHINE_TYPE
: tipo de máquina, predefinida ou personalizada, para a nova VMVM_NAME
: nome da nova VMQUEUE_SIZE
: número de filas da NIC, sujeito às regras discutidas nesta seção.
Alocações de fila e alteração do tipo de máquina
Se você interromper uma instância de VM e alterar o tipo de máquina e o novo tipo de máquina tiver um número diferente de vCPUs, o Google Cloud não alterará as atribuições de fila por NIC. As atribuições de fila de NIC padrão ou personalizadas são definidas apenas ao criar uma VM.
A seguir
- Tipos de máquina
- Instâncias de máquina virtual
- Como criar e iniciar uma instância de VM
- Como configurar o desempenho de rede Tier_1 por VM
- Guia de início rápido sobre como usar uma VM do Linux
- Guia de início rápido sobre como usar uma VM do Windows