首页/网络/BGP 与广域网速查/PMTUD 失效排查:ICMP 被拦导致的大包黑洞
广域网排障60 条

PMTUD 失效排查:ICMP 被拦导致的大包黑洞

路径 MTU 发现依赖 ICMP 需分片报文:中间设备拦截该报文时,大包静默丢失,表现为小包通、大包不通的典型黑洞。

BGP 与广域网速查网络更新于 2026-10-13

PMTUD 与黑洞问题

路径 MTU 发现(PMTUD)依赖两个条件:发送端给报文打上 DF 位禁止分片,中间设备遇到超过自身 MTU 的报文时丢弃并回报一个「需要分片」的 ICMP 差错报文;发送端据此降低报文长度重试。问题在于很多网络出于安全考虑会拦截 ICMP,一旦这个反馈报文回不到发送端,大包会被静默丢弃,形成典型的大包黑洞:ping 通、登录正常(小包),但传输文件、加载页面或建立 TLS 握手时超时。定位方法是分档探测找到可通过的最大包长,缓解手段通常是调整隧道 MTU 或在设备上做 MSS 钳制。

基本信息

机制DF 位加 ICMP 需分片反馈共同完成
典型症状小包正常、大包超时,握手卡住
常见成因中间设备拦截 ICMP 差错报文
探测方法用 DF 位逐档加大包长
缓解手段MSS 钳制、调整隧道 MTU
常见高发位置IPsec 隧道、GRE 隧道、PPPoE 链路

典型使用场景

  • VPN 隧道内网页打不开或大文件传输中断
  • TLS 握手卡在证书交换阶段(报文较大)
  • 跨运营商链路间歇性大包失败
  • 新上线隧道验收:验证不同包长的可达性
  • 安全策略评审:评估拦截 ICMP 对业务的实际影响

定位与缓解

定位与缓解
# 分档探测,找到失败的分界
ping -M do -c 3 -s 1200 10.2.2.1
ping -M do -c 3 -s 1400 10.2.2.1
ping -M do -c 3 -s 1450 10.2.2.1
# Cisco:在隧道接口做 MSS 钳制
interface Tunnel100
 ip tcp adjust-mss 1360
# 查看接口 MTU 与隧道开销
show interfaces Tunnel100 | include MTU
# 华为侧对照
 display interface Tunnel0 | include MTU

现象与处置

现象原因处置
小包通大包不通ICMP 反馈被拦MSS 钳制或调小隧道 MTU
某档包长起失败路径某段 MTU 更小按失败分界设置 MTU
仅特定业务异常该业务报文较大评估该业务端设备 MSS 设置
隧道建立即异常隧道开销未计算按封装开销重新计算 MTU
MSS 钳制作用于经过设备的 TCP 会话,对 UDP 或其他协议无效;UDP 大包问题需要从应用侧或 MTU 层面解决。
隧道模式下 IPsec 会增加外层 IP 头与 ESP 头尾开销,计算 MTU 时要把这些字节扣掉,否则仍会出现大包失败。

易错点

  • 把大包不通当成链路丢包排查:方向跑了很久才发现是 MTU 问题
  • 只调整本端 MTU 而未考虑对端:单向可达导致现象更混乱
  • MSS 值设置过于保守:分片增多、效率下降,还可能影响部分业务
  • 忽略 ICMP 治理策略的影响:拦截 ICMP 的实际效果需要在业务层面验证
  • 隧道改造后未重新计算 MTU:封装开销变化导致原本正常的业务出现问题

数据来源与参考

  • RFC 1191: PMTUD
  • RFC 4821: PLPMTUD
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