第153篇:MPLS 基本概念:标签、LSP、FEC
关键词:MPLS、标签交换、LSP、FEC、标签栈、数据平面、控制平面
一、引言
MPLS(Multiprotocol Label Switching,多协议标签交换)是现代运营商网络和大型企业骨干网的核心技术。它巧妙地将二层交换的高速转发与三层路由的灵活选路相结合,通过简短的固定长度标签替代传统的 IP 最长前缀匹配查找,显著提升了数据平面转发效率。理解 MPLS 的基本概念,是后续深入 L3VPN、流量工程、SRv6 等高级技术的基石。
二、核心概念
2.1 MPLS 标签(Label)
MPLS 标签是一个 32 位的固定长度字段,插入在二层帧头和三层报文头之间(即"标签头"或"Shim Header")。标签没有全局意义,仅在相邻两个 LSR(Label Switch Router)之间的链路上局部有效。
MPLS 标签头结构:
| 字段 | 长度 | 说明 |
|---|---|---|
| Label | 20位 | 标签值(0-15为保留标签,15为隐式空标签,16及以上为普通标签) |
| EXP | 3位 | 实验用,通常用于 QoS 优先级(映射 DSCP/CoS) |
| Bottom of Stack | 1位 | 栈底标志,1=最后一层标签(单层时=1) |
| TTL | 8位 | 生存时间,每经过一个 LSR 减 1 |
2.2 FEC(Forwarding Equivalence Class)
FEC 是 MPLS 的核心理念之一。它将被归类到同一集合的数据包视为"等价",为这些数据包分配相同的标签,沿相同的路径转发。FEC 的粒度可以是:
- 一条路由前缀(如 10.1.1.0/24)
- 一个 FEC128(精确的 IPv4 前缀加掩码)
- 一个流量工程隧道(CR-LSP)
- 一个 VPNv4 路由(VPN 实例内的路由)
核心理解:标签是对 FEC 的局部标识。不同链路上的同一 FEC 可能使用不同的标签值,但属于同一 FEC 的数据包始终沿相同路径转发。
2.3 LSP(Label Switched Path)
LSP 是标签交换路径,是从入口 LSR(Ingress/LESR)到出口 LSR(Egress/LER)的一系列标签转发的链式路径。LSP 的建立不依赖数据流的存在(无连接),而是由控制平面预先建立。

2.4 标签操作:Push、Swap、Pop
MPLS LSR 对标签执行三种基本操作:
| 操作 | 执行者 | 说明 |
|---|---|---|
| Push(压入) | Ingress LSR | 在 IP 报文上添加标签头,进入 MPLS 域 |
| Swap(交换) | Transit LSR | 将入标签替换为出标签,沿下一跳转发 |
| Pop(弹出) | Egress LSR / Penultimate Hop | 移除标签头,恢复原始 IP 报文 |
2.5 LSR 角色分类
| 角色 | 英文全称 | 职责 |
|---|---|---|
| LER | Label Edge Router | 边缘路由器,负责标签压入和弹出 |
| LSR | Label Switch Router | 核心路由器,负责标签交换 |
| Ingress LER | 入口边缘 | 将 IP 报文压入标签,发起 LSP |
| Egress LER | 出口边缘 | 弹出标签,基于 IP 路由表转发 |
| Transit LSR | 过境 LSR | 仅做标签交换,不查看 IP 头部 |
三、技术细节
3.1 MPLS 标签分发与控制平面
MPLS 的数据平面负责标签转发,控制平面负责标签分发和 LSP 建立。控制平面的实现方式包括:
| 控制平面 | 协议 | 特点 |
|---|---|---|
| LDP | Label Distribution Protocol | 基于IGP最短路径,逐跳标签分发 |
| RSVP-TE | Resource Reservation Protocol | 支持带宽预留和显式路径 |
| Segment Routing | SR-MPLS / SRv6 | 源路由,简化扩展 |

