本文說明如何在虛擬機器 (VM) 執行個體上啟用資料平面開發套件 (DPDK),加快網路封包處理速度。
DPDK 是一種架構,適用於需要快速封包處理、低延遲和穩定效能的效能密集型應用程式。DPDK 提供一組資料層程式庫和網路介面控制器 (NIC),可略過核心網路,直接在使用者空間中執行。舉例來說,在 VM 上啟用 DPDK,有助於執行下列作業:
網路功能虛擬化 (NFV) 部署作業
軟體定義網路 (SDN) 應用程式
影片串流或網際網路通訊協定語音應用程式
您可以使用下列其中一種虛擬 NIC (vNIC) 類型,在 VM 上執行 DPDK:
建議:gVNIC
高效能、安全且可擴充的虛擬網路介面,專為 Compute Engine 設計,可取代 virtIO,成為新一代 vNIC。
-
開放原始碼乙太網路驅動程式,可讓 VM 有效率地存取實體硬體,例如區塊儲存空間和網路介面卡。
在虛擬環境中執行 DPDK (而非實體硬體) 的一個問題是,虛擬環境缺少 SR-IOV 和 I/O 記憶體管理單元 (IOMMU) 的支援,無法用於高效能應用程式。如要克服這項限制,您必須使用下列其中一個驅動程式,在訪客實體位址上執行 DPDK,而非主機虛擬位址:
無 IOMMU 的虛擬函式 I/O (VFIO)
事前準備
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
為避免執行應用程式時網路連線中斷,請使用兩個虛擬私有雲網路:
控制層的虛擬私有雲網路
資料層的虛擬私有雲網路
這兩個虛擬私有雲網路都必須指定下列項目:
具有專屬 IP 位址範圍的子網路
子網路位於相同區域
相同類型的 VNIC,也就是 gVNIC 或 VirtIO-Net
建立 VM 時:
您必須指定與兩個 VPC 網路子網路相同的區域。
您必須指定要搭配 DPDK 使用的 vNIC 類型。
您必須為 gVNIC 或 VirtIO-Net 指定支援的機器系列。
您只能使用單一堆疊子網路,用於 VM 中的兩個虛擬私有雲網路。
如果您使用 gVNIC 做為兩個虛擬私有雲網路的 vNIC 類型,請確認下列事項:
您必須使用 DPDK 22.11 以上版本。
你只能使用支援的磁碟映像檔。
如要在建立 VM 時啟用個別 VM 的 Tier_1 網路效能,以提升網路效能,請務必指定下列項目:
將 gVNIC 設為 vNIC 類型
具有 30 個以上 vCPU 的支援機器類型
建立資料層的虛擬私有雲網路:
在 Google Cloud 控制台中,前往「VPC networks」(虛擬私有雲網路)。
「VPC networks」(VPC 網路) 頁面隨即開啟。
按一下「建立虛擬私有雲網路」
。「建立虛擬私有雲網路」頁面隨即開啟。
在「Name」(名稱) 欄位中,輸入網路的名稱。
在「New subnet」(新的子網路) 區段中,執行下列操作:
點選「建立」。
「VPC networks」(VPC 網路) 頁面隨即開啟。建立虛擬私有雲網路最多可能需要一分鐘。
為控制平面建立虛擬私有雲網路,並設定防火牆規則,允許透過 SSH 連線至 VM:
再次按一下「建立虛擬私有雲網路」
。「建立虛擬私有雲網路」頁面隨即開啟。
在「Name」(名稱) 欄位中,輸入網路的名稱。
在「New subnet」(新的子網路) 區段中,執行下列操作:
在「IPv4 防火牆規則」分頁中,選取「NETWORK_NAME-allow-ssh」核取方塊。
其中 NETWORK_NAME 是您在先前步驟中指定的網路名稱。
點選「建立」。
「VPC networks」(VPC 網路) 頁面隨即開啟。建立虛擬私有雲網路最多可能需要一分鐘。
如要為資料層建立虛擬私有雲網路,請按照下列步驟操作:
使用
gcloud compute networks create
指令建立虛擬私有雲網路,當中包含手動建立的子網路,並將--subnet-mode
旗標設為custom
。gcloud compute networks create DATA_PLANE_NETWORK_NAME \ --bgp-routing-mode=regional \ --mtu=MTU \ --subnet-mode=custom
更改下列內容:
DATA_PLANE_NETWORK_NAME
:資料層的 VPC 網路名稱。MTU
:最大傳輸單位 (MTU),也就是網路的最大封包大小。這個值必須介於1300
至8896
之間。預設值為1460
。將 MTU 設為高於1460
的值之前,請參閱「最大傳輸單位」。
使用
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
更改下列內容:
DATA_PLANE_SUBNET_NAME
:資料平面網路的子網路名稱。DATA_PLANE_NETWORK_NAME
:您在先前步驟中指定的資料平面網路名稱。DATA_PRIMARY_RANGE
:以 CIDR 標記法表示的子網路有效 IPv4 範圍。REGION
:要建立子網路的區域。
如要為控制平面建立虛擬私有雲網路,並設定允許透過 SSH 連線至 VM 的防火牆規則,請按照下列步驟操作:
使用
gcloud compute networks create
指令建立虛擬私有雲網路,當中包含手動建立的子網路,並將--subnet-mode
旗標設為custom
。gcloud compute networks create CONTROL_PLANE_NETWORK_NAME \ --bgp-routing-mode=regional \ --mtu=MTU \ --subnet-mode=custom
更改下列內容:
CONTROL_PLANE_NETWORK_NAME
:控制平面的 VPC 網路名稱。MTU
:MTU,也就是網路的最大封包大小。這個值必須介於1300
至8896
之間。預設值為1460
。將 MTU 設為高於1460
的值之前,請參閱「最大傳輸單位」。
使用
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
更改下列內容:
CONTROL_PLANE_SUBNET_NAME
:控制層網路的子網路名稱。CONTROL_PLANE_NETWORK_NAME
:您在先前步驟中指定的控制平面網路名稱。CONTROL_PRIMARY_RANGE
:以 CIDR 標記法表示的子網路有效 IPv4 範圍。REGION
:要建立子網路的地區,必須與您在資料平面網路的子網路中指定的地區相符。
使用
gcloud compute firewall-rules create
指令建立虛擬私有雲防火牆規則,允許透過--allow
旗標設為tcp:22
的控制平面網路進行 SSH 連線。gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --action=allow \ --network=CONTROL_PLANE_NETWORK_NAME \ --rules=tcp:22
更改下列內容:
FIREWALL_RULE_NAME
:防火牆規則的名稱。CONTROL_PLANE_NETWORK_NAME
:您在先前步驟中建立的控制平面網路名稱。
如要為資料層建立虛擬私有雲網路,請按照下列步驟操作:
建立虛擬私有雲網路,並透過向
networks.insert
方法發出POST
要求,手動建立子網路,並將autoCreateSubnetworks
欄位設為false
。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "DATA_PLANE_NETWORK_NAME", "mtu": MTU }
更改下列內容:
PROJECT_ID
:目前專案的專案 ID。DATA_PLANE_NETWORK_NAME
:資料平面網路的名稱。MTU
:最大傳輸單位 (MTU),也就是網路的最大封包大小。這個值必須介於1300
至8896
之間。預設值為1460
。將 MTU 設為高於1460
的值之前,請參閱「最大傳輸單位」。
如要為虛擬私有雲資料層網路建立子網路,請對
subnetworks.insert
方法發出POST
要求。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" }
更改下列內容:
PROJECT_ID
:資料平面網路所在專案的專案 ID。REGION
:要建立子網路的區域。DATA_PRIMARY_RANGE
:新子網路的主要 IPv4 範圍,採用 CIDR 標記法。DATA_PLANE_SUBNET_NAME
:您在上一步建立的資料平面網路子網路名稱。DATA_PLANE_NETWORK_NAME
:您在上一步建立的資料平面網路名稱。
如要為控制平面建立虛擬私有雲網路,並設定允許透過 SSH 存取 VM 的防火牆規則,請按照下列步驟操作:
建立虛擬私有雲網路,並透過向
networks.insert
方法發出POST
要求,手動建立子網路,並將autoCreateSubnetworks
欄位設為false
。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks { "autoCreateSubnetworks": false, "name": "CONTROL_PLANE_NETWORK_NAME", "mtu": MTU }
更改下列內容:
PROJECT_ID
:目前專案的專案 ID。CONTROL_PLANE_NETWORK_NAME
:控制平面的網路名稱。MTU
:MTU,也就是網路的最大封包大小。這個值必須介於1300
至8896
之間。預設值為1460
。將 MTU 設為高於1460
的值之前,請參閱「最大傳輸單位」。
如要為虛擬私有雲資料控制網路建立子網路,請對
subnetworks.insert
方法發出POST
要求。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" }
更改下列內容:
PROJECT_ID
:控制平面網路所在的專案 ID。REGION
:要建立子網路的區域。CONTROL_PRIMARY_RANGE
:新子網路的主要 IPv4 範圍,採用 CIDR 標記法。CONTROL_PLANE_SUBNET_NAME
:您在上一步建立的控制平面網路子網路名稱。CONTROL_PLANE_NETWORK_NAME
:您在上一步建立的控制平面網路名稱。
建立虛擬私有雲防火牆規則,允許透過向
firewalls.insert
方法發出POST
要求,以 SSH 連線至控制平面網路。 在要求中,將IPProtocol
欄位設為tcp
,並將ports
欄位設為22
。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" }
更改下列內容:
PROJECT_ID
:控制平面網路所在的專案 ID。CONTROL_PLANE_NETWORK_NAME
:您在先前步驟中建立的控制平面網路名稱。
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
「VM instances」(VM 執行個體) 頁面隨即開啟。
按一下「建立執行個體」
。「Create an instance」(建立執行個體) 頁面會隨即開啟。
在「Name」(名稱) 欄位,輸入 VM 的名稱。
在「Region」(區域) 選單中,選取您在先前步驟中建立網路的相同區域。
在「Zone」(可用區) 選單中,選取 VM 的可用區。
在「機器設定」專區中,執行下列操作:
選取下列選項之一:
如為一般工作負載,請選取「一般用途」分頁標籤 (預設)。
如要處理需要大量運算資源的工作負載,請選取「運算最佳化」分頁標籤。
如要處理記憶體/vCPU 比率較高的工作負載,請選取「記憶體最佳化」分頁標籤。
如要查看使用圖形處理器 (GPU) 的工作負載,請選取「GPU」分頁標籤。
(選用步驟) 如果您在上一個步驟中指定 GPU,且想要變更要連結至 VM 的 GPU,請執行下列一或多項操作:
在「GPU type」(GPU 類型) 選單中,選取 GPU 類型。
在「Number of GPUs」(GPU 數量) 選單中,選取 GPU 數量。
在「系列」選單中,選取機器系列。
在「Machine type」(機器類型) 選單中,選取機器類型。
選用:展開「進階設定」,然後按照提示進一步自訂這個 VM 的機器。
選用:在「Boot disk」(開機磁碟) 區段中,按一下「Change」(變更),然後按照提示變更磁碟映像檔。
展開「Advanced options」(進階選項) 區段。
展開「Networking」(網路) 區段。
在「網路效能設定」部分,執行下列操作:
在「網路介面卡」選單中,選取下列其中一個選項:
如要使用 gVNIC,請選取「gVNIC」gVNIC。
如要使用 VirtIO-Net,請選取「VirtIO」VirtIO。
選用步驟:如要提升網路效能並縮短延遲時間,請勾選「啟用 Tier_1 網路」核取方塊。
在「Network interfaces」(網路介面) 區段中,執行下列操作:
在「default」列中,按一下
「Delete item "default"」(刪除「default」項目)。按一下「新增網路介面」。
系統會顯示「New network interface」(新增網路介面) 區段。
在「Network」(網路) 選單中,選取您在先前步驟中建立的控制層網路。
按一下 [完成]。
再次按一下「新增網路介面」。
系統會顯示「New network interface」(新增網路介面) 區段。
在「Network」(網路) 選單中,選取您在先前步驟中建立的資料平面網路。
按一下 [完成]。
點選「建立」。
「VM instances」(VM 執行個體) 頁面隨即開啟。建立 VM 最多可能需要一分鐘。
VM_NAME
:VM 名稱。IMAGE_FAMILY
:用來初始化開機磁碟的作業系統映像檔系列。或者,您也可以指定--image=IMAGE
旗標,並將IMAGE
換成特定版本的映像檔。瞭解如何查看 Compute Engine 映像檔專案中的可用映像檔清單。IMAGE_PROJECT
:包含磁碟映像檔的映像檔專案名稱。VNIC_TYPE
:用於控制層和資料層網路的 vNIC 類型。這個值必須是下列其中一個:如要使用 gVNIC,請指定
GVNIC
。如要使用 VirtIO-Net,請指定
VIRTIO_NET
。
CONTROL_PLANE_NETWORK_NAME
:您在前幾個步驟中建立的控制平面網路名稱。CONTROL_PLANE_SUBNET_NAME
:您在前幾個步驟中建立的控制平面網路子網路名稱。DATA_PLANE_NETWORK_NAME
:您在上一個步驟中建立的資料平面網路名稱。DATA_PLANE_SUBNET_NAME
:您在上一個步驟中自動建立的控制平面網路子網路名稱。ZONE
:要在哪個可用區建立 VM。在您於前一個步驟建立子網路的相同區域中,指定一個可用區。PROJECT_ID
:控制平面 VPC 網路和資料平面 VPC 網路所在的專案 ID。ZONE
:要在哪個可用區建立 VM。VM_NAME
:VM 名稱。IMAGE_PROJECT
:包含磁碟映像檔的映像檔專案名稱。IMAGE_FAMILY
:用來初始化開機磁碟的作業系統映像檔系列。您也可以指定特定版本的映像檔。瞭解如何查看 Compute Engine 映像檔專案中的映像檔清單。CONTROL_PLANE_NETWORK_NAME
:您在前幾個步驟中建立的控制平面網路名稱。REGION
:控制層和資料層網路的子網路所在區域。CONTROL_PLANE_SUBNET_NAME
:您在前幾個步驟中建立的控制平面網路子網路名稱。VNIC_TYPE
:用於控制層和資料層網路的 vNIC 類型。這個值必須是下列其中一個:如要使用 gVNIC,請指定
GVNIC
。如要使用 VirtIO-Net,請指定
VIRTIO_NET
。
DATA_PLANE_NETWORK_NAME
:您在上一個步驟中建立的資料平面網路名稱。DATA_PLANE_SUBNET_NAME
:您在前幾個步驟中建立的控制平面網路子網路名稱。使用 SSH 連線至上一節建立的 VM。
設定 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
安裝 DPDK:
wget https://fast.dpdk.org/rel/dpdk-23.07.tar.xz tar xvf dpdk-23.07.tar.xz cd dpdk-23.07
如要使用範例建構 DPDK,請執行下列操作:
meson setup -Dexamples=all build sudo ninja -C build install; sudo ldconfig
檢查 VFIO 是否已啟用:
cat /boot/config-$(uname -r) | grep NOIOMMU
如果 VFIO 未啟用,請按照「安裝 UIO」一文中的步驟操作。
在 VFIO 中啟用「No-IOMMU mode」(無 IOMMU 模式):
sudo bash -c 'echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode'
將
igb_uio
git 存放區複製到 VM 的磁碟:git clone https://dpdk.org/git/dpdk-kmods
從複製的 Git 存放區的父項目錄中,建構模組並在 DPDK 上安裝 UIO 驅動程式:
pushd dpdk-kmods/linux/igb_uio sudo make sudo depmod && sudo insmod igb_uio.ko popd
-
sudo apt-get install -y dpdk-igb-uio-dkms
在 DPDK 上安裝 UIO 驅動程式:
sudo modprobe igb_uio
取得目前網路介面的周邊元件互連 (PCI) 插槽編號:
sudo lspci | grep -e "gVNIC" -e "Virtio network device"
舉例來說,如果 VM 使用
ens4
做為網路介面,PCI 插槽編號就是00:04.0
。停止連線至網路介面的網路介面卡:
sudo ip link set NETWORK_INTERFACE_NAME down
將
NETWORK_INTERFACE_NAME
替換為虛擬私有雲網路中指定的網路介面名稱。如要查看 VM 使用的網路介面,請查看網路介面的設定:sudo ifconfig
將 DPDK 繫結至驅動程式:
sudo dpdk-devbind.py --bind=DRIVER PCI_SLOT_NUMBER
更改下列內容:
DRIVER
:要繫結 DPDK 的驅動程式。請指定下列其中一個值:UIO 驅動程式:
igb_uio
不含 IOMMU 的 VFIO 驅動程式:
vfio-pci
PCI_SLOT_NUMBER
:目前網路介面的 PCI 插槽編號,格式為00:0NUMBER.0
。
建立
/mnt/huge
目錄,然後為 DPDK 建立一些巨頁,供緩衝區使用: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'
執行 DPDK 程式庫隨附的
testpmd
範例應用程式,測試 DPDK 是否能使用您在先前步驟中建立的網路介面:sudo ./build/app/dpdk-testpmd
如要進一步瞭解如何測試 DPDK,請參閱「Testpmd 指令列選項」。
從驅動程式解除繫結 DPDK:
sudo dpdk-devbind.py -u PCI_SLOT_NUMBER
將
PCI_SLOT_NUMBER
替換為您在先前步驟中指定的 PCI 插槽編號。如要驗證目前網路介面的 PCI 插槽編號,請按照下列步驟操作:sudo lspci | grep -e "gVNIC" -e "Virtio network device"
舉例來說,如果 VM 使用
ens4
做為網路介面,PCI 插槽編號就是00:04.0
。重新載入 Compute Engine 網路驅動程式:
sudo bash -c 'echo PCI_SLOT_NUMBER > /sys/bus/pci/drivers/VNIC_DIRECTORY/bind' sudo ip link set NETWORK_INTERFACE_NAME up
更改下列內容:
PCI_SLOT_NUMBER
:您在先前步驟中指定的 PCI 插槽編號。VNIC_DIRECTORY
:vNIC 的目錄。根據您使用的 vNIC 類型,指定下列其中一個值:gVNIC:
gvnic
VirtIO-Net:
virtio-pci
NETWORK_INTERFACE_NAME
:您在上一節中指定的網路介面名稱。
查看機器類型的網路頻寬速率。
進一步瞭解如何建立及管理虛擬私有雲網路。
進一步瞭解使用巨型封包的較高 MTU 設定。
進一步瞭解如何透過 TCP 最佳化提升網路效能。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
需求條件
建立要執行 DPDK 的 VM 時,請確認下列事項:
限制
在 VM 上執行 DPDK 時,會受到下列限制:
設定 VM 執行 DPDK
本節說明如何建立 VM 來執行 DPDK。
建立虛擬私有雲網路
使用 Google Cloud 控制台、Google Cloud CLI 或 Compute Engine API,為資料層和控制層建立兩個 VPC 網路。您稍後可以在建立 VM 時指定這些網路。
控制台
gcloud
API
如要進一步瞭解建立虛擬私有雲網路時的設定選項,請參閱「建立及管理虛擬私有雲網路」。
建立使用虛擬私有雲網路的 DPDK VM
使用 Google Cloud 主控台、gcloud CLI 和 Compute Engine API,在先前建立的兩個 VPC 網路中,建立啟用 gVNIC 或 virtIO-Net 的 VM。
建議指定 Ubuntu LTS 或 Ubuntu Pro 做為作業系統映像檔,因為這兩者都支援 UIO 和不含 IOMMU 的 VFIO 驅動程式的套件管理員。如果不想指定任何作業系統,建議指定 Debian 11 以上版本,以加快封包處理速度。
控制台
建立 VM,使用您在先前步驟中建立的兩個虛擬私有雲網路子網路,方法如下:
gcloud
使用
gcloud compute instances create
指令搭配下列旗標,建立使用您在上一個步驟中建立的兩個虛擬私有雲網路子網路的 VM: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
更改下列內容:
舉例來說,如要在
us-central1-a
區域中建立名為dpdk-vm
的 VM,並指定 512 GB 的 SSD 永久磁碟、具有 60 個 vCPU 的預先定義 C2 機器類型、Tier_1 網路,以及同時使用 gVNIC 的資料層和控制層網路,請執行下列指令: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
向
instances.insert
方法發出POST
要求,並填入下列欄位,即可建立使用您在先前步驟中建立的兩個虛擬私有雲網路子網路的 VM: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" } ] }
更改下列內容:
舉例來說,如要在
us-central1-a
區域中建立名為dpdk-vm
的 VM,並指定 512 GB 的 SSD 永久磁碟、具有 60 個 vCPU 的預先定義 C2 機器類型、Tier_1 網路,以及同時使用 gVNIC 的資料層和控制層網路,請發出下列POST
要求: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" } }
如要進一步瞭解建立 VM 時的設定選項,請參閱「建立及啟動 VM 執行個體」。
在 VM 上安裝 DPDK
如要在 VM 上安裝 DPDK,請按照下列步驟操作:
安裝驅動程式
如要準備在驅動程式上執行 DPDK,請選用下列其中一種方法安裝驅動程式:
安裝不含 IOMMU 的 VFIO
如要安裝不含 IOMMU 的 VFIO 驅動程式,請按照下列步驟操作:
安裝 UIO
如要在 DPDK 上安裝 UIO 驅動程式,請選取下列其中一種方法:
使用 Git 安裝 UIO
如要使用
git
在 DPDK 上安裝 UIO 驅動程式,請按照下列步驟操作:使用 Linux 套件安裝 UIO
如要使用 Linux 套件在 DPDK 上安裝 UIO 驅動程式,請按照下列步驟操作:
將 DPDK 繫結至驅動程式並進行測試
如要將 DPDK 繫結至上一節安裝的驅動程式,請按照下列步驟操作:
解除繫結 DPDK
使用 DPDK 後,您可以從先前章節安裝的驅動程式取消繫結。如要取消繫結 DPDK,請按照下列步驟操作:
後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-21 (世界標準時間)。
-