

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為您的 Amazon EC2 執行個體設定 MTU
<a name="ec2-instance-mtu"></a>

網路連線的最大傳輸單位 (MTU) 係允許通過該連線的最大封包大小 (以位元組為單位)。所有 Amazon EC2 執行個體都支援標準影格 (1500 MTU)，而所有目前世代的執行個體類型都支援巨型影格 (9001 MTU)。

您可以檢視 Amazon EC2 執行個體的 MTU、檢視執行個體與其他主機之間的路徑 MTU，以及將執行個體設定為使用標準或巨型訊框。

**Topics**
+ [檢查兩個主機間的路徑 MTU](#check_path_mtu)
+ [檢查執行個體的 MTU](#check_mtu)
+ [為您的執行個體設定 MTU](#set_mtu)

## 檢查兩個主機間的路徑 MTU
<a name="check_path_mtu"></a>

您可以檢查您 EC2 執行個體和另一主機間的路徑 MTU。可使用 DNS 名稱或 IP 位址做為目的地。若目的地為另一個 EC2 執行個體，請確認其安全群組允許傳入的 UDP 流量。

您使用的程序會依執行個體的作業系統而定。

### Linux 執行個體
<a name="check-path-mtu-linux"></a>

在執行個體上執行 **tracepath** 命令，以檢查 EC2 執行個體與指定目的地之間的路徑 MTU。此命令是 `iputils` 套件的一部分，依預設可在許多 Linux 發行版本中使用。

此範例會檢查 EC2 執行個體和 `amazon.com` 間的路徑 MTU。

```
[ec2-user ~]$ tracepath amazon.com
```

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

```
 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
```

### Windows 執行個體
<a name="check-path-mtu-windows"></a>

**使用 mturoute.exe 檢查路徑 MTU**

1. 從 [https://elifulkerson.com/projects/mturoute.php](https://elifulkerson.com/projects/mturoute.php)：// 下載**mturoute.exe**到您的 EC2 執行個體。

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

1. 使用下列命令來檢查您 EC2 執行個體與指定目的地之間的路徑 MTU。此範例會檢查 EC2 執行個體和 `www.elifulkerson.com` 間的路徑 MTU。

   ```
   .\mturoute.exe www.elifulkerson.com
   ```

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

   ```
   * 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
<a name="check_mtu"></a>

您可以檢查執行個體的 MTU 值。部分執行個體設定為使用巨型訊框，其他則使用標準訊框大小。

您使用的程序會依執行個體的作業系統而定。

### Linux 執行個體
<a name="check-mtu-linux"></a>

**檢查 Linux 執行個體上的 MTU 設定**  
在 EC2 執行個體上執行下列 **ip** 命令。如果主要網路介面不是 `eth0`，請將取代 `eth0` 為您的網路介面。

```
[ec2-user ~]$ ip link show eth0
```

請注意，在此範例輸出中，*mtu 9001* 表示此執行個體使用巨型訊框。

```
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
```

### Windows 執行個體
<a name="check-mtu-windows"></a>

您使用的程序取決於執行個體上的驅動程式。

------
#### [ ENA driver ]

**2.1.0 版及更新版本**  
若要取得 MTU 值，請在 EC2 執行個體上使用下列 **Get-NetAdapterAdvancedProperty** 命令。使用萬用字元 (星號) 取得所有乙太網路名稱。檢查介面名稱 `*JumboPacket` 的項目。9015 值表示已啟用巨型訊框。巨型訊框預設為停用。

```
Get-NetAdapterAdvancedProperty -Name "Ethernet*"
```

**1.5 版和較舊版本**  
若要取得 MTU 值，請在 EC2 執行個體上使用下列 **Get-NetAdapterAdvancedProperty** 命令。檢查介面名稱 `MTU` 的項目。9001 值表示已啟用巨型訊框。巨型訊框預設為停用。

```
Get-NetAdapterAdvancedProperty -Name "Ethernet"
```

------
#### [ Intel SRIOV 82599 driver ]

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

```
Get-NetAdapterAdvancedProperty -Name "Ethernet"
```

------
#### [ AWS PV driver ]

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

```
netsh interface ipv4 show subinterface
```

------

## 為您的執行個體設定 MTU
<a name="set_mtu"></a>

建議在您 VPC 內的網路流量使用巨型訊框，或在網際網路流量使用標準訊框。無論您的使用案例為何，我們都建議您確認執行個體會依預期運作。

您使用的程序會依執行個體的作業系統而定。

### Linux 執行個體
<a name="set-mtu-linux"></a>

**設定 Linux 執行個體上的 MTU 值**

1. 在執行個體上執行以下 **ip** 命令。下列命令會將所需的 MTU 值設定為 1500，但您可改用 9001。如果主要網路介面不是 `eth0`，請將 `eth0` 取代為實際網路介面。

   ```
   [ec2-user ~]$ sudo ip link set dev eth0 mtu 1500
   ```

1. (選用) 欲在重新啟動後保留您的網路 MTU 設定，請依據您的作業系統類型修改下列組態檔案。
   + **Amazon Linux 2023** – 修改組態檔案的 `[Link]` 區段。預設組態檔案為 `/usr/lib/systemd/network/80-ec2.network`，或者可以更新在 /run/systemd/network/ 中建立的任何自訂組態檔案，其中檔案名稱為 *priority*-*interface*.network。如需詳細資訊，請參閱 Amazon Linux 文件中的[聯網服務](https://docs.aws.amazon.com/linux/al2023/ug/networking-service.html)。

     ```
     MTUBytes=1500
     ```
   + **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;
     ```
   + **其他 Linux 發行版本** - 請參閱其特定文件。

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

### Windows 執行個體
<a name="set-mtu-windows"></a>

您使用的程序取決於執行個體上的驅動程式。

------
#### [ ENA driver ]

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

**2.1.0 版及更新版本**  
使用下列命令來啟用巨型訊框。

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

使用下列命令停用。

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

**1.5 版和較舊版本**  
使用下列命令來啟用巨型訊框。

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

使用下列命令停用。

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

------
#### [ Intel SRIOV 82599 driver ]

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

使用下列命令來啟用巨型訊框。

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

使用下列命令停用。

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

------
#### [ AWS PV driver ]

您可以使用執行個體上的 **netsh** 命令來變更 MTU。您可使用裝置管理員變更 MTU 設定。

使用下列命令來啟用巨型訊框。

```
netsh interface ipv4 set subinterface "Ethernet" mtu=9001
```

使用下列命令停用。

```
netsh interface ipv4 set subinterface "Ethernet" mtu=1500
```

------