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

关键词

CR-LSP、带宽预留、优先级抢占、资源分配、RSVP-TE、FLOWSPEC


一、CR-LSP 的建立流程

1.1 总体步骤

CR-LSP(Constraint-based LSP)的建立分为以下步骤:

步骤 1:CSPF 路径计算
    │
    ├─ 收集 TED(链路带宽、亲和属性、TE 度量)
    ├─ 应用约束条件(带宽、路径、亲和属性)
    └─ 输出 ERO(显式路由对象)
    │
步骤 2:RSVP-TE 信令建立
    │
    ├─ Path 报文(携带 ERO + LABEL_REQUEST + FLOWSPEC)
    ├─ 沿途节点检查资源(CAC:Connection Admission Control)
    ├─ Resv 报文(携带 LABEL + FLOWSPEC 确认)
    └─ CR-LSP 建立
    │
步骤 3:数据面就绪
    │
    ├─ LFIB 表项安装
    └─ 流量引导到隧道

二、CAC(Connection Admission Control)——资源准入控制

2.1 CAC 的作用

CAC 是 RSVP-TE 路径上每个节点在收到 Path 报文时执行的资源检查过程:

Path 报文到达节点 P2:
  │
  ├─ FLOWSPEC: 请求带宽 = 100 Mbps
  │
  ├─ 检查接口 GE0/0/0 的可用带宽:
  │   最大可预留带宽 = 1 Gbps
  │   当前已预留 = 700 Mbps
  │   可用带宽 = 300 Mbps ≥ 100 Mbps → 通过
  │
  ├─ 如果通过 → 记录 PATH State,继续转发 Path 到下一跳
  │
  └─ 如果不够 → 发送 PathErr(Admission Control Failure)

2.2 可用带宽计算

可用带宽 = 最大可预留带宽 - 已预留带宽(所有已建立的 LSP 之和)

示例:
  接口 GE0/0/0:
    max-reservable = 1000000 Kbps(1 Gbps)
    已预留:
      Tunnel 1: 200000 Kbps(200 Mbps)
      Tunnel 2: 300000 Kbps(300 Mbps)
      Tunnel 3: 200000 Kbps(200 Mbps)
    总计已预留 = 700000 Kbps(700 Mbps)
    可用     = 300000 Kbps(300 Mbps)
    新请求    = 50000  Kbps(50 Mbps)→ 允许

三、优先级与抢占

3.1 优先级体系

CR-LSP 使用两个优先级:

优先级 名称 取值范围 说明
Setup Priority(建立优先级) 建立优先级 0-7 新建隧道尝试预留时的优先级
Holding Priority(保持优先级) 保持优先级 0-7 建立后持有资源的优先级

0 为最高优先级,7 为最低。 默认值:Setup = 7,Holding = 7。

3.2 抢占规则

当新隧道请求带宽但资源不足时,如果新隧道的 Setup Priority 高于(数值更小)现有隧道的 Holding Priority,新隧道可以抢占现有隧道的资源。

场景:接口只剩 50 Mbps,新隧道需要 100 Mbps

现有隧道:
  Tunnel A: Setup=5, Holding=3, 带宽=200 Mbps(高保持优先级)
  Tunnel B: Setup=3, Holding=6, 带宽=150 Mbps(低保持优先级)

新隧道 Tunnel C: Setup=2, Holding=2, 需要 100 Mbps

抢占判断:
  Tunnel B: Holding=6 > Setup=2(新隧道优先级更高)→ 可以抢占
  Tunnel A: Holding=3 < Setup=2(新隧道优先级不更高)→ 不能抢占

结果:
  Tunnel B 被拆除(发送 ResvTear),释放 150 Mbps
  Tunnel C 建立成功,使用 100 Mbps

3.3 配置示例

interface Tunnel2
 mpls te bandwidth 50000              # 带宽 50Mbps
 mpls te priority 5 7                 # Setup=5, Holding=7(默认)

四、CR-LSP 的带宽模型

4.1 预留带宽类型

带宽类型 含义 配置参数
Max Reservable Bandwidth 接口上可被 LSP 预留的最大总带宽 rsvp-te bandwidth max-reservable
Per-priority Unreserved Bandwidth 各优先级可用的未预留带宽 自动计算
Requested Bandwidth 单个 LSP 请求的带宽 mpls te bandwidth

4.2 带宽预留的真实效果

注意一个重要概念:RSVP-TE 的带宽预留是控制面行为,不是真正的数据面调度。

控制面(RSVP-TE):
  ├─ 在 TED 中记录已预留带宽
  └─ 新的 LSP 建立时做 CAC 检查

数据面(转发):
  ├─ TE 隧道建立后,流量确实走指定的 CR-LSP
  ├─ 但接口本身没有为隧道做 QoS 队列调度
  └─ "预留 50 Mbps" ≠ "保证 50 Mbps 的转发"

要实现真正的带宽保障,需要结合 MPLS TE + DiffServ(DS-TE)。

五、CR-LSP 的更新与拆除

5.1 优雅更新(Make-before-break)

当需要修改已建立的 CR-LSP 参数(如带宽、路径)时,使用 Make-before-break(先建后拆) 机制:

步骤 1:新建 CR-LSP(携带新的参数)
  使用相同的 Session ID,但不同的 LSP ID
  新路径和旧路径共享资源(通过 Shared-Explicit (SE) 风格)

