第161篇:MPLS TE FRR(快速重路由)

关键词:FRR、快速重路由、保护路径、绕行隧道、Local Protection、Bypass Tunnel、50ms倒换

一、引言

在网络中,链路或节点故障是不可避免的。当一条 TE 隧道经过的链路发生故障时,如果等待 RSVP-TE 重新建立 LSP,通常需要数秒甚至数十秒的时间,这对于实时业务(如语音、视频)是不可接受的。MPLS TE FRR(Fast Reroute,快速重路由)通过预先建立备份路径(保护 LSP),在毫秒级别内将故障流量切换到备用路径,实现"电信级"的业务连续性保障。

二、核心概念

2.1 FRR 保护模型

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 保护路径与工作路径汇合点

本地保护(Local Protection) - 图示

三、技术细节

3.1 FRR 切换流程

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 切换
保护类型 链路保护(单链路)、节点保护(整节点)

思考

  1. FRR 的绕过隧道在正常工作状态下是否消耗带宽?如果使用 0:1 共享保护,多条工作隧道可以共享同一条绕过隧道吗?
  2. 当故障恢复后,FRR 如何将流量从保护路径切回到工作路径?这个恢复过程是否也是毫秒级的?
  3. FRR 只能保护 TE 隧道。如果网络中没有使用 MPLS TE,普通 LDP LSP 如何实现快速恢复?

下篇预告:第162篇:MPLS TE 与 DiffServ 结合:DS-TE