第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

TE 度量值(TE Metric) - 图示

三、技术细节

3.1 RSVP-TE 信令流程

RSVP-TE 信令流程 - 图示

3.2 CSPF(Constraint-Based Shortest Path First)

CSPF 是 TE 路径计算的核心算法,它在 SPF 算法基础上增加了约束条件:

CSPF 计算步骤: 1. 从 Head-End 开始执行 Dijkstra 算法 2. 过滤不满足带宽约束的链路 3. 过滤亲和属性不匹配的链路 4. 过滤管理员组不允许的链路 5. 如果指定了显式路径,强制经过指定节点 6. 在满足约束的图中找到最短路径

CSPF(Constraint-Based Shortest Path First) - 图示

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 错误码,带宽不足是最常见问题

思考

  1. RSVP-TE 的 Refresh 报文定期发送的目的是什么?如果 Refresh 超时,LSP 状态如何变化?
  2. CSPF 计算中,带宽约束是"硬约束"还是"软约束"?即带宽不满足时 CSPF 是否会完全排除该链路?
  3. MPLS TE 隧道的建立优先级和保持优先级有什么区别?什么场景下需要将两者配置为不同值?

下篇预告:第159篇:CR-LSP 的建立与带宽预留