7、MPLS对TTL的处理
MPLS对TTL的处理包括 TTL处理模式 和 ICMP响应报文 两个方面。
7.1 TTL处理模式
MPLS标签头中包含一个 8bit 的 TTL 字段,作用与 IP 报文头的 TTL 相同,用于防止环路和实现 Traceroute 功能。
MPLS 支持两种 TTL 模式:Uniform 和 Pipe(默认 Uniform)。
7.1.1 Uniform 模式
-
入节点(Ingress):IP TTL -1 → 映射到 MPLS TTL。
-
MPLS 域内:每跳 MPLS TTL -1。
-
出节点(Egress):MPLS TTL -1 → 写回 IP TTL。
-
特点:IP TTL 在 MPLS 域内逐跳下降,网络拓扑对外部可见,Traceroute 能显示 MPLS 内部节点。
7.1.2 Pipe 模式
-
入节点(Ingress):IP TTL -1,MPLS TTL 设置为固定值(独立于 IP TTL)。
-
MPLS 域内:MPLS TTL 每跳减 1,但 IP TTL 不再变化。
-
出节点(Egress):IP TTL -1。
-
特点:IP TTL 只在 Ingress/Egress 减 1,域内跳数对 IP TTL 无影响,可隐藏 MPLS 骨干结构。
-
应用:MPLS VPN,为了安全需要隐藏骨干网络时,Ingress 使用 Pipe 模式
7.2 ICMP响应报文
当 LSR 收到 TTL=1 的 MPLS 报文时,会生成 ICMP TTL 超时报文 ,返回给报文发送者。
7.2.1 响应方式
-
方式一:直接返回
如果 LSR 有到达报文源的 IP 路由,则直接通过 IP 路由返回 ICMP 消息。
→ 常见于 单标签 报文。
-
方式二:沿 LSP 返回
如果 LSR 没有源地址的 IP 路由,则 TTL 超时报文会带标签继续沿 LSP 传输,到达出节点(Egress),由 Egress 再返回给报文源。
→ 常见于 多层标签 报文。
7.2.2 Traceroute 行为总结
-
Uniform 模式 + 单标签:每跳 LSR 直接返回 ICMP,拓扑可见。
-
Pipe 模式:IP TTL 在域内不变,ICMP 超时报文通常由 Egress 返回,拓扑被隐藏。
7.3 配置命令
7.3.1 配置 MPLS 对 TTL 的处理模式
命令
-
undo ttl propagate → Pipe 模式
-
ttl propagate → Uniform 模式(缺省)
区别
模式 | TTL 处理方式 | 特点 | 应用场景 |
---|---|---|---|
Uniform | IP TTL 拷贝到 MPLS TTL,MPLS 核心每跳消耗 TTL,出栈后再写回 IP TTL | 完整反映 MPLS 核心的跳数,支持 traceroute | 调试、排错 |
Pipe | 入栈时 MPLS TTL 赋固定值(通常 255),IP TTL 只在入口和出口减 1 | MPLS 核心不影响 IP TTL,隐藏骨干 | MPLS VPN,保护运营商拓扑 |
7.3.2 配置 ICMP 响应报文使用的路径
当 MPLS 报文 TTL 超时 时(Traceroute 或环路),LSR 需要返回 ICMP TTL exceeded 消息给源端。
命令
-
undo ttl expiration pop → LSP 返回 ICMP
-
ttl expiration pop → IP 路由返回 ICMP(缺省)
区别
配置 | 行为 | 适用场景 |
---|---|---|
缺省(ttl expiration pop) | 如果报文只有一层标签 → LSR 直接用 IP路由 返回 ICMP 报文 | MPLS 较简单场景 |
undo ttl expiration pop | 强制 沿 LSP 返回 ICMP,即使 LSR 本地有路由 | 多层标签、VPN 场景,保证回程与业务路径一致 |
7.3.3 两者的配合
-
Uniform + IP路由返回 → 最透明,方便排错,客户能看到每个 MPLS 节点。
-
Pipe + LSP返回 → 最隐藏,客户只能看到 PE,核心 P 不暴露,且 ICMP 回程严格走 LSP。
7.4 TTL测试笔记
7.4.1 测试拓扑

