網路頻寬

大多數機型僅提供一個實體 NIC。使用這些機型建立運算執行個體時,您設定的每個虛擬網路介面 (vNIC) 都會使用相同的實體 NIC。對於這些執行個體, Google Cloud會計算每個虛擬機器 (VM) 執行個體或裸機執行個體的頻寬,而不是每個虛擬網路介面 (vNIC) 或 IP 位址。執行個體的機型會定義其可能的最高輸出速率,但只有在特定情況下,才能達到該最高輸出速率。

部分機型 (例如 z4m-highmem-192) 提供多個實體 NIC。使用這些機器類型建立運算執行個體時,Compute Engine 會將您設定的每個虛擬網路介面 (vNIC) 指派給實體 NIC。如果是 Z4D、Z4M 和 C4N 多 NIC 機型,Compute Engine 會使用循環分配方式,將 vNIC 指派給實體 NIC。

本頁面概述網路頻寬限制,有助於規劃部署作業。這項指標會根據兩個維度分類頻寬:

  • 輸出或輸入:本頁面使用的輸出和輸入一律是從 Google Cloud 執行個體的角度來看:
    • 從 Google Cloud 執行個體傳送的封包會構成其輸出 (傳出) 流量。
    • 傳送至執行個體的封包會組成 Google Cloud 輸入 (輸入) 流量。
  • 封包的轉送方式:封包可以從傳送執行個體轉送,也可以轉送至接收執行個體,使用的路由下一個躍點位於虛擬私有雲網路「內」,或位於虛擬私有雲網路外。

本頁面的所有資訊都適用於 Compute Engine 運算執行個體,以及依賴 Compute Engine 執行個體的產品。舉例來說,Google Kubernetes Engine 節點是 Compute Engine 執行個體。

影響網路頻寬的設定

如果運算執行個體只有一個實體 NIC,您就無法使用額外的虛擬網路介面 (vNIC) 或每個 vNIC 的額外 IP 位址,增加輸入或輸出頻寬。舉例來說,具有 22 個 vCPU 的 Compute Engine C3 執行個體,總輸出頻寬上限為 23 Gbps。如果為 C3 執行個體設定兩個 vNIC,執行個體的總輸出頻寬仍限制為 23 Gbps,而非每個 vNIC 23 Gbps。

以下各節說明其他運算執行個體設定對網路頻寬的影響。

使用各個 VM 的 Tier_1 網路效能

如要為第二代和第三代運算執行個體取得最高可能的輸入和輸出頻寬,請設定 Tier_1 網路。第四代和後續世代的機器系列提供多 NIC、網路最佳化機器系列,可提高網路頻寬,而非使用 Tier_1 網路。

Dynamic Network Interface

Dynamic Network Interface 會使用父項 vNIC 的頻寬。上層 vNIC 內沒有流量隔離。來自 Dynamic NIC 的網路流量可能會導致與同一上層 vNIC 相關聯的其他 Dynamic NIC 資源不足。為避免這種衝突,您可以使用 Linux 流量控制 (TC) 制定應用程式專屬的流量調節政策。這些政策可協助您對網路流量實作公平性或優先順序。

如要優先處理網路流量,請將流量 (例如 Dynamic NIC) 對應至流量類別,然後將該流量類別對應至服務品質。如需這個方法的範例,請參閱「使用 Red Hat 進行流量控管」。

執行 Windows OS 的 Compute Engine 執行個體不支援 Dynamic NIC。

透過 Cloud RDMA 共用頻寬

使用 Cloud RDMA 的應用程式通常會同時使用 TCP 和 RDMA 流量。舉例來說,在高效能運算 (HPC) 工作期間,應用程式通常會在載入和儲存階段使用 TCP 進行通訊,並在運算階段使用 RDMA。下列機器系列支援 Cloud RDMA:

  • H4D 執行個體提供高達 200 Gbps 的網路頻寬。
  • Z4M 執行個體提供高達 400 Gbps 的網路頻寬,並配備兩個實體 NIC。

將運算執行個體設為使用 Cloud RDMA 時,網路頻寬會由設定的網路介面共用。

Cloud RDMA 流量和 TCP 流量之間的網路頻寬分配是動態進行:

  • 如果同時使用這兩種網路介面類型,頻寬會由 Cloud RDMA 流量和 TCP 流量共用。
  • 未使用 Cloud RDMA 網路介面時,gVNIC 或 IDPF 網路介面可以使用所有可用頻寬。
  • 如果未使用 gVNIC 或 IDPF 網路介面,Cloud RDMA 網路介面就能使用所有可用頻寬。

頻寬摘要

下表說明可能的頻寬上限,依據為封包是從運算執行個體傳送 (輸出) 還是由運算執行個體接收 (輸入),以及封包轉送方法。

輸出頻寬限制

在虛擬私有雲網路
內轉送
  • 主要由每個執行個體的輸出頻寬上限定義,具體取決於傳送執行個體的機器類型,以及是否啟用 Tier_1 網路。

    • N2、N2D、C2、C2D、M3 和 C4A VM 支援 Tier_1 網路,輸出頻寬上限最高可達 100 Gbps。
    • H3 VM 支援的 VM 對 VM 輸出頻寬限制最高可達 200 Gbps。
    • H4D 執行個體支援 VM 對 VM 輸出頻寬,Cloud RDMA 和 gVNIC 合計最高可達 200 Gbps。
    • X4、M4、A2 和 G2 執行個體支援的輸出頻寬上限為 100 Gbps。
    • X5 執行個體支援的輸出頻寬上限為 200 Gbps。
    • G4 執行個體支援的輸出頻寬上限為 400 Gbps。
    • A4X Max 執行個體支援的輸出頻寬上限為 3,600 Gbps。
    • A4X 執行個體支援的輸出頻寬上限為 2,000 Gbps。
    • A4 和 A3 執行個體支援的輸出頻寬限制最高可達 3,600 Gbps。
    • C4、C4D、C3、C3D 和 Z3 執行個體支援最高 200 Gbps 的輸出頻寬限制,並採用 Tier_1 網路。
    • 具有兩個實體 NIC 的 Z4D、Z4M 和 M4N 執行個體,支援高達 400 Gbps 的 VM 對 VM 輸出頻寬。
    • C4N 執行個體配備兩個實體 NIC,支援高達 400 Gbps 的 VM 對 VM 輸出頻寬、高達 95,000,000 的每秒封包數 (PPS),以及在相同虛擬私有雲網路內轉送的 C4N 執行個體之間,高達 50 Gbps 的單一流量頻寬。
  • 如要瞭解其他因素、定義和情境,請參閱「傳輸至虛擬私有雲網路中可路由傳輸的目的地」。
