Crea istanze di Compute Engine ULL
Questa pagina descrive come creare istanze Compute Engine a latenza ultra bassa (ULL) utilizzando i tipi di macchina U4P o U4C della famiglia di macchine U4.
Per una panoramica della procedura di configurazione dell'infrastruttura ULL, consulta Panoramica della configurazione per la soluzione ULL.
Prima di iniziare
Prima di creare istanze di computing ULL, consulta le sezioni seguenti.
Crea reti VPC
Se non l'hai ancora fatto, crea reti VPC per ciascuna delle interfacce di rete della tua istanza, come descritto in Panoramica della configurazione per la soluzione ULL.
Crea una policy di posizionamento
Se vuoi, puoi applicare una policy di posizionamento distribuito alla tua istanza ULL per una maggiore resilienza. Per saperne di più, consulta Crea e applica policy di posizionamento distribuito nella documentazione di Compute Engine.
Configurare 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.
Abilita API
Se non l'hai ancora fatto, abilita le seguenti API.
Console
Abilita l'API Compute Engine, se non è già abilitata.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.
gcloud
Abilita l'API Compute Engine, se non è già abilitata:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.
gcloud services enable compute.googleapis.com
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare istanze Compute Engine, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Per creare e gestire le istanze di Compute:
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, segui questi passaggi:
| Passaggio | Descrizione |
|---|---|
| Crea un'istanza ULL | Crea un'istanza utilizzando un tipo di macchina U4P o U4C e connetti 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 e impedire il routing asimmetrico. |
| Configura un'istanza in modo che sia un consumer multicast ULL |
Completa ognuno dei seguenti passaggi per ricevere 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 ULL unicast e multicast.
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
comando compute instances create.
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, deve essere specificato 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 produttore di 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 di immagini, 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-oot-gve. Consulta Supporto del sistema operativo per i tipi di macchine U4.Se specifichi una famiglia di immagini, l'istanza viene creata dall'ultima versione non deprecata dell'immagine sistema operativo nella famiglia di immagini. In alternativa, puoi utilizzare il flag
--imagee specificare una versione dell'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
maggiori informazioni, consulta la panoramica di più interfacce di rete.
Affinché le interfacce nic1 e nic2 della tua 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 e impedisce 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 Configura il routing basato su policy nell'esercitazione Configura il routing per un'interfaccia di rete aggiuntiva.
Configura un'istanza in modo che sia un consumer multicast ULL
Questa sezione descrive come configurare un'istanza ULL esistente in modo che sia un consumer multicast.
Abilita 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
comando compute instances network-interfaces update.
Ripeti il comando seguente per ogni interfaccia di rete che vuoi ricevere 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,nic1onic2.
Imposta IGMPv2 nel sistema operativo guest
Per impostare IGMPv2 nel sistema operativo guest dell'istanza, procedi nel seguente modo:
Connettiti all'istanza tramite SSH.
Esegui questo comando e identifica i nomi dei dispositivi delle interfacce di rete che vuoi ricevere traffico multicast.
sudo ifconfig
Per ogni interfaccia di rete applicabile, esegui il seguente comando 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 multi-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 disattivare la convalida dell'origine
sulle interfacce di rete non nic0 che ricevono 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.
Aumentare 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 traffico multicast.
Vedi 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 carico di lavoro 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 soluzione ULL.
Invia traffico multicast ULL da un producer multicast
Connettiti all'istanza tramite SSH.
Se non l'hai ancora fatto, installa
iperf.iperf3non supporta il multicast. Il seguente comando utilizzaiperf, che installaiperf2.sudo yum install iperf
Per inviare traffico multicast all'indirizzo IP del gruppo multicast, esegui questo comando:
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 di interfaccia di rete, ad esempioeth1oeth2NIC_IP_ADDRESSl'indirizzo IP assegnato alla NIC specificata
Unisciti a un gruppo e ricevi il traffico multicast ULL da un consumer multicast
Connettiti all'istanza tramite SSH.
Se non l'hai ancora fatto, installa
iperf.sudo yum install iperf
Per partecipare a un gruppo multicast e registrare il traffico che ricevi, esegui questo comando:
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 di interfaccia di rete, ad esempioeth1oeth2
Ad esempio, il seguente comando unisce 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
Verificare lo stato e la velocità del collegamento ULL
Nelle interfacce di rete ULL della tua istanza, ethtool mostra lo stato effettivo
del collegamento della porta fisica (up/down) e le velocità di collegamento fisico.
Per controllare lo stato e la velocità del collegamento fisico di un'interfaccia di rete ULL, esegui questo comando:
sudo ethtool NIC
Sostituisci NIC con il nome dell'interfaccia di rete assegnata dal sistema operativo guest, ad esempio ens8f0 o ens48f0.
Passaggi successivi
- Per informazioni generali sulla risoluzione dei problemi relativi alle prestazioni di rete per le istanze bare metal, consulta Risoluzione dei problemi relativi alle prestazioni di rete nella documentazione di Compute Engine. Ad esempio, puoi disattivare gli stati di sospensione della CPU per ottenere prestazioni di larghezza di banda di rete complete.
- Per configurare Onload o DPDK per ottimizzare le prestazioni, consulta Utilizzare Onload e Utilizzare DPDK.
- Per sincronizzare l'orologio di sistema dell'istanza con l'orologio della NIC fisica del server host, consulta Configurare l'ora esatta.