Trabaja con DPDK
En esta página, se describe cómo usar el Kit de desarrollo del plano de datos (DPDK) en instancias de Compute Engine U4C.
Acerca de DPDK en instancias U4C
El Kit de desarrollo del plano de datos (DPDK) es un framework para aplicaciones de alto rendimiento que requieren un procesamiento de paquetes rápido, baja latencia y rendimiento coherente. DPDK omite la pila de red del kernel de Linux y se ejecuta directamente en el espacio del usuario.
Las instancias U4C admiten DPDK con el
controlador de modo de sondeo (PMD) de la NIC virtual de Google (gVNIC).
Una vez que instales DPDK, las funciones del controlador se podrán configurar con las APIs estándar ethdev y rte_flow.
El uso de DPDK con la solución ULL incluye compatibilidad con la dirección de flujo. Puedes omitir el hash de escalamiento del lado de recepción (RSS) predeterminado dirigiendo flujos de tráfico específicos directamente a una cola de recepción (RX) designada. La solución ULL admite la dirección de flujo de 3 tuplas (protocolo, dirección IP de destino y puerto de destino) para el tráfico de unidifusión y multidifusión de ULL.
Además, el PMD de gVNIC admite la marca de tiempo de RX de hardware en mbufs y las lecturas de reloj a través de rte_eth_read_clock.
Limitaciones
El uso de DPDK en instancias U4C tiene las siguientes limitaciones:
- La compatibilidad con instancias de Bare Metal no está disponible en la versión principal de DPDK ni en el repositorio
dpdk-next-net. Debes aplicar los parches necesarios siguiendo los pasos que se indican en Instala DPDK en tu instancia U4C. - Cuando configures la hora exacta para una instancia U4C
que usa DPDK en sus interfaces de red ULL (
nic1ynic2), debes configurarchronypara que usenic0como fuente para la sincronización de la hora.
Antes de comenzar
Antes de trabajar con DPDK en instancias de Compute Engine U4C, debes cumplir con los siguientes requisitos.
Crea una instancia U4C
Si aún no lo hiciste, crea una instancia de Bare Metal U4C. Consulta Crea ULL instancias de Compute Engine.
Conéctate a la instancia a través de SSH
Si aún no lo hiciste, conéctate a la instancia a través de SSH.
Instala DPDK en tu instancia U4C
Para instalar DPDK en tu instancia U4C, sigue estos pasos:
Configura las dependencias para la instalación de DPDK:
Si usas Rocky Linux, habilita el repositorio de CodeReady Builder (CRB). Si usas Red Hat Enterprise Linux (RHEL), omite este paso.
sudo dnf -y config-manager --enable crbInstala los paquetes y las herramientas de compilación necesarios:
sudo dnf install -y git gcc gcc-c++ make ninja-build python3-pip \ kernel-devel-$(uname -r) pkgconf-pkg-config numactl-devel sudo pip install pyelftools meson
Descarga la fuente de DPDK. Debes usar el
dpdk-next-netrepositorio o la versión 26.07 o posterior deDPDK.dpdk-next-netgit clone git://dpdk.org/next/dpdk-next-net dpdk-sourceDPDK 26.07 o versiones posteriores
git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
Aplica los parches necesarios. La fuente para la compatibilidad con Bare Metal se aloja en la
dpdk-bmrama delcompute-virtual-ethernet-dpdkrepositorio de Google. Los parches son compatibles con ABI con el repositoriodpdk-next-net.Puedes aplicar los parches con una copia textual o un método de selección de confirmación. Realiza una de las siguientes acciones según tu flujo de trabajo preferido:
Copia textual
git clone https://github.com/google/compute-virtual-ethernet-dpdk -b dpdk-bm dpdk-bm cp -r dpdk-bm/drivers/net/gve/* dpdk-source/drivers/net/gve/ cd dpdk-source
Selección de confirmación
cd dpdk-source git remote add gve-bm https://github.com/google/compute-virtual-ethernet-dpdk git fetch gve-bm git cherry-pick gve-bm/main..gve-bm/dpdk-bm
Compila e instala DPDK:
meson setup build sudo ninja -C build install; sudo ldconfig
Vincula DPDK a un controlador
Debes vincular las interfaces de red de tu instancia a un controlador de kernel compatible con DPDK como se describe en Vincula DPDK a un controlador y pruébalo.
Para las instancias de Bare Metal U4C, ten en cuenta lo siguiente:
- Las instancias de Bare Metal no requieren los controladores UIO o VFIO sin IOMMU que usan las instancias de VM. Puedes vincular directamente al controlador
vfio-pciestándar. - Solo puedes vincular las interfaces de red ULL (
nic1ynic2) al controlador DPDK.nic0debe permanecer vinculado al controlador de kernel estándar para mantener la conectividad de red y admitir la sincronización de la hora.
Para obtener más información, consulta Vinculación y desvinculación de puertos de red a/desde los módulos del kernel en la documentación de DPDK.
¿Qué sigue?
- Para sincronizar el reloj de tu instancia con el reloj de la NIC física de su servidor host, consulta Configura la hora exacta.