使用 DPDK

本頁面說明如何在 U4C Compute Engine 執行個體上使用 Data Plane Development Kit (DPDK)。

關於 U4C 執行個體上的 DPDK

資料平面開發套件 (DPDK) 是一種架構,適用於需要快速封包處理、低延遲和穩定效能的效能密集型應用程式。DPDK 會略過 Linux 核心網路堆疊,直接在使用者空間中執行。

U4C 執行個體支援 DPDK,使用 Google Virtual NIC (gVNIC) 輪詢模式驅動程式 (PMD)。安裝 DPDK 後,您可以使用標準 ethdev 和 rte_flow API 設定驅動程式功能。

搭配 ULL Solution 使用 DPDK 時,可支援流量導向。您可以將特定流量直接導向指定的接收佇列 (RX),略過預設的接收端縮放 (RSS) 雜湊。ULL 解決方案支援 ULL 單點播送和多點播送流量的 3 元組流量轉向 (通訊協定、目的地 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
    • 挑選

      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 裸機執行個體時,請注意下列事項:

  • Bare Metal 執行個體不需要 VM 執行個體使用的 UIO 或不含 IOMMU 的 VFIO 驅動程式。您可以直接繫結至標準 vfio-pci 驅動程式。
  • 您只能將 ULL 網路介面 (nic1 和 nic2) 繫結至 DPDK 驅動程式。nic0 必須維持與標準核心驅動程式繫結,才能維持網路連線並支援時間同步。

詳情請參閱 DPDK 說明文件中的「Binding and Unbinding Network Ports to/from the Kernel Modules」。

後續步驟

  • 如要將執行個體時鐘與主機伺服器的實體 NIC 時鐘同步,請參閱「設定準確時間」。