第158篇:MPLS 流量工程基础:RSVP-TE
关键词
MPLS TE、RSVP-TE、流量工程、CR-LSP、信令协议、ERO、带宽预留
一、为什么需要 MPLS TE?
1.1 IGP 的最短路径问题
传统 IGP(OSPF/ISIS)转发基于最短路径优先算法,只考虑 Cost:
10Mbps
| ┌────────┴──────┐ ┌───────▼───────┐ | ||
| Router A 10Gbps | Router B 10Gbps | |
| │ │ | ||
| │ 10Gbps │ | ||
| └────────┬──────────┘ | ||
| │ | ||
| ┌─────▼──────┐ | ||
| │ Router C │ | ||
| └────────────┘ |
问题: - A→C 的最短路径是 A→C(Cost 最小),但该链路只有 10Mbps - A→B→C 的 Cost 更大,但链路带宽充足(10Gbps) - IGP 会把所有流量导向 10Mbps 的小链路 → 拥塞
MPLS TE 的解决方案:可以显式指定 A→B→C 作为路径,让流量避开拥塞链路。
1.2 MPLS TE 能做什么
| 能力 | 说明 |
|---|---|
| 显式路径 | 指定流量必须经过或避开某条链路 |
| 带宽预留 | 为关键业务预留带宽资源 |
| 负载均衡 | 在多条路径上分散流量 |
| 快速重路由 | 主路径故障时自动切换到保护路径 |
| QoS 保障 | 为不同类型流量提供差异化服务 |
二、RSVP-TE 概述
2.1 从 RSVP 到 RSVP-TE
RSVP(Resource Reservation Protocol,资源预留协议)原本是为 IntServ(综合服务模型)设计的资源预留信令协议。
RSVP-TE 是对 RSVP 的扩展(RFC 3209),专门用于 MPLS 流量工程: - 新增 LABEL_REQUEST 和 LABEL 对象——携带 MPLS 标签 - 新增 EXPLICIT_ROUTE 对象——指定显式路径 - 新增 RECORD_ROUTE 对象——记录经过的节点
2.2 RSVP-TE 的角色
在 MPLS TE 架构中:
┌─────────────────────────────────────────────────────┐
│ 管理层/用户 │
│ ① 定义 TE 隧道的需求(带宽、路径、保护方式) │
└──────────────┬──────────────────────────────────────┘
│
┌──────────────▼──────────────────────────────────────┐
│ 控制面(RSVP-TE) │
│ ② 信令交互:Path 报文 + Resv 报文 │
│ ③ 沿途建立 CR-LSP,分发标签 │
└──────────────┬──────────────────────────────────────┘
│
┌──────────────▼──────────────────────────────────────┐
│ 数据面 │
│ ④ 按照 CR-LSP 转发流量 │
└─────────────────────────────────────────────────────┘
三、RSVP-TE 信令过程
3.1 核心报文
| 报文 | 方向 | 作用 |
|---|---|---|
| Path | 下游(Ingress → Egress) | 请求建立 LSP,携带标签请求、ERO 等 |
| Resv | 上游(Egress → Ingress) | 预留资源并分配标签 |
| PathErr | 上游 | 通知 Path 处理错误 |
| ResvErr | 下游 | 通知 Resv 处理错误 |
| PathTear | 下游 | 拆除 LSP |
| ResvTear | 上游 | 释放资源 |
| Hello | 双向 | 邻居存活检测 |
3.2 完整信令流程
Tunnel Path
Ingress(PE1) ─── P1 ─── P2 ─── P3 ─── Egress(PE2)
│ │
│ 1. Path(携带 ERO、LABEL_REQUEST) │
│────────────────────────────────────────────────▶│
│ 经由 P1→P2→P3,沿途节点记录 PATH State │
│ │
│ 2. Resv(沿途分配标签,预留资源) │
│◀────────────────────────────────────────────────│
│ P3 分配 Label=300 给 P2 │
│ P2 分配 Label=200 给 P1 │
│ P1 分配 Label=100 给 PE1(Ingress) │
│ │
│ 3. CR-LSP 建立完成 │
│ 数据面就绪 │
│ │
│ 4. 流量转发 │
│ PE1 Push 100 → P1 Swap 200 → P2 Swap 300 → P3 Pop → PE2
│ │
3.3 Path 报文的关键对象
ERO(EXPLICIT_ROUTE Object,显式路由对象):指定路径经过的节点。
ERO 表示路径:PE1 → P1 → P2 → P3 → PE2
ERO Subobject List: 1. IPv4 Prefix: 10.1.1.2 (P1) 2. IPv4 Prefix: 10.2.2.2 (P2) 3. IPv4 Prefix: 10.3.3.2 (P3) 4. IPv4 Prefix: 10.4.4.2 (PE2)
每个 ERO 子对象可以是: - Strict(严格):下一跳必须直接相连 - Loose(松散):不要求直接相连,允许路径自动计算
3.4 Resv 报文的关键对象
LABEL 对象:携带分配的 MPLS 标签。
FLOWSPEC 对象:携带预留的带宽信息。
Resv 报文(P2 → P1):
LABEL: 200
FLOWSPEC: Bandwidth=100Mbps, Peak rate=200Mbps
RECORD_ROUTE: P2(10.2.2.2) → P3(10.3.3.2) → PE2(10.4.4.2)
四、CR-LSP(Constraint-based LSP)
4.1 什么是 CR-LSP
CR-LSP 是基于约束条件建立的 LSP,与普通 LDP LSP 的最大区别在于:
| 对比维度 | LDP LSP | CR-LSP(RSVP-TE) |
|---|---|---|
| 建立方式 | 自动基于 IGP 最短路径 | 显式约束路径 |
| 路径选择 | IGP 拥塞感知最短路径 | 手工或自动计算 |
| 带宽预留 | 无 | 支持 |
| 资源约束 | 无 | 带宽、亲和属性等 |
| 保护能力 | FRR 依赖隧道 | 自带快速重路由 |
4.2 约束条件
CR-LSP 支持以下约束:
CR-LSP 约束类型示例:
1. 显式路径约束
- 必经节点:P1 → P3
- 避免节点:P2
2. 带宽约束
- 带宽:100 Mbps
- 峰值速率:200 Mbps
3. 亲和属性(Affinity)
- 资源颜色:绿色(低延迟光纤链路)
- 排斥:红色(卫星链路,高延迟)
4. 优先级和抢占
- Setup Priority:7(最低)
- Holding Priority:0(最高)
- 高优先级的隧道可以抢占低优先级的资源
五、CSPF(Constraint-based SPF)路径计算
5.1 计算过程
CSPF 是在标准 SPF 基础上,考虑约束条件的路径计算算法:
输入:
- TED(流量工程数据库,通过 IGP TE 扩展收集)
- 约束条件(带宽、亲和属性等)
过程:
1. 从 TED 中剪除不满足约束的链路
例:排除带宽不足的链路
排除亲和属性不匹配的链路
2. 在剩余拓扑上运行 SPF 算法
3. 选择满足所有约束的最短路径
输出:
- ERO(显式路由对象),指定路径
5.2 TED 的获取
TED(Traffic Engineering Database)通过 IGP 的 TE 扩展收集:
OSPF TE Extension(RFC 3630):
- Opaque LSA Type 10(Area Local)
- 携带链路 TE 属性:带宽、TE 度量、亲和属性等
ISIS TE Extension(RFC 5305):
- TLV 22(Extended IS Reachability)
- 子 TLV:带宽、TE 度量、亲和属性等
配置示例(OSPF TE):
# 华为设备
ospf 1
opaque-capability enable # 使能 Opaque LSA
te-link-ipaddress 10.1.1.1 # 宣告 TE 链路
interface GigabitEthernet0/0/0
ospf cost 10
ospf te enable # 接口使能 TE
ospf te bandwidth max-reservable 1000000 # 可预留带宽(Kbps)
ospf te bandwidth unreserved 0 1000000 # 各优先级未预留带宽
六、RSVP-TE 隧道配置示例(华为设备)
6.1 基本配置
# 1. 全局使能 MPLS TE 和 RSVP-TE
mpls lsr-id 1.1.1.1
mpls
te tunnel # 使能 TE 隧道
rsvp-te # 使能 RSVP-TE
!
# 2. 接口使能 RSVP-TE
interface GigabitEthernet0/0/0
mpls
mpls te # 接口使能 TE
rsvp-te # 接口使能 RSVP-TE
rsvp-te bandwidth max-reservable 1000000 # 最大可预留带宽(Kbps)
rsvp-te bandwidth unreserved 0 1000000 # 各优先级可预留带宽(Kbps)
!
# 3. 创建 TE 隧道接口
interface Tunnel1
ip address unnumbered interface LoopBack0
tunnel-protocol mpls te # 隧道协议:MPLS TE
destination 2.2.2.2 # 目的地址(Egress LSR ID)
mpls te tunnel-id 100 # 隧道 ID
mpls te bandwidth 50000 # 带宽需求(Kbps)
mpls te path explicit-path dynamic # 动态路径计算
mpls te commit # 提交 TE 配置
!
# 4. 配置静态路由指向 TE 隧道
ip route-static 10.0.0.0 255.255.255.0 Tunnel1
6.2 显式路径配置
# 定义显式路径
explicit-path path1
next-hop 10.1.1.2 # 经过 P1
next-hop 10.2.2.2 # 经过 P2
next-hop 10.3.3.2 # 经过 PE2
!
interface Tunnel1
mpls te path explicit-path path1 # 绑定显式路径
mpls te commit
6.3 验证命令
# 查看 TE 隧道状态
display mpls te tunnel # 所有 TE 隧道
display mpls te tunnel interface Tunnel1 # 指定隧道详情
display mpls te tunnel statistics # 隧道统计
# 查看 CR-LSP
display mpls te lsp encapsulation # CR-LSP 信息
display mpls te lsp path # LSP 路径
# 查看 RSVP-TE 会话
display rsvp-te session # RSVP 会话
display rsvp-te neighbor # RSVP 邻居
七、总结
| 知识点 | 核心要点 |
|---|---|
| MPLS TE | 通过约束条件(带宽、路径)显式控制流量路径 |
| RSVP-TE | MPLS TE 的信令协议,通过 Path/Resv 建立 CR-LSP |
| Path 报文 | 从 Ingress 发往 Egress,包含 ERO 和 LABEL_REQUEST |
| Resv 报文 | 从 Egress 返回 Ingress,携带标签和资源预留 |
| ERO | 显式路由对象,指定路径经过的节点 |
| CR-LSP | 基于约束的标签交换路径 |
| CSPF | 带约束的最短路径算法 |
| TED | 流量工程数据库,存储链路 TE 属性 |
八、思考
- IGP 最短路径转发的主要问题是什么?MPLS TE 如何解决?
- RSVP-TE 的 Path 报文和 Resv 报文分别完成什么任务?
- ERO 中的 Strict 和 Loose 子对象有什么区别?
- CR-LSP 和普通 LDP LSP 的核心区别是什么?
- CSPF 算法和标准的 SPF 算法有什么不同?
下篇预告:第159篇《CR-LSP 的建立与带宽预留》——详解 CR-LSP 的资源预留机制、优先级抢占和带宽保证。