Criar instâncias do Compute Engine de ULL

Nesta página, descrevemos 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 solução ULL.

Criar uma política de posicionamento

Se quiser, aplique uma política de posicionamento distribuído à sua instância do ULL para aumentar a capacidade de recuperação. Para mais informações, consulte Criar e aplicar políticas de posicionamento distribuído na documentação do Compute Engine.

Definir o 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ê 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 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 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 como consumidor de multicast ULL Conclua cada uma das etapas a seguir para receber tráfego multicast nas interfaces de rede ULL:
Para otimizar ainda mais a performance, recomendamos que você também ative a pesquisa de ocupado, conforme descrito em Trabalhar com 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 instância para usar com ULL unicast e multicast.

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.

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=IMAGE_NAME \
    --maintenance-policy=TERMINATE \
    --network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
    --network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
    --network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,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. Para testes durante o pré-lançamento, use o projeto de imagem fornecido pelo Google. Consulte Suporte a sistemas operacionais para tipos de máquina U4.
  • IMAGE_NAME: o nome da imagem. Para testar durante a prévia, use a imagem fornecida pelo Google. Consulte Suporte a sistemas operacionais para tipos de máquina U4.

  • NIC_TYPE: o tipo de interface de rede a ser usado. Use o tipo de interface de rede compatível com a zona específica em que você está criando a instância:

    • Para us-south1-d, especifique IDPF.
    • Para us-south1-e, especifique GVNIC.
  • QUEUES: o número de filas de recebimento e transmissão para processar pacotes da rede:

    • Para GVNIC, inclua o campo queue-count e especifique um valor de 32 para compatibilidade com XDP.
    • Para IDPF, omita queue-count=QUEUES do comando.
  • GENERAL_PURPOSE_VPC_NETWORK, GENERAL_PURPOSE_SUBNET: a rede VPC e a sub-rede a que a interface nic0 da instância será anexada

  • ULL_VPC_NETWORK: a rede VPC da ULL a que as interfaces não nic0 serão anexadas

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

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

Configurar o roteamento para as interfaces não nic0 do 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 como 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 atual

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 atual, 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ância
  • ZONE: zona da instância
  • NETWORK_INTERFACE_NAME: o nome da interface de rede em que ativar a consulta IGMP. 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. Conecte-se à instância usando SSH.

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

    sudo ifconfig
    
  3. Para cada interface de rede aplicável, execute o seguinte comando 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 com instâncias de várias NICs, a validação estrita da origem por filtragem de caminho inverso (rp-filter) pode fazer com que pacotes multicast legítimos sejam descartados. Para evitar que isso aconteça, 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

Nesta seção, descrevemos como aumentar o tamanho do buffer circular do driver de rede na sua instância.

Para consumidores de 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

Esta seção fornece 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

  1. Conecte-se à instância usando SSH.

  2. Instale iperf caso ainda não tenha feito isso. iperf3 não aceita multicast. O comando a seguir usa iperf, que instala iperf2.

    sudo yum install iperf
    
  3. 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.
    • NIC o nome do dispositivo de interface de rede, como eth1 ou eth2
    • NIC_IP_ADDRESS o endereço IP atribuído à NIC especificada

Entrar em um grupo e receber tráfego multicast ULL de um consumidor multicast

  1. Conecte-se à instância usando SSH.

  2. Instale iperf caso ainda não tenha 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 de interface de rede, como eth1 ou eth2

    Por exemplo, o comando a seguir une 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
    

A seguir

  • Para ativar a pesquisa de ocupado e testar recursos do Onload em instâncias de computação 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 servidor host, consulte Configurar a hora exata.