Skip to content

MTU

MTU:最大传输单元(Maximum Transmission Unit),通常指 IP MTU,即三层网络中数据包的最大大小。

MTU 基本概念

  • 二层 MTU
    单位为帧,默认长度范围为 64 - 1518 字节。通常不会修改帧的最大长度,但在某些特殊情况下可以启用 Jumbo 帧,以支持超过 1518 字节的帧。

  • 三层 MTU
    单位为包,默认长度范围为 46 - 1500 字节

  • 路径 MTU(path mtu)
    在发送方到接收方路径中,所有链路的 最小 MTU 值。它决定了数据包在网络中传输时可以使用的最大大小。

路径 MTU 发现(Path MTU Discovery)

路径 MTU 发现(PMTU Discovery)用于确定路径 MTU 值。它依赖于 ICMP PTB (Packet Too Big) 消息来检测链路的最大传输能力。

  • PMTU 过时
    [RFC1191] 推荐一个由 PMTUD 得到的 PMTU 值在10分钟后过时。路径 MTU发现 有时会因为防火墙和网关过滤可能不加选择地丢弃ICMP流量而出现问题,这会损害PMTU发现算法。困为这点,从基于系统范畴或有更好保证来看,可能要关闭PMTU发现。

  • ICMP 过滤问题
    防火墙或网关可能会丢弃 ICMP 流量,导致 PMTU 发现失败,从而影响数据传输。

  • 关闭 PMTU 发现
    在 Linux 系统中,可通过修改 /proc/sys/net/ipv4/ip_no_pmtu_disc 文件,将其值设置为 1 以关闭 PMTU 发现。

  • PLPMTUD(Packetization Layer PMTU Discovery)
    [RFC4821] 提出了 PMTU 发现的替代方案 PLPMTUD,通过传输层的探测来避免依赖 ICMP。

MSS 与 MTU的关系 MSS 参考


MSS 是 MTU 减去 TCP 和 IP Header长度计算而来,提高传输效率避免 IP 分片