Crea instancias de Compute Engine de ULL
En esta página, se describe cómo crear instancias de Compute Engine de latencia ultrabaja (ULL) con los tipos de máquinas U4P o U4C de la familia de máquinas U4.
Para obtener una descripción general del proceso de configuración de la infraestructura de ULL, consulta Descripción general de la configuración de la solución de ULL.
Antes de comenzar
Antes de crear instancias de procesamiento de ULL, consulta las siguientes secciones.
Crea redes de VPC
Si aún no lo hiciste, crea redes de VPC para cada una de las interfaces de red de tu instancia como se describe en Descripción general de la configuración de la solución de ULL.
Crear una política de posición
De manera opcional, puedes aplicar una política de posición dispersa a tu instancia de ULL para aumentar la resiliencia. Para obtener más información, consulta Crea y aplica políticas de posición dispersas en la documentación de Compute Engine.
Configura tu proyecto
Configura gcloud CLI para usar tu proyecto. Como alternativa, puedes incluir
la marca --project=PROJECT_ID para cada comando
en los siguientes procedimientos.
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID por el ID de tu proyecto.
Roles obligatorios
Para obtener los permisos que necesitas para crear instancias de Compute Engine, pídele a tu administrador que te otorgue los siguientes roles de IAM:
-
Para crear y administrar instancias de procesamiento:
Administrador de instancias de Compute (
compute.instanceAdmin) en tu proyecto
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Descripción general de la configuración de instancias de ULL
Para crear una instancia de procesamiento de ULL y configurarla para enviar o recibir tráfico de unidifusión y multidifusión de ULL, haz lo siguiente:
| Paso | Descripción |
|---|---|
| Crea una instancia de ULL | Crea una instancia con un tipo de máquina U4P o U4C y conecta sus interfaces de red a una red de VPC de uso general y a una red de VPC de ULL. Si planeas usar la instancia como consumidor de multidifusión, establece la marca igmp-query en IGMP_QUERY_V2. |
Configura el enrutamiento para las interfaces que no son nic0 para el tráfico de unidifusión de ULL |
Configura el enrutamiento de políticas basado en la fuente en el SO invitado para garantizar que los paquetes de salida salgan por la interfaz correcta y evitar el enrutamiento asimétrico. |
| Configura una instancia para que sea un consumidor de multidifusión de ULL |
Completa cada uno de los siguientes pasos para recibir tráfico de multidifusión
en las interfaces de red de ULL:
|
Además, puedes usar los comandos de ejemplo de esta página para probar la conectividad de multidifusión.
Crea una instancia de ULL
En esta sección, se describe cómo crear una instancia nueva para usarla para la unidifusión y la multidifusión de ULL.
Para obtener información general sobre la creación de instancias de procesamiento, incluidas las opciones de configuración adicionales , consulta Crea y, luego, inicia una instancia de Compute Engine.
gcloud
Para crear una instancia de ULL, usa el
compute instances create comando.
El tipo de interfaz de red compatible para las instancias de ULL es GVNIC.
Debes incluir el campo queue-count y especificar un valor de 32 para la compatibilidad con XDP.
Para las interfaces de red que se adjuntan a una red de VPC de ULL, se debe especificar no-address.
Además, el siguiente comando incluye la marca igmp-query para habilitar la instancia como consumidor de multidifusión. Esta marca no es obligatoria si la instancia es solo un productor de multidifusión o si la instancia envía y recibe solo unidifusión.
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=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
Reemplaza los siguientes valores:
ZONE: Es la zona en la que se creará la instancia.INSTANCE_NAME: Es un nombre para la instancia.MACHINE_TYPE: Es el tipo de máquina U4P o U4C de la instancia.IMAGE_PROJECT: el proyecto de imagen. Para realizar pruebas durante la versión preliminar, usa el proyecto de imagen que proporciona Google. Consulta Compatibilidad con sistemas operativos para tipos de máquinas U4.IMAGE_NAME: el nombre de la imagen. Para realizar pruebas durante la versión preliminar, usa la imagen que proporciona Google. Consulta Compatibilidad con sistemas operativos para tipos de máquinas U4.GENERAL_PURPOSE_VPC_NETWORK,GENERAL_PURPOSE_SUBNET: Es la red de VPC y la subred a las que se adjuntará la interfaznic0de la instancia.ULL_VPC_NETWORK: Es la red de VPC de ULL a la que se adjuntarán las interfaces que no sonnic0.ULL_SUBNET_1: Es la subred de la red de VPC de ULL a la que se adjuntará la interfaznic1.ULL_SUBNET_2: Es la subred de la red de VPC de ULL a la que se adjuntará la interfaznic2.
Configura el enrutamiento para las interfaces que no son nic0 para el tráfico de unidifusión de ULL
De forma predeterminada, una instancia usa la ruta predeterminada asociada con su interfaz nic0 para enviar tráfico a cualquier destino fuera de su subred conectada directamente. Para
obtener más información, consulta la descripción general de las interfaces de red múltiples.
Para que las interfaces nic1 y nic2 de tu instancia envíen y reciban correctamente el tráfico de unidifusión de ULL, debes configurar el enrutamiento de políticas basado en la fuente en el SO invitado. Esta configuración garantiza que los paquetes de salida salgan por la interfaz correcta y evita el enrutamiento asimétrico, en el que el tráfico ingresa a una interfaz, pero intenta salir por nic0.
Para ver un ejemplo de cómo configurar el enrutamiento de políticas, consulta Configura el enrutamiento de políticas en el instructivo Configura el enrutamiento para una interfaz de red adicional.
Configura una instancia para que sea un consumidor de multidifusión de ULL
En esta sección, se describe cómo configurar una instancia de ULL existente para que sea un consumidor de multidifusión.
Habilita la consulta de IGMP en una instancia de ULL existente
Si no habilitaste IGMP cuando creaste la instancia, puedes habilitarlo en la instancia existente como se describe en esta sección.
gcloud
Para habilitar la consulta de IGMP en una instancia de ULL existente, usa el
compute instances network-interfaces update comando.
Repite el siguiente comando para cada interfaz de red que quieras recibir tráfico de multidifusión.
gcloud compute instances network-interfaces update INSTANCE_NAME \
--zone=ZONE \
--network-interface=NETWORK_INTERFACE_NAME \
--igmp-query=IGMP_QUERY_V2
Reemplaza los siguientes valores:
INSTANCE_NAME: Es el nombre de la instancia.ZONE: Es la zona de la instancia.NETWORK_INTERFACE_NAME: Es el nombre de la interfaz de red en la que se habilitará la consulta de IGMP. En Google Cloud, el formato esnicNUMBER, comonic0,nic1, onic2.
Establece IGMPv2 en el SO invitado
Para establecer IGMPv2 en el SO invitado de tu instancia, haz lo siguiente:
Conectarse a la instancia a través de SSH.
Ejecuta el siguiente comando y, luego, identifica los nombres de los dispositivos de las interfaces de red que deseas recibir tráfico de multidifusión.
sudo ifconfig
Para cada interfaz de red aplicable, ejecuta el siguiente comando para forzar IGMPv2.
sudo -i echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
Reemplaza
NETWORK_INTERFACE_DEVICE_NAMEpor el nombre del dispositivo de la interfaz de red, comoeth0,eth1oeth2.
Configura el filtrado de ruta inversa (rp_filter)
En algunos casos, como con las instancias de varias NIC, la validación estricta de la fuente mediante el filtrado de ruta inversa (rp-filter) puede provocar que se descarten paquetes de multidifusión legítimos. Para evitar que esto suceda, puedes configurar el filtrado de ruta inversa para aflojar o inhabilitar la validación de la fuente en las interfaces de red que no son nic0 que reciben tráfico de multidifusión.
Por ejemplo, los siguientes comandos configuran el filtrado de ruta inversa para inhabilitar la validación de la fuente en eth1 y eth2 estableciendo rp_filter en 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 obtener más información sobre rp_filter, consulta
IP Sysctl en la documentación del kernel de Linux.
Aumenta el tamaño del búfer de anillo del controlador de red
En esta sección, se describe cómo aumentar el tamaño del búfer de anillo del controlador de red en tu instancia.
Para los consumidores de multidifusión que reciben altos niveles de tráfico, aumenta el tamaño del búfer de anillo del controlador de red a un valor de 2048 para evitar la pérdida de paquetes. Haz esto para cada interfaz de red que reciba tráfico de multidifusión.
Consulta los siguientes comandos de ejemplo, que configuran nic1 y nic2:
sudo ethtool -G eth1 rx 2048 tx 2048 sudo ethtool -G eth2 rx 2048 tx 2048
Comandos de ejemplo para probar la conectividad de multidifusión de ULL
En esta sección, se proporcionan comandos de ejemplo para probar el tráfico de multidifusión sin
iniciar una carga de trabajo de la aplicación con la
iperf herramienta. Los pasos de esta sección
requieren que se complete la configuración de multidifusión que se describe en Descripción general de la configuración de la solución de ULL es
completa.
Envía tráfico de multidifusión de ULL desde un productor de multidifusión
Conectarse a la instancia a través de SSH.
Instala
iperfsi aún no lo hiciste.iperf3no admite multidifusión. El siguiente comando usaiperf, que instalaiperf2.sudo yum install iperf
Para enviar tráfico de multidifusión a la dirección IP del grupo de multidifusión, ejecuta el siguiente comando:
iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
Reemplaza los siguientes valores:
MULTICAST_GROUP_ADDRESS: Es la dirección IP del grupo de multidifusión.NIC: Es el nombre del dispositivo de la interfaz de red, comoeth1oeth2.NIC_IP_ADDRESS: Es la dirección IP que se asigna a la NIC que especificaste.
Únete a un grupo y recibe tráfico de multidifusión de ULL desde un consumidor de multidifusión
Conectarse a la instancia a través de SSH.
Instala
iperfsi aún no lo hiciste.sudo yum install iperf
Para unirte a un grupo de multidifusión y registrar el tráfico que recibes, ejecuta el siguiente comando:
iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
Reemplaza los siguientes valores:
MULTICAST_GROUP_ADDRESS: Es la dirección IP del grupo de multidifusión.NIC: Es el nombre del dispositivo de la interfaz de red, comoeth1oeth2.
Por ejemplo, el siguiente comando se une a un grupo con la dirección IP
224.1.0.176para recibir paquetes de hasta 512 bytes y registra el tráfico recibido:iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
¿Qué sigue?
- Para habilitar el sondeo ocupado y probar las funciones de Onload para instancias de procesamiento de ULL, consulta Trabaja con Onload.
- Para sincronizar el reloj del sistema de tu instancia con el reloj de la NIC física de su servidor host, consulta Configura la hora exacta.