Criar instâncias do Compute Engine ULL
Esta página descreve como criar instâncias do Compute Engine de latência ultrabaixa (ULL) usando os tipos de máquina U4P ou U4C da família de máquinas U4.
Para uma visão geral do processo de configuração da infraestrutura da ULL, consulte Visão geral da configuração da solução ULL.
Antes de começar
Antes de criar instâncias de computação ULL, consulte as seções a seguir.
Criar redes VPC
Se ainda não tiver feito isso, crie redes VPC para cada uma das interfaces de rede da instância, conforme descrito em Visão geral da configuração da ULL Solution.
Criar uma política de posicionamento
Se quiser, aplique uma política de posicionamento distribuído à sua instância de ULL para aumentar a resiliência. Para mais informações, consulte Criar e aplicar políticas de posicionamento distribuído na documentação do Compute Engine.
Definir o projeto
Configure a CLI gcloud para usar seu projeto. Como alternativa, inclua
a flag --project=PROJECT_ID para cada comando
nos procedimentos a seguir.
gcloud config set project PROJECT_ID
Substitua PROJECT_ID pelo ID do seu
projeto.
Ativar APIs
Se ainda não tiver feito isso, ative as seguintes APIs.
Console
Ative a API Compute Engine, se ainda não tiver feito isso.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você
criou o projeto, provavelmente já tem essa permissão pelo papel de
Proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo papel de
Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin).
Saiba como conceder papéis.
gcloud
Ative a API Compute Engine, se ainda não tiver feito isso:
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você
criou o projeto, provavelmente já tem essa permissão pelo papel de
Proprietário (roles/owner). Caso contrário, é possível receber essa permissão pelo papel de
Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin).
Saiba como conceder papéis.
gcloud services enable compute.googleapis.com
Funções exigidas
Para receber as permissões necessárias para criar instâncias do Compute Engine, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Para criar e gerenciar instâncias de computação:
Administrador da instância do Compute (
compute.instanceAdmin) no seu projeto
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.
Visão geral da configuração da instância ULL
Para criar uma instância de computação ULL e configurá-la para enviar ou receber tráfego unicast e multicast ULL, faça o seguinte:
| Etapa | Descrição |
|---|---|
| Criar uma instância de ULL | Crie uma instância usando um tipo de máquina U4P ou U4C e conecte as interfaces de rede a uma rede VPC de uso geral e a uma rede VPC de ULL. Se você planeja usar a instância como um consumidor de multicast, defina a flag igmp-query como IGMP_QUERY_V2. |
Configurar o roteamento para as interfaces não nic0 para tráfego unicast ULL |
Configure o roteamento de políticas com base na origem no SO convidado para garantir que os pacotes de saída saiam pela interface correta e evitar o roteamento assimétrico. |
| Configurar uma instância para ser um consumidor de multicast ULL |
Conclua cada uma das etapas a seguir para receber tráfego multicast
nas interfaces de rede ULL:
|
Além disso, você pode usar os comandos de exemplo nesta página para testar a conectividade multicast.
Criar uma instância de ULL
Esta seção descreve como criar uma instância para usar com unicast e multicast ULL.
Para informações gerais sobre como criar instâncias de computação, incluindo outras opções de configuração, consulte Criar e iniciar uma instância do Compute Engine.
gcloud
Para criar uma instância de ULL, use o
comando compute instances create.
O tipo de interface de rede compatível com instâncias ULL é GVNIC.
Inclua o campo queue-count e especifique um valor de 32 para
suporte ao XDP.
Para as interfaces de rede que se conectam a uma rede VPC
ULL, no-address precisa ser especificado.
Além disso, o comando a seguir inclui a flag igmp-query para
permitir que a instância seja um consumidor de multicast. Essa flag não é necessária se a instância for apenas um produtor de multicast ou se ela enviar e receber apenas unicast.
gcloud compute instances create INSTANCE_NAME \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--maintenance-policy=TERMINATE \
--network-interface=nic-type=GVNIC,queue-count=32,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
--network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
--network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_2,no-address,igmp-query=IGMP_QUERY_V2
Substitua os seguintes valores:
ZONE: a zona em que a instância será criada.INSTANCE_NAME: um nome para a instânciaMACHINE_TYPE: o tipo de máquina U4P ou U4C da instânciaIMAGE_PROJECT: o projeto de imagem, comorhel-cloud. Consulte Suporte a sistemas operacionais para tipos de máquina U4.IMAGE_FAMILY: a família de imagens, comorhel-10-2-eus-oot-gve. Consulte Suporte a sistemas operacionais para tipos de máquina U4.Especificar uma família de imagens cria a instância com base na versão mais recente e não obsoleta da imagem do SO na família de imagens. Como alternativa, use a flag
--imagee especifique uma versão de imagem.GENERAL_PURPOSE_VPC_NETWORK,GENERAL_PURPOSE_SUBNET: a rede VPC e a sub-rede para anexar a interfacenic0da instânciaULL_VPC_NETWORK: a rede VPC do ULL para anexar as interfaces nãonic0ULL_SUBNET_1: a sub-rede na rede VPC do ULL para anexar a interfacenic1ULL_SUBNET_2: a sub-rede na rede VPC do ULL para anexar a interfacenic2
Configurar o roteamento para as interfaces não nic0 para tráfego unicast ULL
Por padrão, uma instância usa a rota padrão associada à interface nic0
para enviar tráfego a qualquer destino fora da sub-rede diretamente conectada. Para
mais informações, consulte a visão geral de várias interfaces de rede.
Para que as interfaces nic1 e nic2 da sua instância enviem e recebam tráfego unicast ULL, configure o roteamento de políticas com base na origem no SO convidado. Essa configuração garante que os pacotes de saída saiam pela interface correta e evita o roteamento assimétrico, em que o tráfego entra em uma interface, mas tenta sair por nic0.
Para um exemplo de como configurar o roteamento de políticas, consulte Configurar o roteamento de políticas no tutorial Configurar o roteamento para uma interface de rede adicional.
Configurar uma instância para ser um consumidor de multicast ULL
Nesta seção, descrevemos como configurar uma instância ULL para ser um consumidor de multicast.
Ativar a consulta IGMP em uma instância ULL
Se você não ativou o IGMP ao criar a instância, é possível fazer isso na instância atual, conforme descrito nesta seção.
gcloud
Para ativar a consulta IGMP em uma instância ULL, use o
comando compute instances network-interfaces update.
Repita o comando a seguir para cada interface de rede que você quer receber tráfego multicast.
gcloud compute instances network-interfaces update INSTANCE_NAME \
--zone=ZONE \
--network-interface=NETWORK_INTERFACE_NAME \
--igmp-query=IGMP_QUERY_V2
Substitua os seguintes valores:
INSTANCE_NAME: nome da instânciaZONE: zona da instânciaNETWORK_INTERFACE_NAME: o nome da interface de rede em que a consulta IGMP será ativada. Em Google Cloud, o formato énicNUMBER, comonic0,nic1ounic2.
Definir o IGMPv2 no SO convidado
Para definir o IGMPv2 no SO convidado da instância, faça o seguinte:
Conecte-se à instância usando SSH.
Execute o comando a seguir e identifique os nomes dos dispositivos das interfaces de rede que você quer receber tráfego multicast.
sudo ifconfig
Para cada interface de rede aplicável, execute o comando a seguir para forçar o IGMPv2.
sudo -i echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
Substitua
NETWORK_INTERFACE_DEVICE_NAMEpelo nome do dispositivo da interface de rede, comoeth0,eth1oueth2.
Configurar a filtragem de caminho reverso (rp_filter)
Em alguns casos, como com instâncias de várias NICs, a validação estrita de origem por
filtragem de caminho inverso (rp-filter) pode fazer com que pacotes multicast legítimos sejam
descartados. Para evitar isso, configure a filtragem de caminho inverso para reduzir ou desativar a validação de origem em interfaces de rede não nic0 que recebem tráfego multicast.
Por exemplo, os comandos a seguir configuram a filtragem de caminho reverso para desativar
a validação de origem em eth1 e eth2 definindo rp_filter como 0.
sudo sysctl -w net.ipv4.conf.all.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth1.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth2.rp_filter=0
Para mais informações sobre rp_filter, consulte
IP Sysctl na documentação do kernel
do Linux.
Aumentar o tamanho do buffer de anel do driver de rede
Esta seção descreve como aumentar o tamanho do buffer circular do driver de rede na sua instância.
Para consumidores multicast que recebem altos níveis de tráfego, aumente o tamanho do buffer de anel do driver de rede para um valor de 2048 para evitar a perda de pacotes. Faça isso para cada interface de rede que
recebe tráfego multicast.
Confira os exemplos de comandos a seguir, que configuram nic1 e nic2:
sudo ethtool -G eth1 rx 2048 tx 2048 sudo ethtool -G eth2 rx 2048 tx 2048
Exemplos de comandos para testar a conectividade multicast ULL
Nesta seção, fornecemos exemplos de comandos para testar o tráfego multicast sem
iniciar uma carga de trabalho de aplicativo usando a
ferramenta iperf. As etapas nesta seção exigem que a configuração de multicast descrita em Visão geral da configuração da solução ULL esteja concluída.
Enviar tráfego de multicast ULL de um produtor de multicast
Conecte-se à instância usando SSH.
Instale
iperfse ainda não tiver feito isso.iperf3não aceita multicast. O comando a seguir usaiperf, que instalaiperf2.sudo yum install iperf
Para enviar tráfego multicast ao endereço IP do grupo multicast, execute o seguinte comando:
iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
Substitua os seguintes valores:
MULTICAST_GROUP_ADDRESS: o endereço IP do grupo multicast.NICo nome do dispositivo de interface de rede, comoeth1oueth2NIC_IP_ADDRESSo endereço IP atribuído à NIC especificada
Entrar em um grupo e receber tráfego multicast ULL de um consumidor multicast
Conecte-se à instância usando SSH.
Instale
iperfse ainda não tiver feito isso.sudo yum install iperf
Para participar de um grupo multicast e registrar o tráfego recebido, execute o seguinte comando:
iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
Substitua os seguintes valores:
MULTICAST_GROUP_ADDRESSo endereço IP do grupo multicastNICo nome do dispositivo de interface de rede, comoeth1oueth2
Por exemplo, o comando a seguir une um grupo com o endereço IP
224.1.0.176para receber pacotes de até 512 bytes e registra o tráfego recebido:iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
Verificar o status e a velocidade do link ULL
Nas interfaces de rede ULL da sua instância, ethtool mostra o status real do link da porta física (up/down) e as velocidades do link físico.
Para verificar o status e a velocidade do link físico de uma interface de rede ULL, execute o seguinte comando:
sudo ethtool NIC
Substitua NIC pelo nome da interface de rede atribuída pelo SO convidado, como ens8f0 ou ens48f0.
A seguir
- Para informações gerais sobre como resolver problemas de desempenho da rede em instâncias bare metal, consulte Solução de problemas de desempenho da rede na documentação do Compute Engine. Por exemplo, é possível desativar os estados de suspensão da CPU para alcançar o desempenho total da largura de banda da rede.
- Para configurar o Onload ou o DPDK e otimizar o desempenho, consulte Trabalhar com o Onload e Trabalhar com o DPDK.
- Para sincronizar o relógio do sistema da instância com o relógio da NIC física do servidor host, consulte Configurar a hora exata.