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:
Para optimizar aún más el rendimiento, te recomendamos que también habilites el sondeo ocupado como se describe en Trabaja con Onload.

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 interfaz nic0 de la instancia.

  • ULL_VPC_NETWORK: Es la red de VPC de ULL a la que se adjuntarán las interfaces que no son nic0.

    • ULL_SUBNET_1: Es la subred de la red de VPC de ULL a la que se adjuntará la interfaz nic1.

    • ULL_SUBNET_2: Es la subred de la red de VPC de ULL a la que se adjuntará la interfaz nic2.

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 es nicNUMBER, como nic0, nic1, o nic2.

Establece IGMPv2 en el SO invitado

Para establecer IGMPv2 en el SO invitado de tu instancia, haz lo siguiente:

  1. Conectarse a la instancia a través de SSH.

  2. 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
    
  3. 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_NAME por el nombre del dispositivo de la interfaz de red, como eth0, eth1 o eth2.

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

  1. Conectarse a la instancia a través de SSH.

  2. Instala iperf si aún no lo hiciste. iperf3 no admite multidifusión. El siguiente comando usa iperf, que instala iperf2.

    sudo yum install iperf
    
  3. 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, como eth1 o eth2.
    • 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

  1. Conectarse a la instancia a través de SSH.

  2. Instala iperf si aún no lo hiciste.

    sudo yum install iperf
    
  3. 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, como eth1 o eth2.

    Por ejemplo, el siguiente comando se une a un grupo con la dirección IP 224.1.0.176 para 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.