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。

下列規則適用於 Outposts 中的執行個體:

  • 從 Outposts 中的執行個體流向區域中執行個體的流量的 MTU 為 1300。

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

巨型訊框 (9001 MTU)

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

  • 網際網路閘道的流量

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

  • VPN 連線的流量

  • EC2-經典特定 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、I2、M3 和 R3。

如需支援的 MTU 大小詳細資訊:

  • 如需 NAT 閘道相關資訊,請參閱《Amazon VPC 使用者指南》中的 NAT 閘道基本概念

  • 如需傳輸閘道相關資訊,請參閱《Amazon VPC 傳輸閘道使用者指南》中的 MTU

  • 如需 Local Zones 相關資訊,請參閱《AWS Local Zones 使用者指南》中的考量

路徑 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)。這會指示傳輸主機將承載分割成多個較小的封包,然後重新傳輸它們。

透過某些元件 (例如 NAT 閘道和負載平衡器) 建立的連線會自動追蹤。這意味著系統會自動為您的傳出連線嘗試啟用安全群組追蹤。如果自動追蹤連線,或者安全群組規則允許傳入 ICMP 流量,就可以接收 PMTUD 回應。

請注意,即使在安全群組層級允許流量,也可以封鎖 ICMP 流量,例如,如果您有拒絕進入子網路的 ICMP 流量的網路存取控制清單項目。

重要

路徑 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 管理指南》中的疑似留滯查詢