第153篇:MPLS 基本概念——标签、LSP、FEC

关键词

MPLS、标签(Label)、LSP(Label Switched Path)、FEC(Forwarding Equivalence Class)、LSR、LER、标签转发


一、为什么需要 MPLS?

1.1 IP 转发的局限性

传统的 IP 转发(逐跳路由)存在几个根本性局限:

局限 问题
最长匹配查找 每台路由器都要做一次 IP 路由表最长匹配,转发速度受限
只依赖目的 IP 无法基于源地址、端口、VPN 等信息做转发决策
逐跳决策 每台路由器独立决策,无法指定整条路径
BGP 路由黑洞 非直连 BGP 路由可能被中间设备丢弃(因为没有对应路由)
VPN 隔离困难 传统 IP 转发无法天然支持多租户 VPN

1.2 MPLS 的设计思想

MPLS(Multiprotocol Label Switching)的核心思想是将路由和转发分离

  • 路由:仍然通过 IGP/BGP 学习路由
  • 转发:基于固定长度的标签(Label)而非 IP 目的地址

标签是一个固定长度(4 字节)的短标识符,路由器只需查标签表(比 IP 路由表简单得多)就能决定转发行为。


二、MPLS 的三大核心概念

2.1 标签(Label)

标签 = 一个本地区域内有意义的短标识符(4 字节 32 位)

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Label                 | Exp |S|       TTL      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             20 位标签值             | 3位 |1|      8 位      |

标签结构: - Label(20 位):实际的标签值,范围 16-1,048,575(0-15 为保留值) - Exp(3 位):实验用途,通常用于 QoS(类似 IP 的 DSCP) - S(1 位):栈底标识——1 表示栈底,0 表示还有更多标签 - TTL(8 位):生存时间,防环路

关键理解:标签在每一个 LSR 上有本地意义。即 LSR-A 给某 FEC 分配的标签是 101,LSR-B 给同一 FEC 分配的标签可能是 205。

2.2 FEC(转发等价类)

FEC = 按照相同方式转发的一组 IP 数据包

常见 FEC 划分方式: - 同一目的 IP 前缀(最常用) - 同一 BGP VPN 路由 - 需要相同 QoS 处理的流量 - 需要走相同 TE 隧道的流量

核心思想:同一个 FEC 的所有数据包在 MPLS 域内走相同的 LSP,获得相同的标签。

2.3 LSP(标签交换路径)

LSP = 沿着 MPLS 域的、从入口到出口的标签转发路径

    LSP(标签交换路径)
Ingress Transit Egress
LSR LSR LSR
(LER) (LSR) (LER)
IP包
push label swap label pop label
  • Ingress LSR(入站 LSR):数据包进入 MPLS 域的第一个路由器,负责压入标签(Push)
  • Transit LSR(中间 LSR):中间路由器,负责交换标签(Swap)
  • Egress LSR(出站 LSR):数据包离开 MPLS 域的最后一个路由器,负责弹出标签(Pop)

三、MPLS 的转发过程

3.1 经典转发示例

网络拓扑:
R1 ---- R2 ---- R3 ---- R4
目标网络:10.0.0.0/24 挂在 R4 下

标签分配(假设使用 LDP):
  R4 为 10.0.0.0/24 分配标签 100 ← 本地有意义
  R3 为 10.0.0.0/24 分配标签 200
  R2 为 10.0.0.0/24 分配标签 300

转发过程:
  数据包从 R1 → R2(Ingress)→ R3(Transit)→ R4(Egress)→ 目标

  R1 发送普通 IP 包
    │
  R2(Ingress):
    │  路由查找 → 匹配标签转发表
    │  压入标签 300 → 发送到 R3
    │
  R3(Transit):
    │  收到标签 300
    │  标签查找 → 交换为标签 100
    │  发送到 R4
    │
  R4(Egress):
    │  收到标签 100 → 这是自己分配的标签
    │  弹出标签 → 恢复为普通 IP 包
    │  正常 IP 转发到 10.0.0.0/24

3.2 标签操作类型

操作 含义 发生位置
Push 压入新标签(在已有的标签栈顶部添加) Ingress LSR
Swap 交换标签(用新标签替换栈顶标签) Transit LSR
Pop 弹出标签(移除栈顶标签) Egress LSR

四、LSR(标签交换路由器)的角色

4.1 LSR 分类

MPLS 域 LER LSR LER ▶ push ──▶ swap ──▶ pop ─▶

LER(Label Edge Router) LSR(Label Switching Router) = 边界 LSR = 核心 LSR = 进行 IP 路由查找 + 标签操作 = 仅做标签交换

4.2 LSR 的标签转发动作

标签转发表(LFIB - Label Forwarding Information Base):

  Incoming Label  Outgoing Label  Outgoing Interface  Next Hop
  ──────────────  ──────────────  ──────────────────  ────────
  300             100             GE0/0/1             10.1.1.2
  500             - (pop)         GE0/0/2             10.1.2.2
  - (untagged)    200             GE0/0/0             10.1.0.2

说明:
  第一行:入标签 300 → 交换为 100 从 GE0/0/1 发出
  第二行:入标签 500 → 弹出标签(PHP 机制)
  第三行:无标签的 IP 包 → 压入标签 200 转发

五、MPLS 的优势总结

优势 说明
转发速度 基于固定的标签查找,比 IP 最长匹配更快
支持多服务 标签栈支持 VPN、TE、QoS 等多层能力
与上层协议无关 标签交换不关心上层是 IPv4、IPv6 还是其他协议
流量工程 可以显式指定 LSP 路径,而非 IP 的逐跳决策
VPN 隔离 通过多标签栈实现 L3VPN/L2VPN 业务隔离
解决 BGP 黑洞 MPLS 保证 BGP 路由在中间节点也能正确转发

六、MPLS 与 IP 转发的对比

对比维度 IP 转发 MPLS 转发
转发依据 目的 IP 地址最长匹配 固定长度标签(精确匹配)
路由与转发 耦合(每跳都要路由) 分离(边缘路由、核心交换)
路径控制 逐跳独立决策 可以指定端到端路径
QoS 集成 需要单独机制 EXP 位内嵌在标签中
VPN 复杂(IP + GRE) 天然支持(两层标签)

七、总结

知识点 核心要点
MPLS 本质 标签交换,路由与转发分离
标签 4 字节固定长度本地标识,含 Label/Exp/S/TTL
FEC 一组按相同方式转发的数据包
LSP 标签交换路径,由 ingress 到 egress
LSR 类型 Ingress(Push)/ Transit(Swap)/ Egress(Pop)
LFIB 标签转发信息表,入标签→出标签的映射

八、思考

  1. MPLS 为什么比传统 IP 转发更快?
  2. 标签中的 S 位(栈底标识)有什么作用?
  3. 什么情况下路由器会执行 Pop 操作?
  4. FEC 的划分依据有哪些?举例说明。
  5. 为什么说 MPLS "将路由和转发分离"?

下篇预告:第154篇《MPLS 标签分配协议——LDP 工作原理》——MPLS 中的标签是如何自动分配的?LDP 如何建立邻居关系并分发标签?