第199篇:MPLS OAM:LSP Ping 与 Traceroute
关键词
MPLS OAM、LSP Ping、LSP Traceroute、MPLS 连通性检测、FEC 验证、故障定位
一、MPLS OAM 概述
1.1 为什么需要 MPLS OAM
普通的 ICMP Ping 只能检测 IP 连通性,无法验证 MPLS 标签交换路径(LSP) 的正确性:
ICMP Ping 的局限:
ping 10.0.0.2
✔ IP 可达(通过普通 IP 路由转发)
✗ 无法确认是否经过预期的 MPLS LSP
✗ 无法验证标签是否正确
✗ 无法检测标签环路
MPLS OAM 用 LSP Ping 解决这些问题:
ping mpls ldp 10.0.0.2 32
✔ 验证 MPLS LSP 连通性
✔ 验证 FEC 与标签的对应关系
✔ 确认路径上的每个 LSR 都正确转发
1.2 MPLS OAM 的标准
标准依据:
RFC 4377: MPLS OAM 需求
RFC 4378: MPLS OAM 框架
RFC 8029: LSP Ping / Traceroute(替代 RFC 4379)
RFC 6426: MPLS 双向转发检测(BFD)
1.3 OAM 能检测的问题
| 问题类型 |
LSP Ping |
LSP Traceroute |
说明 |
| LSP 中断 |
✔ |
✔ |
标签无效或 LSP 未建立 |
| 标签错误 |
✔ |
✔ |
错误标签导致错发 |
| 标签环路 |
✔ |
✔ |
TTL 检测 |
| MTU 问题 |
✔ |
✔ |
超过路径 MTU |
| FEC 不对应 |
✔ |
✔ |
目标 FEC 与实际标签不匹配 |
| 黑洞路由 |
✔ |
✔ |
有标签无路由 |
二、LSP Ping 工作原理
2.1 报文格式
LSP Ping 使用 UDP 封装(端口 3503):
| MPLS 标签栈 (模拟被检 测的 LSP) |
UDP 头 (端口3503) |
LSP Ping 报文头 |
Target FEC TLV |
|
|
|
|
2.2 工作流程
发起端(Ingress LSR) 目标端(Egress LSR)
│ │
│ 1. 构造 MPLS Echo Request │
│ - 标签栈 = 待检测 LSP 的标签 │
│ - UDP 3503 │
│ - Target FEC TLV = 10.0.0.2/32 │
│ │
│══════════ MPLS Echo Request ════════════→ │
│ │
│ 2. 验证 FEC
│ - 自己是否为该 FEC 的 Egress
│ - 标签栈是否匹配
│ │
│←══════════ MPLS Echo Reply ═══════════════ │
│ │
│ 3. 收到 Reply │
│ - Return Code = 3 (成功) 或错误码 │
│ │
2.3 华为设备配置与命令
# 基本 LSP Ping(检测 LDP LSP)
<HUAWEI> ping mpls ldp 10.0.0.2 32
LSP PING: Send 5, Received 5 (sequence number)
Response Time: 1 1 1 2 1 ms
# 检测静态 LSP
<HUAWEI> ping mpls static 10.0.0.2 32
# 检测 TE 隧道
<HUAWEI> ping mpls te tunnel 100
2.4 Return Code 含义
| Return Code |
含义 |
说明 |
| 3 |
Success |
LSP 正常,目标可达 |
| 4 |
No Mapping |
目标 FEC 在 Egress 无对应 |
| 6 |
Unknown FEC |
识别不了 FEC 类型 |
| 7 |
Wrong Interface |
标签从错误接口收到 |
| 8 |
Replying Router is not Egress |
本节点不是该 FEC 的 Egress |
| 9 |
Label Switched |
继续转发(Traceroute 场景) |
三、LSP Traceroute 工作原理
3.1 工作流程
LSP Traceroute 逐跳检测:
步骤 1(TTL=1):
Ingress 发 TTL=1 的 Echo Request
第一跳 LSR 收到 TTL 过期,返回 Reply(含自己的 Router ID)
Ingress ───→ LSR1(返回 Reply)──→ LSR2 ───→ Egress
步骤 2(TTL=2):
Ingress 发 TTL=2 的 Echo Request
LSR1 正常转发,LSR2 收到 TTL 过期,返回 Reply
Ingress ───→ LSR1 ───→ LSR2(返回 Reply)──→ Egress
步骤 3(TTL=3):
Ingress 发 TTL=3 的 Echo Request
Egress 收到,返回 Success Reply
Ingress ───→ LSR1 ───→ LSR2 ───→ Egress(返回 Success)
3.2 输出解读
<HUAWEI> tracert mpls ldp 10.0.0.2 32
Traceroute LSP: 10.0.0.2/32
Hop 1 10.0.1.1 (LSR1)
Label: 1024 ← 入标签
Return Code: 8 (Label switched at hop)
Hop 2 10.0.2.1 (LSR2)
Label: 1025 ← 中间标签
Return Code: 8 (Label switched at hop)
Hop 3 10.0.0.2 (Egress)
Label: 3 (Implicit NULL) ← PHP 弹出
Return Code: 3 (Success)
路径长度:3 跳
总标签操作:Push 1024 → Swap 1025 → PHP
四、故障排查实战
4.1 场景一:LSP 不通
症状:ping mpls ldp 10.0.0.2 32 失败
排查步骤:
1. 检查 LDP 邻居
display mpls ldp session peer 10.0.0.2
→ 确认会话状态为 Operational
2. 检查 LSP 是否存在
display mpls lsp include 10.0.0.2 32
→ 确认 Ingress 有对应 LSP
3. 使用 LSP Traceroute 定位
tracert mpls ldp 10.0.0.2 32
→ 看哪一跳返回错误
常见错误:
Hop 2 10.0.2.1
Return Code: 4 (No Mapping)
→ LSR2 没有到 10.0.0.2 的标签映射
→ 检查 LSR2 的 LDP 配置和 IGP 路由
4.2 场景二:标签环路
症状:LSP Traceroute 出现重复节点
<HUAWEI> tracert mpls ldp 10.0.0.2 32
Hop 1 10.0.1.1 (LSR1)
Hop 2 10.0.2.1 (LSR2)
Hop 3 10.0.1.1 (LSR1) ← 重复!
Hop 4 10.0.2.1 (LSR2) ← 重复!
Hop 5 10.0.1.1 (LSR1) ← 环路!
排查:
→ 检查 IGP 路由(是否有路由环路)
→ 检查 LDP 转发等价类映射
→ 检查标签分配的一致性
4.3 场景三:VPN 标签检测
# 检测指定 VPN 实例的 LSP
ping mpls vpn-instance VPN_A 192.168.1.1 32
# 检测跨域 LSP(指定下一跳)
ping mpls ldp 10.0.0.2 32 next-hop 10.0.3.1
五、BFD for MPLS LSP
5.1 LSP BFD 快速检测
LSP BFD 提供比 Ping 更快的故障检测(毫秒级):
BFD 检测时间配置:
最小发送间隔:10ms
最小接收间隔:10ms
检测倍数:3
总检测时间:30ms
优点:
- 持续检测(不依赖手动触发)
- 毫秒级收敛
- 可与 FRR、路由联动
5.2 配置示例
# LDP LSP BFD
mpls
bfd enable
!
mpls ldp
bfd all-interfaces enable # 所有 LDP 邻居启用 BFD
bfd detect-multiplier 3
bfd min-tx-interval 10
bfd min-rx-interval 10
5.3 LSP Ping、Traceroute、BFD 对比
| 工具 |
适用场景 |
检测方式 |
速度 |
| LSP Ping |
手动验证 LSP 连通性 |
发 Echo Request 等 Reply |
秒级 |
| LSP Traceroute |
逐跳定位 LSP 故障 |
TTL 递增逐跳检测 |
秒级(逐跳) |
| LSP BFD |
持续快速故障检测 |
定时发送 BFD 报文 |
毫秒级 |
| |
联动 FRR/路由切换 |
|
|
六、OAM 最佳实践
6.1 日常检查
# 定期检查命令(便捷脚本)
echo "=== MPLS OAM 检查 ==="
# 1. LDP 邻居
display mpls ldp session | include Operational
# 2. LSP 完整性(关键 FEC)
ping mpls ldp 10.0.0.2 32
ping mpls ldp 10.0.1.1 32
# 3. VPN 连通性
ping -vpn-instance VPN_A 192.168.1.1
# 4. TE 隧道
display mpls te tunnel
ping mpls te tunnel 100
6.2 故障排查流程图
LSP 不通?
│
├── ping mpls ldp <目标> <前缀长度>
│
├── 成功? → LSP 正常,检查其他原因
│
└── 失败? → tracert mpls ldp <目标> <前缀长度>
│
├── 哪一跳失败?
│
├── 失败点检查:
│ - LDP session Operational?
│ - IGP 路由是否在表中?
│ - 是否有标签映射?
│
└── 检查配置:
- mpls lsr-id 是否配置正确?
- 接口是否使能 mpls 和 mpls ldp?
- 防火墙是否放行 UDP 3503?
七、总结
| 知识点 |
核心要点 |
| LSP Ping |
验证 MPLS LSP 连通性和 FEC 正确性 |
| LSP Traceroute |
逐跳检测,定位故障点 |
| 底层协议 |
UDP 3503,MPLS Echo Request/Reply |
| Return Code |
3=成功,4=No Mapping,8=Label Switched |
| BFD for LSP |
毫秒级持续检测,联动保护切换 |
| 日常维护 |
LSP Ping + Traceroute + BFD 组合使用 |
八、思考
- LSP Ping 与普通 ICMP Ping 有什么区别?为什么 MPLS 网络需要专门的 LSP Ping?
- LSP Traceroute 如何逐跳发现 LSP 路径?TTL 在这里起什么作用?
- LSP Ping 返回 Code 4(No Mapping)表示什么?可能的原因是什么?
- BFD for MPLS LSP 相比 LSP Ping 有什么优势?
- 当你发现某条 VPN 流量不通时,你会按什么步骤使用 MPLS OAM 工具进行排查?
下篇预告:第200篇《广域网链路质量监测:NQA 与 BFD》——广域网链路质量监测的两大利器,详解 NQA 的探测机制和 BFD 的快速检测原理。