3.2 标签空间(Label Space)
MPLS 支持两种标签空间模型:
| 标签空间 | 范围 | 特点 |
|---|---|---|
| 接口标签空间 | 每接口独立 | 同一标签值在不同接口上可代表不同 FEC |
| 路由器标签空间 | 全局唯一 | 同一标签值在全局代表同一 FEC(默认) |
华为设备默认使用路由器级标签空间,同一台设备上的所有接口共享同一套标签映射。
3.3 标签保留方式
| 保留方式 | 说明 |
|---|---|
| 有序方式(Ordered) | 仅在收到下游标签映射或自身为 FEC 出口时才向上游分发标签 |
| 独立方式(Independent) | 随时可以向上游分发标签,不依赖下游或路由状态 |
LDP 协议同时支持两种方式:本地使用独立方式生成标签绑定,使用有序方式向上游分发标签映射。
3.4 标签栈(Label Stack)
MPLS 支持标签栈操作,即在同一帧中压入多层标签。外层标签(外层 FEC)决定传输路径,内层标签(内层 FEC)决定最终交付。典型的二层标签场景包括:
- MPLS TE + L3VPN:外层 TE 隧道标签 + 内层 VPN 标签
- MPLS TE + LDP:外层 TE 标签 + 内层 LDP 标签
- L2VPN:外层 PW(伪线)标签 + 内层客户标签
四、实战配置/案例分析
4.1 华为设备 MPLS 基础配置
# 在华为 NE40E 上启用 MPLS
<NE40E> system-view
[NE40E] sysname Core-LSR1
# 全局启用 MPLS 和 LDP
[Core-LSR1] mpls
[Core-LSR1-mpls] mpls ldp
# 接口上启用 MPLS
[Core-LSR1] interface 10GE 1/0/1
[Core-LSR1-10GE1/0/1] mpls
[Core-LSR1-10GE1/0/1] mpls ldp
# 基于接口 IP 建立 LDP Session
[Core-LSR1-mpls] mpls ldp discovery hello-interface 10GE 1/0/1
# 或者基于 IGP 自动发现(推荐)
[Core-LSR1-mpls] mpls ldp auto-config enable
4.2 查看 MPLS 标签信息
# 查看标签信息库(LIB)
<Core-LSR1> display mpls ldp label-stream
Total items displayed: 15
# 查看标签转发表(LFIB)
<Core-LSR1> display mpls lsp
Total exists 12 lsp(s).
InBlock InGap OutBlock OutGap Label Lib LSPType
1024 1034 16 1023 - - Dynamic
NLRR: 10.1.1.2
IN OUT INLBL OURLBL FEC
10GE1/0/1 * 1025 Impnul 10.1.1.2/32
10GE1/0/2 10GE1/0/1 1026 1030 10.1.1.3/32
10GE1/0/2 10GE1/0/1 1027 1031 192.168.1.0/24
# 查看 LDP 邻居
<Core-LSR1> display mpls ldp peer
Peer count: 2
Peer: 10.1.1.2 (Local Interface: 10GE1/0/1)
State: Operational
LabelDSP: DoD
4.3 故障排查案例:MPLS LSP 未建立
故障现象:两台核心路由器之间 MPLS LSP 状态为 Null,流量无法正常标签转发。
排查过程:
# Step 1: 检查 LDP Session 状态
<Core-LSR1> display mpls ldp peer
Peer: 10.1.1.2
State: Init # 异常!应为 Operational
# Step 2: 检查 LDP 报文收发
<Core-LSR1> display mpls ldp session
LDP Session: 10.1.1.1 <-> 10.1.1.2
Session State: Init
HoldTime: 0/15
# HoldTime为0说明Hello报文未收到
# Step 3: 检查接口 MPLS 状态
<Core-LSR1> display mpls interface
Interface: 10GE1/0/1
MPLS: Enabled
LDP: Enabled
# Step 4: 使用 ping mpls 验证
<Core-LSR1> ping -a 10.1.1.1 ldp-target 10.1.1.2
# 全部超时
# 根因定位:ACL 过滤了 LDP 协议报文(UDP 646 / TCP 646)
# 在防火墙上放行 LDP 端口后,LDP Session 恢复正常
五、总结
| 项目 | 要点 |
|---|---|
| 标签 | 32位固定长度,20位标签值+3位EXP+1位栈底+8位TTL |
| FEC | 等价转发类,同一FEC的数据包使用相同标签沿相同路径转发 |
| LSP | 标签交换路径,由控制平面(LDP/RSVP/SR)建立,数据平面转发 |
| 三种操作 | Push(入口压入)、Swap(中转交换)、Pop(出口弹出) |
| 控制平面 | LDP(最短路径)、RSVP-TE(显式路径+带宽)、SR(源路由) |
思考
- MPLS 标签只有 20 位,如果网络中的 FEC 数量超过 2^20,怎么办?MPLS 是如何解决标签数量限制的?
- 为什么 MPLS 标签只在相邻 LSR 之间局部有效,而不是全局有效?这种设计带来了什么好处?
- FEC 的粒度可以是路由前缀,也可以是流量工程隧道。当同一流量同时匹配 LDP FEC 和 TE 隧道 FEC 时,MPLS 如何选择?
下篇预告:第154篇:MPLS 标签分配协议:LDP 工作原理