在虛擬私有雲網路外部轉送
  • 對於 H3 和 H4D 執行個體,傳出至虛擬私有雲網路以外目的地的資料傳輸量上限為 1 Gbps。
  • C4N 執行個體的限制如下:

    • 每個實體 NIC 100 Gbps,或雙 NIC 執行個體 200 Gbps
    • 每個實體 NIC 24,000,000 PPS,或雙 NIC 執行個體 48,000,000 PPS
  • 如果是其他機器系列,限制主要取決於每個執行個體的最大輸出頻寬,而這會根據傳送執行個體的機型,以及是否啟用 Tier_1 網路而定。傳送執行個體傳送至虛擬私有雲網路外部目的地的最大可能輸出頻寬,不得超過下列限制:

    • 每個流程 3 Gbps
    • 啟用 Tier_1 網路時:25 Gbps 總計
    • 如果未啟用或不支援 Tier_1 網路,各機器系列可用的總頻寬如下:
      • 如果是 Z4M 執行個體,則視機器類型大小而定,192 個 vCPU 的執行個體總頻寬為 50 Gbps,96 個 vCPU 以下的執行個體總頻寬則為 25 Gbps。
      • 如果是 Z4D 執行個體,則視機型大小而定,384 個 vCPU 的執行個體總計 50 Gbps,192 個 vCPU 以下的執行個體總計最多 25 Gbps。
      • G4 執行個體:如果機型有 48 個以上的 vCPU,則總計 25 Gbps;如果機型有少於 48 個 vCPU,則總計 7 Gbps。
      • 如果是支援多個實體 NIC 的機器系列,例如 M4N、A3、A4、A4X 和 A4X Max 執行個體,則每個 NIC 為 7 Gbps
      • 所有其他機器系列:總共 7 Gbps
  • 如要瞭解其他因素、定義和注意事項,請參閱「輸出至虛擬私有雲網路以外的目的地」。

輸入頻寬限制

虛擬私有雲網路內的路由
  • 一般來說,輸入速率與機型的輸出速率相近。
  • 如要盡可能提高輸入頻寬,請使用多 NIC 執行個體,或啟用 Tier_1 網路 (如支援)。
  • 運算執行個體的大小、伺服器 NIC 的容量、在相同主機硬體上執行的其他運算執行個體傳入流量、訪客 OS 網路設定,以及執行個體執行的磁碟讀取次數,都可能影響輸入速率。
  • Google Cloud 不會對虛擬私有雲網路中的輸入速率施加任何額外限制。
  • 如要瞭解其他因素、定義和情境,請參閱「輸入至虛擬私有雲網路中可轉送的目的地」。
虛擬私有雲網路
外部的路由
  • Google Cloud 會限制從虛擬私有雲網路外部轉送的輸入流量,藉此保護每個運算執行個體。限制為下列第一個遇到的費率:

    • 1,800,000 pps (每秒封包數)
    • 30 Gbps
  • 如果是 C4N 執行個體,則以先達到的下列速率為限:
    • 每個實體 NIC 每秒 2,400 萬個封包,或雙 NIC 執行個體每秒 4,800 萬個封包
    • 每個實體 NIC 90 Gbps 或雙 NIC 執行個體 180 Gbps
  • 如果機器系列支援多個實體 NIC (例如 M4N、Z4D、Z4M、A3、A4、A4X 和 A4X Max 執行個體),則限制為下列最先達到的速率:

    • 每個實體 NIC 每秒 1,800,000 個封包 (pps)
    • 每個實體 NIC 30 Gbps
  • 如要瞭解其他因素、定義和情境,請參閱「輸入至虛擬私有雲網路以外的目的地」。

輸出頻寬

Google Cloud 會使用每個執行個體的輸出速率上限,限制傳出 (輸出) 頻寬。這些費率取決於傳送封包的運算執行個體機器類型,以及封包的目的地是否可透過虛擬私有雲網路內外的路由存取。傳出頻寬包括執行個體所有 NIC 發出的封包,以及傳輸至所有 Hyperdisk 和 Persistent Disk 磁碟區 (已連結至執行個體) 的資料。

每個執行個體的輸出頻寬上限

每個執行個體的輸出頻寬上限通常是每個 vCPU 2 Gbps,但視機器系列而定,可能會有差異和例外狀況。下表列出在虛擬私有雲網路中轉送的流量,其輸出頻寬上限範圍。

下表摘要說明各個機器系列的輸出頻寬上限。如要查看各機型的每個執行個體輸出頻寬上限,請前往特定機器家族頁面 (使用表格中各機器系列的連結)。

如要瞭解附加 GPU 的運算執行個體網路 egress 頻寬限制,請參閱「網路和 GPU 機器」。

