EC2 執行個體的網路最大傳輸單位 (MTU) - Amazon Elastic Compute Cloud

EC2 執行個體的網路最大傳輸單位 (MTU)

網路連線的最大傳輸單位 (MTU) 係允許通過該連線的最大封包大小 (以位元組為單位)。連線的 MTU 越大,單一封包能傳遞的資料也越多。乙太網幀內含封包 (或您實際傳送的資料) 和環繞的網路額外負荷資訊。

乙太網路訊框具有不同格式,最常見的格式是標準乙太網路 v2 訊框格式。其可支援 1500 MTU,此為多數網路均支援的最大乙太網路封包大小。執行個體支援的最大 MTU 因執行個體類型而異。

下列規則適用於 Wavelength 區域中的執行個體:

  • 在相同 Wavelength 區域的 VPC 內從一個執行個體傳送至另一個執行個體的流量的 MTU 為 1300。

  • 從一個執行個體傳送至另一個使用 Wavelength 區域內電信業者 IP 的執行個體的流量的 MTU 為 1500。

  • 在 Wavelength 區域與使用公有 IP 地址的區域之間從一個執行個體傳送至另一個執行個體的流量的流量 MTU 為 1500。

  • 在 Wavelength 區域與使用私有 IP 地址的區域之間從一個執行個體傳送至另一個執行個體的流量的流量 MTU 為 1300。

若要查看 Linux 執行個體的網路 MTU 資訊,請切換到 《Linux 執行個體的 Amazon EC2 使用者指南》指南中的此頁面:EC2 執行個體的網路最大傳輸單位 (MTU)

巨型訊框 (9001 MTU)

巨型訊框可增加單一封包的承載大小,進而增加不屬於封包成本的封包比例,藉此允許超過 1500 位元組的資料。傳送相同數量的可用資料,所需的封包數即會減少。但是,在下列情況下,流量限制為 MTU 最大為 1500:

  • 網際網路閘道的流量

  • 跨區域 VPC 對等互連的流量

  • VPN 連線的流量

  • EC2-Classic 的指定 AWS 區域外的流量

封包若超過 1500 位元組將被切割為片段,若其 IP 標頭設有 Don't Fragment 旗標,則會將其捨棄。

巨型訊框應謹慎用於進出網路的流量,或任何離開 VPC 的流量。封包由中介系統切割,因此拖累流量速度。欲在 VPC 中使用巨型訊框但不減緩流出 VPC 的流量,您可依據路由設定 MTU 大小,或使用多個具備不同 MTU 大小與路由的彈性網絡介面。

以配置於叢集置放群組內的執行個體而言,巨型訊框有助實現最大網路傳輸量,此情況建議使用巨型訊框。如需詳細資訊,請參閱 置放群組

您可以針對透過 AWS Direct Connect 的 VPC 和現場部署網路之間的流量,使用 Jumbo Frame。如需詳細資訊,以及如何驗證 Jumbo Frame 功能,請參閱 AWS Direct Connect 使用者指南中的設定網路 MTU

所有 Amazon EC2 執行個體類型均支援 1500 MTU,並且所有最新一代執行個體類型均支援巨型訊框。下列上一代執行個體類型均支援巨型訊框:A1、C3、G2、I2、M3 和 R3。

如需傳輸閘道的支援 MTU 大小的詳細資訊,請參閱《Amazon VPC 傳輸閘道》中的 MTU

路徑 MTU 探索

路徑 MTU 探索 (PMTUD) 可用於確認兩個裝置間的路徑 MTU。路徑 MTU 是原始主機和接收主機之間的路徑上支援的最大封包尺寸。在兩個主機之間的網路中,當 MTU 大小出現差異時,PMTUD 會允許接收主機使用 ICMP 訊息回應原始主機。此 ICMP 訊息指示原始主機沿著網路路徑,使用最低的 MTU 大小來重新傳送請求。如果不這樣協議,可能會因為請求太大,使得接收端主機無法接受,而發生封包捨棄。

針對 IPv4,若主機傳送的封包大小大於接收主機的 MTU,或是大於路徑上裝置的 MTU,則接收主機或裝置便會丟棄封包,然後傳回下列 ICMP 訊息:Destination Unreachable: Fragmentation Needed and Don't Fragment was Set (類型 3,代碼 4)。這會指示傳輸主機將承載分割成多個較小的封包,然後重新傳輸它們。

IPv6 通訊協定不支援網路中的分段。若主機傳送的封包大小大於接收主機的 MTU,或是大於路徑上裝置的 MTU,則接收主機或裝置便會丟棄封包,然後傳回下列 ICMP 訊息:ICMPv6 Packet Too Big (PTB) (類型 2)。這會指示傳輸主機將承載分割成多個較小的封包,然後重新傳輸它們。

根據預設,安全群組不允許傳入的 ICMP 流量。如果您沒有明確為安全群組設定此 ICMP 傳入規則,則會封鎖 PMTUD。如需有關在網路 ACL 中設定 ICMP 規則的詳細資訊,請參閱《Amazon VPC 使用者指南》中的路徑 MTU 探索

