理论部分参考文档:Segment Routing TI-LFA FRR保护技术 - 华为
FRR(Fast Reroute)快速重路由
实现备份链路的快速切换,也可以与BFD联动实现对故障的快速感知。
随着网络的不断发展,VoIP和在线视频等业务对实时性的要求越来越高,而OSPF故障恢复的时间远远超过了50ms,不能满足此类网络业务对实时性的要求。
OSPF IP FRR和BFD联动可以实现50ms级的切换。OSPF IP FRR提前计算好备份链路的方式,BFD实现主链路出现故障时可以快速感知并使流量快速切换到备份链路上,保证流量不中断,从而达到保护流量的目的,因此极大的提高了OSPF网络的可靠性。
FRR技术适用于网络中对于丢包、延时非常敏感的业务。
FRR的核心工作原理是提前为路由协议计算好备份链路,使得确认主链路故障之后,可以快速切换至备份链路进行转发流量,而不发再次去计算拓扑及路由后再进行流量转发。
FRR使用到的一种算法:LFA(Loop-free alternate)无环路备份路径
LFA的原理是找到一个非主下一跳(即不是最短转发路径上的下一跳)的邻居节点,如果这个邻居节点到目的节点的最短路径不经过源节点,则这个邻居节点为无环备份下一跳。
关于以上名词介绍:源节点、邻居节点、目的节点、最短转发路径
S为运行LFA计算的源节点,N为邻居节点,D为目的节点
最短路径即由LSP计算链路开销得出的到达目的节点的最优转发路径(开销最小的路径)
LFA保护分为链路保护和节点保护两种场景。
链路保护场景可用如下公式计算无环下一跳:
LFA链路保护即:备份的下一跳(邻居节点到目的节点)的开销要小于< (邻居节点到源节点)及(源节点到目的节点)的开销之和。
公式一:Distance_opt(N, D) < Distance_opt(N, S) + Distance_opt(S, D)
LFA链路保护原理如下图:
可能会疑惑,为啥开销一定需要满足(N, D) <(N,S)+(S,D)呢?
当发生节点故障时,流量需要从最短路径上S的**下一跳节点(E)**绕行,故需要计算下一跳节点到目的节点及邻居节点之间的开销,防止出现环路情况。
所以如果邻居节点同时满足下述公式,则该邻居满足节点保护条件。
公式二:Distance_opt(N, D) < Distance_opt(N, E) + Distance_opt(E, D)
LFA节点保护原理如下图:
如果链路开销不满足时:
除了LFA算法外,还有RLFA(remote loop-free alternates)远端无环路备份路径、TI-LFA(Topology Independent LFA)拓扑无关的无环路备份路径,各算法各有利弊。
起因:
虽然LFA在网格状拓扑中通常能够获得较好的覆盖范围,但是针对环网,LFA的覆盖范围很低。
为了提升保护范围,产生了RLFA技术,用于提升FRR保护范围。
优点:
缺点:
RLFA的基本原理是在远端找到一个LFA节点(通常称为PQ节点),然后使得S节点与PQ节点之间建立隧道进行流量转发。因为该节点是去往源和目的无环的一台设备,所以通过隧道将流量转发给PQ节点由它来进行转发给目的/源可保证链路故障后不会出现短暂环路现象。
这个PQ节点需要满足两个条件:
RLFA保护也分为链路保护和节点保护两种场景。
概念 | 解释 |
---|---|
P空间 | 以保护链路源端为根节点建立SPF树,所有从根节点不经过保护链路可达的节点集合称为P空间。 |
扩展P空间 | 以保护链路源端的所有邻居为根节点分别建立SPF树,所有从根节点不经过保护链路可达的节点集合称为扩展P空间。 **说明:**华为设备在计算RLFA FRR备份路径时,默认计算扩展P空间。 |
Q空间 | 以保护链路末端为根节点建立反向SPF树,所有从根节点不经过保护链路可达的节点集合称为Q空间。 |
P节点 | P空间、扩展P空间的节点称为P节点。 |
Q节点 | Q空间的节点称为Q节点。 |
PQ节点 | 在(扩展)P空间又在Q空间的节点,PQ节点会作为保护隧道的目的端。 |
P空间内P节点,保证P到S节点不存在故障后出现微环的情况。
Q空间内Q节点,保证Q到D节点不存在故障后出现微环的情况。
处于P空间与Q空间中的节点设备,则具备有去往源目节点都不会环路的能力(下图中的P3设备)
故只需要使S与P3建立一条隧道,该隧道便是PE1-PE2的备用链路。
P节点的计算公式如下:
公式三:Distance_opt(N, P) < Distance_opt(N, S) + Distance_opt(S, P)
套用公式进行计算得出,满足P节点公式的只有P2、P3设备。
Q节点的计算公式如下:
公式四:Distance_opt(Q, D) < Distance_opt(Q, S) + Distance_opt(S, D)
套用公式进行计算得出,满足Q节点公式的只有PE2、P4、P3设备。
为啥PQ节点如此计算?
其实与LFA算法一致,主要还是为了防止保护链路在故障之后,出现微环的情况。
如P节点计算,以P3作为P节点,故NP=3,NS=8,SP=12,满足公式。
如果链路开销设置不合理:
P节点的计算公式如下:
公式五:Distance_opt(N, P) < Distance_opt(N, E) + Distance_opt(E, P)
Q节点的计算公式如下:
公式六:Distance_opt(Q, D) < Distance_opt(Q, E) + Distance_opt(E, D)
此时拿出LFA的保护公式与RLFA的保护公式进行对比记忆:
LFA链路保护:Distance_opt(N, D) < Distance_opt(N, S) + Distance_opt(S, D)
RLFA链路保护-P节点:Distance_opt(N, P) < Distance_opt(N, S) + Distance_opt(S, P)
RLFA链路保护-Q节点:Distance_opt(Q, D) < Distance_opt(Q, S) + Distance_opt(S, D)
以链路保护为例,可以看到明显有变化与没有变化的地方。
将LFA公式中的D节点换成P节点,即成为了RLFA-P节点的计算公式。
将LFA公式中的N节点换成Q节点,即成为了RLFA-Q节点的计算公式。
P节点:计算S至D的下一跳节点(P节点)是否存在环路问题,可将其它设备作为P节点设备进行计算,判断是否还存在其它设备可成为下一跳P节点且不出现环路问题。最终这些P节点的集成就是P空间。
Q节点:计算D至S的下一跳节点(Q节点)是否存在环路问题,与P节点一致,计算出所有可成为下一跳Q节点的设备集成为Q空间。
LFA节点保护:Distance_opt(N, D) < Distance_opt(N, E) + Distance_opt(E, D)
RLFA节点保护-P节点:Distance_opt(N, P) < Distance_opt(N, E) + Distance_opt(E, P)
RLFA节点保护-Q节点:Distance_opt(Q, D) < Distance_opt(Q, E) + Distance_opt(E, D)
节点保护一致。
P节点保护S至D在故障时不出现环路问题,故LFA公式中将D换成P即成为RLFA-P节点公式。
Q节点保护D至S在故障时不出现环路问题,故LFA公式中将N换成Q即成为RLFA-Q节点公式。
理解之后,只需要记忆LFA的两个公式即可推理出其它公式。
起因:
优点:
缺点:
转至 SR段路由技术之后再进行进一步补充原理及其它内容。
开启FRR功能,并使用LFA算法(ENSP中只支持该算法)。
[Huawei]ospf 1
[Huawei-ospf-1]frr
[Huawei-ospf-1-frr]loop-free-alternate
? 按照图中规划进行设置网络及链路开销,要求实现主用链路断开之后,网络能快速感知并切换至备用链路转发数据。
省略底层IP及OSPF相关配置。
未配置FRR时,于P1上查看去往模拟业务的OSPF路由信息:
默认下一跳为10.1.14.4(P4)此外无其它信息。
[P1-ospf-1]dis ip routing-table protocol ospf verbose
Destination: 192.168.2.0/24
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 6
NextHop: 10.1.14.4 Neighbour: 0.0.0.0
State: Active Adv Age: 00h00m03s
Tag: 0 Priority: low
Label: NULL QoSInfo: 0x0
IndirectID: 0x0
RelayNextHop: 0.0.0.0 Interface: GigabitEthernet0/0/0
TunnelID: 0x0 Flags: D
将所有设备的FRR功能启用,并指定LFA算法。
配置完成之后,于P1上查看去往模拟业务的OSPF路由信息:
开启FRR之后,出现BKNextHop等信息,表示该路由的备份链路信息。
[P1-ospf-1]dis ip routing-table protocol ospf verbose
Destination: 192.168.2.0/24
Protocol: OSPF Process ID: 1
Preference: 10 Cost: 6
NextHop: 10.1.14.4 Neighbour: 0.0.0.0
State: Active Adv Age: 00h00m12s
Tag: 0 Priority: low
Label: NULL QoSInfo: 0x0
IndirectID: 0x0
RelayNextHop: 0.0.0.0 Interface: GigabitEthernet0/0/0
TunnelID: 0x0 Flags: D
----------《新增信息》----------
BkNextHop: 10.1.12.2 BkInterface: GigabitEthernet0/0/1
BkLabel: NULL SecTunnelID: 0x0
BkPETunnelID: 0x0 BkPESecTunnelID: 0x0
BkIndirectID: 0x0
[PE1]bfd
[PE1-bfd]ospf 1
[PE1-ospf-1]bfd all-interfaces enable
[P1-ospf-1]dis bfd session all
--------------------------------------------------------------------------------
Local Remote PeerIpAddr State Type InterfaceName
--------------------------------------------------------------------------------
8192 8193 10.1.14.4 Up D_IP_IF GigabitEthernet0/0/0
8193 8192 10.1.15.5 Up D_IP_IF GigabitEthernet0/0/2
8194 0 10.1.12.2 Down D_IP_IF GigabitEthernet0/0/1
--------------------------------------------------------------------------------
Total UP/DOWN Session Number : 2/1
PE1设备上进行长ping模拟业务,然后于P4上将G0/0/0接口关闭,观察通断情况。
目前直连链路断开,P1直接感知可能并不需要通过BFD检测就能感知通断,故只丢了1个包。
于P1-P4之间添加一台设备S,此时如果将S的E0/0/2口断开,P1无法通过直连快速感知,就需要借助BFD检测进行实现快速感知。
链路断开之后,BFD经过约3秒时间断开会话,触发OSPF邻居断开,快速切换到FRR计算的备份路径转发路由。
但从Ping测试中并没有看出明显的差距,还是只丢包1个,不过可以说明BFD检测的作用。