8. LSP连通性检测
在 MPLS 网络中,LSP 转发失败时,控制平面无法直接感知转发面的错误,这会增加故障排查和运维难度。
为此,MPLS 提供了 MPLS Ping 与 MPLS Traceroute 工具,类似于 IP 网络的 Ping 和 Traceroute,用于检测和定位 LSP 故障。
8.1 MPLS Ping
-
功能:验证某一条 LSP 是否连通。
-
实现方式:发送 MPLS Echo Request(回显请求),由目的端返回 MPLS Echo Reply(回显应答)。
-
判定依据:如果收到 Echo Reply,则说明 LSP 可达;否则说明链路存在故障。
8.2 MPLS Traceroute
-
功能:不仅检查 LSP 的连通性,还能逐跳发现故障发生在哪个节点。
-
机制:与 IP Traceroute 类似,逐步增加 TTL 值,迫使 LSR 返回 ICMP 超时报文,从而定位问题节点。
8.3 工作原理
-
MPLS Ping/Traceroute 报文均使用 UDP 封装:
-
Echo Request → UDP 端口号 3503(仅启用 MPLS 功能的设备识别)。
-
Echo Reply → 普通 IP 转发回源端。(如果返回路径的路由下一跳刚好映射到了一条 LSP,那么 Echo Reply 也可能会沿着独立的 LSP 返回。因此,MPLS Ping/Traceroute 的正反向路径 不一定对称,这是排障时需要特别注意的一点。)。
-
-
报文转发路径:
-
Echo Request:携带待检测的 FEC 信息,与该 FEC 的业务报文一样沿着 LSP 转发。
-
Echo Reply:由目的端通过 IP 路由返回源端。
-
-
防止误转发机制:
-
Echo Request 的 IP 目的地址 设置为 127.0.0.1/8(本地环回),保证报文不会被普通 IP 转发。
-
IP TTL = 1,确保报文不会跨设备转发。
-
8.4 小结
-
MPLS Ping:检测 LSP 是否连通。
-
MPLS Traceroute:定位 LSP 故障的具体节点。
-
关键点:通过 FEC 绑定转发路径、特殊 IP 地址 (127.0.0.1/8)、UDP 3503 端口,确保测试严格在 LSP 内完成。
8.5 测试拓扑
8.5.1 测试拓扑

在原有 PE1–P1–PE2 的拓扑基础上,增加一台 P2 节点,P2 的配置与 P1 类似。此时,对于目的 FEC 3.3.3.3/32 的 LSP 建立过程如下:
-
PE1(Ingress LER):将目的地址 3.3.3.3/32 的 IP 报文查表匹配到 FIB → Tunnel ID,执行 PUSH 操作,压入分配的 MPLS 出标签(例如 1025),发送给下一跳 P1。
-
P1(Transit LSR):收到标签为 1025 的 MPLS 报文,根据 ILM 查表找到匹配的入标签,执行 SWAP 操作,将标签 1025 交换为新的标签(例如 1048),并转发至 P2。
-
P2(Penultimate LSR,倒数第二跳):根据 LDP 与 PE2 的邻居关系,发现出标签为 3(Implicit NULL),因此在转发时执行 PHP(Penultimate Hop Popping)操作,直接弹出 MPLS 标签,送出一个纯 IP 报文。
-
PE2(Egress LER):接收到没有 MPLS 标签的 IP 报文,查找本地路由表发现目的地址 3.3.3.3 是本地 Loopback,直接本地交付。
因此,在这种四节点(PE1–P1–P2–PE2)拓扑下:
-
P1 执行的是标准的 标签交换(SWAP);
-
P2 执行的是 倒数第二跳弹出(PHP);
-
PE2 直接处理 IP 报文,无需再做 MPLS 解封装。
当在 PE1 上执行 MPLS Ping / Traceroute 检测 FEC 3.3.3.3/32 时,可以观察到:
-
Echo Request 首先带着标签进入 MPLS 网络,
-
在 P1 看到标签交换的过程,
-
在 P2 触发标签弹出,
-
最终到达 PE2 时以 IP 报文的形式交付。
8.5.2 MPLS LSP信息
MPLS LSP信息如下:
[PE1]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 3/NULL -/-
2.2.2.2/32 NULL/3 -/GE0/0/0
2.2.2.2/32 1024/3 -/GE0/0/0
6.6.6.6/32 NULL/1025 -/GE0/0/0
6.6.6.6/32 1025/1025 -/GE0/0/0
3.3.3.3/32 NULL/1026 -/GE0/0/0
3.3.3.3/32 1026/1026 -/GE0/0/0
[PE1]
[P1]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/3 -/GE0/0/0
1.1.1.1/32 1024/3 -/GE0/0/0
2.2.2.2/32 3/NULL -/-
6.6.6.6/32 NULL/3 -/GE0/0/1
6.6.6.6/32 1025/3 -/GE0/0/1
3.3.3.3/32 NULL/1026 -/GE0/0/1
3.3.3.3/32 1026/1026 -/GE0/0/1
[P1]
[P2]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
6.6.6.6/32 3/NULL -/-
1.1.1.1/32 NULL/1024 -/GE0/0/0
1.1.1.1/32 1024/1024 -/GE0/0/0
2.2.2.2/32 NULL/3 -/GE0/0/0
2.2.2.2/32 1025/3 -/GE0/0/0
3.3.3.3/32 NULL/3 -/GE0/0/1
3.3.3.3/32 1026/3 -/GE0/0/1
[P2]
[PE2]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/1024 -/GE0/0/0
1.1.1.1/32 1024/1024 -/GE0/0/0
2.2.2.2/32 NULL/1025 -/GE0/0/0
2.2.2.2/32 1025/1025 -/GE0/0/0
6.6.6.6/32 NULL/3 -/GE0/0/0
6.6.6.6/32 1026/3 -/GE0/0/0
3.3.3.3/32 3/NULL -/-
[PE2]
8.6 MPLS Ping测试
8.6.1 PE1执行MPLS Ping
ping lsp -a 1.1.1.1 -c 2 ip 3.3.3.3 32
[PE1]ping lsp -a 1.1.1.1 -c 2 ip 3.3.3.3 32
LSP PING FEC: IPV4 PREFIX 3.3.3.3/32/ : 100 data bytes, press CTRL_C to break
Reply from 3.3.3.3: bytes=100 Sequence=1 time=30 ms
Reply from 3.3.3.3: bytes=100 Sequence=2 time=50 ms
--- FEC: IPV4 PREFIX 3.3.3.3/32 ping statistics ---
2 packet(s) transmitted
2 packet(s) received
0.00% packet loss
round-trip min/avg/max = 30/40/50 ms
[PE1]
8.6.2 PE1完整抓包信息
在PE1、P1、P2针对3.3.3.3/32的出口抓包,即PE1-G0/0/0,P1-G0/0/1,P2-G0/0/1抓包。

