Criar instâncias do ULL Compute Engine

Nesta página, descrevemos como criar instâncias do Ultra Low Latency (ULL) Compute Engine usando 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 de ULL, consulte Visão geral da configuração da solução de ULL.

Antes de começar

Antes de criar instâncias de computação de 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

Opcionalmente, aplique uma política de posicionamento distribuído à 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 seu projeto

Defina 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.

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ê as seguintes funções 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 com papéis personalizados ou outros papéis predefinidos.

Visão geral da configuração da instância de ULL

Para criar uma instância de computação de ULL e configurá-la para enviar ou receber tráfego de transmissão única e multicast de 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 multicast, defina a flag igmp-query como IGMP_QUERY_V2.
Configurar o roteamento para as interfaces não nic0 para tráfego de transmissão única de ULL Configure o roteamento de políticas baseado 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 multicast de ULL Conclua cada uma das etapas a seguir para receber tráfego multicast em interfaces de rede de ULL:
Para otimizar ainda mais a performance, recomendamos que você também ative a pesquisa ocupada, conforme descrito em Trabalhar com o Onload.

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 nova instância para uso em transmissão única e multicast de ULL.

Para informações gerais sobre a criação de 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 compute instances create comando.

O tipo de interface de rede compatível com instâncias de ULL é GVNIC. Você precisa incluir o campo queue-count e especificar um valor de 32 para suporte a XDP.

Para as interfaces de rede anexadas a uma rede VPC de 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 multicast. Essa flag não é necessária se a instância for apenas um produtor multicast ou se ela enviar e receber apenas transmissão única.

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ância
  • MACHINE_TYPE: o tipo de máquina U4P ou U4C da instância
  • IMAGE_PROJECT: o projeto de imagem, como rhel-cloud. Consulte Suporte ao sistema operacional para tipos de máquina U4.
  • IMAGE_FAMILY: a família de imagens, como rhel-10-2-eus-gvnic-baremetal. Consulte Suporte ao sistema operacional para tipos de máquina U4.

    A especificação de uma família de imagens cria a instância na versão mais recente, não obsoleta da imagem do SO na família de imagens. Como alternativa, você pode usar a flag --image e especificar uma versão de imagem.

  • GENERAL_PURPOSE_VPC_NETWORK, GENERAL_PURPOSE_SUBNET: a rede VPC e a sub-rede para anexar a interface nic0 da instância

  • ULL_VPC_NETWORK: a rede VPC de ULL para anexar as interfaces não nic0

    • ULL_SUBNET_1: a sub-rede na rede VPC de ULL para anexar a interface nic1

    • ULL_SUBNET_2: a sub-rede na rede VPC de ULL para anexar a interface nic2

Configurar o roteamento para as interfaces não nic0 para tráfego de transmissão única de 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 sobre várias interfaces de rede.

Para que as interfaces nic1 e nic2 da instância enviem e recebam tráfego de transmissão única de ULL, é necessário configurar o roteamento de políticas baseado 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 multicast de ULL

Esta seção descreve como configurar uma instância de ULL atual para ser um consumidor multicast.

Ativar a consulta IGMP em uma instância de ULL atual

Se você não ativou o IGMP ao criar a instância, é possível ativá-lo na instância atual, conforme descrito nesta seção.

gcloud

Para ativar a consulta IGMP em uma instância de ULL atual, use o compute instances network-interfaces update comando.

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: o nome da instância
  • ZONE: a zona da instância
  • NETWORK_INTERFACE_NAME: o nome da interface de rede em que a consulta IGMP será ativada. Em Google Cloud, o formato é nicNUMBER, como nic0, nic1, ou nic2.

Definir o IGMPv2 no SO convidado

Para definir o IGMPv2 no SO convidado da instância, faça o seguinte:

  1. Conectar à instância usando SSH.

  2. Execute o comando a seguir e identifique os nomes de dispositivos das interfaces de rede que você quer receber tráfego multicast.

    sudo ifconfig
    
  3. 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_NAME pelo nome do dispositivo da interface de rede, como eth0, eth1 ou eth2.

Configurar a filtragem de caminho reverso (rp_filter)

Em alguns casos, como instâncias de várias NICs, a validação de origem estrita pela filtragem de caminho reverso (rp-filter) pode fazer com que pacotes multicast legítimos sejam descartados. Para evitar que isso aconteça, configure a filtragem de caminho reverso para afrouxar 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 de anel do driver de rede na 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.

Consulte os comandos de exemplo a seguir, que configuram nic1 e nic2:

sudo ethtool -G eth1 rx 2048 tx 2048
sudo ethtool -G eth2 rx 2048 tx 2048

Comandos de exemplo para testar a conectividade multicast de ULL

Esta seção fornece comandos de exemplo para testar o tráfego multicast sem iniciar uma carga de trabalho de aplicativo usando a iperf ferramenta. As etapas nesta seção exigem que a configuração multicast descrita em Visão geral da configuração da ULL Solution seja concluída.

Enviar tráfego multicast de ULL de um produtor multicast

  1. Conectar à instância usando SSH.

  2. Instale iperf se ainda não tiver feito isso. iperf3 não oferece suporte a multicast. O comando a seguir usa iperf, que instala iperf2.

    sudo yum install iperf
    
  3. Para enviar tráfego multicast para o endereço IP do grupo multicast, execute o comando a seguir:

    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
    • NIC : o nome do dispositivo da interface de rede, como eth1 ou eth2
    • NIC_IP_ADDRESS : o endereço IP atribuído à NIC especificada

Participar de um grupo e receber tráfego multicast de ULL de um consumidor multicast

  1. Conectar à instância usando SSH.

  2. Instale iperf se ainda não tiver feito isso.

    sudo yum install iperf
    
  3. Para participar de um grupo multicast e registrar o tráfego recebido, execute o comando a seguir:

    iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
    

    Substitua os seguintes valores:

    • MULTICAST_GROUP_ADDRESS : o endereço IP do grupo multicast
    • NIC : o nome do dispositivo da interface de rede, como eth1 ou eth2

    Por exemplo, o comando a seguir participa de um grupo com o endereço IP 224.1.0.176 para 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
    

Nas interfaces de rede de ULL da 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 de ULL, execute o comando a seguir:

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 solucionar problemas de performance de rede para instâncias bare metal, consulte Solução de problemas de performance de rede na documentação do Compute Engine. Por exemplo, é possível desativar os estados de suspensão da CPU para alcançar a performance total da largura de banda da rede.
  • Para ativar a pesquisa ocupada e testar os recursos do Onload para instâncias de computação de ULL, consulte Trabalhar com o Onload.
  • Para sincronizar o relógio do sistema da instância com o relógio da NIC física do seu servidor host, consulte Configurar a hora exata.