跳到主内容
快讯直播
AI智模界
AI 词典

MTU 与 IP 分片:为什么大响应会莫名超时

一句话定义:MTU(Maximum Transmission Unit,最大传输单元)是一条链路上单个数据帧能装下的最大字节数;IP 分片(IP Fragmentation)是当一个 IP 包超过下一跳的 MTU 时,把它切成几块分别发送、到终点再拼回去的机制。

打个比方。数据像搬家公司的货,MTU 是这条路线上最窄的那道电梯门。货太大有两个办法:一是拆箱(IP 分片),拆成小箱分批送,收件人收到后自己拼;二是先问路(PMTUD,Path MTU Discovery,路径 MTU 发现),也就是发件人在箱子上标“不许拆”(IPv4 的 DF 位,Don't Fragment),路上哪一段过不去,那台设备就回一句“太大了,最多 X 字节”(ICMP 的“需要分片”消息),发件人照此调整大小。

以太网的经典 MTU 是 1500 字节。一个满包减去 IP 头 20 字节、TCP 头 20 字节,剩下 1460 字节,这就是 MSS(Maximum Segment Size)。几个概念容易混:

概念管哪一段谁负责出问题的表现
MTU链路层单帧上限链路/设备超了就要分片或丢弃
MSSTCP 载荷上限两端协商协商值大于实际 MTU 就丢包
IP 分片把大包拆小IPv4 路由器可做,IPv6 只能发端做丢一片,整包作废
TCP 重传补丢掉的段两端表现为“卡住然后超时”

PMTUD 怎么失效的。它依赖 ICMP 回话,而这条回话在现实中常被掐掉:防火墙一刀切屏蔽 ICMP、安全组默认不放行、负载均衡只转发 TCP。于是形成黑洞:发件人标着“不许拆”发出 1500 字节的包,中间某台设备只支持 1400,把它悄悄丢掉,却不回“太大”。发件人不知道,重传、再重传,最后超时。症状很有辨识度——小请求全正常(握手、登录、小 JSON 都通),一返回大结果就挂;换个网络就好了,比如直连没事、连上公司 VPN 必现。

高发区是各种隧道和 overlay:PPPoE、IPsec、GRE、VXLAN 都要在原包外面再套一层头,可用 MTU 因此变小(PPPoE 常见 1492,VXLAN 常见 1450,IPsec 往往更低)。跨节点通信的 K8s 集群、VPN 访问内网服务,都算典型。IPv6 里路由器不再允许分片,PMTUD 从“建议”变成“必须”,配不好就是纯黑洞。

对从业者的意义。排查“大响应超时”,先怀疑 MTU 再怀疑代码,用不同大小的包做二分探测通常几分钟能定位。能改配置就别赌运气:在隧道入口做 MSS clamping(把 MSS 调到与实际 MTU 匹配),是不依赖 ICMP 的稳妥做法。应用层也别指望单个巨大报文,大响应走分块或流式返回,比赌路径 MTU 靠谱得多。具体设备的默认值和配置项,以各厂商官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。