「OSPF」- 快速重路由(FRR, Fast ReRoute)

  CREATED BY JENKINSBOT

问题描述

当链路出现故障时,OSPF 开始收敛。如果 LSDB 数量庞大,将出现 OSPF 收敛速度缓慢的问题。

解决方案

FRR(Fast reroute,快速重路由)用于解决该问题,以在 OSPF 故障中实现快速地重路由,实现流量保护。

原理简述

FRR 利用 LFA(Loop-Free Alternates)算法预先计算出备份路径,保存在转发表中,以备在故障时将流量快速切换到备份链路上,保证流量不中断,从而达到流量保护的目的。

LFA 计算备份链路的基本思路是:以可提供备份链路的邻居为根节点,利用 SPF 算法计算出到目的节点的最短距离。然后,按照 不等式 计算出开销最小且无环的备份链路。

特性特征

FRR 是动态 IP FRR;
FRR 特性可将故障恢复时间降低到 50ms 以内;

概念术语

流量保护的类型

OSPF IP FRR 的流量保护分为:
1)链路保护:当需要保护的对象是经过特定 链路 的流量时;
2)节点链路双保护:当需要保护的对象是经过特定 设备 的流量时;

节点保护优先级 > 链路保护;

如下 Distance_opt(X,Y) 表示指节点 X 到 Y 间的最短路径。

链路保护

在常规 OSPF 收敛中,从 S ⇒ D 时,存在两条流量转发链路(并非同时存在):
1)当链路正常时,S ⇒ R1 ⇒ D,为最短路径树,负责进行流量转发;
2)当链路故障时,拓扑重新计算,S ⇒ N ⇒ R1 ⇒ D,再进行流量转发;

当开启 FRR 特性后,如果满足 Distance_opt(N,D) < Distance_opt(N,S) + Distance_opt(S,D) 链路保护公式,则将提前进行 S ⇒ N ⇒ R1 ⇒ D 的拓扑计算,以保证当 S ⇒ R1 故障后可将流量直接切换到 S ⇒ N 链路,而无需等待拓扑计算完成后才开始转发数据;

Q:为什么要满足链路保护公式,即如何理解链路保护公式?
A:保证从节点 N->D 的流量不会再经过 S(即保证没有环路):虽然教材上说是避免环路,但是我们认为这与环路无关,而是为了避免触发重新收敛。什么意思呢?我们站在 S 的角度,S->D 有 S->R1->D 和 S->N->R1->D 两条链路。但是,我们站在 N 的角度,N->D 具有 N->R1->D 和 N->S->R1->D 两条链路。如果 N->D 需要经过 S<=>R1 链路(N->S->R1->D),那么当 S<=>R1 链路故障时,N->D 要重新收敛(N->R1->D),即 S 需要等待 N 收敛完成。如此以来就失去 FRR 的意义,所以我们才要保证 N->D 的流量不会再经过 S,即 Cost(N->S->R1->D) > Cost(N->R1->D),也就是我们的链路保护公式。

节点链路双保护

流量从 S 到 D 进行转发,当网络开销值满足节点链路保护公式时,才可保证当主链路故障后,S 将流量切换到备份链路 S ⇒ N 后可以继续向下游转发。

针对节点链路双保护,必须同时满足两个公式:
1)链路保护公式:Distance_opt(N,D)<Distance_opt(N,S)+Distance_opt(S,D)
2)节点保护公式:Distance_opt(N,D)<Distance_opt(N,E)+Distance_opt(E,D)

Q:为什么要满足该公式,即如何理解该公式?
A:与链路保护类似,都是为了保证从节点 N->D 的流量不会经过 E 节点,换句话说:这个条备份链路不能依赖于被保护链路,否则故障时该备份链路需要重新收敛,而不能直接使用

配置案例

节点链路双保护

配置命令:

[AR1-ospf-1] frr
[AR1-ospf-1-frr]
[AR1-ospf-1-frr] loop-free-alternate                     # 使能 FRR 功能,利用 LFA 算法计算备份下一跳和备份出接口

[AR1]display ospf routing 3.3.3.3

	 OSPF Process 1 with Router ID 10.0.12.1

 Destination : 3.3.3.3/32         
 AdverRouter : 10.0.23.3                Area      : 0.0.0.0  
 Cost        : 15                       Type      : Stub 
 NextHop     : 10.0.12.2                Interface : GigabitEthernet0/0/0  
 Priority    : Medium                   Age       : 00h00m10s  
 Backup Nexthop : 10.0.14.4             Backup Interface: GigabitEthernet0/0/1
 Backup Type : LFA LINK-NODE                                                    # 由于 R1 使能 OSPF IP FRR 功能,OSPF 生成一条备份链路;
                                                                                # 但是,如果不满足公式,则不会产生备份链路及相关信息;
                                                                                # 实际上,3.3.3.3 存在等价路由,两条路由都有各自的备份链路;

 Destination : 3.3.3.3/32         
 AdverRouter : 10.0.23.3                Area      : 0.0.0.0  
 Cost        : 15                       Type      : Stub 
 NextHop     : 10.0.14.4                Interface : GigabitEthernet0/0/1  
 Priority    : Medium                   Age       : 00h00m10s  
 Backup Nexthop : 10.0.12.2             Backup Interface: GigabitEthernet0/0/0
 Backup Type : LFA LINK-NODE 

[AR1-GigabitEthernet0/0/1] ospf frr block                   # 对于承载重要业务的节点设备,通过该命令在指定接口上禁止 OSPF IP FRR 功能,
                                                            # 从而使此接口相连的对端设备不成为备份链路上的节点设备,
                                                            # 避免使能 OSPF IP FRR 功能后对节点设备上运行的重要业务造成影响。