Crea istanze di Compute Engine ULL

Questa pagina descrive come creare istanze di Compute Engine a latenza ultra bassa (ULL) utilizzando i tipi di macchine U4P o U4C della famiglia di macchine U4.

Per una panoramica del processo di configurazione dell'infrastruttura ULL, consulta Panoramica della configurazione per la soluzione ULL.

Prima di iniziare

Prima di creare istanze di calcolo ULL, consulta le sezioni seguenti.

Crea reti VPC

Se non l'hai già fatto, crea reti VPC per ciascuna delle interfacce di rete dell'istanza come descritto in Panoramica della configurazione per la soluzione ULL.

Crea una policy di posizionamento

Facoltativamente, puoi applicare una policy di posizionamento distribuito all'istanza ULL per una maggiore resilienza. Per ulteriori informazioni, consulta Creare e applicare policy di posizionamento distribuito nella documentazione di Compute Engine.

Imposta il progetto

Imposta gcloud CLI in modo che utilizzi il tuo progetto. In alternativa, puoi includere il flag --project=PROJECT_ID per ogni comando nelle procedure seguenti.

gcloud config set project PROJECT_ID

Sostituisci PROJECT_ID con l'ID del tuo progetto.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per creare istanze di Compute Engine, chiedi all'amministratore di concederti i seguenti ruoli IAM:

  • Per creare e gestire le istanze di calcolo: Amministratore istanze Compute (compute.instanceAdmin) nel tuo progetto

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Panoramica della configurazione dell'istanza ULL

Per creare un'istanza di computing ULL e configurarla per inviare o ricevere traffico unicast e multicast ULL:

Passaggio Descrizione
Crea un'istanza ULL Crea un'istanza utilizzando un tipo di macchina U4P o U4C e collega le relative interfacce di rete a una rete VPC per scopi generici e a una rete VPC ULL. Se prevedi di utilizzare l'istanza come consumer multicast, imposta il flag igmp-query su IGMP_QUERY_V2.
Configura il routing per le interfacce non nic0 per il traffico unicast ULL Configura il routing basato sull'origine nel sistema operativo guest per assicurarti che i pacchetti in uscita lascino l'interfaccia corretta ed evitare il routing asimmetrico.
Configura un'istanza come consumer multicast ULL Completa ognuna delle seguenti operazioni per ricevere il traffico multicast sulle interfacce di rete ULL:
Per ottimizzare ulteriormente il rendimento, ti consigliamo di attivare anche il polling occupato come descritto in Utilizzare Onload.

Inoltre, puoi utilizzare i comandi di esempio in questa pagina per testare la connettività multicast.

Crea un'istanza ULL

Questa sezione descrive come creare una nuova istanza da utilizzare per unicast e multicast ULL.

Per informazioni generali sulla creazione di istanze di calcolo, incluse opzioni di configurazione aggiuntive, consulta Crea e avvia un'istanza Compute Engine.

gcloud

Per creare un'istanza ULL, utilizza il compute instances create comando.

Per le interfacce di rete che si collegano a una rete VPC ULL, è necessario specificare no-address.

Inoltre, il seguente comando include il flag igmp-query per consentire all'istanza di essere un consumer multicast. Questo flag non è obbligatorio se l'istanza è solo un producer multicast o se l'istanza invia e riceve solo 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

Sostituisci i seguenti valori:

  • ZONE: la zona in cui creare l'istanza
  • INSTANCE_NAME: un nome per l'istanza
  • MACHINE_TYPE: il tipo di macchina U4P o U4C dell'istanza
  • IMAGE_PROJECT: il progetto immagine. Per i test durante l'anteprima, utilizza il progetto immagine fornito da Google. Consulta Supporto del sistema operativo per i tipi di macchine U4.
  • IMAGE_NAME: il nome dell'immagine. Per i test durante l'anteprima, utilizza l' immagine fornita da Google. Consulta Supporto del sistema operativo per i tipi di macchine U4.

  • NIC_TYPE: il tipo di interfaccia di rete da utilizzare. Utilizza il tipo di interfaccia di rete supportato per la zona specifica in cui stai creando l'istanza:

    • Per us-south1-d, specifica IDPF.
    • Per us-south1-e, specifica GVNIC.
  • QUEUES: il numero di code di ricezione e trasmissione per l'elaborazione dei pacchetti dalla rete:

    • Per GVNIC, devi includere il campo queue-count e specificare un valore di 32 per il supporto XDP.
    • Per IDPF, ometti queue-count=QUEUES dal comando.
  • GENERAL_PURPOSE_VPC_NETWORK, GENERAL_PURPOSE_SUBNET: la rete VPC e la subnet a cui collegare l'interfaccia nic0 dell'istanza

  • ULL_VPC_NETWORK: la rete VPC ULL a cui collegare le interfacce non nic0

    • ULL_SUBNET_1: la subnet nella rete VPC ULL a cui collegare l'interfaccia nic1

    • ULL_SUBNET_2: la subnet nella rete VPC ULL a cui collegare l'interfaccia nic2

Configura il routing per le interfacce non nic0 per il traffico unicast ULL

Per impostazione predefinita, un'istanza utilizza la route predefinita associata alla sua interfaccia nic0 per inviare il traffico a qualsiasi destinazione al di fuori della subnet con collegamento diretto. Per ulteriori informazioni, consulta la panoramica sulle interfacce di rete multiple.

