Menggunakan DPDK

Halaman ini menjelaskan cara menggunakan Data Plane Development Kit (DPDK) di instance Compute Engine U4C.

Tentang DPDK pada instance U4C

Data Plane Development Kit (DPDK) adalah framework untuk aplikasi yang membutuhkan performa tinggi dan memerlukan pemrosesan paket yang cepat, latensi rendah, dan performa yang konsisten. DPDK mengabaikan stack jaringan kernel Linux dan berjalan langsung di ruang pengguna.

Instance U4C mendukung DPDK menggunakan Driver Mode Polling (PMD) NIC Virtual Google (gVNIC). Setelah Anda menginstal DPDK, fitur driver dapat dikonfigurasi menggunakan API ethdev dan rte_flow standar.

Penggunaan DPDK dengan Solusi ULL mencakup dukungan untuk pengarahan alur. Anda dapat melewati hashing penskalaan sisi penerimaan (RSS) default dengan mengarahkan alur traffic tertentu langsung ke antrean penerimaan (RX) yang ditentukan. Solusi ULL mendukung pengemudian alur 3-tuple (protokol, alamat IP tujuan, dan port tujuan) untuk traffic unicast dan multicast ULL.

Selain itu, PMD gVNIC mendukung stempel waktu RX hardware di mbuf dan pembacaan clock melalui rte_eth_read_clock.

Batasan

Penggunaan DPDK pada instance U4C memiliki batasan berikut:

  • Dukungan untuk instance bare metal tidak tersedia dalam rilis DPDK utama atau repositori dpdk-next-net. Anda harus menerapkan patch yang diperlukan dengan mengikuti langkah-langkah di bagian Menginstal DPDK di instance U4C.
  • Saat mengonfigurasi waktu yang akurat untuk instance U4C yang menggunakan DPDK pada antarmuka jaringan ULL-nya (nic1 dan nic2), Anda harus mengonfigurasi chrony untuk menggunakan nic0 sebagai sumber sinkronisasi waktu.

Sebelum memulai

Sebelum menggunakan DPDK di instance Compute Engine U4C, Anda harus memenuhi persyaratan berikut.

Membuat instance U4C

Jika belum melakukannya, buat instance bare metal U4C. Lihat Membuat instance Compute Engine ULL.

Menghubungkan ke instance menggunakan SSH

Jika belum, hubungkan ke instance menggunakan SSH.

Menginstal DPDK di instance U4C Anda

Untuk menginstal DPDK di instance U4C, ikuti langkah-langkah berikut:

  1. Konfigurasikan dependensi untuk penginstalan DPDK:

    1. Jika Anda menggunakan Rocky Linux, aktifkan repositori CodeReady Builder (CRB). Jika Anda menggunakan Red Hat Enterprise Linux (RHEL), lewati langkah ini.

      sudo dnf -y config-manager --enable crb
      
    2. Instal paket dan alat build yang diperlukan:

      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. Download sumber DPDK. Anda harus menggunakan repositori dpdk-next-net atau rilis DPDK versi 26.07 atau yang lebih baru.

    • dpdk-next-net

      git clone git://dpdk.org/next/dpdk-next-net dpdk-source
      
    • DPDK 26.07 atau yang lebih baru

      git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
      
  3. Terapkan patch yang diperlukan. Sumber untuk dukungan bare metal dihosting di cabang dpdk-bm dari repositori compute-virtual-ethernet-dpdk Google. Patch kompatibel dengan ABI dengan repositori dpdk-next-net.

    Anda dapat menerapkan patch menggunakan salinan verbatim atau metode seleksi. Lakukan salah satu hal berikut, bergantung pada alur kerja yang Anda inginkan:

    • Salinan kata demi kata

      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
    • Memilih dan menerapkan

      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. Bangun dan instal DPDK:

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

Ikat DPDK ke driver

Anda harus mengikat antarmuka jaringan instance ke driver kernel yang kompatibel dengan DPDK seperti yang dijelaskan dalam Mengikat DPDK ke driver, lalu mengujinya.

Untuk instance bare metal U4C, pertimbangkan hal berikut:

  • Instance bare metal tidak memerlukan driver UIO atau VFIO tanpa IOMMU yang digunakan oleh instance VM. Anda dapat langsung mengikat ke driver vfio-pcistandar.
  • Anda hanya dapat mengikat antarmuka jaringan ULL (nic1 dan nic2) ke driver DPDK. nic0 harus tetap terikat ke driver kernel standar untuk mempertahankan konektivitas jaringan dan mendukung sinkronisasi waktu.

Untuk mengetahui informasi selengkapnya, lihat Mengikat dan Melepas Port Jaringan ke/dari Modul Kernel dalam dokumentasi DPDK.

Langkah berikutnya