5.9.1. 找出最佳 MTU

最大传输单元 Maximum Transmission Unit (MTU) 的值能够通过加 “-M do“ 选项的 ping(8) 实验来确定,它发送从 1500 字节(对于IP+ICMP 包头,有 28 字节的偏移)大小开始的 ICMP 包,来找出 IP 不分片的最大包大小。

尝试下列例子

  1. $ ping -c 1 -s $((1500-28)) -M do www.debian.org
  2. PING www.debian.org (194.109.137.218) 1472(1500) bytes of data.
  3. From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454)
  4. --- www.debian.org ping statistics ---
  5. 0 packets transmitted, 0 received, +1 errors

尝试 1454 代替 1500

你看到用 1454 ping(8) 成功了。

这个过程是 路径 MTU (PMTU) 发现 (RFC1191) , tracepath(8) 命令能够自动完成这个。

[提示]提示

上面的列子,PMTU 的值是 1454,这是我先前的光纤到户提供商,使用了 异步传输模式 Asynchronous Transfer Mode (ATM) 作为他们的骨干网络,并使用 PPPoE 作为客户端。实际 PMTU 值依赖于你的环境,比如说,我新的光纤到户提供商是 1500。

表 5.18. 最佳 MTU 值的基本指引方法

网络环境MTU基本原理
拨号连接(IP: PPP)576标准的
以太网连接 (IP: DHCP 或固定)1500默认标准值
以太网连接 (IP: PPPoE)1492 (=1500-8)PPP 头部 2 字节 和 PPPOE 头部 6 字节
以太网连接 (ISP 骨干网: ATM, IP: DHCP 或固定 IP)1462 (=4831-18-8)作者推断:18 字节的以太网头,8字节 SAR 尾(译注:SAR 为 ATM 技术名词)
以太网连接 (ISP 骨干: ATM, IP: PPPoE)1454 (=4831-8-18-8)参见 “Optimal MTU configuration for PPPoE ADSL Connections“ 来了解基本原理

除了这些基本的指引方法外,你还应当知道下面的信息。

  • 使用任何隧道方式(VPN 等.)的最佳 MTU 需要进一步减去它们上面的头部。

  • MTU 值不应当超过通过实验验证的 PMTU 值。

  • 当遇到其它限制的时候,较大的 MTU 值通常比较好。