设置 Amazon EC2 实例的 MTU
网络连接的最大传输单位 (MTU) 是能够通过该连接传递的最大可允许数据包的大小(以字节为单位)。所有 Amazon EC2 实例都支持标准帧(1500 MTU),所有当前一代实例类型都支持巨型帧(9001 MTU)。
您可以查看 Amazon EC2 实例的 MTU,查看您的实例与其他主机之间的路径 MTU,并将您的实例配置为使用标准帧或巨型帧。
查看两个主机之间的路径 MTU
您可以检查 EC2 实例与另一主机之间的路径 MTU。可以指定 DNS 名称或 IP 地址作为目标。如果目标是另一个 EC2 实例,则验证其安全组是否允许入站 UDP 流量。
您使用的过程取决于实例的操作系统。
在实例上运行 tracepath 命令来检查您的 EC2 实例与指定目标之间的路径 MTU。此命令是 iputils
软件包的一部分,默认情况下,许多 Linux 发行版中都提供该命令。
本例检查 EC2 实例与 amazon.com
之间的路径 MTU。
[ec2-user ~]$
tracepathamazon.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
使用 mturoute 检查路径 MTU
-
从 https://elifulkerson.com/projects/mturoute.php
将 mturoute.exe 下载到您的 EC2 实例。 -
打开命令提示符窗口并将当前目录更改为 mturoute.exe 的下载目录。
-
使用以下命令检查您的 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
您可以检查实例的 MTU 值。一些实例配置为使用巨型帧,另一些则配置为使用标准帧大小。
您使用的过程取决于实例的操作系统。
查看 Linux 实例上的 MTU 设置
在您的 EC2 实例上运行以下 ip 命令。如果主网络接口不是 eth0
,则请将 eth0
替换为您的网络接口。
[ec2-user ~]$
ip link showeth0
在此示例输出中,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
您使用的过程取决于实例上的驱动程序。
设置实例的 MTU
您可能希望将巨型帧用于 VPC 内的网络流量,并将标准帧用于互联网流量。无论是哪种用例,我们都建议您验证实例是否如预期那样运行。
您使用的过程取决于实例的操作系统。
在 Linux 实例上设置 MTU 值
-
在您的实例上运行以下 ip 命令。其将预期 MTU 值设置为 1500,但是您可以使用 9001 代替。
[ec2-user ~]$
sudo ip link set deveth0
mtu1500
-
(可选) 要在重启后保留您的网络 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 AMI,请将以下几行添加到
/etc/dhcp/dhclient-eth0.conf
文件。interface "eth0" { supersede interface-mtu
1500
; } -
对于其他 Linux 发行版,请参阅其具体文档。
-
-
(可选) 重启实例并验证 MTU 设置是否正确。
您使用的过程取决于实例上的驱动程序。