Este documento explica cómo habilitar el kit de desarrollo del plano de datos (DPDK) en una instancia de máquina virtual (VM) para un procesamiento de paquetes de red más rápido.
DPDK es un marco para aplicaciones de rendimiento intensivo que requieren un procesamiento rápido de paquetes, baja latencia y rendimiento constante. DPDK proporciona un conjunto de bibliotecas de plano de datos y un controlador de interfaz de red (NIC) que omite la red del kernel y se ejecuta directamente en el espacio del usuario. Por ejemplo, habilitar DPDK en su VM es útil cuando ejecuta lo siguiente:
Implementaciones de virtualización de funciones de red (NFV)
Aplicaciones de redes definidas por software (SDN)
Aplicaciones de streaming de vídeo o voz sobre IP
Puede ejecutar DPDK en una máquina virtual utilizando uno de los siguientes tipos de NIC virtual (vNIC):
Recomendado: gVNIC
Una interfaz de red virtual escalable, segura y de alto rendimiento diseñada específicamente para Compute Engine que sucede a virtIO como la vNIC de próxima generación.
Un controlador Ethernet de código abierto que permite a las máquinas virtuales acceder de manera eficiente a hardware físico, como almacenamiento en bloque y adaptadores de red.
Un problema al ejecutar DPDK en un entorno virtual, en lugar de en hardware físico, es que los entornos virtuales carecen de soporte para SR-IOV y la Unidad de gestión de memoria de E/S (IOMMU) para aplicaciones de alto rendimiento. Para superar esta limitación, debe ejecutar DPDK en direcciones físicas de invitados en lugar de direcciones virtuales de host mediante uno de los siguientes controladores:
Antes de comenzar
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
Para evitar la falta de conectividad de red al ejecutar sus aplicaciones, utilice dos redes de Nube Privada Virtual:
Una red VPC para el plano de control.
Una red VPC para el plano de datos
Las dos redes de VPC deben especificar lo siguiente:
Una subred con un rango de direcciones IP único
La misma región para sus subredes.
El mismo tipo de VNIC, ya sea gVNIC o VirtIO-Net
Al crear la VM:
Debe especificar la misma región que las subredes de las dos redes VPC.
Debe especificar el tipo de vNIC que planea usar con DPDK.
Debe especificar una serie de máquinas compatibles con gVNIC o VirtIO-Net.
Solo puede utilizar subredes de pila única para las dos redes de VPC utilizadas en la máquina virtual.
Si está utilizando gVNIC como tipo de vNIC para las dos redes de VPC, asegúrese de lo siguiente:
Debe utilizar DPDK versión 22.11 o posterior.
Sólo puede utilizar imágenes de disco compatibles .
Si desea habilitar el rendimiento de red por VM Tier_1 para obtener un mayor rendimiento de la red al crear la VM, debe especificar lo siguiente:
gVNIC como tipo de vNIC
Un tipo de máquina compatible con 30 vCPU o más
Cree una red VPC para el plano de datos:
En la consola de Google Cloud, ve a Redes VPC .
Se abre la página de redes VPC .
Haga clic
Crear red VPC .Se abre la página Crear una red VPC .
En el campo Nombre , ingrese un nombre para su red.
En la sección Nueva subred , haga lo siguiente:
En el campo Nombre , ingrese un nombre para su subred.
En el menú Región , seleccione una región para su subred.
Seleccione IPv4 (pila única) (predeterminado).
En el rango IPv4 , ingrese una dirección de rango IPv4 válida en notación CIDR.
Haga clic en Listo .
Haga clic en Crear .
Se abre la página de redes VPC . Puede pasar hasta un minuto antes de que se complete la creación de la red VPC.
Cree una red VPC para el plano de control con una regla de firewall para permitir conexiones SSH a la VM:
Haga clic
Crear red VPC nuevamente.Se abre la página Crear una red VPC .
En el campo Nombre , ingrese un nombre para su red.
En la sección Nueva subred , haga lo siguiente:
En el campo Nombre , ingrese un nombre para la subred.
En el menú Región , seleccione la misma región que especificó para la subred de la red del plano de datos.
Seleccione IPv4 (pila única) (predeterminado).
En el rango IPv4 , ingrese una dirección de rango IPv4 válida en notación CIDR.
Haga clic en Listo .
En la pestaña de reglas de firewall IPv4 , seleccione la casilla NETWORK_NAME -allow-ssh .
Donde NETWORK_NAME es el nombre de la red que especificó en los pasos anteriores.
Haga clic en Crear .
Se abre la página de redes VPC . Puede pasar hasta un minuto antes de que se complete la creación de la red VPC.
Para crear una red VPC para el plano de datos, siga estos pasos:
Cree una red de VPC con una subred creada manualmente mediante el comando
gcloud compute networks create
con el indicador--subnet-mode
configurado encustom
.gcloud compute networks create DATA_PLANE_NETWORK_NAME \ --bgp-routing-mode=regional \ --mtu=MTU \ --subnet-mode=custom
Reemplace lo siguiente:
DATA_PLANE_NETWORK_NAME
: el nombre de la red VPC para el plano de datos.MTU
: la unidad máxima de transmisión (MTU), que es el tamaño de paquete más grande de la red. El valor debe estar entre1300
y8896
. El valor predeterminado es1460
. Antes de configurar la MTU en un valor superior a1460
, consulte Unidad de transmisión máxima .
Crea una subred para la red del plano de datos de VPC que acabas de crear usando el comando
gcloud compute networks subnets create
.gcloud compute networks subnets create DATA_PLANE_SUBNET_NAME \ --network=DATA_PLANE_NETWORK_NAME \ --range=DATA_PRIMARY_RANGE \ --region=REGION
Reemplace lo siguiente:
DATA_PLANE_SUBNET_NAME
: el nombre de la subred para la red del plano de datos.DATA_PLANE_NETWORK_NAME
: el nombre de la red del plano de datos que especificó en los pasos anteriores.DATA_PRIMARY_RANGE
: un rango IPv4 válido para la subred en notación CIDR.REGION
: la región donde crear la subred.
Para crear una red VPC para el plano de control con una regla de firewall para permitir conexiones SSH en la VM, siga estos pasos:
Cree una red de VPC con una subred creada manualmente mediante el comando
gcloud compute networks create
con el indicador--subnet-mode
configurado encustom
.gcloud compute networks create CONTROL_PLANE_NETWORK_NAME \ --bgp-routing-mode=regional \ --mtu=MTU \ --subnet-mode=custom
Reemplace lo siguiente:
CONTROL_PLANE_NETWORK_NAME
: el nombre de la red VPC para el plano de control.MTU
: la MTU, que es el tamaño de paquete más grande de la red. El valor debe estar entre1300
y8896
. El valor predeterminado es1460
. Antes de configurar la MTU en un valor superior a1460
, consulte Unidad de transmisión máxima .
Crea una subred para la red del plano de control de VPC que acabas de crear usando el comando
gcloud compute networks subnets create
.gcloud compute networks subnets create CONTROL_PLANE_SUBNET_NAME \ --network=CONTROL_PLANE_NETWORK_NAME \ --range=CONTROL_PRIMARY_RANGE \ --region=REGION
Reemplace lo siguiente:
CONTROL_PLANE_SUBNET_NAME
: el nombre de la subred para la red del plano de control.CONTROL_PLANE_NETWORK_NAME
: el nombre de la red del plano de control que especificó en los pasos anteriores.CONTROL_PRIMARY_RANGE
: un rango IPv4 válido para la subred en notación CIDR.REGION
: la región donde crear la subred, que debe coincidir con la región que especificó en la subred de la red del plano de datos.
Cree una regla de firewall de VPC que permita el acceso SSH a la red del plano de control mediante el comando
gcloud compute firewall-rules create
con el indicador--allow
establecido entcp:22
.gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --action=allow \ --network=CONTROL_PLANE_NETWORK_NAME \ --rules=tcp:22
Reemplace lo siguiente:
FIREWALL_RULE_NAME
: el nombre de la regla de firewall.CONTROL_PLANE_NETWORK_NAME
: el nombre de la red del plano de control que creó en los pasos anteriores.
Para crear una red VPC para el plano de datos, siga estos pasos:
Cree una red de VPC con una subred creada manualmente realizando una solicitud
POST
al métodonetworks.insert
con el campoautoCreateSubnetworks
establecido enfalse
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "DATA_PLANE_NETWORK_NAME", "mtu": MTU }
Reemplace lo siguiente:
PROJECT_ID
: el ID del proyecto actual.DATA_PLANE_NETWORK_NAME
: el nombre de la red para el plano de datos.MTU
: la unidad máxima de transmisión (MTU), que es el tamaño de paquete más grande de la red. El valor debe estar entre1300
y8896
. El valor predeterminado es1460
. Antes de configurar la MTU en un valor superior a1460
, consulte Unidad de transmisión máxima .
Cree una subred para la red del plano de datos de VPC realizando una solicitud
POST
al métodosubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "DATA_PRIMARY_RANGE", "name": "DATA_PLANE_SUBNET_NAME", "network": "projects/PROJECT_ID/global/networks/DATA_PLANE_NETWORK_NAME" }
Reemplace lo siguiente:
PROJECT_ID
: el ID del proyecto donde se encuentra la red del plano de datos.REGION
: la región donde desea crear la subred.DATA_PRIMARY_RANGE
: el rango de IPv4 principal para la nueva subred en notación CIDR.DATA_PLANE_SUBNET_NAME
: el nombre de la subred para la red del plano de datos que creó en el paso anterior.DATA_PLANE_NETWORK_NAME
: el nombre de la red del plano de datos que creó en el paso anterior.
Para crear una red VPC para el plano de control con una regla de firewall que permita el ingreso de SSH a la VM, siga estos pasos:
Cree una red de VPC con una subred creada manualmente realizando una solicitud
POST
al métodonetworks.insert
con el campoautoCreateSubnetworks
establecido enfalse
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "CONTROL_PLANE_NETWORK_NAME", "mtu": MTU }
Reemplace lo siguiente:
PROJECT_ID
: el ID del proyecto actual.CONTROL_PLANE_NETWORK_NAME
: el nombre de la red para el plano de control.MTU
: la MTU, que es el tamaño de paquete más grande de la red. El valor debe estar entre1300
y8896
. El valor predeterminado es1460
. Antes de configurar la MTU en un valor superior a1460
, consulte Unidad de transmisión máxima .
Cree una subred para la red de control de datos de VPC realizando una solicitud
POST
al métodosubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "CONTROL_PRIMARY_RANGE", "name": "CONTROL_PLANE_SUBNET_NAME", "network": "projects/PROJECT_ID/global/networks/CONTROL_PLANE_NETWORK_NAME" }
Reemplace lo siguiente:
PROJECT_ID
: el ID del proyecto donde se encuentra la red del plano de control.REGION
: la región donde desea crear la subred.CONTROL_PRIMARY_RANGE
: el rango de IPv4 principal para la nueva subred en notación CIDR.CONTROL_PLANE_SUBNET_NAME
: el nombre de la subred para la red del plano de control que creó en el paso anterior.CONTROL_PLANE_NETWORK_NAME
: el nombre de la red del plano de control que creó en el paso anterior.
Cree una regla de firewall de VPC que permita el acceso SSH a la red del plano de control realizando una solicitud
POST
al métodofirewalls.insert
. En la solicitud, configure el campoIPProtocol
entcp
y el campoports
en22
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "network": "projects/PROJECT_ID/global/networks/CONTROL_PLANE_NETWORK_NAME" }
Reemplace lo siguiente:
PROJECT_ID
: el ID del proyecto donde se encuentra la red del plano de control.CONTROL_PLANE_NETWORK_NAME
: el nombre de la red del plano de control que creó en los pasos anteriores.
En la consola de Google Cloud, vaya a Instancias de VM .
Se abre la página de instancias de VM .
Haga clic
Crear instancia .Se abre la página Crear una instancia .
En el campo Nombre , ingrese un nombre para su VM.
En el menú Región , seleccione la misma región donde creó sus redes en los pasos anteriores.
En el menú Zona , seleccione una zona para su VM.
En la sección Configuración de la máquina , haga lo siguiente:
Seleccione una de las siguientes opciones:
Para cargas de trabajo comunes, seleccione la pestaña Propósito general (predeterminada).
Para cargas de trabajo que requieren un alto rendimiento, seleccione la pestaña Compute optimizado .
Para cargas de trabajo con proporciones altas de memoria a vCPU, seleccione la pestaña Memoria optimizada .
Para cargas de trabajo que utilizan unidades de procesamiento de gráficos (GPU), seleccione la pestaña GPU .
Opcional. Si especificó GPU en el paso anterior y desea cambiar la GPU para conectarla a la VM, realice una o más de las siguientes acciones:
En el menú de tipo de GPU , seleccione un tipo de GPU.
En el menú Número de GPU , seleccione la cantidad de GPU.
En el menú Serie , seleccione una serie de máquinas.
En el menú Tipo de máquina , seleccione un tipo de máquina.
Opcional: expanda Configuraciones avanzadas y siga las instrucciones para personalizar aún más la máquina para esta VM.
Opcional: en la sección Disco de arranque , haga clic en Cambiar y luego siga las indicaciones para cambiar la imagen del disco.
Expanda la sección Opciones avanzadas .
Expanda la sección Redes .
En la sección Configuración de rendimiento de la red , haga lo siguiente:
En el menú Tarjeta de interfaz de red , seleccione una de las siguientes opciones:
Para usar gVNIC, seleccione gVNIC .
Para utilizar VirtIO-Net, seleccione VirtIO .
Opcional: para obtener un mayor rendimiento de la red y una latencia reducida, seleccione la casilla de verificación Habilitar redes de nivel 1 .
En la sección Interfaces de red , haga lo siguiente:
En la fila predeterminada , haga clic en
Eliminar elemento "predeterminado" .Haga clic en Agregar interfaz de red .
Aparece la sección Nueva interfaz de red .
En el menú Red , seleccione la red del plano de control que creó en los pasos anteriores.
Haga clic en Listo .
Haga clic en Agregar interfaz de red nuevamente.
Aparece la sección Nueva interfaz de red .
En el menú Red , seleccione la red del plano de datos que creó en los pasos anteriores.
Haga clic en Listo .
Haga clic en Crear .
Se abre la página de instancias de VM . Puede pasar hasta un minuto antes de que se complete la creación de la VM.
VM_NAME
: el nombre de la VM.IMAGE_FAMILY
: la familia de imágenes para el sistema operativo con el que se inicializará el disco de arranque. Alternativamente, puede especificar el indicador--image= IMAGE
y reemplazarIMAGE
con una versión específica de una imagen. Aprenda a ver una lista de imágenes disponibles en el proyecto de imágenes de Compute Engine.IMAGE_PROJECT
: el nombre del proyecto de imagen que contiene la imagen del disco.MACHINE_TYPE
: un tipo de máquina, predefinida o personalizada , para la VM.VNIC_TYPE
: el tipo de vNIC que se utilizará para las redes del plano de control y del plano de datos. El valor debe ser uno de los siguientes:Para utilizar gVNIC, especifique
GVNIC
.Para utilizar VirtIO-Net, especifique
VIRTIO_NET
.
CONTROL_PLANE_NETWORK_NAME
: el nombre de la red del plano de control que creó en los pasos anteriores.CONTROL_PLANE_SUBNET_NAME
: el nombre de la subred para la red del plano de control que creó en los pasos anteriores.DATA_PLANE_NETWORK_NAME
: el nombre de la red del plano de datos que creó en los pasos anteriores.DATA_PLANE_SUBNET_NAME
: el nombre de la subred para la red del plano de control que creó automáticamente en los pasos anteriores.ZONE
: la zona donde crear la VM. Especifique una zona dentro de la misma región de la subred que creó en los pasos anteriores.PROJECT_ID
: el ID del proyecto donde se encuentran la red VPC del plano de control y la red VPC del plano de datos.ZONE
: la zona donde crear la VM.VM_NAME
: el nombre de la VM.MACHINE_TYPE
: un tipo de máquina, predefinida o personalizada , para la VM.IMAGE_PROJECT
: el nombre del proyecto de imagen que contiene la imagen del disco.IMAGE_FAMILY
: la familia de imágenes para el sistema operativo con el que se inicializará el disco de arranque. Alternativamente, puede especificar una versión específica de una imagen. Aprenda a ver una lista de imágenes en el proyecto de imágenes de Compute Engine.CONTROL_PLANE_NETWORK_NAME
: el nombre de la red del plano de control que creó en los pasos anteriores.REGION
: la región donde existen las subredes de las redes del plano de control y del plano de datos.CONTROL_PLANE_SUBNET_NAME
: el nombre de la subred para la red del plano de control que creó en los pasos anteriores.VNIC_TYPE
: el tipo de vNIC que se utilizará para las redes del plano de control y del plano de datos. El valor debe ser uno de los siguientes:Para utilizar gVNIC, especifique
GVNIC
.Para utilizar VirtIO-Net, especifique
VIRTIO_NET
.
DATA_PLANE_NETWORK_NAME
: el nombre de la red del plano de datos que creó en los pasos anteriores.DATA_PLANE_SUBNET_NAME
: el nombre de la subred para la red del plano de control que creó en los pasos anteriores.Conéctese a la VM que creó en la sección anterior usando SSH .
Configure las dependencias para la instalación de DPDK:
sudo apt-get update && sudo apt-get upgrade -yq sudo apt-get install -yq build-essential ninja-build python3-pip \ linux-headers-$(uname -r) pkg-config libnuma-dev sudo pip install pyelftools meson
Instalar DPDK:
wget https://fast.dpdk.org/rel/dpdk-23.07.tar.xz tar xvf dpdk-23.07.tar.xz cd dpdk-23.07
Para construir DPDK con los ejemplos:
meson setup -Dexamples=all build sudo ninja -C build install; sudo ldconfig
Compruebe si VFIO está habilitado:
cat /boot/config-$(uname -r) | grep NOIOMMU
Si VFIO no está habilitado, siga los pasos en Instalar UIO .
Habilite el modo No-IOMMU en VFIO:
sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'
Clona el repositorio git
igb_uio
en un disco en tu VM:git clone https://dpdk.org/git/dpdk-kmods
Desde el directorio principal del repositorio git clonado, cree el módulo e instale el controlador UIO en DPDK:
pushd dpdk-kmods/linux/igb_uio sudo make sudo depmod && sudo insmod igb_uio.ko popd
Instale el paquete
dpdk-igb-uio-dkms
:sudo apt-get install -y dpdk-igb-uio-dkms
Instale el controlador UIO en DPDK:
sudo modprobe igb_uio
Obtenga el número de ranura de Interconexión de componentes periféricos (PCI) para la interfaz de red actual:
sudo lspci | grep -e "gVNIC" -e "Virtio network device"
Por ejemplo, si la máquina virtual utiliza
ens4
como interfaz de red, el número de ranura PCI es00:04.0
.Detenga la interfaz de red conectada al adaptador de red:
sudo ip link set NETWORK_INTERFACE_NAME down
Reemplace
NETWORK_INTERFACE_NAME
con el nombre de la interfaz de red especificada en las redes de VPC. Para ver qué interfaz de red está usando la VM, vea la configuración de la interfaz de red:sudo ifconfig
Vincule DPDK al controlador:
sudo dpdk-devbind.py --bind=DRIVER PCI_SLOT_NUMBER
Reemplace lo siguiente:
DRIVER
: el controlador al que vincular DPDK. Especifique uno de los siguientes valores:Controlador UIO:
igb_uio
Controlador VFIO sin IOMMU:
vfio-pci
PCI_SLOT_NUMBER
: el número de ranura PCI de la interfaz de red actual formateada como00:0 NUMBER .0
.
Cree el directorio
/mnt/huge
y luego cree algunas páginas enormes para que DPDK las use como buffers:sudo mkdir /mnt/huge sudo mount -t hugetlbfs -o pagesize=1G none /mnt/huge sudo bash -c 'echo 4 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages' sudo bash -c 'echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages'
Pruebe que DPDK puede usar la interfaz de red que creó en los pasos anteriores ejecutando la aplicación de ejemplo
testpmd
que se incluye con las bibliotecas DPDK:sudo ./build/app/dpdk-testpmd
Para obtener más información sobre cómo probar DPDK, consulte Opciones de línea de comandos de Testpmd .
Desvincular DPDK del controlador:
sudo dpdk-devbind.py -u PCI_SLOT_NUMBER
Reemplace
PCI_SLOT_NUMBER
con el número de ranura PCI que especificó en los pasos anteriores. Si desea verificar el número de ranura PCI para la interfaz de red actual:sudo lspci | grep -e "gVNIC" -e "Virtio network device"
Por ejemplo, si la máquina virtual utiliza
ens4
como interfaz de red, el número de ranura PCI es00:04.0
.Vuelva a cargar el controlador de red de Compute Engine:
sudo bash -c 'echo PCI_SLOT_NUMBER > /sys/bus/pci/drivers/VNIC_DIRECTORY/bind' sudo ip link set NETWORK_INTERFACE_NAME up
Reemplace lo siguiente:
PCI_SLOT_NUMBER
: el número de ranura PCI que especificó en los pasos anteriores.VNIC_DIRECTORY
: el directorio de la vNIC. Según el tipo de vNIC que esté utilizando, especifique uno de los siguientes valores:gVNIC:
gvnic
VirtIO-Net:
virtio-pci
NETWORK_INTERFACE_NAME
: el nombre de la interfaz de red que especificó en la sección anterior.
Revise las tasas de ancho de banda de la red para su tipo de máquina.
Obtenga más información sobre la creación y gestión de redes VPC .
Obtenga más información sobre configuraciones de MTU más altas con marcos gigantes .
Obtenga más información sobre la optimización de TCP para el rendimiento de la red .
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Requisitos
Al crear una máquina virtual para ejecutar DPDK, asegúrese de lo siguiente:
Restricciones
La ejecución de DPDK en una VM tiene las siguientes restricciones:
Configurar una VM para ejecutar DPDK
Esta sección explica cómo crear una máquina virtual para ejecutar DPDK.
Crear las redes VPC
Cree dos redes de VPC, para el plano de datos y el plano de control, mediante la consola de Google Cloud, la CLI de Google Cloud o la API de Compute Engine. Más adelante podrá especificar estas redes al crear la máquina virtual.
Consola
nube de gcloud
API
Para obtener más opciones de configuración al crear una red VPC, consulte Crear y administrar redes VPC .
Cree una VM que utilice las redes VPC para DPDK
Cree una máquina virtual que habilite gVNIC o virtIO-Net en las dos redes de VPC que creó anteriormente usando la consola de Google Cloud, la CLI de gcloud y la API de Compute Engine.
Recomendado: Especifique Ubuntu LTS o Ubuntu Pro como imagen del sistema operativo debido a que su administrador de paquetes admite controladores UIO y VFIO sin IOMMU. Si no desea especificar ninguno de estos sistemas operativos, se recomienda especificar Debian 11 o posterior para un procesamiento de paquetes más rápido.
Consola
Cree una VM que utilice las dos subredes de red VPC que creó en los pasos anteriores haciendo lo siguiente:
nube de gcloud
Cree una máquina virtual que use las dos subredes de red de VPC que creó en los pasos anteriores mediante el comando
gcloud compute instances create
con las siguientes marcas:gcloud compute instances create VM_NAME \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --machine-type=MACHINE_TYPE \ --network-interface=network=CONTROL_PLANE_NETWORK_NAME,subnet=CONTROL_PLANE_SUBNET_NAME,nic-type=VNIC_TYPE \ --network-interface=network=DATA_PLANE_NETWORK_NAME,subnet=DATA_PLANE_SUBNET_NAME,nic-type=VNIC_TYPE \ --zone=ZONE
Reemplace lo siguiente:
Por ejemplo, para crear una máquina virtual denominada
dpdk-vm
en la zonaus-central1-a
a que especifica un disco persistente SSD de 512 GB, un tipo de máquina C2 predefinido con 60 vCPU, redes Tier_1 y una red de plano de datos y de plano de control que usan gVNIC, ejecute el siguiente comando:gcloud compute instances create dpdk-vm \ --boot-disk-size=512GB \ --boot-disk-type=pd-ssd \ --image-project=ubuntu-os-cloud \ --image-family=ubuntu-2004-lts \ --machine-type=c2-standard-60 \ --network-performance-configs=total-egress-bandwidth-tier=TIER_1 \ --network-interface=network=control,subnet=control,nic-type=GVNIC \ --network-interface=network=data,subnet=data,nic-type=GVNIC \ --zone=us-central1-a
API
Cree una VM que utilice las dos subredes de red de VPC que creó en los pasos anteriores realizando una solicitud
POST
al métodoinstances.insert
con los siguientes campos:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "MACHINE_TYPE", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE_FAMILY" } } ], "networkInterfaces": [ { "network": "global/networks/CONTROL_PLANE_NETWORK_NAME", "subnetwork": "regions/REGION/subnetworks/CONTROL_PLANE_SUBNET_NAME", "nicType": "VNIC_TYPE" }, { "network": "global/networks/DATAPLANE_NETWORK_NAME", "subnetwork": "regions/REGION/subnetworks/DATA_PLANE_SUBNET_NAME", "nicType": "VNIC_TYPE" } ] }
Reemplace lo siguiente:
Por ejemplo, para crear una máquina virtual denominada
dpdk-vm
en la zonaus-central1-a
a que especifica un disco persistente SSD de 512 GB, un tipo de máquina C2 predefinido con 60 vCPU, redes de nivel 1 y una red de plano de datos y de plano de control que usan gVNIC, realice la siguiente solicitudPOST
:POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances { "name": "dpdk-vm", "machineType": "c2-standard-60", "disks": [ { "initializeParams": { "diskSizeGb": "512GB", "diskType": "pd-ssd", "sourceImage": "projects/ubuntu-os-cloud/global/images/ubuntu-2004-lts" }, "boot": true } ], "networkInterfaces": [ { "network": "global/networks/control", "subnetwork": "regions/us-central1/subnetworks/control", "nicType": "GVNIC" }, { "network": "global/networks/data", "subnetwork": "regions/us-central1/subnetworks/data", "nicType": "GVNIC" } ], "networkPerformanceConfig": { "totalEgressBandwidthTier": "TIER_1" } }
Para obtener más opciones de configuración al crear una VM, consulte Crear e iniciar una instancia de VM .
Instale DPDK en su máquina virtual
Para instalar DPDK en su VM, siga estos pasos:
Instalar controlador
Para preparar DPDK para ejecutarse en un controlador, instale el controlador seleccionando uno de los siguientes métodos:
Instalar un VFIO sin IOMMU
Para instalar el controlador VFIO sin IOMMU, siga estos pasos:
Instalar UIO
Para instalar el controlador UIO en DPDK, seleccione uno de los siguientes métodos:
Instalar UIO usando git
Para instalar el controlador UIO en DPDK usando
git
, siga estos pasos:Instale UIO usando paquetes de Linux
Para instalar el controlador UIO en DPDK usando paquetes de Linux, siga estos pasos:
Vincule DPDK a un controlador y pruébelo
Para vincular DPDK al controlador que instaló en la sección anterior, siga estos pasos:
Desvincular DPDK
Después de usar DPDK, puede desvincularlo del controlador que instaló en la sección anterior. Para desvincular DPDK, siga estos pasos:
¿Qué sigue?
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-04-17 (UTC).
-