重要

路徑 MTU 探索並不保證某些路由器不會捨棄巨型訊框。您 VPC 內的網際網路閘道僅能轉送至多 1500 位元組的封包。網際網路流量建議使用 1500 MTU 封包。

檢查兩個主機間的路徑 MTU

您可使用 mturoute.exe 命令來檢查兩個主機間的路徑 MTU, 您可從 http://www.elifulkerson.com/projects/mturoute.php 下載並安裝該命令

使用 mturoute.exe 檢查路徑 MTU

  1. http://www.elifulkerson.com/projects/mturoute.php 下載 mturoute.exe

  2. 開啟命令提示字元視窗,並變更至您下載 mturoute.exe 所在的目錄。

  3. 使用下列命令來檢查您 EC2 執行個體和另一主機間的路徑 MTU。可使用 DNS 名稱或 IP 地址做為目的地。若目的地為另一個 EC2 執行個體,請確認其安全群組允許傳入的 UDP 流量。此範例會檢查 EC2 執行個體和 www.elifulkerson.com 間的路徑 MTU。

    .\mturoute.exe www.elifulkerson.com * ICMP Fragmentation is not permitted. * * Speed optimization is enabled. * * Maximum payload is 10000 bytes. * + ICMP payload of 1472 bytes succeeded. - ICMP payload of 1473 bytes is too big. Path MTU: 1500 bytes.

    在此範例中,路徑 MTU 為 1500。

檢查並設定您 Windows 執行個體上的 MTU

部分驅動程式設定為使用巨型訊框,其他則使用標準訊框大小。建議在您 VPC 內的網路流量使用巨型訊框,或在網際網路流量使用標準訊框。無論您的使用案例為何,我們都建議您確認執行個體會依預期運作。

如果您的執行個體在 Wavelength Zone (Wavelength 區域) 中執行,則 MTU 的最大值為 1300。

ENA 驅動程式

適用於 1.5 版及更早版本的驅動程式

您可使用裝置管理員或 Set-NetAdapterAdvancedProperty 命令來變更 MTU 設定。

若要使用 Get-NetAdapterAdvancedProperty 命令來取得目前的 MTU 設定,請使用下列命令。檢查介面名稱 MTU 的項目。9001 值表示已啟用巨型訊框。巨型訊框預設為停用。

Get-NetAdapterAdvancedProperty -Name "Ethernet"

啟用巨型訊框,如下所示:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "MTU" -RegistryValue 9001

停用巨型幀,如下所示:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "MTU" -RegistryValue 1500

適用於 2.1.0 及更新版本的驅動程式

您可使用裝置管理員或 Set-NetAdapterAdvancedProperty 命令來變更 MTU 設定。

若要使用 Get-NetAdapterAdvancedProperty 命令來取得目前的 MTU 設定,請使用下列命令。檢查介面名稱 *JumboPacket 的項目。9015 值表示已啟用巨型訊框。巨型訊框預設為停用。

執行 Get-NetAdapterAdvancedProperty 或使用萬用字元 (星號) 偵測所有對應的乙太網路名稱。

Get-NetAdapterAdvancedProperty -Name "Ethernet*"

執行下列命令,並包含您要查詢的乙太網路名稱。

Get-NetAdapterAdvancedProperty -Name "Ethernet"

啟用巨型訊框,如下所示:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 9015

停用巨型訊框,如下所示:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 1514

Intel SRIOV 82599 驅動程式

您可使用裝置管理員或 Set-NetAdapterAdvancedProperty 命令來變更 MTU 設定。

若要使用 Get-NetAdapterAdvancedProperty 命令來取得目前的 MTU 設定,請使用下列命令。檢查介面名稱 *JumboPacket 的項目。9014 值表示已啟用巨型訊框。(請注意,MTU 大小包含標頭和承載。) 巨型訊框預設為停用。

Get-NetAdapterAdvancedProperty -Name "Ethernet"

啟用巨型訊框,如下所示:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 9014

停用巨型訊框,如下所示:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*JumboPacket" -RegistryValue 1514

AWS PV 驅動程式

您無法使用裝置管理員來變更 MTU 設定,但可使用 netsh 命令來加以變更。

使用下列命令來取得目前的 MTU 設定。介面名稱可能有所不同。請在輸出中尋找具備名稱 "Ethernet"、"Ethernet 2" 或 "Local Area Connection" 的項目。您將需要介面名稱來啟用或停用巨型訊框。9001 值表示已啟用巨型訊框。

netsh interface ipv4 show subinterface

啟用巨型訊框,如下所示:

netsh interface ipv4 set subinterface "Ethernet" mtu=9001

停用巨型幀,如下所示:

netsh interface ipv4 set subinterface "Ethernet" mtu=1500

故障診斷

使用巨型訊框時,若您的 EC2 執行個體和 Amazon Redshift 叢集間出現連線問題,請參閱《Amazon Redshift 管理指南》中的疑似留滯查詢