使用 DPDK

本页面介绍了如何在 U4C Compute Engine 实例上使用数据平面开发套件 (DPDK)。

关于 U4C 实例上的 DPDK

数据平面开发套件 (DPDK) 是一种框架,适用于 需要快速数据包处理、 低延迟和一致性能的性能密集型应用。DPDK 会绕过 Linux 内核网络堆栈,并直接在用户空间中运行。

U4C 实例使用 Google 虚拟 NIC (gVNIC) 轮询模式驱动程序 (PMD)支持 DPDK。 安装 DPDK 后,可以使用标准 ethdev 和 rte_flow API 配置驱动程序功能。

将 DPDK 与 ULL 解决方案搭配使用时,支持流转向。您可以将特定流量直接转向到指定的 接收队列 (RX),从而绕过默认的接收端缩放 (RSS) 哈希。 ULL 解决方案支持 ULL 单播和多播流量的三元组流转向(协议、目标 IP 地址和目标端口)。

此外,gVNIC PMD 还支持 mbuf 中的硬件 RX 时间戳,以及通过 rte_eth_read_clock 进行时钟读取。

限制

在 U4C 实例上使用 DPDK 存在以下限制:

  • 主线 DPDK 版本或 dpdk-next-net 代码库中不支持裸金属实例。您必须按照在 U4C 实例上安装 DPDK 中的步骤应用所需的补丁程序 。
  • 为 U4C 实例(在其 ULL 网络接口(nic1 和 nic2)上使用 DPDK) 配置准确时间时,您必须将 chrony 配置为使用 nic0 作为时间同步的来源。

准备工作

在 U4C Compute Engine 实例上使用 DPDK 之前,您必须满足以下要求。

创建 U4C 实例

如果尚未创建,请创建一个 U4C 裸金属实例。请参阅创建 ULL Compute Engine 实例。

使用 SSH 连接到您的实例

如果尚未连接,请使用 SSH 连接到您的 实例。

在 U4C 实例上安装 DPDK

如需在 U4C 实例上安装 DPDK,请按照以下步骤操作:

  1. 配置 DPDK 安装的依赖项:

    1. 如果您使用的是 Rocky Linux,请启用 CodeReady Builder (CRB) 代码库。如果您使用的是 Red Hat Enterprise Linux (RHEL),请跳过此步骤。

      sudo dnf -y config-manager --enable crb
      
    2. 安装所需的软件包和构建工具:

      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. 下载 DPDK 源代码。您必须使用 dpdk-next-net代码库 或 DPDK 版本 26.07 或更高版本。

    • dpdk-next-net

      git clone git://dpdk.org/next/dpdk-next-net dpdk-source
      
    • DPDK 26.07 或更高版本

      git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
      
  3. 应用所需的补丁程序。裸金属支持的源代码托管在 Google compute-virtual-ethernet-dpdk 代码库的 dpdk-bm 分支中。这些补丁程序与 dpdk-next-net 代码库 ABI 兼容。

    您可以使用逐字复制或 Cherry-pick 方法应用补丁程序。根据您偏好的工作流,执行以下操作之一:

    • 逐字复制

      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
    • Cherry-pick

      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. 构建并安装 DPDK:

    meson setup build
    sudo ninja -C build install; sudo ldconfig
    

将 DPDK 绑定到驱动程序

您必须将实例的网络接口绑定到与 DPDK 兼容的内核 驱动程序,如将 DPDK 绑定到驱动程序并对其进行测试中所述。

对于 U4C 裸金属实例,请考虑以下事项:

  • 裸金属实例不需要虚拟机实例使用的 UIO 或无 IOMMU 的 VFIO 驱动程序。您可以直接绑定到标准 vfio-pci 驱动程序。
  • 您只能将 ULL 网络接口(nic1 和 nic2)绑定到 DPDK 驱动程序。nic0 必须保持绑定到标准内核驱动程序,以保持网络连接并支持时间同步。

如需了解详情,请参阅 DPDK 文档中的 Binding and Unbinding Network Ports to/from the Kernel Modules 。

后续步骤

  • 如需将实例时钟同步到其宿主 服务器的物理 NIC 时钟,请参阅配置准确时间。