第158篇:MPLS 流量工程基础:RSVP-TE
关键词:MPLS TE、RSVP-TE、流量工程、CR-LSP、带宽预留、CSPF、显式路径
一、引言
LDP 建立的 LSP 严格遵循 IGP 最短路径,这在大多数场景下工作良好。然而,当网络需要精细的流量控制时——例如确保关键业务获得足够带宽、避免某些链路过载、或者为特定流量指定绕行路径——LDP 的"最短路径即一切"模型就显力不从心了。MPLS 流量工程(MPLS Traffic Engineering,简称 MPLS TE)通过 RSVP-TE 信令协议,实现了对 LSP 路径、带宽和优先级的精确控制。
二、核心概念
2.1 流量工程的基本需求
传统 IP 路由(IGP 最短路径)的局限性:
| 问题 | 描述 |
|---|---|
| 链路利用率不均 | IGP 按度量值选路,不考虑实际链路带宽和负载 |
| 带宽不可控 | 无法为关键业务预留带宽,拥塞时无优先级保障 |
| 路径不可控 | 无法为特定流量指定绕行路径 |
| 收敛慢 | IGP 收敛过程中可能出现流量丢失 |
MPLS TE 通过以下机制解决上述问题: - 带宽预留:在建立 LSP 时检查并预留路径上的可用带宽 - 显式路径:指定 LSP 精确经过的节点和链路 - 快速重路由:链路故障时毫秒级切换备用路径
2.2 RSVP-TE 协议
RSVP-TE(Resource Reservation Protocol - Traffic Engineering)是 MPLS TE 的信令协议,基于 RSVP(RFC 2205)扩展了流量工程能力。
RSVP-TE 的核心对象:
| 对象 | 说明 |
|---|---|
| SESSION | 标识一个 TE 隧道(终点地址 + 隧道 ID + 协议号) |
| SESSION_ATTRIBUTE | 会话属性(带宽、优先级、抢占策略) |
| OBJECT ROUTE_RECORD | 记录 LSP 经过的路径 |
| OBJECT LABEL_REQUEST | 请求分配标签 |
| OBJECT BANDWIDTH | 请求预留的带宽 |
| OBJECT STYLE | 风格(Fixed Filter/Soft State/Wildcard) |
2.3 CR-LSP(Constraint-based Routed LSP)
CR-LSP 是基于约束的标签交换路径,其"约束"包括:
| 约束类型 | 说明 |
|---|---|
| 带宽约束 | LSP 路径上的每跳链路必须满足最小可用带宽 |
| 显式路径约束 | LSP 必须经过指定的节点或链路 |
| affinities(亲和属性) | LSP 可以偏好或避开特定类型的链路 |
| 管理员组约束 | LSP 只能使用管理员组内允许的链路 |
2.4 TE 度量值(TE Metric)
TE 度量值独立于 IGP Metric,专门用于 CSPF 路径计算:
| 度量类型 | 说明 |
|---|---|
| IGP Metric | 用于 IP 路由的最短路径计算 |
| TE Metric | 用于 TE LSP 的 CSPF 计算,可独立配置 |
| Default TE Metric | 未显式配置时使用 IGP Metric |

三、技术细节
3.1 RSVP-TE 信令流程

3.2 CSPF(Constraint-Based Shortest Path First)
CSPF 是 TE 路径计算的核心算法,它在 SPF 算法基础上增加了约束条件:
CSPF 计算步骤: 1. 从 Head-End 开始执行 Dijkstra 算法 2. 过滤不满足带宽约束的链路 3. 过滤亲和属性不匹配的链路 4. 过滤管理员组不允许的链路 5. 如果指定了显式路径,强制经过指定节点 6. 在满足约束的图中找到最短路径