步骤 2:新 CR-LSP 建立成功

步骤 3:流量平滑切换到新 CR-LSP

步骤 4:拆除旧的 CR-LSP
  发送 PathTear 清除旧路径的资源

优势:流量无中断切换。

5.2 拆除流程

正常拆除:
   Ingress 发送 PathTear → 沿途节点清除 PATH State
   Egress 收到 PathTear → 发送 ResvTear → 释放资源

故障拆除:
   节点检测到链路故障 → 发送 PathErr(Notification of Adjacency Failure)
   Ingress 收到 PathErr → 尝试切换保护路径或重新计算

六、CR-LSP 的状态机

6.1 Path 状态机

            ┌──────────────┐
            │    IDLE      │
            └──────┬───────┘
                   │ Path 发送
            ┌──────▼───────┐
            │  PATH_SENT   │
            └──────┬───────┘
                   │ 收到 Resv
            ┌──────▼───────┐
            │  ESTABLISHED │  ← CR-LSP 建立完成
            └──────┬───────┘
                   │ 错误/超时/拆除
            ┌──────▼───────┐
            │    IDLE      │
            └──────────────┘

6.2 Resv 状态机

            ┌──────────────┐
            │    IDLE      │
            └──────┬───────┘
                   │ 收到 Path → 执行 CAC
            ┌──────▼───────┐
            │  RESV_SENT   │  ← Resv 已发送
            └──────┬───────┘
                   │ 收到 Path(刷新)
            ┌──────▼───────┐
            │  ESTABLISHED │  ← 资源已预留
            └──────┬───────┘
                   │ 超时(未收到 Path 刷新)→ 释放资源
            ┌──────▼───────┐
            │    IDLE      │
            └──────────────┘

6.3 软状态刷新机制

RSVP-TE 使用软状态(Soft State)机制:

  • 每个 LSP 建立后,Ingress 需要周期性地发送 Path 报文(默认 30 秒)
  • Egress 收到 Path 后,周期性发送 Resv 报文
  • 如果某个节点连续没有收到刷新报文(超时 3 × 30 秒),则自动清除该 LSP 的状态
Ingress ── Path(每 30 秒)──▶ P1 ──▶ P2 ──▶ Egress
                               │
                           收到 Path
                               │
                           更新 PATH State(刷新定时器)
                               │
                           保持 CR-LSP

    如果链路故障超过 90 秒未收到 Path:
      节点清除该 LSP 的状态 → 释放资源

七、实际配置案例

7.1 构建一条端到端 CR-LSP

网络拓扑:
  PE1 ─── P1 ─── P2 ─── P3 ─── PE2
  1.1.1.1                   2.2.2.2

需求:
  - 从 PE1 到 PE2 建立一条 TE 隧道
  - 预留带宽 100 Mbps
  - 必须经过 P1,避免经过 P3(走 P2 备用路径)

配置步骤:

# PE1 配置
mpls lsr-id 1.1.1.1
mpls
 te tunnel
 rsvp-te
!
interface GigabitEthernet0/0/0
 mpls
 mpls te
 rsvp-te
 rsvp-te bandwidth max-reservable 1000000  # Kbps
!
interface Tunnel1
 ip address unnumbered interface LoopBack0
 tunnel-protocol mpls te
 destination 2.2.2.2
 mpls te tunnel-id 101
 mpls te bandwidth 100000                  # 100 Mbps
 mpls te priority 7 7                      # Setup=7, Holding=7
 mpls te path explicit-path primary-path   # 显式路径
 mpls te commit
!
explicit-path primary-path
 next-hop 10.1.1.2                         # P1
 next-hop 10.2.2.2                         # P2(不经过 P3,走旁路)
 next-hop 10.4.4.2                         # PE2

7.2 验证

<PE1> display mpls te tunnel interface Tunnel1

Tunnel Interface  : Tunnel1
Tunnel Index      : 1
Session ID        : 101
Ingress LSR ID    : 1.1.1.1
Egress LSR ID     : 2.2.2.2
Admin State       : Up
Oper State        : Up
Signaling Protocol: RSVP-TE
Bandwidth         : 100000 Kbps
Path Option       : Explicit(primary-path)
Path Status       : Established
Created Time      : 2024-01-15 10:30:00

八、总结

知识点 核心要点
CR-LSP 建立 CSPF 计算路径 → RSVP-TE 信令 → 安装 LFIB
CAC 每个节点检查资源是否满足 FLOWSPEC 需求
优先级 Setup Priority(建链)和 Holding Priority(保持)
抢占 高优先级隧道可抢占低优先级隧道的资源
软状态 Path/Resv 周期性刷新(30 秒),超时 90 秒自动清除
Make-before-break 优雅更新,先建新 LSP 再拆旧 LSP,流量不中断

九、思考

  1. CR-LSP 的建立过程中,CAC 检查发生在哪个环节?
  2. Setup Priority 和 Holding Priority 有什么区别?优先级数值和实际等级的关系是什么?
  3. 什么情况下会发生资源抢占?请描述抢占的判断过程。
  4. RSVP-TE 的软状态刷新机制是如何工作的?
  5. Make-before-break 机制解决了什么问题?

下篇预告:第160篇《TE 隧道路径计算与显式路径》——深入探讨 CSPF 算法细节、显式路径(Strict/Loose)和路径优化策略。