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:
|
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'istanzaINSTANCE_NAME: un nome per l'istanzaMACHINE_TYPE: il tipo di macchina U4P o U4C dell'istanzaIMAGE_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, specificaIDPF. - Per
us-south1-e, specificaGVNIC.
- Per
QUEUES: il numero di code di ricezione e trasmissione per l'elaborazione dei pacchetti dalla rete:- Per
GVNIC, devi includere il campoqueue-counte specificare un valore di32per il supporto XDP. - Per
IDPF, omettiqueue-count=QUEUESdal comando.
- Per
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 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'istanzaZONE: la zona dell'istanzaNETWORK_INTERFACE_NAME: il nome dell'interfaccia di rete su cui attivare 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 su cui 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 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
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
Partecipa 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 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_ADDRESSl'indirizzo IP del gruppo multicastNICil nome del dispositivo dell'interfaccia di rete, ad esempioeth1oeth2
Ad esempio, il seguente comando partecipa 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
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.