第161篇:MPLS TE FRR(快速重路由)
关键词:FRR、快速重路由、保护路径、绕行隧道、Local Protection、Bypass Tunnel、50ms倒换
一、引言
在网络中,链路或节点故障是不可避免的。当一条 TE 隧道经过的链路发生故障时,如果等待 RSVP-TE 重新建立 LSP,通常需要数秒甚至数十秒的时间,这对于实时业务(如语音、视频)是不可接受的。MPLS TE FRR(Fast Reroute,快速重路由)通过预先建立备份路径(保护 LSP),在毫秒级别内将故障流量切换到备用路径,实现"电信级"的业务连续性保障。
二、核心概念
2.1 FRR 保护模型
FRR 的核心思想是"事前准备"——在正常工作时就建立好备份路径,当故障发生时直接切换,无需等待重新计算和信令交互。

2.2 FRR 保护类型
| 保护类型 | 保护范围 | 适用场景 |
|---|---|---|
| 链路保护(Link Protection) | 保护单条链路故障 | 链路中断、接口Down |
| 节点保护(Node Protection) | 保护中间节点故障 | 节点宕机、多链路同时中断 |
| 全局保护 | 保护 Head-End 到 Tail-End 全程 | Head-End 直连链路故障 |
2.3 绕过隧道(Bypass Tunnel)
绕过隧道是 FRR 的核心机制。它在故障点附近建立一条"绕过"故障链路或节点的隧道:
| 类型 | 起点 | 终点 | 说明 |
|---|---|---|---|
| 链路绕过隧道 | 故障链路前一跳 | 故障链路后一跳 | 绕过单条链路 |
| 节点绕过隧道 | 故障节点前一跳 | 故障节点后一跳 | 绕过整个节点 |
2.4 本地保护(Local Protection)
本地保护在 PLR(Point of Local Repair,本地修复点)执行:
| 角色 | 英文全称 | 职责 |
|---|---|---|
| PLR | Point of Local Repair | 故障检测点,执行流量切换 |
| MER | Merge Point | 保护路径与工作路径汇合点 |

三、技术细节
3.1 FRR 切换流程

