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 (nic1 y nic2), debes configurar chrony para que use nic0 como 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:

  1. Configura las dependencias para la instalación de DPDK:

    1. 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 crb
      
    2. Instala 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
      
  2. Descarga la fuente de DPDK. Debes usar el dpdk-next-net repositorio o la versión 26.07 o posterior deDPDK.

    • dpdk-next-net

      git clone git://dpdk.org/next/dpdk-next-net dpdk-source
      
    • DPDK 26.07 o versiones posteriores

      git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
      
  3. Aplica los parches necesarios. La fuente para la compatibilidad con Bare Metal se aloja en la dpdk-bm rama del compute-virtual-ethernet-dpdk repositorio de Google. Los parches son compatibles con ABI con el repositorio dpdk-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
  4. 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-pci estándar.
  • Solo puedes vincular las interfaces de red ULL (nic1 y nic2) al controlador DPDK. nic0 debe 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.