Dokumen ini menjelaskan cara mengaktifkan Data Plane Development Kit (DPDK) pada instance virtual machine (VM) untuk pemrosesan paket jaringan yang lebih cepat.
DPDK adalah framework untuk aplikasi yang membutuhkan performa tinggi dan memerlukan pemrosesan paket yang cepat, latensi rendah, dan performa yang konsisten. DPDK menyediakan serangkaian library bidang data dan pengontrol antarmuka jaringan (NIC) yang mengabaikan jaringan kernel dan berjalan langsung di ruang pengguna. Misalnya, mengaktifkan DPDK di VM berguna saat menjalankan perintah berikut:
Deployment virtualisasi fungsi jaringan (NFV)
Aplikasi software-defined networking (SDN)
Streaming video atau aplikasi voice-over IP
Anda dapat menjalankan DPDK di VM menggunakan salah satu jenis NIC virtual (vNIC) berikut:
Direkomendasikan: gVNIC
Antarmuka jaringan virtual berperforma tinggi, aman, dan skalabel yang dirancang khusus untuk Compute Engine yang berhasil menerapkan virtIO sebagai vNIC generasi berikutnya.
-
Driver ethernet open source yang memungkinkan VM mengakses hardware fisik secara efisien, seperti block storage dan adaptor jaringan.
Salah satu masalah saat menjalankan DPDK di lingkungan virtual, bukan di hardware fisik, adalah bahwa lingkungan virtual tidak memiliki dukungan untuk SR-IOV dan I/O Memory Management Unit (IOMMU) untuk aplikasi berperforma tinggi. Untuk mengatasi batasan ini, Anda harus menjalankan DPDK pada alamat fisik tamu, bukan alamat virtual host menggunakan salah satu driver berikut:
Virtual Function I/O (VFIO) tanpa IOMMU
Sebelum memulai
-
Siapkan autentikasi, jika Anda belum melakukannya.
Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.
Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:
Konsol
Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.
gcloud
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- Menetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
-
Persyaratan
Saat membuat VM untuk menjalankan DPDK, pastikan hal-hal berikut:
Untuk menghindari kurangnya konektivitas jaringan saat menjalankan aplikasi Anda, gunakan dua jaringan Virtual Private Cloud:
Jaringan VPC untuk bidang kontrol
Jaringan VPC untuk bidang data
Kedua jaringan VPC tersebut harus menentukan hal berikut:
Subnet dengan rentang alamat IP unik
Region yang sama untuk subnetnya
Jenis VNIC yang sama—gVNIC atau VirtIO-Net
Saat membuat VM:
Anda harus menentukan region yang sama dengan subnet kedua jaringan VPC.
Anda harus menentukan jenis vNIC yang akan digunakan dengan DPDK.
Anda harus menentukan rangkaian mesin yang didukung untuk gVNIC atau VirtIO-Net.
Pembatasan
Menjalankan DPDK pada VM memiliki batasan berikut:
Anda hanya dapat menggunakan subnet stack tunggal untuk dua jaringan VPC yang digunakan di VM.
Jika Anda menggunakan gVNIC sebagai jenis vNIC untuk kedua jaringan VPC, pastikan hal berikut:
Anda harus menggunakan DPDK versi 22.11 atau yang lebih baru.
Anda hanya dapat menggunakan disk image yang didukung.
Jika ingin mengaktifkan performa jaringan per VM Tier_1 untuk performa jaringan yang lebih tinggi saat membuat VM, Anda harus menentukan hal berikut:
gVNIC sebagai jenis vNIC
Jenis mesin yang didukung dengan 30 vCPU atau lebih
Mengonfigurasi VM untuk menjalankan DPDK
Bagian ini menjelaskan cara membuat VM untuk menjalankan DPDK.
Membuat jaringan VPC
Buat dua jaringan VPC, untuk bidang data dan bidang kontrol, menggunakan Google Cloud Console, Google Cloud CLI, atau Compute Engine API. Kemudian, Anda dapat menentukan jaringan ini saat membuat VM.
Konsol
Buat jaringan VPC untuk bidang data:
Di konsol Google Cloud, buka VPC networks.
Halaman VPC networks akan terbuka.
Klik
Create VPC network.Halaman Create a VPC network akan terbuka.
Di kolom Name, masukkan nama jaringan Anda.
Di bagian New Subnet, lakukan hal berikut:
Di kolom Name, masukkan nama subnet Anda.
Di menu Region, pilih region untuk subnet Anda.
Pilih IPv4 (single-stack) (default).
Di Rentang IPv4, masukkan alamat rentang IPv4 yang valid dalam notasi CIDR.
Klik Done.
Klik Create.
Halaman VPC networks akan terbuka. Diperlukan waktu hingga satu menit sebelum pembuatan jaringan VPC selesai.
Buat jaringan VPC untuk bidang kontrol dengan aturan firewall guna mengizinkan koneksi SSH ke VM:
Klik
Create VPC network lagi.Halaman Create a VPC network akan terbuka.
Di kolom Name, masukkan nama jaringan Anda.
Di bagian New Subnet, lakukan hal berikut:
Di kolom Name, masukkan nama subnet.
Di menu Region, pilih region yang sama dengan yang Anda tentukan untuk subnet jaringan bidang data.
Pilih IPv4 (single-stack) (default).
Di Rentang IPv4, masukkan alamat rentang IPv4 yang valid dalam notasi CIDR.
Klik Done.
Di tab Aturan firewall IPv4, pilih kotak centang NETWORK_NAME-allow-ssh.
Dengan NETWORK_NAME adalah nama jaringan yang Anda tentukan pada langkah sebelumnya.
Klik Create.
Halaman VPC networks akan terbuka. Diperlukan waktu hingga satu menit sebelum pembuatan jaringan VPC selesai.
gcloud
Guna membuat jaringan VPC untuk bidang data tersebut, ikuti langkah-langkah berikut:
Buat jaringan VPC dengan subnet yang dibuat secara manual menggunakan perintah
gcloud compute networks create
dengan flag--subnet-mode
yang ditetapkan kecustom
.gcloud compute networks create DATA_PLANE_NETWORK_NAME \ --bgp-routing-mode=regional \ --mtu=MTU \ --subnet-mode=custom
Ganti kode berikut:
DATA_PLANE_NETWORK_NAME
: nama jaringan VPC untuk bidang data.MTU
: unit transmisi maksimum (MTU), yang merupakan ukuran paket terbesar di jaringan. Nilainya harus di antara1300
dan8896
. Nilai defaultnya adalah1460
. Sebelum menetapkan MTU ke nilai yang lebih tinggi dari1460
, lihat Unit transmisi maksimum.
Buat subnet untuk jaringan bidang data VPC yang baru saja Anda buat menggunakan perintah
gcloud compute networks subnets create
.gcloud compute networks subnets create DATA_PLANE_SUBNET_NAME \ --network=DATA_PLANE_NETWORK_NAME \ --range=DATA_PRIMARY_RANGE \ --region=REGION
Ganti kode berikut:
DATA_PLANE_SUBNET_NAME
: nama subnet untuk jaringan bidang data.DATA_PLANE_NETWORK_NAME
: nama jaringan dataplane yang Anda tentukan di langkah sebelumnya.DATA_PRIMARY_RANGE
: rentang IPv4 yang valid untuk subnet dalam notasi CIDR.REGION
: region tempat membuat subnet.
Guna membuat jaringan VPC untuk bidang kontrol dengan aturan firewall guna mengizinkan koneksi SSH ke VM, ikuti langkah-langkah berikut:
Buat jaringan VPC dengan subnet yang dibuat secara manual menggunakan perintah
gcloud compute networks create
dengan flag--subnet-mode
yang ditetapkan kecustom
.gcloud compute networks create CONTROL_PLANE_NETWORK_NAME \ --bgp-routing-mode=regional \ --mtu=MTU \ --subnet-mode=custom
Ganti kode berikut:
CONTROL_PLANE_NETWORK_NAME
: nama jaringan VPC untuk bidang kontrol.MTU
: MTU, yang merupakan ukuran paket terbesar jaringan. Nilainya harus di antara1300
dan8896
. Nilai defaultnya adalah1460
. Sebelum menetapkan MTU ke nilai yang lebih tinggi dari1460
, lihat Unit transmisi maksimum.
Buat subnet untuk jaringan bidang kontrol VPC yang baru saja Anda buat menggunakan perintah
gcloud compute networks subnets create
.gcloud compute networks subnets create CONTROL_PLANE_SUBNET_NAME \ --network=CONTROL_PLANE_NETWORK_NAME \ --range=CONTROL_PRIMARY_RANGE \ --region=REGION
Ganti kode berikut:
CONTROL_PLANE_SUBNET_NAME
: nama subnet untuk jaringan bidang kontrol.CONTROL_PLANE_NETWORK_NAME
: nama jaringan bidang kontrol yang Anda tentukan pada langkah sebelumnya.CONTROL_PRIMARY_RANGE
: rentang IPv4 yang valid untuk subnet dalam notasi CIDR.REGION
: region tempat membuat subnet, yang harus sesuai dengan region yang Anda tentukan di subnet jaringan bidang data.
Buat aturan firewall VPC yang mengizinkan SSH ke dalam jaringan bidang kontrol menggunakan perintah
gcloud compute firewall-rules create
dengan flag--allow
yang ditetapkan ketcp:22
.gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --action=allow \ --network=CONTROL_PLANE_NETWORK_NAME \ --rules=tcp:22
Ganti kode berikut:
FIREWALL_RULE_NAME
: nama aturan firewall.CONTROL_PLANE_NETWORK_NAME
: nama jaringan bidang kontrol yang Anda buat di langkah sebelumnya.
API
Guna membuat jaringan VPC untuk bidang data tersebut, ikuti langkah-langkah berikut:
Buat jaringan VPC dengan subnet yang dibuat secara manual dengan membuat permintaan
POST
ke metodenetworks.insert
dengan kolomautoCreateSubnetworks
ditetapkan kefalse
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "DATA_PLANE_NETWORK_NAME", "mtu": MTU }
Ganti kode berikut:
PROJECT_ID
: project ID dari project saat ini.DATA_PLANE_NETWORK_NAME
: nama jaringan untuk bidang data.MTU
: unit transmisi maksimum (MTU), yang merupakan ukuran paket terbesar di jaringan. Nilainya harus di antara1300
dan8896
. Nilai defaultnya adalah1460
. Sebelum menetapkan MTU ke nilai yang lebih tinggi dari1460
, lihat Unit transmisi maksimum.
Buat subnet untuk jaringan bidang data VPC dengan membuat permintaan
POST
ke metodesubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "DATA_PRIMARY_RANGE", "name": "DATA_PLANE_SUBNET_NAME", "network": "projects/PROJECT_ID/global/networks/DATA_PLANE_NETWORK_NAME" }
Ganti kode berikut:
PROJECT_ID
: project ID project tempat jaringan bidang data berada.REGION
: region tempat Anda ingin membuat subnet.DATA_PRIMARY_RANGE
: rentang IPv4 utama untuk subnet baru dalam notasi CIDR.DATA_PLANE_SUBNET_NAME
: nama subnet untuk jaringan bidang data yang Anda buat di langkah sebelumnya.DATA_PLANE_NETWORK_NAME
: nama jaringan bidang data yang Anda buat di langkah sebelumnya.
Guna membuat jaringan VPC bagi bidang kontrol dengan aturan firewall untuk mengizinkan SSH ke VM, ikuti langkah-langkah berikut:
Buat jaringan VPC dengan subnet yang dibuat secara manual dengan membuat permintaan
POST
ke metodenetworks.insert
dengan kolomautoCreateSubnetworks
ditetapkan kefalse
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "CONTROL_PLANE_NETWORK_NAME", "mtu": MTU }
Ganti kode berikut:
PROJECT_ID
: project ID dari project saat ini.CONTROL_PLANE_NETWORK_NAME
: nama jaringan untuk bidang kontrol.MTU
: MTU, yang merupakan ukuran paket terbesar jaringan. Nilainya harus di antara1300
dan8896
. Nilai defaultnya adalah1460
. Sebelum menetapkan MTU ke nilai yang lebih tinggi dari1460
, lihat Unit transmisi maksimum.
Buat subnet untuk jaringan kontrol data VPC dengan membuat permintaan
POST
ke metodesubnetworks.insert
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "CONTROL_PRIMARY_RANGE", "name": "CONTROL_PLANE_SUBNET_NAME", "network": "projects/PROJECT_ID/global/networks/CONTROL_PLANE_NETWORK_NAME" }
Ganti kode berikut:
PROJECT_ID
: project ID project tempat jaringan bidang kontrol berada.REGION
: region tempat Anda ingin membuat subnet.CONTROL_PRIMARY_RANGE
: rentang IPv4 utama untuk subnet baru dalam notasi CIDR.CONTROL_PLANE_SUBNET_NAME
: nama subnet untuk jaringan bidang kontrol yang Anda buat di langkah sebelumnya.CONTROL_PLANE_NETWORK_NAME
: nama jaringan bidang kontrol yang Anda buat di langkah sebelumnya.
Buat aturan firewall VPC yang mengizinkan SSH ke dalam jaringan bidang kontrol dengan membuat permintaan
POST
ke metodefirewalls.insert
. Dalam permintaan, tetapkan kolomIPProtocol
ketcp
dan kolomports
ke22
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "network": "projects/PROJECT_ID/global/networks/CONTROL_PLANE_NETWORK_NAME" }
Ganti kode berikut:
PROJECT_ID
: project ID project tempat jaringan bidang kontrol berada.CONTROL_PLANE_NETWORK_NAME
: nama jaringan bidang kontrol yang Anda buat di langkah sebelumnya.
Untuk mengetahui opsi konfigurasi lainnya saat membuat jaringan VPC, lihat Membuat dan mengelola jaringan VPC.
Membuat VM yang menggunakan jaringan VPC untuk DPDK
Buat VM yang mengaktifkan gVNIC atau virtIO-Net di dua jaringan VPC yang Anda buat sebelumnya menggunakan Google Cloud Console, gcloud CLI, dan Compute Engine API.
Direkomendasikan: Tentukan Ubuntu LTS atau Ubuntu Pro sebagai image sistem operasi karena dukungan pengelola paketnya untuk VFIO tanpa UIO dan IOMMU {i>driver<i}. Jika Anda tidak ingin menentukan salah satu sistem operasi ini, sebaiknya tetapkan Debian 11 atau yang lebih baru untuk pemrosesan paket yang lebih cepat.
Konsol
Buat VM yang menggunakan dua subnet jaringan VPC yang Anda buat pada langkah sebelumnya dengan melakukan hal berikut:
Di konsol Google Cloud, buka VM instances.
Halaman VM instances akan terbuka.
Klik
Create instance.Halaman Create an instance akan terbuka.
Di kolom Name, masukkan nama untuk VM Anda.
Di menu Region, pilih region yang sama tempat Anda membuat jaringan pada langkah sebelumnya.
Di menu Zone, pilih zona untuk VM Anda.
Di bagian Machine configuration, lakukan hal berikut:
Pilih salah satu opsi berikut:
Untuk workload umum, pilih tab General destination (default).
Untuk workload berperforma intensif, pilih tab ComputeOptimized.
Untuk workload rasio memori-ke-vCPU tinggi, pilih tab MemoryOptimized.
Untuk beban kerja yang menggunakan Graphics processing unit (GPU), pilih tab GPUs.
Opsional. Jika Anda menentukan GPU di langkah sebelumnya dan ingin mengubah GPU agar terpasang ke VM, lakukan satu atau beberapa tindakan berikut:
Di menu GPU type, pilih salah satu jenis GPU.
Di menu Number of GPU, pilih jumlah GPU.
Di menu Series, pilih deret mesin.
Pada menu Machine type, pilih jenis mesin.
Opsional: Luaskan Advanced configurations, dan ikuti petunjuk untuk menyesuaikan mesin lebih lanjut untuk VM ini.
Opsional: Di bagian Boot disk, klik Change, lalu ikuti petunjuk untuk mengubah disk image.
Luaskan bagian Advanced options.
Luaskan bagian Networking.
Di bagian Network performance configuration, lakukan hal berikut:
Pada menu Network interface card, pilih salah satu opsi berikut:
Untuk menggunakan gVNIC, pilih gVNIC.
Untuk menggunakan VirtIO-Net, pilih VirtIO.
Opsional: Untuk mendapatkan performa jaringan yang lebih tinggi dan latensi yang lebih rendah, centang kotak Enable Tier_1 networking.
Di bagian Network interfaces, lakukan hal berikut:
Di baris default, klik
Delete item "default".Klik Add network interface.
Bagian New network interface akan muncul.
Di menu Network, pilih jaringan bidang kontrol yang Anda buat pada langkah sebelumnya.
Klik Done.
Klik Add network interface lagi.
Bagian New network interface akan muncul.
Di menu Network, pilih jaringan bidang data yang Anda buat di langkah sebelumnya.
Klik Done.
Klik Create.
Halaman VM instances akan terbuka. Diperlukan waktu hingga satu menit sebelum pembuatan VM selesai.
gcloud
Buat VM yang menggunakan dua subnet jaringan VPC yang Anda buat pada langkah sebelumnya menggunakan perintah gcloud compute instances create
dengan flag berikut:
gcloud compute instances create VM_NAME \
--image-family=IMAGE_FAMILY \
--image-project=IMAGE_PROJECT \
--machine-type=MACHINE_TYPE \
--network-interface=network=CONTROL_PLANE_NETWORK_NAME,subnet=CONTROL_PLANE_SUBNET_NAME,nic-type=VNIC_TYPE \
--network-interface=network=DATA_PLANE_NETWORK_NAME,subnet=DATA_PLANE_SUBNET_NAME,nic-type=VNIC_TYPE \
--zone=ZONE
Ganti kode berikut:
VM_NAME
: nama VM.IMAGE_FAMILY
: kelompok image untuk sistem operasi yang akan diinisialisasi dengan boot disk. Atau, Anda dapat menentukan flag--image=IMAGE
dan menggantiIMAGE
dengan versi gambar tertentu. Pelajari cara melihat daftar gambar yang tersedia di project image Compute Engine.IMAGE_PROJECT
: nama project gambar yang berisi disk image.MACHINE_TYPE
: jenis mesin, telah ditentukan atau kustom, untuk VM.VNIC_TYPE
: jenis vNIC yang digunakan untuk jaringan bidang kontrol dan jaringan bidang data. Nilainya harus berupa salah satu dari berikut:Untuk menggunakan gVNIC, tentukan
GVNIC
.Untuk menggunakan VirtIO-Net, tentukan
VIRTIO_NET
.
CONTROL_PLANE_NETWORK_NAME
: nama jaringan bidang kontrol yang Anda buat di langkah sebelumnya.CONTROL_PLANE_SUBNET_NAME
: nama subnet untuk jaringan bidang kontrol yang Anda buat di langkah sebelumnya.DATA_PLANE_NETWORK_NAME
: nama jaringan bidang data yang Anda buat di langkah sebelumnya.DATA_PLANE_SUBNET_NAME
: nama subnet untuk jaringan bidang kontrol yang Anda buat secara otomatis pada langkah sebelumnya.ZONE
: zona tempat membuat VM. Tentukan zona dalam region yang sama dengan subnet yang Anda buat di langkah sebelumnya.
Misalnya, untuk membuat VM bernama dpdk-vm
di zona us-central1-a
yang menentukan persistent disk SSD sebesar 512 GB, jenis mesin C2 yang telah ditetapkan dengan 60 vCPU, jaringan Tier_1, dan data pesawat dan jaringan bidang kontrol
yang menggunakan gVNIC, jalankan perintah berikut:
gcloud compute instances create dpdk-vm \
--boot-disk-size=512GB \
--boot-disk-type=pd-ssd \
--image-project=ubuntu-os-cloud \
--image-family=ubuntu-2004-lts \
--machine-type=c2-standard-60 \
--network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
--network-interface=network=control,subnet=control,nic-type=GVNIC \
--network-interface=network=data,subnet=data,nic-type=GVNIC \
--zone=us-central1-a
API
Buat VM yang menggunakan dua subnet jaringan VPC yang Anda buat pada langkah sebelumnya dengan membuat permintaan POST
ke metode instances.insert
dengan hal berikut kolom:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name": "VM_NAME",
"machineType": "MACHINE_TYPE",
"disks": [
{
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE_FAMILY"
}
}
],
"networkInterfaces": [
{
"network": "global/networks/CONTROL_PLANE_NETWORK_NAME",
"subnetwork": "regions/REGION/subnetworks/CONTROL_PLANE_SUBNET_NAME",
"nicType": "VNIC_TYPE"
},
{
"network": "global/networks/DATAPLANE_NETWORK_NAME",
"subnetwork": "regions/REGION/subnetworks/DATA_PLANE_SUBNET_NAME",
"nicType": "VNIC_TYPE"
}
]
}
Ganti kode berikut:
PROJECT_ID
: project ID project tempat jaringan VPC bidang kontrol dan jaringan VPC bidang data berada.ZONE
: zona tempat membuat VM.VM_NAME
: nama VM.MACHINE_TYPE
: jenis mesin, telah ditentukan atau kustom, untuk VM.IMAGE_PROJECT
: nama project gambar yang berisi disk image.IMAGE_FAMILY
: kelompok image untuk sistem operasi yang akan diinisialisasi dengan boot disk. Atau, Anda dapat menentukan versi image tertentu. Pelajari cara melihat daftar gambar dalam project gambar Compute Engine.CONTROL_PLANE_NETWORK_NAME
: nama jaringan bidang kontrol yang Anda buat di langkah sebelumnya.REGION
: region tempat ada subnet bidang kontrol dan jaringan bidang data.CONTROL_PLANE_SUBNET_NAME
: nama subnet untuk jaringan bidang kontrol yang Anda buat di langkah sebelumnya.VNIC_TYPE
: jenis vNIC yang digunakan untuk jaringan bidang kontrol dan jaringan bidang data. Nilainya harus berupa salah satu dari berikut:Untuk menggunakan gVNIC, tentukan
GVNIC
.Untuk menggunakan VirtIO-Net, tentukan
VIRTIO_NET
.
DATA_PLANE_NETWORK_NAME
: nama jaringan bidang data yang Anda buat di langkah sebelumnya.DATA_PLANE_SUBNET_NAME
: nama subnet untuk jaringan bidang kontrol yang Anda buat di langkah sebelumnya.
Misalnya, untuk membuat VM bernama dpdk-vm
di zona us-central1-a
yang menentukan persistent disk SSD sebesar 512 GB, jenis mesin C2 yang telah ditetapkan dengan 60 vCPU, jaringan Tier_1, dan data pesawat dan jaringan bidang kontrol
yang menggunakan gVNIC, buat permintaan POST
berikut:
POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances
{
"name": "dpdk-vm",
"machineType": "c2-standard-60",
"disks": [
{
"initializeParams": {
"diskSizeGb": "512GB",
"diskType": "pd-ssd",
"sourceImage": "projects/ubuntu-os-cloud/global/images/ubuntu-2004-lts"
},
"boot": true
}
],
"networkInterfaces": [
{
"network": "global/networks/control",
"subnetwork": "regions/us-central1/subnetworks/control",
"nicType": "GVNIC"
},
{
"network": "global/networks/data",
"subnetwork": "regions/us-central1/subnetworks/data",
"nicType": "GVNIC"
}
],
"networkPerformanceConfig": {
"totalEgressBandwidthTier": "TIER_1"
}
}
Untuk opsi konfigurasi lainnya saat membuat VM, baca Membuat dan memulai instance VM.
Menginstal DPDK di VM Anda
Untuk menginstal DPDK di VM, ikuti langkah-langkah berikut:
Hubungkan ke VM yang Anda buat di bagian sebelumnya menggunakan SSH.
Konfigurasikan dependensi untuk penginstalan DPDK:
sudo apt-get update && sudo apt-get upgrade -yq sudo apt-get install -yq build-essential ninja-build python3-pip \ linux-headers-$(uname -r) pkg-config libnuma-dev sudo pip install pyelftools meson
Instal DPDK:
wget https://fast.dpdk.org/rel/dpdk-23.07.tar.xz tar xvf dpdk-23.07.tar.xz cd dpdk-23.07
Untuk membuat DPDK dengan contoh:
meson setup -Dexamples=all build sudo ninja -C build install; sudo ldconfig
Instal driver
Untuk menyiapkan DPDK agar berjalan pada driver, instal driver dengan memilih salah satu metode berikut:
Menginstal VFIO tanpa IOMMU
Untuk menginstal driver VFIO tanpa IOMMU, ikuti langkah-langkah berikut:
Periksa apakah VFIO diaktifkan:
cat /boot/config-$(uname -r) | grep NOIOMMU
Jika VFIO tidak diaktifkan, ikuti langkah-langkah di Menginstal UIO.
Aktifkan mode No-IOMMU di VFIO:
sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'
Instal UIO
Untuk menginstal driver UIO di DPDK, pilih salah satu metode berikut:
Menginstal UIO menggunakan git
Untuk menginstal driver UIO di DPDK menggunakan git
, ikuti langkah-langkah berikut:
Clone
igb_uio
repositori git ke disk di VM Anda:git clone https://dpdk.org/git/dpdk-kmods
Dari direktori induk repositori git yang di-clone, buat modul dan instal driver UIO di DPDK:
pushd dpdk-kmods/linux/igb_uio sudo make sudo depmod && sudo insmod igb_uio.ko popd
Menginstal UIO menggunakan paket Linux
Untuk menginstal driver UIO di DPDK menggunakan paket Linux, ikuti langkah-langkah berikut:
Menginstal
dpdk-igb-uio-dkms
paket:sudo apt-get install -y dpdk-igb-uio-dkms
Instal driver UIO di DPDK:
sudo modprobe igb_uio
Ikat DPDK ke driver, lalu uji
Untuk mengikat DPDK ke driver yang Anda instal di bagian sebelumnya, ikuti langkah-langkah berikut:
Dapatkan nomor slot Peripheral Component Interconnect (PCI) untuk antarmuka jaringan saat ini:
sudo lspci | grep -e "gVNIC" -e "Virtio network device"
Misalnya, jika VM menggunakan
ens4
sebagai antarmuka jaringan, nomor slot PCI adalah00:04.0
.Hentikan antarmuka jaringan yang terhubung ke adaptor jaringan:
sudo ip link set NETWORK_INTERFACE_NAME down
Ganti
NETWORK_INTERFACE_NAME
dengan nama antarmuka jaringan yang ditentukan dalam jaringan VPC. Untuk mengetahui antarmuka jaringan yang digunakan VM, lihat konfigurasi antarmuka jaringan:sudo ifconfig
Ikat DPDK ke driver:
sudo dpdk-devbind.py --bind=DRIVER PCI_SLOT_NUMBER
Ganti kode berikut:
DRIVER
: driver untuk mengikat DPDK. Tentukan salah satu nilai berikut:Driver UIO:
igb_uio
Driver VFIO tanpa IOMMU:
vfio-pci
PCI_SLOT_NUMBER
: nomor slot PCI antarmuka jaringan saat ini dengan format00:0NUMBER.0
.
Buat direktori
/mnt/huge
, lalu buat beberapa halaman besar untuk digunakan DPDK untuk buffering:sudo mkdir /mnt/huge sudo mount -t hugetlbfs -o pagesize=1G none /mnt/huge sudo bash -c 'echo 4 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages' sudo bash -c 'echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages'
Uji apakah DPDK dapat menggunakan antarmuka jaringan yang Anda buat pada langkah sebelumnya dengan menjalankan aplikasi contoh
testpmd
yang disertakan dengan library DPDK:sudo ./build/app/dpdk-testpmd
Untuk informasi selengkapnya tentang menguji DPDK, lihat Opsi Command Line Testpmd.
Lepaskan DPDK
Setelah menggunakan DPDK, Anda dapat melepaskannya dari driver yang telah Anda instal di bagian sebelumnya. Untuk melepaskan DPDK, ikuti langkah-langkah berikut:
Lepaskan DPDK dari driver:
sudo dpdk-devbind.py -u PCI_SLOT_NUMBER
Ganti
PCI_SLOT_NUMBER
dengan nomor slot PCI yang Anda tentukan pada langkah sebelumnya. Jika Anda ingin memverifikasi nomor slot PCI untuk antarmuka jaringan saat ini:sudo lspci | grep -e "gVNIC" -e "Virtio network device"
Misalnya, jika VM menggunakan
ens4
sebagai antarmuka jaringan, nomor slot PCI adalah00:04.0
.Muat ulang driver jaringan Compute Engine:
sudo bash -c 'echo PCI_SLOT_NUMBER > /sys/bus/pci/drivers/VNIC_DIRECTORY/bind' sudo ip link set NETWORK_INTERFACE_NAME up
Ganti kode berikut:
PCI_SLOT_NUMBER
: nomor slot PCI yang Anda tentukan pada langkah sebelumnya.VNIC_DIRECTORY
: direktori vNIC. Bergantung pada jenis vNIC yang Anda gunakan, tentukan salah satu nilai berikut:gVNIC:
gvnic
VirtIO-Net:
virtio-pci
NETWORK_INTERFACE_NAME
: nama antarmuka jaringan yang Anda tentukan di bagian sebelumnya.
Langkah selanjutnya
Tinjau kecepatan bandwidth jaringan untuk jenis mesin Anda.
Pelajari lebih lanjut cara membuat dan mengelola jaringan VPC.
Pelajari lebih lanjut setelan MTU yang lebih tinggi dengan frame jumbo.
Pelajari lebih lanjut pengoptimalan TCP untuk performa jaringan.