发出两个MPLS Echo Request,收到两个MPLS Echo Reply。
8.6.3 Ping过程分析
1、PE1发送MPLS ECHO Request(MPLS 标签1026):
Frame 78: 150 bytes on wire (1200 bits), 150 bytes captured (1200 bits) on interface -, id 0
Ethernet II, Src: 00:e0:fc:7e:3e:d8, Dst: 00:e0:fc:21:6d:78
MultiProtocol Label Switching Header, Label: 1026, Exp: 0, S: 1, TTL: 255
0000 0000 0100 0000 0010 .... .... .... = MPLS Label: 1026 (0x00402)
.... .... .... .... .... 000. .... .... = MPLS Experimental Bits: 0
.... .... .... .... .... ...1 .... .... = MPLS Bottom Of Label Stack: 1
.... .... .... .... .... .... 1111 1111 = MPLS TTL: 255
Internet Protocol Version 4, Src: 1.1.1.1, Dst: 127.0.0.1
0100 .... = Version: 4
.... 0110 = Header Length: 24 bytes (6)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 132
Identification: 0x0003 (3)
010. .... = Flags: 0x2, Don't fragment
...0 0000 0000 0000 = Fragment Offset: 0
Time to Live: 1
Protocol: UDP (17)
Header Checksum: 0x635f [validation disabled]
[Header checksum status: Unverified]
Source Address: 1.1.1.1
Destination Address: 127.0.0.1
Options: (4 bytes), Router Alert
IP Option - Router Alert (4 bytes): Router shall examine packet (0)
Type: 148
1... .... = Copy on fragmentation: Yes
.00. .... = Class: Control (0)
...1 0100 = Number: Router Alert (20)
Length: 4
Router Alert: Router shall examine packet (0)
[Stream index: 6]
User Datagram Protocol, Src Port: 31003, Dst Port: 3503
Source Port: 31003
Destination Port: 3503
Length: 108
Checksum: 0x4051 [unverified]
[Checksum Status: Unverified]
[Stream index: 2]
[Stream Packet Number: 1]
[Timestamps]
[Time since first frame: 0.000000000 seconds]
[Time since previous frame: 0.000000000 seconds]
UDP payload (100 bytes)
Multiprotocol Label Switching Echo
Version: 1
Global Flags: 0x0000

&spm=1001.2101.3001.5002&articleId=151307298&d=1&t=3&u=323ec3f82d35409daf20ae5b6ed1e50d)
790

被折叠的 条评论
为什么被折叠?