Affinché le interfacce nic1 e nic2 dell'istanza inviino e ricevano correttamente il traffico unicast ULL, devi configurare il routing basato sull'origine nel sistema operativo guest. Questa configurazione garantisce che i pacchetti in uscita lascino l'interfaccia corretta ed evita il routing asimmetrico, in cui il traffico entra in un'interfaccia ma tenta di uscire tramite nic0.

Per un esempio di come configurare il routing basato su policy, consulta Configurare il routing basato su policy nel tutorial Configurare il routing per un'interfaccia di rete aggiuntiva.

Configura un'istanza come consumer multicast ULL

Questa sezione descrive come configurare un'istanza ULL esistente come consumer multicast.

Attiva la query IGMP su un'istanza ULL esistente

Se non hai attivato IGMP durante la creazione dell'istanza, puoi attivarlo sull'istanza esistente come descritto in questa sezione.

gcloud

Per attivare la query IGMP su un'istanza ULL esistente, utilizza il compute instances network-interfaces update comando.

Ripeti il comando seguente per ogni interfaccia di rete su cui vuoi ricevere il traffico multicast.

gcloud compute instances network-interfaces update INSTANCE_NAME \
    --zone=ZONE \
    --network-interface=NETWORK_INTERFACE_NAME \
    --igmp-query=IGMP_QUERY_V2

Sostituisci i seguenti valori:

  • INSTANCE_NAME: il nome dell'istanza
  • ZONE: la zona dell'istanza
  • NETWORK_INTERFACE_NAME: il nome dell'interfaccia di rete su cui attivare la query IGMP. In Google Cloud, il formato è nicNUMBER, ad esempio nic0, nic1, o nic2.

Imposta IGMPv2 nel sistema operativo guest

Per impostare IGMPv2 nel sistema operativo guest dell'istanza:

  1. Connettiti all'istanza utilizzando SSH.

  2. Esegui il comando seguente e identifica i nomi dei dispositivi delle interfacce di rete su cui vuoi ricevere il traffico multicast.

    sudo ifconfig
    
  3. Per ogni interfaccia di rete applicabile, esegui il comando seguente per forzare IGMPv2.

    sudo -i
    echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
    

    Sostituisci NETWORK_INTERFACE_DEVICE_NAME con il nome del dispositivo dell'interfaccia di rete, ad esempio eth0, eth1 o eth2.

Configura il filtro del percorso inverso (rp_filter)

In alcuni casi, ad esempio con le istanze con più NIC, la convalida rigorosa dell'origine tramite il filtro del percorso inverso (rp-filter) può causare l'eliminazione di pacchetti multicast legittimi. Per evitare che ciò accada, puoi configurare il filtro del percorso inverso in modo da allentare o disattivare la convalida dell'origine sulle interfacce di rete non nic0 che ricevono il traffico multicast. Ad esempio, i seguenti comandi configurano il filtro del percorso inverso per disattivare la convalida dell'origine su eth1 e eth2 impostando rp_filter su 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

Per ulteriori informazioni su rp_filter, consulta IP Sysctl nella documentazione del kernel Linux.

Aumenta le dimensioni del buffer circolare del driver di rete

Questa sezione descrive come aumentare le dimensioni del buffer circolare del driver di rete sull'istanza.

Per i consumer multicast che ricevono livelli elevati di traffico, aumenta le dimensioni del buffer circolare del driver di rete a un valore di 2048 per evitare la perdita di pacchetti. Esegui questa operazione per ogni interfaccia di rete che riceve il traffico multicast.

Consulta i seguenti comandi di esempio, che configurano nic1 e nic2:

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

Comandi di esempio per testare la connettività multicast ULL

Questa sezione fornisce comandi di esempio per testare il traffico multicast senza avviare un workload dell'applicazione utilizzando lo strumento iperf. I passaggi descritti in questa sezione richiedono il completamento della configurazione multicast descritta in Panoramica della configurazione per la ULL Solution è completa.

Invia traffico multicast ULL da un producer multicast

  1. Connettiti all'istanza utilizzando SSH.

  2. Installa iperf, se non l'hai già fatto. iperf3 non supporta il multicast. Il seguente comando utilizza iperf, che installa iperf2.

    sudo yum install iperf
    
  3. Per inviare il traffico multicast all'indirizzo IP del gruppo multicast, esegui il comando seguente:

    iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
    

    Sostituisci i seguenti valori:

    • MULTICAST_GROUP_ADDRESS: l'indirizzo IP del gruppo multicast
    • NIC il nome del dispositivo dell'interfaccia di rete, ad esempio eth1 o eth2
    • NIC_IP_ADDRESS l'indirizzo IP assegnato alla NIC specificata

Partecipa a un gruppo e ricevi traffico multicast ULL da un consumer multicast

  1. Connettiti all'istanza utilizzando SSH.

  2. Installa iperf, se non l'hai già fatto.

    sudo yum install iperf
    
  3. Per partecipare a un gruppo multicast e registrare il traffico ricevuto, esegui il comando seguente:

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

    Sostituisci i seguenti valori:

    • MULTICAST_GROUP_ADDRESS l'indirizzo IP del gruppo multicast
    • NIC il nome del dispositivo dell'interfaccia di rete, ad esempio eth1 o eth2

    Ad esempio, il seguente comando partecipa a un gruppo con l'indirizzo IP 224.1.0.176 per ricevere pacchetti fino a 512 byte e registra il traffico ricevuto:

    iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
    

Passaggi successivi

  • Per attivare il polling occupato e testare le funzionalità di Onload per le istanze di calcolo ULL, consulta Utilizzare Onload.
  • Per sincronizzare il clock di sistema dell'istanza con il clock della NIC fisica del suo server host, consulta Configurare l'ora esatta.