每個執行個體的輸出流量上限
機器系列 標準 Tier_1 網路
C4N 400 Gbps 不適用
C4 和 C4D 100 Gbps 200 Gbps
C4A 50 Gbps 100 Gbps
C3 和 C3D 100 Gbps 200 Gbps
C2 和 C2D 32 Gbps 100 Gbps
E2 16 Gbps 無法使用
E2 共用核心 2 Gbps 無法使用
H4D 和 H3 200 Gbps 無法使用
M4N 400 Gbps 不適用
M4 100 Gbps 無法使用
M3 32 Gbps 100 Gbps
M2 Intel Cascade Lake 以上版本 CPU 為 32 Gbps
其他 CPU 平台為 16 Gbps
無法使用
M1 32 Gbps 無法使用
N4、 N4A 和 N4D 50 Gbps 不適用
N2 和 N2D 32 Gbps 100 Gbps
N1 (不包括搭載 1 個 vCPU 的 VM) Intel Skylake 和後續 CPU 上的速度為 32 Gbps
舊版 CPU 平台上的速度為 16 Gbps
無法使用
具備 1 個 vCPU 的 N1 機型 2 Gbps 無法使用
N1 共用核心 (f1-micro 和 g1-small) 1 Gbps 無法使用
T2A 和 T2D 32 Gbps 無法使用
X5 200 Gbps 不適用
X4 100 Gbps 不適用
Z3 100 Gbps 200 Gbps
Z4D 400 Gbps 不適用
Z4M 400 Gbps 不適用

每個執行個體的輸出頻寬上限並非保證值。實際輸出頻寬可能會因下列因素而降低,這些因素僅列舉部分內容:

  • 在支援兩種網路介面驅動程式的運算執行個體上,使用 VirtIO 而非 gVNIC
  • 封包大小
  • 通訊協定負擔
  • 流程數量
  • 運算執行個體訪客 OS 的乙太網路驅動程式設定,例如檢查碼卸載和 TCP 分段卸載 (TSO)
  • 網路壅塞
  • 如果永久磁碟 I/O 與其他網路輸出流量競爭,永久磁碟寫入作業會獲得 60% 的最大網路頻寬,其餘 40% 則分配給其他網路輸出流量。詳情請參閱「影響磁碟效能的因素」。

如要取得每個執行個體的最大可能輸出頻寬上限,請按照下列步驟操作:

  • 建立運算執行個體時,請使用網路最佳化機器系列的機型,並設定兩個網路介面,以取得最高頻寬。
  • 使用第三代以上的機器系列,透過 Titanium 將網路處理作業從主機 CPU 卸載。
  • 如果使用第二代或第三代機器系列,請啟用每部 VM 的 Tier_1 網路效能,並使用較大的機型。
  • 使用網路拓撲支援的最大虛擬私有雲網路最大傳輸單位 (MTU)。較大的 MTU 可減少封包標頭負擔,並提高酬載資料處理量。
  • 如果執行個體和客體 OS 支援,請使用最新版 gVNIC 驅動程式。

輸出至虛擬私有雲網路內可轉送的目的地

從傳送執行個體的角度來看,對於可透過虛擬私有雲網路內路由存取的目的地 IP 位址,Google Cloud 會使用下列規則限制傳出流量:

  • 每個 VM 的輸出頻寬上限:「每個執行個體的輸出頻寬上限」一節所述的每個執行個體輸出頻寬上限。
  • 每個專案的跨區域輸出頻寬:如果傳送執行個體和內部目的地或下一個躍點位於不同區域,Google Cloud 會根據傳送執行個體的區域和專案,以及內部目的地或下一個躍點的區域,強制執行配額。如要進一步瞭解這項配額,請參閱虛擬私有雲配額和限制說明文件中的「Compute 執行個體的跨區域網路輸出頻寬 (Mbps)」。
  • Cloud VPN 和 Cloud Interconnect 限制:從執行個體傳送流量至內部 IP 位址目的地,且該目的地可透過下一個躍點 Cloud VPN 通道或 Cloud Interconnect VLAN 連結轉送時,輸出頻寬會受到下列限制:

虛擬私有雲網路中可路由傳送的目的地包括下列所有目的地,從傳送執行個體的角度來看,每個目的地都可透過下一個躍點「不是」預設網際網路閘道的路由存取:

  • 子網路主要 IPv4 和子網路次要 IPv4 位址範圍中的區域內部 IPv4 位址,包括私有 IPv4 位址範圍和私用公開 IPv4 位址範圍,由下列目的地資源使用:
    • 接收端執行個體網路介面 (vNIC) 的主要內部 IPv4 位址。(如果傳送執行個體連線至其他執行個體的 vNIC「外部」IPv4 位址,封包會使用下一個躍點預設網際網路閘道轉送,因此會改為套用傳出至虛擬私有雲網路以外的目的地)。
    • 接收端執行個體 vNIC 別名 IP 範圍內的內部 IPv4 位址。
    • 通訊協定轉送或內部直通式網路負載平衡器的內部轉送規則,其內部 IPv4 位址。
  • 這些目的地資源的全域內部 IPv4 位址:
  • 這些目的地資源使用的內部 IPv6 子網路位址範圍:
    • 指派給雙重堆疊或僅支援 IPv6 的接收端執行個體 vNIC 的 /96 IPv6 位址範圍中的 IPv6 位址。
    • 通訊協定轉送或內部直通式網路負載平衡器的內部轉送規則,其 /96 IPv6 位址範圍中的 IPv6 位址。
  • 這些目的地資源在虛擬私有雲網路中,使用子網路路由或對等互連子網路路由轉送封包時,或在虛擬私有雲網路中,使用不含預設網際網路閘道下一個躍點的自訂路由轉送封包時,所用的外部 IPv6 子網路位址範圍:
    • 從指派給雙重堆疊或僅限 IPv6 接收執行個體 vNIC 的 /96 IPv6 位址範圍中,取得 IPv6 位址。
    • IPv6 位址,來自通訊協定轉送或區域性外部直通式網路負載平衡器的外部轉送規則 /96 IPv6 位址範圍。
  • 可透過下列虛擬私有雲網路路由存取的其他目的地:

