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 (
nic1dannic2), Anda harus mengonfigurasichronyuntuk menggunakannic0sebagai 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:
Konfigurasikan dependensi untuk penginstalan DPDK:
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 crbInstal 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
Download sumber DPDK. Anda harus menggunakan repositori
dpdk-next-netatau rilis DPDK versi 26.07 atau yang lebih baru.dpdk-next-netgit clone git://dpdk.org/next/dpdk-next-net dpdk-sourceDPDK 26.07 atau yang lebih baru
git clone git://dpdk.org/dpdk -b v26.07 dpdk-source
Terapkan patch yang diperlukan. Sumber untuk dukungan bare metal dihosting di cabang
dpdk-bmdari repositoricompute-virtual-ethernet-dpdkGoogle. Patch kompatibel dengan ABI dengan repositoridpdk-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
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 (
nic1dannic2) ke driver DPDK.nic0harus 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
- Untuk menyinkronkan clock instance ke clock NIC fisik server host-nya, lihat Mengonfigurasi waktu yang akurat.