最大傳輸單位
最大傳輸單位 (MTU) 是指乙太網路封包可容納的最大 IP 封包大小 (以位元組為單位),包括 IP 標頭、第 4 層通訊協定標頭和第 4 層資料。
有效的虛擬私有雲網路 MTU 大小
虛擬私有雲 (VPC) 網路的預設 MTU 為 1,460 位元組。您可以將虛擬私有雲網路的 MTU 設為 1,300 至 8,896 個位元組 (含) 之間的任何值。常見的自訂 MTU 大小為 1,500 個位元組 (標準乙太網路) 或 8,896 個位元組 (可能的最大值)。建議您為每個 Compute Engine 執行個體網路介面 (NIC) 設定 MTU,使其與所連線虛擬私有雲網路的 MTU 相符。詳情請參閱「運算執行個體和 MTU 設定」。
虛擬私有雲網路中運算執行個體之間的通訊
如果符合下列條件,兩個運算執行個體之間可以傳送大小不超過 MTU 的 IP 封包:
- 傳送和接收執行個體使用相同的虛擬私有雲網路,或 MTU 相同的對等互連虛擬私有雲網路。
- 兩個執行個體的介面都設為使用虛擬私有雲網路 MTU。
為避免 MTU 不相符的問題,建議您為所有連線的虛擬私有雲網路使用相同的 MTU。雖然這是建議做法,但您不一定要在連線的虛擬私有雲網路上設定相同的 MTU。如要瞭解通訊協定如何處理虛擬私有雲網路之間 MTU 不相符的情況,請參閱「不相符的 MTU、MSS 限制、路徑 MTU 探索」。
從傳送執行個體的角度來看,通往下列目的地的路徑代表在虛擬私有雲網路內轉送的執行個體對執行個體流量:
- 子網路主要 IPv4 或子網路次要 IPv4 位址範圍中的區域性內部 IPv4 位址,包括私人 IPv4 位址範圍和私人使用的公開 IPv4 位址範圍,由下列目的地資源使用:
- 接收執行個體網路介面 (NIC) 的主要內部 IPv4 位址。
- 接收端執行個體 NIC 別名 IP 範圍內的內部 IPv4 位址。
- 內部轉送規則的內部 IPv4 位址,用於通訊協定轉送或內部直通式網路負載平衡器。
- 下列目的地資源使用的內部 IPv6 子網路位址範圍:
- 從指派給接收執行個體 NIC 的
/96IPv6 位址範圍中,選取一個 IPv6 位址。 - IPv6 位址,來自通訊協定轉送或內部直通式網路負載平衡器的內部轉送規則
/96IPv6 位址範圍。
- 從指派給接收執行個體 NIC 的
- 在虛擬私有雲網路中使用子網路路由或對等互連子網路路由轉送封包時,這些目的地資源使用的外部 IPv6 子網路位址範圍:
- 從指派給接收執行個體 NIC 的
/96IPv6 位址範圍中,選取一個 IPv6 位址。 - IPv6 位址,來自通訊協定轉送或區域性外部直通式網路負載平衡器的外部轉送規則
/96IPv6 位址範圍。
- 從指派給接收執行個體 NIC 的
下列執行個體對執行個體路徑的處理方式,與與虛擬私有雲網路以外的目的地通訊相同:
- 封包目的地是接收執行個體 NIC 的外部 IPv4 位址。
- 封包目的地是區域性外部直通式網路負載平衡器的外部 IPv4 位址。
- 如果封包目的地是通訊協定轉送規則的外部 IPv4 位址
- 如果封包目的地是執行個體 NIC 的外部 IPv6 位址、區域性外部直通式網路負載平衡器,或外部通訊協定轉送的轉送規則,「且」虛擬私有雲網路中的適用路由使用預設網際網路閘道下一個躍點。在這種情況下,接收執行個體與傳送執行個體不在同一個虛擬私有雲網路中,也不在透過虛擬私有雲網路對接連線至傳送執行個體虛擬私有雲網路的虛擬私有雲網路中。
與虛擬私有雲網路外部的目的地通訊
Google Cloud 會處理從運算執行個體傳送至傳送執行個體虛擬私有雲網路以外目的地的封包,如下表所示。傳送執行個體虛擬私有雲網路以外的目的地,包括Google Cloud 以外資源的可公開轉送 IP 位址,以及 Google Cloud內客戶可用的外部 IP 位址。
網際網路通常使用 1,500 位元組的 MTU,因此將 IP 封包大小保持在 1,500 位元組以下,通常可以避免 MTU 相關的封包遺失。
| 情境 | 行為 |
|---|---|
| TCP SYN 和 SYN-ACK 封包 | Google Cloud 會在必要時執行 MSS 限制,變更 MSS 以確保封包符合 MTU。 |
| IP 封包 MTU 介於 1,300 至 1,600 個位元組 (含) | Google Cloud 不會對封包進行任何變更,但第一列所述的 SYN 和 SYN-ACK 封包除外。 |
| IP 封包大於 1,600 個位元組 | Google Cloud 會捨棄封包,並在 DF 位元開啟和關閉時,傳送「Fragmentation Needed」(IPv4 上的 ICMP) 或「Packet Too Big」(ICMPv6) 訊息。 |
與 Google API 和服務通訊
運算執行個體使用任何有效的虛擬私有雲網路 MTU 大小,都能將封包傳送至 Google API 和服務,包括使用 Private Google Access 和 Google API 適用的 Private Service Connect。本節中的詳細資料也適用於地端部署資源,這些資源會使用地端部署主機專用的 Private Google Access,將封包傳送至 Google API 和服務。
本節所述的 Google API 和服務流量路徑是由 Google Front End (GFE) 實作。這些 GFE 使用不可設定的固定 MTU。從 Google Cloud 到 Google API 和服務的流量一律使用 TCP 通訊協定:如果運算執行個體從虛擬私有雲網路連線至 Google API 和服務,且該網路的 MTU 與 GFE 的 MTU 不符,則會使用 TCP MSS advertise 協商區隔大小,詳情請參閱「MTU 不符、MSS 限制、路徑 MTU 探索」。
| 封包來源 | 封包目的地 |
|---|---|
任何內部 IPv4 位址:主要內部 IPv4 位址,或執行個體 NIC 別名 IP 範圍中的內部 IPv4 位址 使用 1-1 NAT 存取設定指派給執行個體 NIC 的外部 IPv4 位址:在這種情況下, Google Cloud 會對輸出執行 1-1 NAT,將原始來源主要內部 IPv4 位址轉換為存取設定中指定的來源外部 IPv4 位址。 |
|
| 外部或內部 IPv6 位址,適用於雙重堆疊或僅限 IPv6 的執行個體 |
|
透過 Cloud VPN 通道通訊
Cloud VPN 具有封裝封包的閘道 MTU,以及封裝前後封包的酬載 MTU。
如要瞭解精確的酬載 MTU 值和其他 Cloud VPN MTU 資訊,請參閱 Cloud VPN 說明文件中的「MTU 考量事項」。
透過 Cloud Interconnect (VLAN) 連結進行通訊
建議您為連至相同虛擬私有雲網路的所有 VLAN 連結使用相同的 MTU,並將虛擬私有雲網路的 MTU 設為相同的值。如要進一步瞭解 Cloud Interconnect VLAN 連結 MTU,請參閱「Cloud Interconnect MTU」。
透過防火牆端點通訊
如果您使用防火牆端點,請為虛擬私有雲網路設定適當的 MTU。如果虛擬私有雲網路的 MTU 設定超過防火牆端點支援的封包大小,Cloud Next Generation Firewall 就無法成功執行第 7 層檢查。詳情請參閱「支援的封包大小」。
巨型封包支援
巨型框架的酬載大小超過 1,460 個位元組。下表彙整了 Google Cloud 產品和功能對巨型框架的支援情形:
| 產品或功能 | 巨型封包支援 |
|---|---|
| Compute Engine | 是 |
| Cloud Interconnect | 是 |
| 防火牆端點 | 是 |
| Cloud VPN | 否 |
| Google API | 否 |
運算執行個體和 MTU 設定
最佳做法是將運算執行個體 NIC 的 MTU,與 NIC 連接的虛擬私有雲網路 MTU 設為一致。NIC MTU 設定會因作業系統和設定而異:
以公開 OS 映像檔為基礎的 Linux 執行個體:每個 NIC MTU 都會使用 DHCP 選項 26,自動設為對應的虛擬私有雲網路 MTU。
以公開 OS 映像檔為基礎的 Windows 執行個體:根據預設,每個 NIC MTU 都會設為固定的
1,460位元組。如果變更虛擬私有雲網路的 MTU,且該網路包含以公開 OS 映像檔為基礎的 Windows 執行個體,則必須變更 Windows 執行個體的 MTU 設定。自訂訪客 OS 映像檔:您必須設定 NIC MTU,或使用 DHCP 選項 26 確認訪客 OS 接受虛擬私有雲網路 MTU。
具有多個網路介面的執行個體:將每個 NIC MTU 設為對應的虛擬私有雲網路 MTU。
如果 NIC MTU 必須與虛擬私有雲網路 MTU 不同,請將 NIC MTU 設為小於虛擬私有雲網路 MTU 的值。在某些進階網路情境中,強制降低 NIC MTU 很有幫助。
變更虛擬私有雲網路的 MTU
為避免連線能力問題,變更虛擬私有雲網路 MTU 前,請務必先停止每個運算執行個體。從客體作業系統重新啟動執行個體,不會更新 MTU。如果您選擇將執行個體的 MTU 設為低於網路 MTU,則仍須先停止執行個體,才能變更 MTU。
如要進一步瞭解如何變更網路 MTU,請參閱「變更虛擬私有雲網路的 MTU 設定」。
GKE 和 MTU 設定
為 Pod 介面選取的 MTU 取決於叢集節點使用的容器網路介面 (CNI),以及基礎虛擬私有雲 MTU 設定。詳情請參閱「Pod」。
Pod 介面 MTU 值為 1460,或沿用自節點的主要介面。
| CNI | MTU | GKE Standard |
|---|---|---|
| kubenet | 1460 | 預設 |
|
kubenet (GKE 1.26.1 以上版本) |
已繼承 | 預設 |
| Calico | 1460 |
使用 詳情請參閱「使用網路政策控管 Pod 和 Service 之間的通訊」。 |
| netd | 已繼承 | 使用下列任一方式啟用: |
| GKE Dataplane V2 | 已繼承 |
使用 詳情請參閱「使用 GKE Dataplane V2」。 |
MTU 不相符、MSS 限制、路徑 MTU 探索
本節說明 TCP 和非 TCP 通訊協定如何處理不相符的 MTU。TCP 通訊協定
TCP 通訊協定會自動處理 MTU 不相符的問題。每次開啟 TCP 連線時,用戶端和伺服器都會分別計算各自的有效 TCP 最大區段大小 (MSS) 值。用戶端和伺服器不一定要同意相同的有效 MSS 值。
用戶端的有效 TCP 最大區隔大小 (MSS):從用戶端傳送至伺服器的 TCP 區隔中,可傳輸的最大資料量是下列兩個值的最小值:
在 TCP 連線建立期間,用戶端從伺服器收到的 SYN-ACK 封包中,MSS 欄位的值。
用戶端網路介面的 MTU 減去 40 個位元組。扣除的 40 個位元組包括 20 個位元組的 IP 標頭和 20 個位元組的基本 TCP 標頭。
伺服器的有效 TCP 最大區隔大小 (MSS):從伺服器傳送至用戶端的 TCP 區隔中,可傳輸資料量的最大值為下列兩個值中的最小值:
在 TCP 連線建立期間,伺服器從用戶端收到的 SYN 封包中,MSS 欄位的值。
伺服器網路介面的 MTU 減去 40 個位元組。扣除的 40 個位元組包括 20 個位元組的 IP 標頭和 20 個位元組的基本 TCP 標頭。
TCP MSS 限制
TCP MSS 限制是指用戶端和伺服器之間的網路裝置,在用戶端和伺服器之間轉送封包時,變更 SYN 和 SYN-ACK 封包中的 MSS 值。 Google Cloud 每當將封包傳送至虛擬私有雲網路以外的目的地時,都會使用 MSS 限制。
Cloud VPN 通道和 Cloud Interconnect VLAN 連結也使用 MSS 限制。詳情請參閱 Cloud VPN 說明文件中的「封包封裝和處理」和「Cloud Interconnect MTU」。
虛擬私有雲網路不會對虛擬私有雲網路中下一個躍點轉送的封包執行 MSS 限制,因為 TCP 通訊協定本身就足夠。
非 TCP 通訊協定
如果涉及兩個不同的虛擬私有雲網路 MTU,則須特別留意 UDP 等其他通訊協定。傳送系統有責任發出符合其網路介面 MTU、接收系統網路介面 MTU,以及兩者之間所有網路 MTU 的封包。 Google Cloud 「不會」針對虛擬私有雲網路中下一個躍點轉送的封包執行 IP 分割。
如果 IP 封包過大而無法傳送 (例如封包超過接收運算執行個體 NIC 所在虛擬私有雲網路的 MTU), Google Cloud 會捨棄封包。如果封包已設定 DF 位元, Google Cloud 也會將「Fragmentation Needed」(IPv4 上的 ICMP) 或「Packet Too Big」(ICMPv6) 訊息傳回給傳送者。
Google Cloud 會在下列情況下傳送「Fragmentation Needed」(需要分割) 或「Packet Too Big」(封包過大) 訊息,即使 DF 位元已關閉也一樣:
- 虛擬私有雲網路 MTU 小於 1,600 個位元組,且傳送的封包超過 1,600 個位元組。
- 虛擬私有雲網路 MTU 為 1,600 位元組以上,且傳送的封包超過虛擬私有雲網路 MTU。
如果運算執行個體傳送封包時,會使用路徑 MTU 探索 (PMTUD),則必須傳送 ICMP「Fragmentation Needed」或「Packet Too Big」訊息。為說明 PMTUD 的運作方式,請參考以下範例:兩個運算執行個體位於不同的虛擬私有雲網路,並透過虛擬私有雲網路對接連線:
- 傳送執行個體的 NIC 位於 MTU 為 8,896 位元組的虛擬私有雲網路。
- 接收執行個體的 NIC 位於 MTU 為 1,460 位元組的虛擬私有雲網路。
- 傳送執行個體會發出 8,000 位元組的 IP 封包,並設定「Don't Fragment」(
DF) 位元。由於封包過大,無法傳送至接收執行個體, Google Cloud 會向傳送執行個體傳送「需要分割」或「封包過大」訊息。這則訊息會指出傳送者嘗試重新傳輸連線封包時,可使用的最大 IP 封包大小。 - 傳送端執行個體的作業系統會使用這項資訊,在傳送後續封包至接收端執行個體時,降低 IP 封包大小。
PMTUD 產生的「需要分段」或「封包過大」封包使用 ICMP 通訊協定,且來源與原始封包的目的地相符,因此 PMTUD 還有下列額外規定:
- 您必須設定輸入允許虛擬私有雲防火牆規則或防火牆政策中的規則,允許來自與原始封包目的地相符來源的 ICMP (適用於 IPv4) 或 ICMPv6 (適用於 IPv6)。如要簡化防火牆設定,建議允許來自所有來源的 ICMP 和 ICMPv6。
- 內部直通式網路負載平衡器和內部通訊協定轉送的轉送規則必須使用
L3_DEFAULT通訊協定,才能處理 PMTUD 的 ICMP 和原始封包使用的通訊協定。
後續步驟
- 如要查看其他 MTU 的運作方式,請參閱「建立及驗證巨型框架 MTU 網路」。
- 建立指定 MTU 的虛擬私有雲網路。
- 變更虛擬私有雲網路的 MTU 設定。
歡迎試用
如果您未曾使用過 Google Cloud,歡迎建立帳戶,親自體驗實際使用虛擬私有雲的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
免費試用虛擬私有雲