对之前的测试拓扑进行了如下修改:
1、增加R4、R5。R4-PE1之间、PE2-R5之间运行OSPF,不配置LDP。
2、4.4.4.4/32不是PE1的直连路由,为了触发PE1对4.4.4.4/32建立LSP,修改PE1的LSP触发建立模式为:lsp-trigger all。
3、5.5.5.5/32不是PE2的直连路由,为了触发PE2对5.5.5.5/32建立LSP,修改PE2的LSP触发建立模式为:lsp-trigger all。
4、PE1、P1、PE2的LSP建立信息:
[PE1]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
2.2.2.2/32 NULL/3 -/GE0/0/0
2.2.2.2/32 1024/3 -/GE0/0/0
3.3.3.3/32 NULL/1025 -/GE0/0/0
3.3.3.3/32 1025/1025 -/GE0/0/0
5.5.5.5/32 NULL/1024 -/GE0/0/0
5.5.5.5/32 1026/1024 -/GE0/0/0
192.168.35.0/24 NULL/1026 -/GE0/0/0
192.168.35.0/24 1027/1026 -/GE0/0/0
4.4.4.4/32 1028/NULL -/-
1.1.1.1/32 3/NULL -/-
192.168.14.0/24 3/NULL -/-
192.168.12.0/24 3/NULL -/-
[PE1]
[P1]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
2.2.2.2/32 3/NULL -/-
5.5.5.5/32 NULL/1025 -/GE0/0/1
5.5.5.5/32 1024/1025 -/GE0/0/1
3.3.3.3/32 NULL/3 -/GE0/0/1
3.3.3.3/32 1025/3 -/GE0/0/1
192.168.35.0/24 1026/3 -/GE0/0/1
4.4.4.4/32 NULL/1028 -/GE0/0/0
4.4.4.4/32 1027/1028 -/GE0/0/0
1.1.1.1/32 NULL/3 -/GE0/0/0
1.1.1.1/32 1028/3 -/GE0/0/0
192.168.14.0/24 1029/3 -/GE0/0/0
[P1]
[PE2]dis mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
2.2.2.2/32 NULL/3 -/GE0/0/0
2.2.2.2/32 1024/3 -/GE0/0/0
5.5.5.5/32 1025/NULL -/-
3.3.3.3/32 3/NULL -/-
192.168.35.0/24 3/NULL -/-
192.168.23.0/24 3/NULL -/-
4.4.4.4/32 NULL/1027 -/GE0/0/0
4.4.4.4/32 1026/1027 -/GE0/0/0
1.1.1.1/32 NULL/1028 -/GE0/0/0
1.1.1.1/32 1027/1028 -/GE0/0/0
192.168.14.0/24 NULL/1029 -/GE0/0/0
192.168.14.0/24 1028/1029 -/GE0/0/0
[PE2]
PE1在给4.4.4.4/32分配标签1028,没有分配标签3。
PE2在给5.5.5.5/32分配标签1025,没有分配标签3。
在MPLS中,FEC 4.4.4.4/32和FEC 5.5.5.5/32 LSP都已经正常建立。
5、PE1/PE2的FIB表信息:
[PE1]dis fib
Route Flags: G - Gateway Route, H - Host Route, U - Up Route
S - Static Route, D - Dynamic Route, B - Black Hole Route
L - Vlink Route
--------------------------------------------------------------------------------
FIB Table:
Total number of Routes : 17
Destination/Mask Nexthop Flag TimeStamp Interface TunnelID
5.5.5.5/32 192.168.12.2 DGHU t[69] GE0/0/0 0x5
3.3.3.3/32 192.168.12.2 DGHU t[69] GE0/0/0 0x3
2.2.2.2/32 192.168.12.2 DGHU t[69] GE0/0/0 0x1
4.4.4.4/32 192.168.14.4 DGHU t[48] Vlanif30 0x0
192.168.12.255/32 127.0.0.1 HU t[17] InLoop0 0x0
192.168.12.1/32 127.0.0.1 HU t[17] InLoop0 0x0
192.168.14.255/32 127.0.0.1 HU t[9] InLoop0 0x0
192.168.14.1/32 127.0.0.1 HU t[9] InLoop0 0x0
1.1.1.1/32 127.0.0.1 HU t[5] InLoop0 0x0
255.255.255.255/32 127.0.0.1 HU t[4] InLoop0 0x0
127.255.255.255/32 127.0.0.1 HU t[4] InLoop0 0x0
127.0.0.1/32 127.0.0.1 HU t[4] InLoop0 0x0
127.0.0.0/8 127.0.0.1 U t[4] InLoop0 0x0
192.168.14.0/24 192.168.14.1 U t[9] Vlanif30 0x0
192.168.12.0/24 192.168.12.1 U t[17] GE0/0/0 0x0
192.168.23.0/24 192.168.12.2 DGU t[64] GE0/0/0 0x0
192.168.35.0/24 192.168.12.2 DGU t[69] GE0/0/0 0x7
[PE1]
[PE2]dis fib
Route Flags: G - Gateway Route, H - Host Route, U - Up Route
S - Static Route, D - Dynamic Route, B - Black Hole Route
L - Vlink Route
--------------------------------------------------------------------------------
FIB Table:
Total number of Routes : 17
Destination/Mask Nexthop Flag TimeStamp Interface TunnelID
1.1.1.1/32 192.168.23.2 DGHU t[66] GE0/0/0 0x5
4.4.4.4/32 192.168.23.2 DGHU t[66] GE0/0/0 0x3
2.2.2.2/32 192.168.23.2 DGHU t[59] GE0/0/0 0x1
5.5.5.5/32 192.168.35.5 DGHU t[48] Vlanif40 0x0
192.168.23.255/32 127.0.0.1 HU t[14] InLoop0 0x0
192.168.23.3/32 127.0.0.1 HU t[14] InLoop0 0x0
192.168.35.255/32 127.0.0.1 HU t[10] InLoop0 0x0
192.168.35.3/32 127.0.0.1 HU t[10] InLoop0 0x0
3.3.3.3/32 127.0.0.1 HU t[5] InLoop0 0x0
255.255.255.255/32 127.0.0.1 HU t[4] InLoop0 0x0
127.255.255.255/32 127.0.0.1 HU t[4] InLoop0 0x0
127.0.0.1/32 127.0.0.1 HU t[4] InLoop0 0x0
127.0.0.0/8 127.0.0.1 U t[4] InLoop0 0x0
192.168.35.0/24 192.168.35.3 U t[10] Vlanif40 0x0
192.168.23.0/24 192.168.23.3 U t[14] GE0/0/0 0x0
192.168.12.0/24 192.168.23.2 DGU t[61] GE0/0/0 0x0
192.168.14.0/24 192.168.23.2 DGU t[66] GE0/0/0 0x7
[PE2]
PE1中:FEC 5.5.5.5/32已绑定 TunnelID 0x5,说明 PE1 将通过 MPLS LSP 转发目的为 5.5.5.5 的数据包,而不是普通 IP 转发。
PE2中:FEC 4.4.4.4/32已绑定 TunnelID 0x3,说明 PE2 将通过 MPLS LSP 转发目的为 4.4.4.4 的数据包,而不是普通 IP 转发。
7.4.2 Uniform模式下,观察TTL变化
Uniform模式TTL变化
1、PE1、P1、PE2配置为Uniform模式(缺省)。
2、R4 ping R5。
R4\]ping -a 4.4.4.4 -c 4 5.5.5.5
[R4]ping -a 4.4.4.4 -c 4 5.5.5.5
PING 5.5.5.5: 56 data bytes, press CTRL_C to break
Reply from 5.5.5.5: bytes=56 Sequence=1 ttl=252 time=60 ms
Reply from 5.5.5.5: bytes=56 Sequence=2 ttl=252 time=60 ms
Reply from 5.5.5.5: bytes=56 Sequence=3 ttl=252 time=50 ms
Reply from 5.5.5.5: bytes=56 Sequence=4 ttl=252 time=50 ms
--- 5.5.5.5 ping statistics ---
4 packet(s) transmitted
4 packet(s) received
0.00% packet loss
round-trip min/avg/max = 50/55/60 ms
[R4]
2、通过Wireshark抓包检查TTL数值,结果符合预期。
R4抓包

