MPLS 承载下的 MTU 排查
每层 MPLS 标签占 4 字节,承载 L3VPN 时业务报文要多出 8 字节,再加上隧道封装,实际可用 MTU 会明显小于 1500。典型症状是小包通、大包不通或大流量时断时续。排查思路很直接:先用带 df-bit 的探测包找到临界值,再核对两端接口 MTU 与 MPLS MTU,最后确认 PMTUD 依赖的 ICMP 报错没有被过滤。
基本信息
| 标签开销 | 每层标签 4 字节,L3VPN 通常两层共 8 字节 |
|---|---|
| 探测方法 | ping 配合 size 递增与 df-bit 置位 |
| 关键参数 | 接口 MTU 与 mpls mtu 两处值,两端应一致 |
| 依赖机制 | PMTUD 需要 ICMP 不可达消息正常送达 |
| 适用平台 | Cisco IOS/IOS-XE、华为 VRP、Juniper Junos,命令名称略有差异 |
典型使用场景
- 客户反馈部分网站打不开:常见于 MSS 与 MTU 不匹配导致的大包丢弃
- 新链路投入使用:先做一次 MTU 探测,建立可用包长的基线
- 跨设备厂商标接:两端对 MPLS MTU 的默认取值可能不同
- 隧道叠加 MPLS:多重封装下需要重新确认有效 MTU
- 变更后回归验证:改过接口或隧道参数后重做一次探测
探测与核对
探测与核对
# 逐步加大探测包,找到临界大小
ping 10.10.1.1 size 1400 df-bit repeat 5
ping 10.10.1.1 size 1472 df-bit repeat 5
# 核对物理 MTU 与 MPLS MTU
show interfaces GigabitEthernet0/1 | include MTU
show running-config interface GigabitEthernet0/1 | include mpls mtu
# Linux 侧探测与 MSS 处理(业务主机)
ping -M do -s 1472 10.10.1.1常见表现与定位
| 现象 | 可能原因 | 核对动作 |
|---|---|---|
| 小包通、大包不通 | 标签开销使有效 MTU 小于业务假设值 | 探测临界值并对业务侧做 MSS 处理 |
| 大流量时断断续续 | PMTUD 失效,大包被静默丢弃 | 确认 ICMP 不可达消息可达且未被过滤 |
| 单向不通 | 回程路径 MTU 更小 | 两个方向分别探测,不要只测一侧 |
| 调整为巨帧后仍不通 | 中间设备不支持该帧长 | 逐跳核对链路与设备的 MTU 设置 |
调整 MPLS MTU 前先确认中间设备不会丢弃超长帧:本地放开了但中间丢,症状会比调整前更隐蔽。变更后立即做双向大包验证并记录基线。
探测结果连设备型号、链路类型与测试时间一起记录:不同平台对 MPLS MTU 的默认取值并不完全相同,有了可比基线,后续变更与扩容才有判断依据。