第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 组合使用

八、思考

  1. LSP Ping 与普通 ICMP Ping 有什么区别?为什么 MPLS 网络需要专门的 LSP Ping?
  2. LSP Traceroute 如何逐跳发现 LSP 路径?TTL 在这里起什么作用?
  3. LSP Ping 返回 Code 4(No Mapping)表示什么?可能的原因是什么?
  4. BFD for MPLS LSP 相比 LSP Ping 有什么优势?
  5. 当你发现某条 VPN 流量不通时,你会按什么步骤使用 MPLS OAM 工具进行排查?

下篇预告:第200篇《广域网链路质量监测:NQA 与 BFD》——广域网链路质量监测的两大利器,详解 NQA 的探测机制和 BFD 的快速检测原理。