路径 MTU 发现
为使跨越多重网络路径的两个主机通信,如果传输数据包的大小比此路径上的任何网络 MTU 的最小值还要大,就将其分段。 由于数据包的分段可能导致降低网络性能,因此,希望通过传输大小不大于网络路径的最小 MTU 的数据包来避免分段。 此大小被称为路径 MTU。
如 RFC 1191 中所描述,操作系统支持路径 MTU 发现算法。 可以通过修改 no 命令的 tcp_pmtu_discover 和 udp_pmtu_discover 选项为 TCP 和 UDP 应用程序启用路径 MTU 发现。 当为了支持 TCP 而启用时,路径 MTU 发现将自动强制 TCP 应用程序传输的所有数据包大小不超过路径 MTU。 由于 UDP 应用程序本身确定其传输信息包的大小,因此必须专门编写 UDP 应用程序以使用 IP_FINDPMTU 套接字选项来利用路径 MTU 信息。 即使启用了 udp_pmtu_discover no 选项。 缺省情况下,tcp_pmtu_discover 和 udp_pmtu_discover 已启用。
尝试针对目标执行路径 MTU 发现时,会在路径 MTU (PMTU) 表中创建 pmtu 条目。 此表可以使用 pmtu 显示命令来进行显示。 通过允许不再使用的 pmtu 条目失效和删除,可以避免 pmtu 条目的累积。 PMTU 条目的过期由 no 命令的 pmtu_expire 选项控制。 在缺省情况下,pmtu_expire 会设置为 10 分钟。
由于路由可以动态的更改,一个路径的路径 MTU 值也会随时间变化。 降低路径 MTU 值将导致数据包分段,因此,发现的路径 MTU 值定期检查其值的降低。 缺省情况下,每 10 分钟检查一次递减值,可以通过修改 no 命令的 pmtu_default_age 选项的值来更改此值。
UDP 应用程序将始终需要设置 IP_DONTFRAG 套接字选项以检测 PMTU 的下降。 这将启用路径 MTU 中立即检测降低,而不是每 pmtu_default_age 分钟检查一次减少。
增加路径 MTU 值可导致网络性能的潜在增加,因此,发现路径 MTU 值定期检查其值增加。 缺省情况下,每 30 分钟检查一次增大,可以通过修改 no 命令的 pmtu_rediscover_interval 选项的值来更改此值。
如果网络路径中的所有路由器不都支持 RFC 1191,那么就不太可能确定一个精确的路径 MTU 值。 在这些情况下,mmtu 命令可以用于添加或删除尝试的路径 MTU 值。
- 路径 MTU 发现不能用于重复的路由,包括为组路由配置的路由 (请参阅 路由使用限制)。 可针对重复路由使用路径 MTU 发现
- 启用路径 MTU 发现会将 no 命令的 arpqsize 选项的值设置为最小值 5。 如果路径 MTU 随后禁用,此值并不降低。