3.3 RSVP-TE 消息类型
| 消息类型 | 方向 | 用途 |
|---|---|---|
| Path | Head-End → Tail-End | 正向传播,携带 TE 约束信息 |
| Resv | Tail-End → Head-End | 逆向传播,确认预留资源并分配标签 |
| PathTear | 任意方向 | 拆除 LSP 的 Path 状态 |
| ResvTear | 任意方向 | 拆除 LSP 的 Resv 状态 |
| PathError | 逆向 | Path 处理失败通知 |
| ResvError | 正向 | Resv 处理失败通知 |
| Refresh | 双向 | 定期刷新,维持 LSP 状态(默认30秒) |
3.4 TE 隧道接口
MPLS TE 隧道在设备上表现为一个 Tunnel 接口,配置方式类似于普通接口:
| 属性 | 说明 |
|---|---|
| IP 地址 | 通常为 32 位掩码(如 10.255.255.1/32) |
| 终结点 | Tail-End 的 Router ID 或 LoopBack 地址 |
| 带宽 | 预留的带宽值 |
| 优先级 | 建立优先级和保持优先级 |
| 显式路径 | 可选,指定 LSP 经过的节点/链路序列 |
四、实战配置/案例分析
4.1 华为 MPLS TE 基础配置
# 华为 NE40E MPLS TE 完整配置
[NE40E] sysname TE-Head-End
# 1. 全局启用 MPLS TE
[TE-Head-End] mpls
[TE-Head-End-mpls] mpls te
[TE-Head-End-mpls-te] teardown disable # 禁止自动拆除TE隧道
# 2. 接口启用 MPLS TE
[TE-Head-End] interface 10GE 1/0/1
[TE-Head-End-10GE1/0/1] mpls
[TE-Head-End-10GE1/0/1] mpls te
[TE-Head-End-10GE1/0/1] mpls te bandwidth available 10000
# 声明接口可用带宽为 10Gbps (单位: kbps)
# 3. 配置显式路径
[TE-Head-End] mpls te explicit-path TE-Path1
[TE-Head-End-explicit-path-TE-Path1] next-hop-address 10.0.0.2
[TE-Head-End-explicit-path-TE-Path1] next-hop-address 10.0.0.6
[TE-Head-End-explicit-path-TE-Path1] next-hop-address 10.1.1.4
# 强制路径: Head → 10.0.0.2 → 10.0.0.6 → Tail(10.1.1.4)
# 4. 配置 TE 隧道接口
[TE-Head-End] interface Tunnel 1
[TE-Head-End-Tunnel1] tunnel-protocol mpls-te
[TE-Head-End-Tunnel1] mpls te tunnel-id 1
[TE-Head-End-Tunnel1] mpls te destination 10.1.1.4
[TE-Head-End-Tunnel1] mpls te bandwidth bs-value 1000
# 预留带宽 1Mbps
[TE-Head-End-Tunnel1] mpls te priority 7 7
# 建立优先级=7, 保持优先级=7 (最高)
[TE-Head-End-Tunnel1] mpls te explicit-path TE-Path1
[TE-Head-End-Tunnel1] ip address 10.255.255.1 255.255.255.255
# 5. 将流量引入 TE 隧道(静态路由方式)
[TE-Head-End] ip route-static 10.2.2.0 255.255.255.0 Tunnel 1
4.2 查看 TE 隧道状态
# 查看 TE 隧道摘要
<TE-Head-End> display mpls te tunnel-interface interface Tunnel 1
Tunnel Interface: Tunnel1
Tunnel ID: 1
Destination: 10.1.1.4
State: Up
Primary LSP State: Established
Bandwidth: 1000 kbps
Priority: Setup=7, Hold=7
# 查看 TE LSP 路径
<TE-Head-End> display mpls te tunnel-interface interface Tunnel 1 verbose
Primary LSP:
LSP ID: 1
State: Established
Path Type: Explicit
Path Nodes:
10.1.1.1 (Head-End)
10.0.0.2
10.0.0.6
10.1.1.4 (Tail-End)
Outgoing Label: 16012
# 查看接口带宽使用
<TE-Head-End> display mpls te interface 10GE 1/0/1
Interface: 10GE1/0/1
Available Bandwidth: 9900000 kbps
Used Bandwidth: 1000000 kbps
4.3 故障排查:TE 隧道建立失败
故障场景:TE 隧道状态为 Down,日志显示 PathErr 消息。
# Step 1: 查看隧道状态
<TE-Head-End> display mpls te tunnel-interface interface Tunnel 1
Primary LSP State: Down
Error Info: Path Error
# Step 2: 查看 PathErr 详细信息
<TE-Head-End> display mpls te fault-record
Fault Record:
Error Type: PathError
Error Node: 10.0.0.6
Error Code: 2 (Routing/Reachability Problem)
Error Value: 13 (Admission Control Failure)
# 根因: 10.0.0.6 节点带宽不足, 准入控制失败
# Step 3: 检查路径链路带宽
<TE-Head-End> display mpls te rsvp-session
RSVP Session: 10.1.1.4:1
State: Path
# 状态停留在Path, Resv未返回, 说明中间节点拒绝
# Step 4: 在故障节点检查带宽
<LSR-Mid> display mpls te interface 10GE 1/0/2
Available Bandwidth: 500000 kbps
# 可用带宽不足1000Mbps
# Step 5: 解决方案
# 方案A: 降低TE隧道带宽需求
[TE-Head-End-Tunnel1] mpls te bandwidth bs-value 400
# 方案B: 增加接口声明带宽
[LSR-Mid] interface 10GE 1/0/2
[LSR-Mid-10GE1/0/2] mpls te bandwidth available 5000000
# 方案C: 选择其他路径
[TE-Head-End] mpls te explicit-path TE-Path2
[TE-Head-End-explicit-path-TE-Path2] next-hop-address 10.0.0.4
[TE-Head-End-explicit-path-TE-Path2] next-hop-address 10.1.1.4
五、总结
| 项目 | 要点 |
|---|---|
| MPLS TE 目的 | 实现带宽预留、显式路径和快速重路由 |
| RSVP-TE | Path(正向)+ Resv(逆向)双向信令建立 CR-LSP |
| CSPF | 在带宽、亲和属性等约束条件下计算最优路径 |
| TE Metric | 独立于 IGP Metric,专用于 TE 路径计算 |
| 故障排查 | 关注 PathErr/ResvErr 错误码,带宽不足是最常见问题 |
思考
- RSVP-TE 的 Refresh 报文定期发送的目的是什么?如果 Refresh 超时,LSP 状态如何变化?
- CSPF 计算中,带宽约束是"硬约束"还是"软约束"?即带宽不满足时 CSPF 是否会完全排除该链路?
- MPLS TE 隧道的建立优先级和保持优先级有什么区别?什么场景下需要将两者配置为不同值?
下篇预告:第159篇:CR-LSP 的建立与带宽预留