目录
TI-LFA FRR保护技术
LFA FRR
R-LFA FRR
TI-LFA FRR
Anycast FRR技术
Host-Standby技术
VPN FRR技术
SR-MPLS防微环技术
场景一 SR本地正切防微环
场景二 SR本地回切防微环
场景三 SR远端正切防微环
场景四 SR远端回切防微环
TI-LFA和防微环的对比
TI-LFA FRR保护技术
TI-LFA FRR能够为SR隧道提供链路以及节点的保护,当某处链路或者节点故障时,流量会快速切换到备份路径继续转发
目前我们所用到FRR技术有LFA FRR、RLFA FRR、TI-LFA三种,其中TI-LFA能够提供最高级别的链路保护
LFA FRR
通过IGP协议实现,备份路径是普通的IP路径
LFA FRR如何生成备份路径
以可提供备份链路的的邻居为根节点(即以N备份节点为根节点),利用SPF算法计算到达目的节点的最短距离,得到一条开销最小且无环的备份链路
当保护的链路发生故障后,直接通过备份链路进行转发
LFA的不足之处
- 只有网络满足链路保护公式或节点保护公式才可以以备份节点为根建立最短路径树
例如:当Cost(N,D)<Cost(N,S)+Cost(S,D)时,不会建立备份节点
- IP FRR场景可能会出现临时环路
当没有满足公式,备份路径建立不起来时,如果S与D相连的路径出现故障后
S会把流量丢向N节点,由于N节点没有建立备份路径
N在还没有收到S发送的故障收敛通告消息之前,N会把流量再次丢到S,造成临时环路
- LFA提供的备份路径可能不是最优的
PE4为N节点,PE4满足节点保护公式,但是并不是最优路径
R-LFA FRR
通过LDP协议实现R-LFA,备份路径是LDP隧道
RLFA(Remote LFA)如何计算备份路径
找到网络中的PQ节点,在源节点与PQ节点之间建立隧道形成备份下一跳保护
建立的备份隧道时通过LDP标签建立的
当保护的链路发生故障时,流量自动切换到备份隧道继续转发
相关概念
P节点
不需要经过保护链路就可以到达源节点(保护链路源端)的设备为P节点
Q节点
不需要经过保护链路就可以到达目的节点(保护链路末端)的设备为Q节点
扩展P节点
以P节点(此P节点必须是源节点的邻居)来作为源节点计算出扩展P节点
源节点把数据丢给此P节点,保证P节点可以把数据丢到扩展P节点
PQ节点
既是P节点,也是Q节点的设备为PQ节点
此节点为备份链路的目的端
RLFA的不足之处
网路中如果没有PQ节点,无法建立备份隧道,无法保证高可靠,可能造成临时环路
当保护链路出现故障,R1讲数据发往R2,但是由于R2没有建立备份路径,在没有收到故障链路收敛的通告之前,R2会将R1发来的数据再发往R1,造成临时环路
TI-LFA FRR
通过SR协议实现TI-LFA,备份路径是SR隧道
TI-LFA(Topology-Independent LFA)如何计算路径
- 找到网络中的PQ节点,在源节点与PQ节点之间建立隧道形成备份下一跳保护(同RLFA)
- 当没有PQ节点时,源节点直接将数据送到最远P节点,然后此P节点通过Adj SID将数据送到Q节点,建立隧道形成备份下一跳保护
建立的备份隧道时通过SR标签建立,当保护的链路发生故障时,流量自动切换到备份隧道继续转发
TI-LFA的优点
在某些情况下,LFA和RLFA对于某些场景(不满足公式、没有PQ节点)无法计算出备份路径,不能满足可靠性要求
TI-LFA可以通过Adj SID解决没有PQ节点无法建立备份路径的问题(备份路径的计算不会受到拓扑的局限)
除了SR流量,也适用于IP和LDP流量
总是选择最优路由作为备用路径,并且是针对每个目的地址单独计算的
TI-LFA路径保护
TI-LFA可以同时保护链路故障和节点故障
由于节点故障的保护路径也可以保护链路故障,所以TI-LFA会优先计算节点保护备份路径
TI-LFA的不足
- 对于SR隧道中指定的必经节点(首节点,尾节点、路径约束节点)故障,TI-LFA无法生成相应的保护;需要通过Anycast FRR技术解决
- TI-LFA场景也可能会存在微环;需要通过SR防微环技术解决
Anycast FRR技术
Antcast FRR
使得多个节点发布相同的前缀SID,为节点形成备份,解决无法保护必经节点故障的问题
即多台设备虚拟为同一个设备;相同的前缀SID就称为Anycast SID
Anycast SID
Anycast SID是指一个组内所有路由器发布相同的SID
Host-Standby技术
工作原理
通过控制器计算(或手工配置)一条与主路径不同的备份路径,实现端到端的路径保护
一般应用在SR-MPLS TE Policy场景中
通过一个SR-MPLS TE Policy中的多个Candidate Path实现到达同一目的的多条路径
VPN FRR技术
Host-Standby的不足
如果尾节点出现故障,备用路径也会失效,造成数据中断,无法实现高可靠性
此时可以通过VPN FRR技术来解决
VPN FRR工作原理
在源节点建立多个隧道,即建立多个SR-MPLS TE Policy
SR-MPLS Policy源节点、尾节点、Color标识(即源节点、尾节点,Color相同就代表同一个SR-MPLS Policy,也代表走同一隧道--隧道可能有不同的路径,通过candidate path来区分)
在SR-MPLS TE Policy场景下(以上述图为例子),当TI-LFA FRR、Host-Standby、VPN-FRR一起使用时,故障切换保护情况如下
Segment List中标签之间的路径 可以通过TI-LFA FRR保护
当PE1-P1的路径出现故障,可以通过TI-LFA FRR使PE1通过备份路径到达P1(PE1-P3-P1)
Segment List 之间可以实现ECMP(负载分担)
每个Segment Lsit都是一个显式标签栈,多个Segment List之间通过权重实现负载分担
Candidate Path 之间可以实现Host-Standby
当主路径(Candidate Path 1)中有链路或节点出现故障后,可以通过备份路径(Candidate Path)到达尾节点
SR-MPLS TE Policy 之间可以实现VPN FRR
当SR-MPLS TE Policy1的尾节点出现故障后,可以通过SR-MPLS TE Policy2隧道实现数据的继续传输
SR-MPLS防微环技术
为什么会有微环
由于SR-MPLS会依靠IGP协议进行计算,在IGP还没有完成收敛的这段时间,可能出现临时环路,收敛结束后环路消失,此类环路就称为微环
SR防微环的工作原理
SR通过一种对网路影响比较小的方式来消除网络中潜在的环路,具体如下
如果网络拓扑变化可能引发环路
网络节点会创建一个无环的Segment List,引导流量转发到目的地址
等待网络节点全部收敛以后再回退到正常转发状态,从而能有效的消除网路中的环路
场景一 SR本地正切防微环
出现临时环路的情况
全网节点已经部署了TI-LFA,当节点B故障后,节点A针对目的地址C的收敛过程
- 节点A感知到故障,进入TI-LFA快速重路由切换流程,向报文中插入Repair List<105,16056>,将报文转发给P节点E,此时数据正常转发
- 当节点A完成到目的地址C的路由收敛后,则直接查找节点C的路由,将报文转发给下一跳节点D(此时不携带Repair List,而是直接基于Node SID 103转发)
此时节点D还没有完成收敛,当A节点向D节点转发报文时,节点D又将报文转发给节点A,形成临时环路
如何解决此场景的临时环路——节点A需要按照TI-LFA备份路径转发来等待D收敛
- 节点A感知到故障,进入TI-LFA快速重路由切换流程,向报文中插入Repair List<105,16056>,将报文转发给P节点E,此时数据正常转发
- 节点A启动一个定时器T1,在T1期间,节点A不响应拓扑变化,转发表不变(还是通过TI-LFA的备份路径转发),网络中的其它节点正常收敛
- 节点A的定时器T1超时后,这时网络中的其它节点都已经完成收敛,等到节点A收敛完成后,退出TI-LFA流程,按照正常收敛后的路径转发报文
注意事项
以上只限于单点故障的情况
如果没有开启TI-LFA,节点A会通过防微环计算出到达目的地的无环路径来等待D收敛
场景二 SR本地回切防微环
出现临时环路的情况
- 当链路正常的情况下:A去往F路径:A-B-C-E-F
- 当B-C之间的链路出现故障,当网络收敛后:A去往F路径:A-B-D-E-F
- 当B-C之间的链路故障恢复后,由于B设备性能或CPU超负荷等原因,使得D比B优先收敛,此时
A将数据发往B,由于B没有收敛,将数据发往D
此时D收敛完成,将数据发往B,形成临时环路
如何解决此场景的临时环路——节点D需要计算一条无环的路径来等待B收敛
1、故障恢复后,节点D率先完成收敛
此时在节点D启动定时器T1,在T1超时前,节点D针对访问节点F的报文计算的防微环Segment List为<102,16023>
2、当节点A转发数据到B时,由于B未完成收敛,将数据转发给节点D
3、节点D在报文中插入防微环Segment List<102,16023>,并转发到节点B
4、节点B根据<102,16023>执行转发动作,将数据转发到节点C
5、节点C然后再将数据转发到目的地址F
当节点D的定时器T1超时后,网络中的其它节点也完成了收敛
头节点A重新按照收敛后的正常路径A-B-C-E-F转发报文
场景三 SR远端正切防微环
出现临时环路的情况
- 当节点C和节点E之间的链路故障,如果节点G率先完成收敛,节点B未完成收敛
- 节点A将数据发往B,由于B未收敛,将数据发往G
- 由于G节点完成收敛,根据路由下一跳转发到B,形成临时环路
如何解决此场景的临时环路——节点G需要计算一条无环的路径来等待B收敛
- G率先完成收敛后,启动定时器T1,在T1超时前,节点G针对访问节点F的报文计算的防微环Segment Lsit<104,16045>
- 节点A将数据传到B,B未完成收敛,将数据传到G
- 节点G在报文中插入防微环Segment List<104,16045>,并转发给B
- 节点B根据Node SID 104将数据转发到D
- 节点D根据Adj 16045将数据转发到E
- 最后E节点将数据转发到F
当节点G的定时器T1超时后,网络中的其他节点也都已经完成收敛,头节点A按照正常
收敛后的路径A->B->D->E->F转发报文。
场景四 SR远端回切防微环
出现临时环路的情况
- 当链路正常的情况下:A去往F路径:A-B-G-C-E-F
- 当C-E之间的链路出现故障,当网络收敛后:A去往F路径:A-B-D-E-F
- 当B-C之间的链路故障恢复后,由于G设备性能或CPU超负荷等原因,使得G比B优先收敛,此时
A将数据发往B,由于B完成收敛,将数据发往G
此G收敛未完成,将数据发往B,形成临时环路
如何解决此场景的临时环路——节点B需要计算一条无环的路径来等待G收敛
- B率先完成收敛后,启动定时器T1,在T1超时前,节点B针对访问节点F的报文计算的防微环Segment Lsit<107,2001>
- A将数据转发到B,B插入Segment List<107,2001>,发往节点G
- 节点G根据Adj SID将数据发往节点C,防止微环
TI-LFA和防微环的对比
TI-LFA:为目的地址在本地计算备份路径,当主路径链路/节点故障时触发
防微环:防止主路径更新时产生的临时环路,当主路径信息更新时触发