3.2 FRR 与 BFD 联动
FRR 的快速切换依赖于快速故障检测,BFD(Bidirectional Forwarding Detection)是实现毫秒级检测的关键:
| 检测方式 | 检测时间 | 说明 |
|---|---|---|
| BFD(毫秒级) | 1-50ms | 专用检测协议,推荐 |
| 链路 Down 检测 | 1-3s | 物理层/数据链路层检测 |
| RSVP Ping | 1-3s | 应用层检测 |
3.3 FRR 保护开销
| 开销类型 | 说明 |
|---|---|
| 带宽开销 | 保护隧道占用的带宽(即使空闲) |
| CPU开销 | 维持保护LSP的RSVP状态 |
| 标签开销 | 保护LSP占用标签资源 |
保护隧道的带宽需求通常为工作隧道带宽的 100%(1:1 保护),也可配置为 0(0:1 保护,共享保护带宽)。
3.4 FRR 类型对比与选型指南
| FRR 类型 | 保护范围 | 切换时间 | 配置复杂度 | 适用场景 |
|---|---|---|---|---|
| Link Bypass | 单条物理链路 | <50ms | 低 | 链路冗余场景 |
| Node Bypass | 中间节点整机 | <50ms | 中 | 节点冗余场景 |
| Global FRR | Head-End 到 Tail-End | 秒级 | 低 | Head-End 直连链路故障 |
| TI-LFA | 链路+节点(自动计算) | <50ms | 低(自动) | 推荐方案,无需手动配置绕过隧道 |
TI-LFA(Topology-Independent LFA)优势: - 自动计算保护路径,无需手工配置绕过隧道 - 保证覆盖性(Coverage Guarantee),在有替代路径时一定有解 - 支持链路保护和节点保护统一建模
# 启用TI-LFA(替代手动配置Bypass Tunnel)
[NE40E] mpls
[NE40E-mpls] mpls te
[NE40E-mpls-te] frr enable
[NE40E-mpls-te] frr ti-lfa enable
# 全局启用TI-LFA
# 工作隧道配置(无需配置Bypass Tunnel)
[NE40E] interface Tunnel 1
[NE40E-Tunnel1] mpls te frr protect-type link-and-node
[NE40E-Tunnel1] mpls te frr ti-lfa
# 自动计算TI-LFA保护路径
# 验证TI-LFA保护路径
<NE40E> display mpls te frr ti-lfa
TI-LFA Status: Enabled
Protected Tunnel: Tunnel1
Protection Type: Link and Node
Backup Path: 10.0.0.1 -> 10.0.0.5 -> 10.0.0.6 -> 10.0.0.10
Backup Cost: 40
Coverage: Full (Link + Node)
3.5 FRR 保护切换验证方法
# ========== 切换验证 ==========
# Step 1: 查看FRR当前状态(切换前)
<NE40E> display mpls te frr
FRR Status: Enabled
Bypass Tunnel: Tunnel100
Type: Node Protection
State: Established (Ready)
# Step 2: 模拟链路故障
<NE40E> interface 10GE 1/0/1
[NE40E-10GE1/0/1] shutdown
# Step 3: 观察切换日志
<NE40E> display mpls te frr event-record
Event: Link Down on 10GE1/0/1
Detection Time: 15ms (BFD)
Action: Switched to Bypass Tunnel 100
Switch Time: 32ms (满足50ms要求)
Current Path: 10.0.0.1 -> 10.0.0.5 -> 10.0.0.6 -> 10.0.0.10
# Step 4: 验证业务连通性
<NE40E> ping -a 10.0.0.1 10.0.0.10
Ping 10.0.0.10: 56 data bytes, 5 replies
Packet Loss: 0/5 = 0%
RTT: Min=2ms, Avg=5ms, Max=8ms
# Step 5: 恢复链路
[NE40E-10GE1/0/1] undo shutdown
# Step 6: 观察流量回切
<NE40E> display mpls te frr event-record
Event: Link Up on 10GE1/0/1
Action: Waiting for RSVP Path Recalculation
Note: 流量保持保护路径, 等待主路径重建
# Step 7: 验证主路径重建
<NE40E> display mpls te tunnel-interface interface Tunnel 1 verbose
Main LSP State: Active (New Path)
FRR State: Ready (Standby)
# 主路径已重建, 流量回切
3.6 FRR 切换验证 Checklist
| 检查项 | 验证方法 | 通过标准 |
|---|---|---|
| FRR 全局状态 | display mpls te frr |
Enabled |
| Bypass Tunnel 状态 | display mpls te tunnel-interface |
Established |
| 工作隧道绑定 | display mpls te tunnel-interface Tunnel X verbose |
FRR Ready |
| BFD 会话状态 | display bfd session all |
Up, 检测时间 <50ms |
| 切换时间 | 模拟故障 + display mpls te frr event-record |
<50ms |
| 切换后连通性 | ping / traceroute | 0 丢包 |
| 回切功能 | 恢复故障链路 | 自动回切至主路径 |
| 资源占用 | display mpls te rsvp-session |
保护隧道资源正常 |
四、实战配置/案例分析
4.1 华为 TE FRR 配置
# ========== 全局启用 FRR ==========
[NE40E] mpls
[NE40E-mpls] mpls te
[NE40E-mpls-te] frr enable
# ========== 配置绕过隧道 ==========
[NE40E] interface Tunnel 100
[NE40E-Tunnel100] tunnel-protocol mpls-te
[NE40E-Tunnel100] mpls te tunnel-id 100
[NE40E-Tunnel100] mpls te destination 10.1.1.6
# 绕过隧道终点: 故障链路/节点的下游节点
[NE40E-Tunnel100] mpls te bypass-tunnel
# 标记为绕过隧道
[NE40E-Tunnel100] mpls te bypass-tunnel backup-type node
# 节点保护模式
[NE40E-Tunnel100] mpls te bandwidth bs-value 100000
# 预留与主隧道相同的带宽
[NE40E-Tunnel100] ip address 10.255.255.100 255.255.255.255
# ========== 工作隧道绑定绕过隧道 ==========
[NE40E] interface Tunnel 1
[NE40E-Tunnel1] tunnel-protocol mpls-te
[NE40E-Tunnel1] mpls te tunnel-id 1
[NE40E-Tunnel1] mpls te destination 10.1.1.10
[NE40E-Tunnel1] mpls te frr bypass-tunnel Tunnel 100
# 绑定绕过隧道
[NE40E-Tunnel1] mpls te frr protect-type link-and-node
# 同时保护链路和节点
[NE40E-Tunnel1] ip address 10.255.255.1 255.255.255.255
4.2 配置 BFD 快速检测
# 配置 RSVP TE 与 BFD 联动
[NE40E] mpls te bfd enable
[NE40E-mpls-te] bfd min-tx-interval 10
[NE40E-mpls-te] bfd min-rx-interval 10
[NE40E-mpls-te] bfd detection-multiplier 3
# 检测周期: 10ms x 3 = 30ms 检测超时
# 配置接口 BFD
[NE40E] interface 10GE 1/0/1
[NE40E-10GE1/0/1] bfd enable
[NE40E-10GE1/0/1] bfd min-tx-interval 10
[NE40E-10GE1/0/1] bfd min-rx-interval 10
4.3 验证与故障排查
# 查看 FRR 状态
<NE40E> display mpls te frr
FRR Status: Enabled
Bypass Tunnel: Tunnel100
Type: Node Protection
State: Established
# 查看工作隧道的FRR绑定
<NE40E> display mpls te tunnel-interface interface Tunnel 1 verbose
FRR: Enabled
Protect Type: Link and Node
Bypass Tunnel: Tunnel100
State: Ready
# 模拟故障并观察切换
<NE40E> shutdown interface 10GE 1/0/1
# 观察 FRR 切换日志
<NE40E> display mpls te frr event-record
Event: Link Down on 10GE1/0/1
Action: Switched to Bypass Tunnel 100
Switch Time: 32ms
故障排查案例:FRR 切换超时,切换时间超过 50ms。
# Step 1: 检查 BFD 状态
<NE40E> display bfd session all
# BFD Session 状态为Down, 说明BFD未正常工作
# Step 2: 检查 BFD 参数匹配
<NE40E> display bfd session 10.0.0.2
Local: Tx=10ms, Rx=10ms, Multiplier=3
Remote: Tx=100ms, Rx=100ms, Multiplier=3
# 根因: 对端BFD参数不匹配, 协商后使用较慢的100ms
# Step 3: 修正对端BFD配置
[LSR-Peer] interface 10GE 1/0/2
[LSR-Peer-10GE1/0/2] bfd min-tx-interval 10
[LSR-Peer-10GE1/0/2] bfd min-rx-interval 10
# Step 4: 验证切换时间
<NE40E> display mpls te frr event-record
Switch Time: 35ms # 满足50ms要求
五、总结
| 项目 | 要点 |
|---|---|
| FRR 目的 | 实现毫秒级(<50ms)的 TE 隧道故障切换 |
| 绕过隧道 | 预先建立的备份路径,绕过故障链路或节点 |
| PLR/MER | 本地修复点执行切换,汇合点合并回主路径 |
| BFD 联动 | BFD 提供毫秒级故障检测,触发 FRR 切换 |
| 保护类型 | 链路保护(单链路)、节点保护(整节点) |
思考
- FRR 的绕过隧道在正常工作状态下是否消耗带宽?如果使用 0:1 共享保护,多条工作隧道可以共享同一条绕过隧道吗?
- 当故障恢复后,FRR 如何将流量从保护路径切回到工作路径?这个恢复过程是否也是毫秒级的?
- FRR 只能保护 TE 隧道。如果网络中没有使用 MPLS TE,普通 LDP LSP 如何实现快速恢复?
下篇预告:第162篇:MPLS TE 与 DiffServ 结合:DS-TE