HCIE-MPLS
0x00 介绍
0x01 MPLS 静态 LSP
graph LR
%% 定义设备节点(去除了多余的占位符,保持代码整洁)
R1((" R1 "))
R2((" R2 "))
R3((" R3 "))
R4((" R4 "))
R5((" R5 "))
%% 定义华为风格的蓝色节点样式,通过进一步增大字体 (24px) 来自然撑大圆圈
classDef router fill:#5DA8DB,stroke:#2C6A9E,stroke-width:2px,color:#fff,font-weight:bold,font-size:24px;
class R1,R2,R3,R4,R5 router;
%% 物理链路及接口标识
R1 ---|"GE 0/0/0 ⟷ GE 0/0/1"| R2
R2 ---|"GE 0/0/2 ⟷ GE 0/0/1"| R3
R2 ---|"GE 0/0/0 ⟷ GE 0/0/1"| R5
R5 ---|"GE 0/0/0 ⟷ GE 0/0/0"| R3
R3 ---|"GE 0/0/2 ⟷ GE 0/0/0"| R4
前置条件(确保 IP 路由互通)
MPLS 静态 LSP 配置之前,必须满足:
- 全网路由互通 — 所有设备之间能通过 IP 路由互相到达
- Ingress 设备必须有目的网段的路由 — 因为 Ingress 的转发逻辑是先查 FIB 表匹配目的地址,再根据 TunnelID 走 MPLS 转发。没有路由就不会生成对应的 FIB 条目,LSP 无法生效
本实验用 RIP 实现路由互通(实际工作中多用 OSPF)
# 所有设备配置
rip
version 2
network 10.0.0.0
network 4.4.4.0 <!-- 只在各路由器上宣告自己直连的网段 -->
验证
能 ping 通说明路由收敛完成,可以开始配置 MPLS。
<r1>ping -a 1.1.1.1 4.4.4.4
MPLS 静态 LSP 实现
1 所有设备开 MPLS(LSR ID + 全局 + 接口)
2 沿路径逐跳配标签映射,ingress 压入、transit 交换、egress 弹出
3 标签值随便定,只要上下游衔接一致就行(R1 出 102 → R2 入 102,以此类推)
[r1]mpls lsr-id 1.1.1.1
[r1]mpls
[r1-GigabitEthernet0/0/0]mpls
[r1]static-lsp ingress 1 destination 4.4.4.0 24 nexthop 10.1.12.2 outgoing-interface g0/0/0 out-label 102
[r1]dis mpls static-lsp
TOTAL : 1 STATIC LSP(S)
UP : 1 STATIC LSP(S)
DOWN : 0 STATIC LSP(S)
Name FEC I/O Label I/O If Status
1 4.4.4.0/24 NULL/102 -/GE0/0/0 Up
[r2]mpls lsr-id 2.2.2.2
[r2]mpls
[r2-GigabitEthernet0/0/0]mpls
[r2-GigabitEthernet0/0/1]mpls
[r2-GigabitEthernet0/0/2]mpls
[r2]static-lsp transit 1 incoming-interface g0/0/1 in-label 102 outgoing-interface g0/0/0 nexthop 10.1.25.5 out-label 205
[r5]mpls lsr-id 5.5.5.5
[r5]mpls
[r5-GigabitEthernet0/0/0]mpls
[r5-GigabitEthernet0/0/1]mpls
[r5]static-lsp transit 1 incoming-interface g0/0/1 in-label 205 outgoing-interface g0/0/0 nexthop 10.1.35.3 out-label 503
[r3]mpls lsr-id 3.3.3.3
[r3]mpls
[r3-GigabitEthernet0/0/0]mpls
[r3-GigabitEthernet0/0/1]mpls
[r3-GigabitEthernet0/0/2]mpls
[r3]static-lsp transit 1 incoming-interface g0/0/0 in-label 503outgoing-interface g0/0/2 nexthop 10.1.34.4 out-label 304
[r4]mpls lsr-id 4.4.4.4
[r4]mpls
[r4-GigabitEthernet0/0/0]mpls
[r4]static-lsp egress 1 incoming-interface g0/0/0 in-label 304
原理解析
静态 LSP 已经配通了。路径是: R1 (ingress) → R2 (transit) → R5 (transit) → R3 (transit) → R4 (egress)
标签交换路径:NULL/102 → 102/205 → 205/503 → 503/304 → 304/NULL
这是 R1 到 R4(4.4.4.0/24)的单向 LSP。
graph LR
%% 定义设备及其在 MPLS 域中的角色
R1(("R1<br/>(Ingress)"))
R2(("R2<br/>(Transit)"))
R3(("R3<br/>(Transit)"))
R4(("R4<br/>(Egress)"))
R5(("R5<br/>(Transit)"))
classDef router fill:#5DA8DB,stroke:#2C6A9E,stroke-width:2px,color:#fff,font-weight:bold;
class R1,R2,R3,R4,R5 router;
%% LSP 数据转发路径与标签动作 (采用最稳定的标准连线语法,用双引号包裹含冒号的文本)
R1 -->|"Push: 102"| R2
R2 -->|"Swap: 102 ➔ 205"| R5
R5 -->|"Swap: 205 ➔ 503"| R3
R3 -->|"Swap: 503 ➔ 304"| R4
%% 未通过数据的备用/其他物理链路(虚线)
R2 -.- R3
%% 更改 LSP 路径链路的颜色为显眼的橙红色并加粗 (去除了分号,增强兼容性)
linkStyle 0 stroke:#E95420,stroke-width:3px,color:#E95420
linkStyle 1 stroke:#E95420,stroke-width:3px,color:#E95420
linkStyle 2 stroke:#E95420,stroke-width:3px,color:#E95420
linkStyle 3 stroke:#E95420,stroke-width:3px,color:#E95420
linkStyle 4 stroke:#cccccc,stroke-width:2px
三个角色:
- Ingress(R1):查 FIB → 匹配 TunnelID 0x1 → 查 NHLFE → PUSH 标签 102
- Transit(R2/R5/R3):查 ILM → 拿 TunnelID → 查 NHLFE → SWAP 标签
- Egress(R4):查 ILM → POP 弹出标签 → IP 转发
#ingress设备 首先通过报文目标地址 查询 fib转发表,TunnelID如果是 0x0就走ip转发,4.4.4.0/24 的TunnelID为 0x1
<r1>dis fib
Route Flags: G - Gateway Route, H - Host Route, U - Up Route
S - Static Route, D - Dynamic Route, B - Black Hole Route
--------------------------------------------------------------------------------
FIB Table:
Total number of Routes : 9
Destination/Mask Nexthop Flag TimeStamp Interface TunnelID
10.1.12.1/32 127.0.0.1 HU t[91] InLoop0 0x0
127.0.0.1/32 127.0.0.1 HU t[6] InLoop0 0x0
127.0.0.0/8 127.0.0.1 U t[6] InLoop0 0x0
10.1.12.0/24 10.1.12.1 U t[91] GE0/0/0 0x0
10.1.25.0/24 10.1.12.2 DGU t[1730] GE0/0/0 0x0
10.1.23.0/24 10.1.12.2 DGU t[1730] GE0/0/0 0x0
10.1.34.0/24 10.1.12.2 DGU t[1772] GE0/0/0 0x0
10.1.35.0/24 10.1.12.2 DGU t[1772] GE0/0/0 0x0
4.4.4.0/24 10.1.12.2 DGUT t[2651] GE0/0/0 0x1
#根据TunnelID 0x1 查询nhlfe表 push标签 给下一跳
[r1-diagnose]dis mpls nhlfe
OUTINTERFACE TUNNELID OPER NEXTHOP DEEP STACK
------------------------------------------------------------------------
GE0/0/0 0x1 PUSH 10.1.12.2 1 102
1 Record(s) Found
#transit中间设备 收到有标签的报文 查询ilm表,拿到 TUNNELID
[r2]diagnose
[r2-diagnose]dis mpls ilm
INLABEL IN-INTERFACE TUNNELID VRFINDEX OPER LSPTYPE ACKFLAG
--------------------------------------------------------------------------
102 GE0/0/1 0x1 0 NULL STATIC 0
1 Record(s) Found
#然后通过 TUNNELID 查询nhlfe表 交换标签 给下一跳
[r2-diagnose]dis mpls nhlfe
OUTINTERFACE TUNNELID OPER NEXTHOP DEEP STACK
------------------------------------------------------------------------
GE0/0/0 0x1 SWAP 10.1.25.5 1 205
1 Record(s) Found
#egress设备 POP 弹出标签 然后查ip路由表走ip转发了
[r4-diagnose]dis mpls ilm
INLABEL IN-INTERFACE TUNNELID VRFINDEX OPER LSPTYPE ACKFLAG
--------------------------------------------------------------------------
304 GE0/0/0 0 POP STATIC 0
1 Record(s) Found
#工作中直接dis mpls nhlfe就可以了
[r2]dis mpls nhlfe
OUTINTERFACE TUNNELID OPER NEXTHOP DEEP STACK
------------------------------------------------------------------------
GE0/0/0 0x1 SWAP 10.1.25.5 1 205
1 Record(s) Found
[r2-diagnose]dis mpls ls
-------------------------------------------------------------------------------
LSP Information: STATIC LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
-/- 102/205 GE0/0/1/GE0/0/0
[r2-diagnose]
LDP动态标签分发
默认情况下,LDP协议只会为非物理接口的主机路由建立LSP。
# 确保都有LoopBack并且都是/32
[r1-LoopBack0]ip add 1.1.1.1 32
[r2-LoopBack0]ip add 2.2.2.2 32
[r3-LoopBack0]ip add 3.3.3.3 32
[r4-LoopBack0]ip add 4.4.4.4 32
[r5-LoopBack0]ip add 5.5.5.5 32
# 都宣告自己的网段
[r1-rip-1]dis this
rip 1
version 2
network 10.0.0.0
network 1.0.0.0
开启ldp
# 全局使能ldp,接口使能ldp。
[r1]mpls ldp
[r1-GigabitEthernet0/0/0]mpls ldp
[r2]mpls ldp
[r2-GigabitEthernet0/0/0]mpls ldp
[r2-GigabitEthernet0/0/1]mpls ldp
[r2-GigabitEthernet0/0/2]mpls ldp
[r5]mpls ldp
[r5-GigabitEthernet0/0/0]mpls ldp
[r5-GigabitEthernet0/0/1]mpls ldp
[r3]mpls ldp
[r3-GigabitEthernet0/0/0]mpls ldp
[r3-GigabitEthernet0/0/1]mpls ldp
[r3-GigabitEthernet0/0/2]mpls ldp
[r4]mpls ldp
[r4-GigabitEthernet0/0/0]mpls ldp
[r1]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
5.5.5.5/32 NULL/1025 -/GE0/0/0
5.5.5.5/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
4.4.4.4/32 NULL/1027 -/GE0/0/0
4.4.4.4/32 1027/1027 -/GE0/0/0