当链路出现故障时,OSPF 开始收敛。如果 LSDB 数量庞大,将出现 OSPF 收敛速度缓慢的问题。
FRR(Fast reroute,快速重路由)技术用于解决该问题,在发生 OSPF 故障中,以实现快速地重路由,进而实现流量保护。
FRR 利用 LFA(Loop-Free Alternates)算法预先计算出备份路径,保存在转发表中。在故障时,将流量快速切换到备份链路上,保证流量不中断,从而达到流量保护的目的。
LFA 计算备份链路的基本思路是:以可提供备份链路的邻居为根节点,利用 SPF 算法计算出到目的节点的最短距离,然后按照 不等式 计算出开销最小且无环的备份链路。
FRR 是动态 IP FRR;
FRR 特性可将故障恢复时间降低到 50ms 以内;
流量保护的类型
OSPF IP FRR 的流量保护分为:
- 链路保护:当需要保护的对象是经过特定 链路 的流量时;
- 节点链路双保护:当需要保护的对象是经过特定 设备 的流量时;
节点保护优先级 > 链路保护;
如下 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 链路,而无需等待拓扑计算完成后才开始转发数据;
理解链路保护公式 | 为什么要满足链路保护公式?如何理解链路保护公式?
针对该拓扑,FRR 将在 S 上启用,然后 S 将提前完成备用链路的计算。当具有备份链路之后,如果 S 发现主链路故障,S 不需要重新收敛(计算路径),直接将流量通过备用链路转发到 N 设备。
轮到 N 设备处理流量时,我们期望 N ⇒ D 的流量转发路径是 N ⇒ R1 ⇒ D 而非 N ⇒ S ⇒ R1 ⇒ D 路径,否则就失去 FRR 的意义,所以我们才要保证 N->D 的流量不会再经过 S,即 Cost(N->S->R1->D) > Cost(N->R1->D),也就是我们的链路保护公式。
节点链路双保护
流量从 S 到 D 进行转发,当网络 Cost 满足节点链路保护公式时,才可保证当主链路故障后,S 将流量切换到备份链路 S ⇒ N 后可以继续向下游转发;
针对节点链路双保护,必须同时满足两个公式:
- 链路保护公式:Distance_opt(N,D)<Distance_opt(N,S)+Distance_opt(S,D)
- 节点保护公式:Distance_opt(N,D)<Distance_opt(N,E)+Distance_opt(E,D)
Q:为什么要满足该公式,即如何理解该公式?
A:与链路保护类似,都是为了保证从节点 N->D 的流量不会经过 E 节点,换句话说:这个条备份链路不能依赖于被保护链路,否则故障时该备份链路需要重新收敛,而不能直接使用;