下列清單依頻寬由高至低,列出從傳送執行個體到內部目的地的流量:

輸出至虛擬私有雲網路以外的目的地

從傳送執行個體的角度來看,如果目的地 IP 位址位於虛擬私有雲網路外部, Google Cloud 輸出流量會受限於下列任一速率 (以先達到者為準):

  • 每個執行個體的輸出頻寬:從運算執行個體到虛擬私有雲網路外部目的地的所有連線,其頻寬上限為每個執行個體的輸出頻寬上限和下列其中一個速率,兩者取較小值:

    • 如果啟用 Tier_1 網路:25 Gbps
    • 如果未啟用或不支援 Tier_1 網路:
      • C4N 執行個體:每個實體 NIC 最高 100 Gbps,雙 NIC 執行個體最高 200 Gbps
      • Z4D 和 Z4M 執行個體:vCPU 數量少於 48 個的機型,總計 7 Gbps;vCPU 數量為 48 個以上的機型,每個實體 NIC 最高 25 Gbps
      • G4 執行個體:vCPU 數量少於 48 個的機型,總計 7 Gbps;vCPU 數量為 48 個以上的機型,總計 25 Gbps
      • H4D 和 H3 執行個體:1 Gbps
      • 支援多個實體 NIC 的機器系列 (例如 M4N、A3、A4、A4X 和 A4X Max 執行個體):每個實體 NIC 7 Gbps
      • 所有其他機器系列:7 Gbps

    舉例來說,即使 c3-standard-44 VM 的單一執行個體輸出頻寬上限為 32 Gbps,從 c3-standard-44 VM 到外部目的地的單一執行個體輸出頻寬,也會因是否啟用 Tier_1 網路而有所不同,分別為 25 Gbps 或 7 Gbps。

  • 每個流量的輸出速率上限:從運算執行個體到虛擬私有雲網路外部目的地的「每個」不重複 5 元組連線,頻寬上限為 3 Gbps,但 H4D 和 H3 執行個體除外,其頻寬上限為 1 Gbps。

  • 每個專案的網際網路輸出頻寬:專案每個區域中,運算執行個體與虛擬私有雲網路外部目的地之間的所有連線,其頻寬上限是由專案的「網際網路輸出頻寬」配額所定義。

虛擬私有雲網路以外的目的地包括下列所有目的地,每個目的地都可以透過傳送執行個體的虛擬私有雲網路中的路由存取,其下一個躍點「是」預設網際網路閘道:

  • 外部 Proxy 網路負載平衡器和外部應用程式負載平衡器的全域外部 IPv4 和 IPv6 位址
  • 資源的區域性外部 IPv4 位址,包括執行個體的 vNIC 外部 IPv4 位址、外部通訊協定轉送的外部 IPv4 位址、區域性外部直通式網路負載平衡器,以及 Cloud NAT 閘道的傳回封包。 Google Cloud
  • 雙重堆疊或僅限 IPv6 子網路中的區域性外部 IPv6 位址,具有雙重堆疊或僅限 IPv6 執行個體、外部通訊協定轉送和區域性外部直通式網路負載平衡器的外部 IPv6 位址所使用的外部 IPv6 位址範圍。子網路必須位於獨立、非對接的虛擬私有雲網路。目的地 IPv6 位址範圍必須可透過傳送端執行個體虛擬私有雲網路中的路由存取,且該路由的下一個躍點「必須」是預設網際網路閘道。如果具有外部 IPv6 位址範圍的雙堆疊或僅限 IPv6 子網路位於同一個虛擬私有雲網路或對等互連虛擬私有雲網路,請改為參閱「輸出至虛擬私有雲網路內可轉送的目的地」。
  • 可透過傳送執行個體虛擬私有雲網路中的靜態路由存取的其他外部目的地,前提是該路由的下一個躍點是預設網際網路閘道。

如要進一步瞭解哪些 Google Cloud 資源使用哪些類型的外部 IP 位址,請參閱「外部 IP 位址」。

輸入頻寬

Google Cloud 會根據傳入封包的路由方式,處理傳入 (輸入) 頻寬,將封包傳送至接收端運算執行個體。

可透過虛擬私有雲網路路由傳輸至目的地的輸入流量

接收端運算執行個體可處理的傳入封包數量,取決於機器類型、作業系統和其他網路條件。如果是其他機器系列,若傳入封包是使用虛擬私有雲網路「內」的路由傳送, Google Cloud 不會對傳送至執行個體的傳入封包實施任何有目的性的頻寬限制:

  • 接收端執行個體虛擬私有雲網路中的子網路路徑
  • 對等互連虛擬私有雲網路中的對等互連子網路路由
  • 另一個網路中的路由,其下一個躍點是 Cloud VPN 通道、Cloud Interconnect (VLAN) 連結,或位於接收執行個體虛擬私有雲網路中的路由器設備執行個體

