第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,流量不中断 |
九、思考
- CR-LSP 的建立过程中,CAC 检查发生在哪个环节?
- Setup Priority 和 Holding Priority 有什么区别?优先级数值和实际等级的关系是什么?
- 什么情况下会发生资源抢占?请描述抢占的判断过程。
- RSVP-TE 的软状态刷新机制是如何工作的?
- Make-before-break 机制解决了什么问题?
下篇预告:第160篇《TE 隧道路径计算与显式路径》——深入探讨 CSPF 算法细节、显式路径(Strict/Loose)和路径优化策略。