PE1抓包:

> **Ingress(入站 LER)**
>
> * 收到 IP 报文时,先 **IP TTL--1 = 255 - 1 = 254**
>
> * 然后将这个值 **拷贝到 MPLS 标签的 TTL 字段**(即 MPLS TTL = IP TTL--1)。
P1抓包:

> **MPLS 域内(Transit LSR)**
>
> * 每经过一个 MPLS 节点,**MPLS TTL--1**。
>
> * 如果 TTL 归零,就触发 **ICMP TTL Exceeded 报文**,与 IP 网络类似。
PE2抓包:

> **Egress(出站 LER)**
>
> * 当 MPLS 标签被弹出时,Egress 将 **MPLS TTL--1 的结果写回 IP 报文的 TTL 字段**。
>
> * 这样 IP 报文离开 MPLS 域时,IP TTL 已经包含了 MPLS 域内的跳数消耗。
#### 7.4.3 Pipe模式下,观察TTL变化
 Pipe模式TTL变化
1、PE1、P1、PE2修改为pipe模式。
配置**ttl propagate** 命令只影响此后新建立的LSP,如果需要对之前建立的LSP也生效,应执行[reset mpls ldp](https://support.huawei.com/hedex/api/pages/EDOC1100021764/AZH0806J/18/resources/dc/reset_mpls_ldp.html "reset mpls ldp")命令重建LSP,重建后,FEC对应的标签会重新产生和发布。
\[PE1\]undo ttl propagate
\