在虛擬私有雲網路中轉送的封包目的地包括:

  • 接收端執行個體虛擬網路介面 (vNIC) 的主要內部 IPv4 位址。主要內部 IPv4 位址是區域內部 IPv4 位址,來自子網路的主要 IPv4 位址範圍。
  • 接收端執行個體 vNIC 別名 IP 範圍內的內部 IPv4 位址。別名 IP 範圍可來自子網路的主要 IPv4 位址範圍,或其中一個次要 IPv4 位址範圍。
  • IPv6 位址,來自指派給雙重堆疊或僅支援 IPv6 的接收執行個體 vNIC 的 /96 IPv6 位址範圍。運算執行個體 IPv6 範圍可來自下列子網路 IPv6 範圍:
  • 內部通訊協定轉送至接收執行個體或內部直通式網路負載平衡器時,所用轉送規則的內部 IPv4 位址,其中接收執行個體是負載平衡器的後端。內部轉送規則 IPv4 位址來自子網路的主要 IPv4 位址範圍。
  • 轉送規則的 /96 IPv6 範圍內的內部 IPv6 位址,由內部通訊協定轉送功能使用,轉送至接收端執行個體或內部直通式網路負載平衡器 (接收端執行個體是負載平衡器的後端)。內部轉送規則 IPv6 位址來自子網路的內部 IPv6 位址範圍。
  • 外部通訊協定轉送功能使用的轉送規則 /96 IPv6 範圍中的外部 IPv6 位址,會轉送至接收端執行個體或區域外部直通式網路負載平衡器。當傳入封包使用本節先前列出的其中一個路由,在虛擬私有雲網路內轉送時,接收執行個體是負載平衡器的後端。外部轉送規則 IPv6 位址來自子網路的外部 IPv6 位址範圍。
  • IP 位址位於自訂靜態路徑的目的地範圍內,且該路徑使用接收執行個體做為下一個躍點執行個體 (next-hop-instance 或 next-hop-address)。
  • 如果接收執行個體是該負載平衡器的後端,則為使用內部直通式網路負載平衡器 (next-hop-ilb) 下一個躍點的自訂靜態路由目的地範圍內的 IP 位址。

傳送至虛擬私有雲網路外部目的地的連入流量

Google Cloud 會對使用虛擬私有雲網路外部路徑傳送至接收端執行個體的傳入封包,實作下列頻寬限制。如果涉及負載平衡,頻寬限制會個別套用至每個接收執行個體。

如果機器系列不支援多個實體 NIC,則適用的傳入頻寬限制會一併套用至所有虛擬網路介面 (vNIC)。上限為下列第一個遇到的費率:

  • 每秒 1,800,000 個封包
  • 30 Gbps

如果機器系列支援多個實體 NIC,則適用的傳入頻寬限制會分別套用至每個實體 NIC。限制為下列最先達到的速率:

  • C4N 執行個體:
    • 每個實體 NIC 24,000,000 PPS (或雙 NIC 執行個體 48,000,000 PPS)
    • 每個實體 NIC 90 Gbps (或雙 NIC 執行個體 180 Gbps)
  • 其他執行個體類型:
    • 每個實體 NIC 每秒 1,800,000 個封包
    • 每個實體 NIC 30 Gbps

使用虛擬私有雲網路以外的路由轉送封包時,目的地包括:

  • 在接收執行個體的其中一個網路介面 (NIC) 上,透過一對一網路位址轉譯 (NAT) 存取設定指派的外部 IPv4 位址。
  • 當傳入封包使用接收端執行個體虛擬私有雲網路以外的路徑轉送時,從指派給雙重堆疊或僅限 IPv6 接收端執行個體 vNIC 的 /96 IPv6 位址範圍中,指派外部 IPv6 位址。
  • 外部通訊協定轉送至接收執行個體或區域性外部直通式網路負載平衡器時,所用轉送規則的外部 IPv4 位址,其中接收執行個體是負載平衡器的後端。
  • 外部 IPv6 位址,來自轉送規則的 /96 IPv6 範圍,由外部通訊協定轉送至接收執行個體或區域性外部直通式網路負載平衡器。如果傳入封包是使用虛擬私有雲網路以外的路由轉送,接收執行個體必須是負載平衡器的後端。
  • 由 Cloud NAT 處理的已建立傳入回應。

使用巨型封包,盡量提高網路頻寬

如要接收及傳送巨型框架,請設定運算執行個體使用的虛擬私有雲網路,將最大傳輸單位 (MTU) 設為較大的值,最高可達 8896。

MTU 值越高,封包大小就越大,封包標頭的負擔也越小,進而提高有效負載資料的輸送量。

您可以在使用 gVNIC 驅動程式 1.3 以上版本的運算執行個體上,或在裸機執行個體上使用 IDPF 驅動程式,來使用巨型框架。並非所有 Google Cloud 公開圖片都包含這些驅動程式。如要進一步瞭解作業系統對巨型框架的支援,請參閱「作業系統詳細資料」頁面的「網路功能」分頁。

如果您使用的 OS 映像檔未完全支援巨型封包,可以手動安裝 gVNIC 驅動程式 1.3.0 以上版本。Google 建議安裝標示為 Latest 的 gVNIC 驅動程式版本,以便使用其他功能和錯誤修正。您可以從 GitHub 下載 gVNIC 驅動程式。

如要在客體 OS 中手動更新 gVNIC 驅動程式版本,請參閱「在不支援的作業系統上使用」一文。

巨型框架和 GPU 機器

如果是 GPU 機型,請使用巨型封包的建議 MTU 設定。詳情請參閱「巨型封包的建議 MTU 設定」。

接收和傳輸佇列

運算執行個體的每個 NIC (實體 NIC 或虛擬 NIC) 都會分配到多個接收和傳輸佇列,用於處理來自網路的封包。

  • 接收佇列 (RX):接收封包的佇列。當 NIC 從網路接收封包時,NIC 會從佇列中選取傳入封包的描述元、處理該描述元,然後透過附加至 vCPU 核心的封包佇列,使用中斷將封包交給客層 OS。如果 RX 佇列已滿,且沒有可用於放置封包的緩衝區,系統就會捨棄封包。如果應用程式過度使用也附加至所選封包佇列的 vCPU 核心,通常就會發生這種情況。
  • 傳輸佇列 (TX):傳輸封包的佇列。當客體 OS 傳送封包時,系統會分配描述元並放入 TX 佇列。接著,NIC 會處理描述元並傳輸封包。

預設佇列分配

除非您明確為 NIC 指派佇列數量,否則可以模擬 Google Cloud 用來為每個 vNIC 指派固定數量 RX 和 TX 佇列的演算法,如下表所示:

運算執行個體設定 每個 vNIC 的佇列數量上限 每個執行個體的佇列數量上限
裸機執行個體 16 16
網路最佳化 C4N 執行個體 64 vCPU 數量
儲存空間最佳化 Z4D 和 Z4M 執行個體 (包括裸機機型) 16 vCPU 數量
搭載 2 個 vCPU 的 C4 執行個體 1 2
具備 4 顆 vCPU 的 C4 執行個體 2 8
使用 gVNIC 的第三代 (不含 M3) 和後續 VM 執行個體,搭配 Titanium,包括 Z4D

將 vCPU 數量除以 vNIC 數量 (num_vcpus/num_vnics),並捨去餘數。

  • 如果計算出的數字小於 1,則每個 vNIC 的佇列數上限為 1。
  • 如果計算出的數字大於 16,則每個 vNIC 的佇列數量上限為 16。
  • 否則,每個 vNIC 的佇列數量上限為計算出的數字
vCPU 數量
M3,或使用 gVNIC 的第一代和第二代 VM

將 vCPU 數量除以 vNIC 數量,然後將結果除以 2 (num_vcpus/num_vnics/2)。捨棄任何餘數。

  • 如果計算出的數字小於 1,則每個 vNIC 的佇列數上限為 1。
  • 如果計算出的數字大於 16,則每個 vNIC 的佇列數量上限為 16。
  • 否則,每個 vNIC 的佇列數量上限為計算出的數量。
vCPU 數量 / 2
使用 VirtIO 網路介面或自訂驅動程式的第一代和第二代 VM

將 vCPU 數量除以 vNIC 數量 (num_vcpus/num_vnics),並捨去餘數。

  • 如果計算出的數字小於 1,則每個 vNIC 的佇列數上限為 1。
  • 如果計算出的數字大於 32,則每個 vNIC 的佇列數量上限為 32。
  • 否則,每個 vNIC 的佇列數上限就是計算出的數字。
vCPU 數量
H4D 執行個體搭配 Cloud RDMA 16 16,如果使用 Cloud RDMA 則為 32
Confidential VM 執行個體 16 16

範例

以下範例說明如何計算 VM 執行個體的預設佇列數量:

  • 如果 VM 執行個體使用 VirtIO,且有 16 個 vCPU 和四個 vNIC,則計算出的數字為 [16/4] = 4。 Google Cloud 會為每個 vNIC 指派四個佇列。

  • 如果 VM 執行個體使用 gVNIC 搭配 Titanium 卸載,且有 128 個 vCPU 和兩個 vNIC,則計算出的數字為 [128/2] = 64。Google Cloud 會為每個 vNIC 指派每個 vNIC 的佇列數量上限,即 16。

在 Linux 系統上,您可以使用 ethtool 設定 vNIC,使其佇列數量少於 Google Cloud 為每個 vNIC 指派的佇列數量。

使用 Dynamic Network Interface 時的佇列數量

如果您將 Dynamic Network Interface 與網路介面搭配使用,佇列數量不會改變。Dynamic NIC 沒有自己的接收和傳輸佇列,而是使用與上層 vNIC 相同的佇列。

VM 執行個體的自訂佇列分配

您可以使用 Compute Engine API 建立新的運算執行個體,並為每個 vNIC 指派自訂佇列數量 (RX 和 TX 總和),而非使用預設佇列分配。

指定的自訂佇列數量必須符合下列規則:

  • 每個 vNIC 可指派的佇列數下限為一。

  • 您可以指派給運算執行個體每個 vNIC 的佇列數量上限,是 vCPU 數量或每個 vNIC 的佇列數量上限 (以較低者為準),具體取決於網路介面類型:

    • 使用 virtIO 或自訂驅動程式時,佇列數量上限為 32。
    • 使用 gVNIC 時,最大佇列計數為 16,但下列情況除外:
      • C4N、Z4D 和 Z4M 執行個體的每個 NIC 佇列數量上限為 64。
      • A2 或 G2 執行個體每個 NIC 最多可有 32 個佇列。
      • TPU 執行個體的佇列數量上限為 32。
      • 啟用 Tier_1 網路的 C2、C2D、N2 或 N2D 執行個體,每個 NIC 最多可有 32 個佇列。
    • 使用 IRDMA 時,佇列數量上限為 8。
    • 使用 IDPF 網路介面時,佇列數量上限為 16,但 Z4D 和 Z4M 裸機執行個體的佇列數量上限為 64。
    • 下列 Confidential VM 設定的佇列數量上限為 8:

      • C2D 和 N2D 機型上的 AMD SEV
      • N2D 機型上的 AMD SEV-SNP
  • 為運算執行個體設定的「所有」NIC 佇列數量總和,必須符合下列其中一項規則:

    • 最大值為下列兩者中較小的值:
      • [number of vCPUS]
      • [number of NICs] * [max number of queues per NIC]
    • 如果使用佇列超額訂閱,最大值為:
      • [number of vNICs] * 16

透過佇列超額訂閱,您可以為 VM 執行個體的每個 vNIC 指派最多 16 個佇列,即使 VM 的佇列總數超過 vCPU 數量也沒問題。如要超額訂閱自訂佇列數量,VM 執行個體必須符合下列條件:

  • 將 gVNIC 做為執行個體設定的所有 vNIC 的 vNIC 類型。
  • 使用 N2、N2D、C2 或 C2D 機器系列中的機型。
  • 已啟用 Tier_1 網路。
  • 為 VM 執行個體設定的所有 vNIC 指定自訂佇列數量。

如果超額訂閱佇列,VM 執行個體的佇列數量上限為 vNIC 數量的 16 倍。因此,如果為具有 30 個 vCPU 的執行個體設定六個 vNIC,則最多可以為 VM 執行個體設定 (16 * 6) 或 96 個自訂佇列。

