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 le reti VPC
Se non l'hai già fatto, crea le 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) sul 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, procedi nel seguente modo:
| 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 uso generico 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:
|
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 le opzioni di configurazione aggiuntive, consulta Creare e avviare un'istanza di Compute Engine.
gcloud
Per creare un'istanza ULL, utilizza il
compute instances create comando.
Il tipo di interfaccia di rete supportato per le istanze ULL è GVNIC.
Devi includere il campo queue-count e specificare un valore di 32 per il supporto XDP.
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-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
Sostituisci i seguenti valori:
ZONE: la zona in cui creare l'istanzaINSTANCE_NAME: un nome per l'istanzaMACHINE_TYPE: il tipo di macchina U4P o U4C dell'istanzaIMAGE_PROJECT: il progetto dell'immagine, ad esempiorhel-cloud. Consulta Supporto del sistema operativo per i tipi di macchine U4.IMAGE_FAMILY: la famiglia di immagini, ad esempiorhel-10-2-eus-gvnic-baremetal. Consulta Supporto del sistema operativo per i tipi di macchine U4.Se specifichi una famiglia di immagini, l'istanza viene creata dalla versione più recente, non deprecata dell'immagine del sistema operativo nella famiglia di immagini. In alternativa, puoi utilizzare il flag
--imagee specificare una versione immagine.GENERAL_PURPOSE_VPC_NETWORK,GENERAL_PURPOSE_SUBNET: la rete VPC e la subnet a cui collegare l'interfaccianic0dell'istanzaULL_VPC_NETWORK: la rete VPC ULL a cui collegare le interfacce nonnic0ULL_SUBNET_1: la subnet nella rete VPC ULL a cui collegare l'interfaccianic1ULL_SUBNET_2: la subnet nella rete VPC ULL a cui collegare l'interfaccianic2
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 di più interfacce di rete.
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.
Abilita la query IGMP su un'istanza ULL esistente
Se non hai abilitato IGMP durante la creazione dell'istanza, puoi abilitarlo sull'istanza esistente come descritto in questa sezione.
gcloud
Per abilitare 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 che 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'istanzaZONE: la zona dell'istanzaNETWORK_INTERFACE_NAME: il nome dell'interfaccia di rete su cui abilitare la query IGMP. In Google Cloud, il formato ènicNUMBER, ad esempionic0,nic1, onic2.
Imposta IGMPv2 nel sistema operativo guest
Per impostare IGMPv2 nel sistema operativo guest dell'istanza:
Connettiti all'istanza utilizzando SSH.
Esegui il comando seguente e identifica i nomi dei dispositivi delle interfacce di rete che vuoi ricevere il traffico multicast.
sudo ifconfig
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_NAMEcon il nome del dispositivo dell'interfaccia di rete, ad esempioeth0,eth1oeth2.
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 per allentare o disabilitare 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 disabilitare 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
Connettiti all'istanza utilizzando SSH.
Installa
iperf, se non l'hai già fatto.iperf3non supporta il multicast. Il seguente comando utilizzaiperf, che installaiperf2.sudo yum install iperf
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 multicastNICil nome del dispositivo dell'interfaccia di rete, ad esempioeth1oeth2NIC_IP_ADDRESSl'indirizzo IP assegnato alla NIC specificata
Unisciti a un gruppo e ricevi traffico multicast ULL da un consumer multicast
Connettiti all'istanza utilizzando SSH.
Installa
iperf, se non l'hai già fatto.sudo yum install iperf
Per unirti 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_ADDRESSl'indirizzo IP del gruppo multicastNICil nome del dispositivo dell'interfaccia di rete, ad esempioeth1oeth2
Ad esempio, il seguente comando si unisce a un gruppo con l'indirizzo IP
224.1.0.176per 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
Verifica lo stato e la velocità del link ULL
Sulle interfacce di rete ULL dell'istanza, ethtool mostra lo stato del link della porta fisica effettiva (up/down) e le velocità del link fisico.
Per controllare lo stato e la velocità del link fisico di un'interfaccia di rete ULL, esegui il comando seguente:
sudo ethtool NIC
Sostituisci NIC con il nome dell'interfaccia di rete assegnato dal sistema operativo guest, ad esempio ens8f0 o ens48f0.
Passaggi successivi
- Per informazioni generali sulla risoluzione dei problemi relativi al rendimento della rete per le istanze bare metal, consulta Risoluzione dei problemi relativi al rendimento della rete nella documentazione di Compute Engine. Ad esempio, puoi disattivare gli stati di sospensione della CPU per ottenere il rendimento della larghezza di banda di rete completa.
- Per abilitare il busy polling 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.