使用 Google Virtual NIC

Google Virtual NIC (gVNIC) 是專為 Compute Engine 設計的虛擬網路介面,可做為以 virtIO 為基礎的乙太網路驅動程式替代方案。

gVNIC 是 VirtIO 的新一代網路介面,可取代 VirtIO-Net,成為 Compute Engine 中所有新機型 (第 3 代及後續版本) 唯一支援的網路介面。較新的機器系列和網路功能需要 gVNIC,而非 VirtIO。使用 gVNIC 做為 Compute Engine VM 的現代化 I/O 介面,可帶來下列優勢:

  • 提供更優異的效能。
  • 減少資源爭奪問題,提升一致性。
  • 推出 VirtIO 無法提供的新網路功能。

事前準備

  • 如果您搭配 Windows Server 或 Windows 用戶端映像檔使用 gVNIC,請確認 gVNIC 驅動程式使用 GooGet 套件 1.0.0@45 以上版本。
  • 如果尚未設定驗證,請先完成設定。驗證機制會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。

gVNIC 的使用時機

所有機器家族和世代都支援並建議使用 gVNIC。部分世代僅支援 gVNIC。其他則要求在特殊條件下使用 gVNIC。如要找出機器系列的世代,請參閱「Compute Engine 術語」。

gVNIC 的使用情形依機器系列世代而異,如下所示:

  • 第三代和更新版本的機器系列 (不含裸機執行個體) 僅支援虛擬網路介面的 gVNIC。
  • 如果符合下列任一條件,第一代或第二代機器系列必須使用 gVNIC 做為執行個體的虛擬網路介面:

定價

如要查看 Tier_1 網路的最新價格,請參閱 VM 執行個體定價頁面。

如需可用於查詢定價資訊的其他方法清單,請參閱「Compute Engine 定價」。

作業系統支援

在 Compute Engine 上,您可以選擇在任何支援的公開作業系統 (OS) 映像檔上使用 gVNIC。在下列情況下,您可以手動安裝 gVNIC 驅動程式:

  • OS 映像檔不含 gVNIC 驅動程式
  • OS 映像檔未安裝最新版 gVNIC 驅動程式

如要瞭解支援的作業系統,請參閱作業系統的「Interfaces」(介面) 分頁。另外,請查看「網路功能」分頁,瞭解網路功能支援。

在不支援的作業系統上使用

如果 OS 映像檔支援 gVNIC,但未包含最新版本 gVNIC 驅動程式,您可以從 GitHub 下載最新版本驅動程式。

您可以在 Linux 或 Windows VM 手動設定及安裝最新版本 gVNIC 驅動程式。

在 VM 中更新作業系統以使用 gVNIC 後,請根據該 OS 映像檔建立自訂 OS 映像檔。接著,您可以使用自訂 OS 映像檔,建立在該作業系統上使用 gVNIC 的其他 VM。如要進一步瞭解如何使用自訂 OS 映像檔建立 VM,請參閱本頁的「建立支援 gVNIC 的自訂 OS 映像檔」一節。

請按照下列程序,手動設定及安裝最新版本的 gVNIC 驅動程式。

在 Windows 安裝或更新 gVNIC 驅動程式

在 Windows VM 上,gVNIC 驅動程式會使用 GooGet 封裝及發布。所有 Google 提供的 Windows 映像檔都預先設定了 GooGet 套件管理工具。

如要在 Windows VM 上安裝或更新 gVNIC 驅動程式,請完成下列步驟:

  1. 連線至 Windows VM。

  2. 以管理員身分開啟 PowerShell 或命令提示字元。

  3. 檢查是否已安裝 gVNIC 驅動程式套件:

    googet installed
    

    在輸出內容中,確認是否列出 google-compute-engine-driver-gvnic 套件。

  4. 根據輸出內容,執行下列任一操作:

    • 如果清單中沒有該套件,請安裝驅動程式:

      googet install google-compute-engine-driver-gvnic
      
    • 如果套件已列出,請將驅動程式更新至最新版本:

      googet update google-compute-engine-driver-gvnic
      

      或者,執行 googet update,更新 Windows 執行個體上所有已安裝的套件。

  5. 確認 VM 已安裝並啟用 gVNIC 驅動程式。詳情請參閱「確認 gVNIC 已啟用」。

如要進一步瞭解 Windows gVNIC 驅動程式,或要從來源檔案建構驅動程式,請參閱 GitHub 上的 Compute Engine 虛擬乙太網路的 Windows 驅動程式。

搭配使用 gVNIC 與 Compute Engine VM 的總覽

如要建立使用 gVNIC 的 VM,請完成下列步驟:

  1. 選擇支援 gVNIC 的公開 OS 映像檔,或建立標記為使用 gVNIC 的自訂 OS 映像檔。
  2. 使用公開或自訂 OS 映像檔建立 VM。建立 VM 時,請將網路介面設為使用 gVNIC。
  3. 確認已啟用 gVNIC。

如果遇到任何問題,請參閱「排解 Google 虛擬 NIC 問題」。

建立支援 gVNIC 的自訂 OS 映像檔