範例

  • 以具有八個 vCPU 和四個 vNIC 的 N2 VM 執行個體為例:

    • 您最多可以在四個 vNIC 中指派八個佇列。舉例來說,你可以為 nic0 指派一個佇列、為 nic1 指派四個佇列,並為 nic2 指派三個佇列。
    • 由於 N2 的 Tier_1 網路需要至少 32 個 vCPU 的 VM,因此無法過度訂閱佇列。
  • 如果 VM 有 48 個 vCPU 和 4 個 NIC:

    • 如果使用 virtIO 驅動程式,則 4 個 NIC 最多可指派 48 個佇列,任何 vNIC 的佇列數量上限為 32 個。舉例來說,您可以在每個 vNIC 上有 12 個佇列,也可以在其中一個 NIC 上有 32 個佇列,在另一個 vNIC 上有 14 個佇列,在剩餘 2 個 NIC 上有 1 個佇列。
    • 如果 NIC 使用 gVNIC 驅動程式,則 4 個 NIC 最多可指派 48 個佇列,任何 vNIC 的佇列數量上限為 16 個。舉例來說,您可以在 3 個 NIC 上有 15 個佇列,在剩餘的 vNIC 上有 3 個佇列,也可以在每個 vNIC 上有 12 個佇列。
    • 如果您使用 gVNIC 和佇列超額訂閱,則可為每個 vNIC 指派最多 16 個佇列,總共 64 個佇列。
  • 以具有 224 個 vCPU 和 8 個 NIC 的 N2D VM 為例:

    • 如果使用 NIC 的 virtIO 驅動程式,則最多可為 8 個 NIC 指派 224 個佇列,且任何 vNIC 的佇列數量上限為 32 個。舉例來說,您可以在 6 個 NIC 上設定 32 個佇列,然後在剩餘的 2 個 NIC 上設定 16 個佇列。
    • 如果 NIC 使用 gVNIC 驅動程式,則所有 8 個 NIC 的最大佇列數都可設為 16。佇列計數總和上限為 128。

您也可以只為部分 vNIC 指派自訂佇列數量,讓 Compute Engine 為其餘 vNIC 指派佇列。每個 vNIC 可指派的佇列數量仍須遵守先前所述規則。您可以透過下列程序,模擬設定的可行性,以及 Compute Engine 指派給其餘 vNIC 的佇列數量:

  1. 計算具有自訂佇列指派的 vNIC 佇列總和。

  2. 從 vCPU 數量中減去自訂指派佇列的總和。如果差異小於 Compute Engine 必須指派佇列的其餘 vNIC 數量,Compute Engine 會傳回錯誤,因為每個 vNIC 至少須有一個佇列。

  3. 將上一步驟的差值除以沒有自訂佇列數量的 vNIC 數量,並捨去餘數:

    [(number of vCPUs - sum of assigned queues)/(number of remaining vNICs)]
    

    這項計算一律會得出整數 (而非分數),且至少等於 1,因為每個 vNIC 至少要有一個佇列。

  4. Compute Engine 會為其餘每個 vNIC 指派佇列數量,如下所示:

    • 如果計算出的數量少於每個 vNIC 的佇列數量上限,系統會將佇列數量設為計算出的數量。
    • 如果計算出的數量大於每個 vNIC 的佇列數量上限,則 vNIC 的佇列數量會設為佇列數量上限。

範例

假設您有一個 VM,其中有 20 個 vCPU 和 6 個 NIC,且您已將 5 個佇列指派給 nic0、6 個佇列指派給 nic1、4 個佇列指派給 nic2,並讓 Compute Engine 指派 nic3、nic4 和 nic5 的佇列計數。

  1. 自訂指派佇列的總和為 5 + 6 + 4 = 15。

  2. Compute Engine 還有 20 - 15 = 5 個佇列可指派給其餘三個 vNIC (nic3、nic4、nic5)。差值 (5) 大於沒有自訂佇列數量的 vNIC 數量 (3)。

  3. 5 的差值除以 3,餘數則捨去。因此,值為 1。

  4. 由於計算出的數量 (1) 小於每個 vNIC 的佇列數量上限,因此其餘 vNIC 的佇列數量會設為 1。

設定自訂佇列數量

如要建立運算執行個體,並為一或多個 NIC 或 vNIC 使用自訂佇列數量,請完成下列步驟。

在下列程式碼範例中,建立 VM 執行個體時,網路介面類型設為 GVNIC,並啟用各 VM 的 Tier_1 網路效能。您可以運用這些程式碼範例,指定支援的機型可用的最大佇列數和佇列超額訂閱。

gcloud

  1. 如果尚未建立虛擬私有雲網路,且該網路並未針對您要設定的每個 vNIC 介面提供子網路,請建立這些資源。
  2. 使用 gcloud compute instances create 指令建立運算執行個體。針對要為執行個體設定的每個 vNIC 重複 --network-interface 旗標,並加入 queue-count 選項。
    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --network-performance-configs=total-egress-bandwidth-tier=TIER_1  \
        --network-interface=network=NETWORK_NAME_1,subnet=SUBNET_1,nic-type=GVNIC,queue-count=QUEUE_SIZE_1 \
        --network-interface=network=NETWORK_NAME_2,subnet=SUBNET_2,nic-type=GVNIC,queue-count=QUEUE_SIZE_2

更改下列內容:

  • INSTANCE_NAME:新運算執行個體的名稱
  • ZONE:要建立執行個體的可用區
  • MACHINE_TYPE:執行個體的機器類型。如要超額訂閱佇列數量,您必須使用 N2、N2D、C2 或 C2D 機器系列中採用 gVNIC 和 Tier_1 網路的機型。
  • NETWORK_NAME:先前建立的網路名稱
  • SUBNET_*:先前建立的其中一個子網路名稱
  • QUEUE_SIZE:vNIC 的佇列數量,須遵守「自訂佇列分配」一節所述的規則。

