Google Virtual NIC (gVNIC) 是專為 Compute Engine 設計的虛擬網路介面,可做為以 virtIO 為基礎的乙太網路驅動程式替代方案。
gVNIC 是 VirtIO 的後繼網路介面,也是 Compute Engine 中唯一支援的網路介面,適用於所有新的機器類型 (第 3 代以上)。較新的機器系列和網路功能需要 gVNIC,而非 VirtIO。將 gVNIC 做為新式 I/O 介面與 Compute Engine VM 搭配使用,可帶來下列優勢:
- 提供更優異的效能。
- 減少資源爭奪問題,提升一致性。
- 導入 VirtIO 無法提供的全新網路功能。
事前準備
- 如果搭配 Windows Server 或 Windows 用戶端映像檔使用 gVNIC,請確認 gVNIC 驅動程式使用 GooGet 套件
1.0.0@45以上版本。 -
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上的分頁,瞭解如何使用範例:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
- 設定預設地區和區域。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
使用 gVNIC 的時機
所有機器系列和世代都支援 gVNIC,建議使用這項功能。 部分世代僅支援 gVNIC。其他則需要在特殊條件下使用 gVNIC。如要判斷機器系列的代別,請參閱「Compute Engine 術語」。
各代機器系列使用 gVNIC 的情況如下:
- 第三代以上的機器系列 (不含裸機執行個體) 僅支援 gVNIC 做為虛擬網路介面。
如果第一代或第二代機器系列符合下列任一條件,就必須使用 gVNIC 做為執行個體的虛擬網路介面:
- 執行個體在 Arm CPU 平台上執行。
- 執行個體是機密 VM 執行個體。
執行個體必須達到 50 到 100 Gbps 的網路速度。這適用於符合下列條件的執行個體:
- 支援各個 VM 的 Tier_1 網路效能的執行個體
- 支援這些較高網路頻寬的 A2、G2 和 N1 執行個體
定價
如要查看 Tier_1 網路的最新價格,請參閱 VM 執行個體定價頁面。
如要查看其他可查詢定價資訊的方法,請參閱 Compute Engine 定價。
作業系統支援
在 Compute Engine 上,您可以選擇在任何支援的公開作業系統 (OS) 映像檔上使用 gVNIC。在下列情況下,您可以手動安裝 gVNIC 驅動程式:
- OS 映像檔未包含 gVNIC 驅動程式
- OS 映像檔未採用最新版 gVNIC 驅動程式
如要瞭解支援的作業系統,請參閱介面分頁的作業系統。此外,請查看「網路功能」分頁,瞭解網路功能支援情形。
在不支援的作業系統上使用
如果作業系統映像檔支援 gVNIC,但未包含最新版本的 gVNIC 驅動程式,您可以從 GitHub 下載最新版本的驅動程式。
您可以在 Linux 或 Windows VM 上手動設定及安裝最新版 gVNIC 驅動程式。
將 VM 中的作業系統更新為使用 gVNIC 後,請根據該作業系統映像檔建立自訂作業系統映像檔。然後,您可以使用自訂 OS 映像檔,在該作業系統上建立使用 gVNIC 的其他 VM。如要進一步瞭解如何使用自訂 OS 映像檔建立 VM,請參閱本頁的「建立支援 gVNIC 的自訂 OS 映像檔」。
請按照下列程序手動設定及安裝最新版 gVNIC 驅動程式。
- 如為 Linux VM,請參閱「Linux 核心驅動程式 Compute Engine 虛擬乙太網路」。
- 如要瞭解在 FreeBSD 上執行的 VM,請參閱「Compute Engine 虛擬乙太網路 FreeBSD 驅動程式」。
- 如果是 Windows VM,請參閱「Compute Engine 虛擬乙太網路的 Windows 驅動程式」。
搭配 Compute Engine VM 使用 gVNIC 的總覽
如要建立使用 gVNIC 的 VM,請完成下列步驟:
- 選擇支援 gVNIC 的公開 OS 映像檔,或建立標記為使用 gVNIC 的自訂 OS 映像檔。
- 使用公開或自訂 OS 映像檔建立 VM。建立 VM 時,請將網路介面設定為使用 gVNIC。
- 確認 gVNIC 已啟用。
如有任何問題,請參閱「排解 Google 虛擬 NIC 問題」。
建立支援 gVNIC 的自訂 OS 映像檔
您可以使用 Google Cloud CLI 或 REST 建立 OS 映像檔。如需建立自訂 OS 映像檔的詳細資訊和最佳做法,請參閱「建立自訂 OS 映像檔」。
gcloud
選取支援 gVNIC 的 OS 映像檔或映像檔系列。 詳情請參閱「作業系統詳細資料」。
使用上一步選取的 OS 映像檔或映像檔系列,建立自訂 OS 映像檔,並以
GVNIC標記這個 OS 映像檔。如要建立自訂 OS 映像檔,請使用gcloud compute images create指令。舉例來說,下列指令會建立支援 gVNIC 的自訂 OS 映像檔,並以特定 OS 映像檔為基礎。gcloud compute images create IMAGE_NAME \ --source-image=SOURCE_IMAGE \ --source-image-project=SOURCE_IMAGE_PROJECT \ --guest-os-features=GVNIC更改下列內容:
IMAGE_NAME:要建立的映文件名稱SOURCE_IMAGE:支援 gVNIC 的特定 OS 映像檔,例如:rocky-linux-8-optimized-gcp-v20220719如要在映像檔系列中使用最新的 OS 映像檔,請將
--source-image旗標替換為--source-image-family旗標,並將其值設為支援 gVNIC 的映像檔系列。例如:--source-image-family=rocky-linux-8-optimized-gcp。SOURCE_IMAGE_PROJECT:包含來源 OS 映像檔或映像檔系列的專案名稱
範例
如要使用 Compute Engine
rocky-linux-8-optimized-gcp映像檔系列的最新 OS 映像檔,建立 Rocky Linux 8 Optimized for Google Cloud OS 映像檔,請執行下列指令:gcloud compute images create IMAGE_NAME \ --source-image-family=rocky-linux-8-optimized-gcp \ --source-image-project=rocky-linux-cloud \ --guest-os-features=GVNIC如要進一步瞭解映像檔系列的使用時機,請參閱「映像檔系列最佳做法」。
REST
選取支援 gVNIC 的 OS 映像檔或映像檔系列。詳情請參閱「作業系統詳細資料」。
使用上一步選取的 OS 映像檔或映像檔系列,建立 OS 映像檔,並以
GVNIC標記這個 OS 映像檔。如要建立 OS 映像檔,請使用images.insert方法。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images { "name":"IMAGE_NAME", "sourceImage":"SOURCE_IMAGE_URI", "guestOsFeatures":[ { "type":"GVNIC" } ] }更改下列內容:
PROJECT_ID:要建立新圖片的專案 IDIMAGE_NAME:自訂映像檔的名稱SOURCE_IMAGE_URI:您要使用的特定 OS 映像檔或映像檔系列的 URI例如:
- 特定 OS 映像檔:
"sourceImage": "projects/rocky-linux-cloud/global/images/rocky-linux-8-optimized-gcp-v20220719" - 映像檔系列:
"sourceImage": "projects/rocky-linux-cloud/global/images/family/rocky-linux-8-optimized-gcp"
指定映像檔系列時,Compute Engine 會從該系列中未淘汰的最新 OS 映像檔建立 VM。如要進一步瞭解何時該使用映像檔系列,請參閱映像檔系列最佳做法。
- 特定 OS 映像檔:
建立支援 gVNIC 的 VM
您可以透過支援的公開 OS 映像檔建立 VM,也可以使用按照「建立支援 gVNIC 的自訂 OS 映像檔」一文步驟建立的自訂 OS 映像檔。
您也可以選擇在 VM 上啟用 DPDK,加快網路封包處理速度、降低延遲,並提升效能穩定性。
對於支援多個網路介面 (NIC) 的 VM,您可以將不同類型的 NIC 連接至 VM,因為介面支援是依據每個 NIC 設定。雖然系統支援這種做法,但我們不建議這麼設定。對於支援多個 NIC 的 VM,請務必在建立 VM 時,為每個網路介面指定 nic-type=GVNIC。
使用公開 OS 映像檔建立 VM
如要使用支援 gVNIC 的公開 OS 映像檔建立 VM,請按照「建立具有高頻寬設定的 VM 和容器」一文中的操作說明進行。
使用自訂 OS 映像檔建立 VM
如果您使用的不是支援 gVNIC 的公開 OS 映像檔,請先建立支援 gVNIC 的自訂 OS 映像檔。接著,您可以使用Google Cloud 控制台、Google Cloud CLI 或 REST,透過該自訂 OS 映像檔建立 VM。
控制台
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
輸入 VM 執行個體的「名稱」。
選取要建立 VM 的「可用區」。
在「Boot disk」(開機磁碟) 區段,按一下 [Change] (變更)。
在「開機磁碟」面板的「自訂映像檔」分頁中,完成下列步驟:
- 選擇含有您先前建立 OS 映像檔的來源專案。
- 從「圖片」下拉式選單中選取圖片。
- 按一下「選取」。
如要將 gVNIC 設為網路介面,請展開「Advanced options」(進階選項) 專區,然後執行下列操作:
- 展開「Networking」(網路) 區段。
- 在「網路介面卡」中選取
gVNIC。
視需要進一步自訂 VM。
按一下「建立」,建立 VM 執行個體。
gcloud
使用
gcloud compute instances create指令建立 VM。針對開機磁碟,指定您稍早建立的自訂 OS 映像檔。針對網路介面,將nic-type旗標的值設為GVNIC。gcloud compute instances create VM_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --image=IMAGE_NAME \ --image-project=YOUR_IMAGE_PROJECT \ --network-interface=nic-type=GVNIC更改下列內容:
VM_NAME:新 VM 的名稱。ZONE:要建立 VM 的可用區。MACHINE_TYPE:建立 VM 執行個體時要使用的機型。如未指定機型,則預設為n1-standard-1。IMAGE_NAME:在上一個步驟中建立的 OS 映像檔。YOUR_IMAGE_PROJECT:包含 OS 映像檔的專案名稱。
選用:確認 Compute Engine 已建立 VM,且
nicType已設為GVNIC。gcloud compute instances describe VM_NAME \ --zone=ZONE
更改下列內容:
VM_NAME:VM 的名稱。ZONE:您建立 VM 的可用區。
範例
如要在
us-west1-b可用區中建立 Rocky Linux 8 VM,並使用專案my-project-12345中名為my-gvnic-rocky8的 OS 映像檔,以及n1-standard-1機型,請執行下列指令:gcloud compute instances create my-rocky-linux-vm \ --zone=us-west1-b \ --image=my-gvnic-rocky8 \ --image-project=my-project-12345 \ --network-interface=nic-type=GVNIC注意事項
--network-interface旗標具有下列子層級旗標:--address:為 VM 指派 IP 位址--network:介面所屬的網路--network-tier:介面的網路層級--subnet:介面所屬的子網路。如果也指定了--network,子網路必須是指定網路的一部分。--private-network-ip:指定要指派給 VM 的 RFC 1918 IP。
如需完整清單,請參閱
--network-interface旗標。
REST
使用 instances.insert 方法建立 VM。
- 針對開機磁碟,指定您稍早建立的自訂 OS 映像檔。
- 針對網路介面,將
nicType欄位的值設為GVNIC。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
"name":"VM_NAME",
"networkInterfaces":[
{
"network":"NETWORK",
"nicType":"GVNIC",
"subnet":"SUBNET_NAME"
}
],
"disks":[
{
"initializeParams":{
"sourceImage":"projects/YOUR_IMAGE_PROJECT/global/images/IMAGE_NAME"
},
"boot":true
}
]
}
更改下列內容:
PROJECT_ID:要在其中建立 VM 的專案 ID。ZONE:要建立 VM 的可用區。VM_NAME:新 VM 的名稱。NETWORK:這個 VM 的網路資源網址。如果未指定網路和子網路,系統會使用預設網路global/networks/default。SUBNET_NAME:子網路名稱。網路是從指定子網路推測得出。此為選填欄位。YOUR_IMAGE_PROJECT:包含 OS 映像檔的專案名稱。IMAGE_NAME:在上一個步驟中建立的 OS 映像檔。
確認已啟用 gVNIC
Linux
您可以使用 lshw 工具,擷取虛擬機器的硬體設定詳細資訊。
如要在 Linux VM 執行個體上安裝 lshw 工具,請開啟與 VM 的 SSH 連線,然後執行下列指令:
sudo apt-get install lshw -y
如要判斷 VM 是否使用 gVNIC 網路介面,請執行下列指令:
sudo lshw -class network
輸出結果會與下列內容相似:
*-network
description: Ethernet interface
product: Compute Engine Virtual Ethernet [gVNIC]
vendor: Google, Inc.
physical id: 3
bus info: pci@0000:00:03.0
logical name: ens3
version: 00
serial: 42:01:0a:80:00:6f
width: 32 bits
clock: 33MHz
capabilities: msix bus_master cap_list ethernet physical
configuration: autonegotiation=off broadcast=yes driver=gve driverversion=1.0.0
duplex=full ip=10.128.0.111 latency=0 link=yes multicast=yes port=twisted pair
resources: irq:11 memory:c0203000-c0203fff memory:c0200000-c02000ff memory:c0100000-c01fffff
Windows
- 在 Windows VM 執行個體上開啟「Device Manager」(裝置管理員)。
- 在「Network Adapters」(網路介面卡) 底下,會看到:
"Google Ethernet Adapter"
疑難排解
如要排解 gVNIC 問題,請參閱「排解 Google Virtual NIC 問題」。
後續步驟
- 連線至執行個體。
- 在新的執行個體中新增永久磁碟。
- 設定各個 VM 的 Tier_1 網路效能。
- 變更虛擬私有雲網路的 MTU 設定。
- 瞭解巨型封包。