您可以使用 Google Cloud CLI 或 REST 建立 OS 映像檔。如需建立自訂 OS 映像檔的詳細資訊和最佳做法,請參閱「建立自訂 OS 映像檔」。

gcloud

  1. 選取支援 gVNIC 的 OS 映像檔或映像檔系列。詳情請參閱「作業系統詳細資料」。

  2. 使用上一步選取的 OS 映像檔或映像檔系列,建立自訂 OS 映像檔,並為這個 OS 映像檔加上 GVNIC 標記。如要建立自訂 OS 映像檔,請使用 gcloud compute images create 指令。舉例來說,下列指令會根據特定 OS 映像檔,建立支援 gVNIC 的自訂 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 映像檔,建立針對 Google Cloud 最佳化的 Rocky Linux 8 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

  1. 選取支援 gVNIC 的 OS 映像檔或映像檔系列。詳情請參閱「作業系統詳細資料」。

  2. 使用上一步選取的 OS 映像檔或映像檔系列,建立 OS 映像檔,並為這個 OS 映像檔加上 GVNIC 標記。如要建立 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:要在其中建立新映文件的專案 ID
    • IMAGE_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。如要進一步瞭解何時應使用映像檔系列,請參閱「映像檔系列最佳做法」。

建立支援 gVNIC 的 VM

您可以使用支援的公開 OS 映像檔建立 VM,也可以按照「建立支援 gVNIC 的自訂 OS 映像檔」中的步驟,使用您建立的自訂 OS 映像檔。

您也可以選擇在 VM 上啟用 DPDK,加快網路封包處理速度、降低延遲時間,並維持穩定效能。

如果 VM 支援多個網路介面 (NIC),您可以將不同類型的 NIC 連結至 VM,因為介面支援是依 NIC 設定。雖然系統支援這種設定,但我們不建議這麼做。如果 VM 支援多個 NIC,請務必在建立 VM 時,為每個網路介面指定 nic-type=GVNIC。

使用公開 OS 映像檔建立 VM

如要使用支援 gVNIC 的公開 OS 映像檔建立 VM,請按照「建立採用高頻寬設定的 VM 和容器」一文中的操作說明進行。

使用自訂 OS 映像檔建立 VM

如果您使用的公開 OS 映像檔不支援 gVNIC,則必須先建立支援 gVNIC 的自訂 OS 映像檔。接著,您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST,透過該自訂 OS 映像檔建立 VM。

控制台

  1. 前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「Create an instance」(建立執行個體)

  2. 輸入 VM 執行個體的名稱。

  3. 選取要建立 VM 的「Zone」(可用區)。

  4. 在「Boot disk」(開機磁碟) 區段,按一下 [Change] (變更)。

  5. 在「開機磁碟」面板的「自訂映像檔」分頁中,完成下列步驟:

    1. 選擇「Source project」(來源專案),其中包含您先前建立的 OS 映像檔。
    2. 從「Image」(映像檔) 下拉式選單中選取映像檔。
    3. 按一下「選取」。
  6. 如要將 gVNIC 設為網路介面,請展開「Advanced options」(進階選項) 區段,然後執行下列操作:

    1. 展開「Networking」(網路) 區段。
    2. 在「網路介面卡」部分,選取「gVNIC」。
  7. 視需要進一步自訂 VM。

  8. 按一下「建立」,建立 VM 執行個體。

gcloud

  1. 使用 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 映像檔的專案名稱。
  2. 選用:確認 Compute Engine 已建立 VM,且 nicType 設為 GVNIC。

    gcloud compute instances describe VM_NAME \
       --zone=ZONE
    

    更改下列內容:

    • VM_NAME:VM 的名稱。
    • ZONE:您建立 VM 的可用區。

    範例

    如要使用專案 my-project-12345 中的 OS 映像檔 my-gvnic-rocky8,在可用區 us-west1-b 建立機器類型為 n1-standard-1 的 Rocky Linux 8 VM,請執行下列指令:

    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",
      "subnetwork":"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 或 Windows 執行個體),確認 VM 執行個體已安裝並啟用 gVNIC 驅動程式。

驗證 Linux VM 上的 gVNIC 驅動程式

您可以使用 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 VM 上的 gVNIC 驅動程式

如要確認 Windows VM 是否已安裝並啟用 gVNIC 驅動程式,請使用 PowerShell、命令提示字元或裝置管理員:

  • PowerShell:在 PowerShell 工作階段中,以管理員身分執行下列指令:

    Get-WindowsDriver -Online -All | Where-Object {$_.ProviderName -eq 'Google' -and $_.OriginalFileName -like '*gvnic*'}
    
  • 命令提示字元:在以管理員身分執行的命令提示字元工作階段中,執行下列指令:

    dism /online /get-drivers | findstr gvnic
    
  • 裝置管理工具:

    1. 在 Windows VM 執行個體上,開啟「裝置管理員」。
    2. 確認「Network adapters」(網路介面卡) 下方列有「Google Ethernet Adapter」(Google 乙太網路轉換器)。

疑難排解

如要排解 gVNIC 問題,請參閱「排解 Google Virtual NIC 問題」。

後續步驟