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

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

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

乙太網路訊框具有不同格式,最常見的格式是標準乙太網路 v2 訊框格式。其可支援 1500 MTU,此為多數網路均支援的最大乙太網路封包大小。執行個體支援的最大 MTU 因執行個體類型而異。所有 Amazon EC2 執行個體類型均支援 1500 MTU,而且許多現有的執行個體大小都支援 9001 MTU (即巨型訊框)。

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

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

巨型訊框 (9001 MTU)

巨型訊框可增加單一封包的承載大小,進而增加不屬於封包成本的封包比例,藉此允許超過 1500 位元組的資料。傳送相同數量的可用資料,所需的封包數即會減少。然而,在特定 AWS 區域 (EC2-Classic)、單一 VPC 或 VPC 對等連線之外,路徑最大為 1500 MTU。VPN 連接和透過網際網路閘道傳送的流量,其限制為 1500 MTU。封包若超過 1500 位元組將被切割為片段,若其 IP 標頭設有 Don't Fragment 旗標,則會將其捨棄。

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

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

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

所有目前世代的執行個體皆可支援 Jumbo Frame。下列前代的執行個體都支援 Jumbo Frame:C3、G2、I2、M3 和 R3。

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

路徑 MTU 探索

路徑 MTU 探索 (PMTUD) 可用來判斷網路路徑的最大傳輸單位 (MTU)。路徑 MTU 是原始主機與接收主機之間的封包大小上限。若主機傳送的封包大小大於接收主機的 MTU,或是大於路徑上裝置的 MTU,則接收主機或裝置便會傳回下列 ICMP 訊息:Destination Unreachable: Fragmentation Needed and Don't Fragment was Set (類型 3,代碼 4)。如此原始主機就會調整 MTU 直到封包順利傳送。

根據預設,安全群組不允許傳入的 ICMP 流量。不過,安全性群組是有狀態的,因此不論安全性群組規則為何,都允許對輸出要求的 ICMP 回應流入。因此,您不需要明確新增輸入 ICMP 規則來確保您的執行個體可以接收 ICMP 訊息回應。如需有關在網路 ACL 中設定 ICMP 規則的詳細資訊,請參閱《Amazon VPC 使用者指南》中的路徑 MTU 探索

重要

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

檢查兩個主機間的路徑 MTU

您可使用 tracepath 命令來檢查兩個主機間的路徑 MTU,該命令為許多 Linux 發行版本 (含 Amazon Linux) 預設即提供之 iputils 封包的一部分

使用 tracepath 檢查路徑 MTU

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

[ec2-user ~]$ tracepath amazon.com 1?: [LOCALHOST] pmtu 9001 1: ip-172-31-16-1.us-west-1.compute.internal (172.31.16.1) 0.187ms pmtu 1500 1: no reply 2: no reply 3: no reply 4: 100.64.16.241 (100.64.16.241) 0.574ms 5: 72.21.222.221 (72.21.222.221) 84.447ms asymm 21 6: 205.251.229.97 (205.251.229.97) 79.970ms asymm 19 7: 72.21.222.194 (72.21.222.194) 96.546ms asymm 16 8: 72.21.222.239 (72.21.222.239) 79.244ms asymm 15 9: 205.251.225.73 (205.251.225.73) 91.867ms asymm 16 ... 31: no reply Too many hops: pmtu 1500 Resume: pmtu 1500

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

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

部分執行個體設定為使用巨型訊框,其他則使用標準訊框大小。建議在您 VPC 內的網路流量使用巨型訊框,或在網際網路流量使用標準訊框。無論您的使用案例為何,我們都建議您確認執行個體會依預期運作。您可使用此章節的程序來檢查網路界面的 MTU 設定並視需要修改。

檢查 Linux 執行個體上的 MTU 設定

您可使用下列 ip 命令來檢查目前的 MTU 值。請注意,在此範例輸出中,mtu 9001 表示此執行個體使用巨型訊框。

[ec2-user ~]$ ip link show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 02:90:c0:b7:9e:d1 brd ff:ff:ff:ff:ff:ff

設定 Linux 執行個體上的 MTU 值

  1. 您可使用 ip 命令來設定 MTU 值。下列命令會將所需的 MTU 值設定為 1500,但您可改用 9001。

    [ec2-user ~]$ sudo ip link set dev eth0 mtu 1500
  2. (選用) 欲在重新啟動後保留您的網路 MTU 設定,請依據您的作業系統類型修改下列組態檔案。

    • 若為 Amazon Linux 2,請將下列一行新增至 /etc/sysconfig/network-scripts/ifcfg-eth0 檔案:

      MTU=1500

      將下行新增至 /etc/dhcp/dhclient.conf 檔案:

      request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-search, domain-name-servers, host-name, nis-domain, nis-servers, ntp-servers;
    • 若為 Amazon Linux,請將下列幾行新增至 /etc/dhcp/dhclient-eth0.conf 檔案。

      interface "eth0" { supersede interface-mtu 1500; }
    • 若是其他 Linux 發行版本,請參閱其特定文件。

  3. (可選) 重新啟動執行個體,並確認 MTU 設定正確。

故障診斷

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