Terraform

  1. 如果尚未建立虛擬私有雲網路,且該網路並未針對您要設定的每個 vNIC 介面提供子網路,請建立這些資源。
  2. 使用 google_compute_instance 資源建立運算執行個體,並為 vNIC 指定佇列數量。針對要為運算執行個體設定的每個 vNIC,重複 --network-interface 參數,並加入 queue-count 參數。

    # Queue oversubscription instance
    resource "google_compute_instance" "INSTANCE_NAME" {
    project      = "PROJECT_ID"
    boot_disk {
      auto_delete = true
      device_name = "DEVICE_NAME"
      initialize_params {
         image="IMAGE_NAME"
         size = DISK_SIZE
         type = "DISK_TYPE"
      }
    }
    machine_type = "MACHINE_TYPE"
    name         = "INSTANCE_NAME"
    zone         = "ZONE"
    
    network_performance_config {
        total_egress_bandwidth_tier = "TIER_1"
    }
    
    network_interface {
        nic_type = "GVNIC"
        queue_count = QUEUE_COUNT_1
        subnetwork_project = "PROJECT_ID"
        subnetwork = "SUBNET_1"
     }
    
    network_interface {
        nic_type = "GVNIC"
        queue_count = QUEUE_COUNT_2
        subnetwork_project = "PROJECT_ID"
        subnetwork = "SUBNET_2"
    }
    
    network_interface {
        nic_type = "GVNIC"
        queue_count = QUEUE_COUNT_3
        subnetwork_project = "PROJECT_ID"
        subnetwork = "SUBNET_3""
    }
    
    network_interface {
        nic_type = "GVNIC"
        queue_count = QUEUE_COUNT_4
        subnetwork_project = "PROJECT_ID"
        subnetwork = "SUBNET_4""
    }
    
    }
    
    

更改下列內容:

  • INSTANCE_NAME:新運算執行個體的名稱
  • PROJECT_ID:要建立執行個體的專案 ID。除非您使用 Shared VPC 網路,否則指定的專案必須與建立所有子網路和虛擬私有雲網路的專案相同。
  • DEVICE_NAME:與客體 OS 中開機磁碟建立關聯的名稱
  • IMAGE_NAME:映文件名稱,例如 "projects/debian-cloud/global/images/debian-12-bookworm-v20250311"。
  • DISK_SIZE:開機磁碟的大小,以 GiB 為單位
  • DISK_TYPE:用於開機磁碟的磁碟類型,例如 pd-standard
  • MACHINE_TYPE:執行個體的機型。如要超額訂閱佇列數量,您必須使用 N2、N2D、C2 或 C2D 機器系列中採用 gVNIC 和 Tier_1 網路的機型。
  • ZONE:要建立執行個體的可用區
  • QUEUE_COUNT:vNIC 的佇列數量,須遵守「自訂佇列分配」一節所述規則。
  • SUBNET_*:網路介面連線的子網路名稱

REST

  1. 如果尚未建立虛擬私有雲網路,且該網路並未針對您要設定的每個 vNIC 介面提供子網路,請建立這些資源。
  2. 使用 instances.insert 方法,為 vNIC 建立具有特定佇列計數的運算執行個體。您可以重複使用 networkInterfaces 屬性,設定多個網路介面。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    "name": "INSTANCE_NAME",
    "machineType": "machineTypes/MACHINE_TYPE",
    "networkPerformanceConfig": {
        "totalEgressBandwidthTier": TIER_1
    },
    "networkInterfaces": [
        {
          "nicType": gVNIC,
          "subnetwork":"regions/region/subnetworks/SUBNET_1",
          "queueCount": "QUEUE_COUNT_1"
        } ],
    "networkInterfaces": [
        {
          "nicType": gVNIC,
          "subnetwork":"regions/region/subnetworks/SUBNET_2",
          "queueCount": "QUEUE_COUNT_2"
        } ]
    }
    

    更改下列內容:

    • PROJECT_ID:要在其中建立運算執行個體的專案 ID
    • ZONE:要在哪個可用區建立運算執行個體
    • INSTANCE_NAME:新運算執行個體的名稱
    • MACHINE_TYPE:新運算執行個體的機型,可以是預先定義或自訂。如要超額訂閱佇列數量,您必須使用 N2、N2D、C2 或 C2D 機器系列的機型,並採用 gVNIC 和 Tier_1 網路。
    • SUBNET_*:網路介面連線的子網路名稱
    • QUEUE_COUNT:vNIC 的佇列數量,須遵守「自訂佇列分配」一節所述的規則。

佇列分配和變更機器類型

建立運算執行個體時,系統會使用預設佇列分配,您也可以使用 Compute Engine API 建立新的運算執行個體時,為每個虛擬網路介面卡 (vNIC) 指派自訂佇列計數。只有在建立運算執行個體時,才能設定預設或自訂 vNIC 佇列指派。如果執行個體的 vNIC 使用預設佇列數量,您可以變更機器類型。如果變更後的機型 vCPU 數量不同,系統會根據新的機型重新計算執行個體的預設佇列計數。

如果 VM 的 vNIC 使用自訂的非預設佇列數量,您可以使用 Google Cloud CLI 或 Compute Engine API 變更機型,更新執行個體屬性。如果產生的 VM 支援與原始執行個體相同的 vNIC 佇列計數,轉換就會成功。如果 VM 使用 VirtIO-Net 介面,且每個虛擬 NIC 的自訂佇列計數高於 16,則無法將機型變更為第三代或更新的機型,因為這些機型只會使用 gVNIC。您可以按照「將工作負載移至新的運算執行個體」一文中的操作說明,將 VM 遷移至第三代或更新的機型。

後續步驟