SRv6网络编程自学系列 | IP FRR与端到端保护

书籍来源:《SRv6网络编程:开启IP网络新时代》

这本书已经出了很多年了,但多年之后因为工作需要再来读一遍,除了温习之外,发现自己学到了更多的知识。一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!

附上汇总贴:SRv6网络编程自学系列 | 汇总_COCOgsta的博客-CSDN博客


TI-LFA是一种FRR保护机制,是LFA的增强方案,TI-LFA具有以下特点。

第一,TI-LFA可以在网络拓扑中不存在PQ节点的情况下,实现对任意拓扑的保护。

第二,TI-LFA基于故障收敛之后的拓扑计算FRR备份路径,使得FRR备份路径与最终网络收敛后的重路由路径一致,避免了转发路径的再次切换。

第三,由于SRv6支持在PLR插入Repair Segment List,显式地指定转发路径,所以基于SRv6的TI-LFA无须创建Target LDP隧道,减少了网络节点维护的隧道状态。

在节点1和节点3之间的链路发生故障以后,TI-LFA首先计算故障收敛之后的最短路径为节点1→节点2→节点4→节点3。基于SRv6的TI-LFA可以计算从节点4到节点3的Repair Segment List,然后利用Repair Segment List指导报文转发。

SRv6网络编程自学系列 | IP FRR与端到端保护_第1张图片

图6-6 RLFA无法形成保护的拓扑

下面通过图6-7介绍SRv6 TI-LFA的工作原理。在图6-7中,节点A到节点F的最短路径为A→B→E→F,节点B需要计算到节点F的备份路径,步骤如下。

① 排除主下一跳(B-E链路)计算收敛后的最短路径为A→B→C→D→E→F。

② 计算P空间。P空间中的节点为节点B和节点C。

③ 计算Q空间。Q空间中的节点为节点D、节点E和节点F。

④ 计算Repair Segment List。如果存在PQ节点,则将流量转发到PQ节点即可,整条路径均为无环路径,此时Repair Segment List可以是P节点的End SID,也可以是空。如果不存在PQ节点,则需要指定P节点到Q节点的无环转发路径。

SRv6网络编程自学系列 | IP FRR与端到端保护_第2张图片

图6-7 SRv6 TI-LFA的工作原理

如表6-2所示,节点B根据TI-LFA计算结果预先安装备份转发表,用于主下一跳发生故障的时候激活备份下一跳,确保到目的节点F的可达性。

表6-2 节点B的TI-LFA备份转发表参数

当B-E链路发生故障时,数据转发过程如下。

① 节点B收到目的地址为6::的报文,根据6::查找转发表,主出接口为If1。

② 节点B查询到If1接口状态为Down,使用备份表项转发,备份出接口为If2,并使用“H.Insert”的方式封装Segment List 3::1,新增1个SRH,将用于修复故障的Segment List和目的地址6::封装在SRH中,SL初始化为1。

③ 节点C收到报文以后,识别出目的地址3::1是End.X SID,所以需要执行End.X SID对应的指令。

④ 节点D收到报文以后,根据报文的目的地址6::查找IPv6路由表,沿着最短路径转发到目的地址F。

6.1.2 SRv6 Endpoint的故障保护

在SRv6 TE场景中,经常要约束数据报文在网络中的转发路径,需要指定报文沿途经过的节点或链路。如图6-8所示,节点A要发送报文到节点F,要求转发路径经过节点E。当节点E发生故障的时候,由于备份路径仍旧必须经过节点E,TI-LFA也无法达到保护的效果。

SRv6网络编程自学系列 | IP FRR与端到端保护_第3张图片

图6-8 TI-LFA保护失效的场景

当某个Endpoint节点发生故障时,它就无法完成对应SID的处理动作,造成转发失败。

为了解决上述问题,需要由Endpoint节点的上游节点(代理转发节点)代替它完成这个转发处理。代理转发节点感知到报文的下一跳接口发生故障,并且下一跳是报文目的地址,且SL > 0,则代替执行End行为,然后按照下层SID的指令进行转发,从而绕过故障节点,实现对SRv6 Endpoint故障节点的保护。

以图6-9为例,对SRv6 Endpoint故障节点的保护过程如下。

① 节点A向目的节点F转发报文,并在SRv6 SRH中指定经过中间节点E。

② 节点E发生故障的时候,节点B感知到报文下一跳接口发生故障,而下一跳正好是报文当前的目的地址5::,且SL > 0,所以节点B执行代理转发行为。此时由于SL = 0,节点B可以去掉SRH,然后根据目的地址6::查表转发。

③ 由于目的地址6::的主下一跳依然是节点E,但是节点B不是该目的地址的倒数第二跳,且SL = 0,所以节点B不再符合代理转发条件,而是按照正常TI-LFA转发流程切换到备份路径转发,备份路径的Repair Segment List为<3::1>,所以节点B使用“H.Insert”的方式封装Segment List 3::1,新增1个SRH,经过备份路径转发到节点F。

④ 在节点A感知到节点E故障,根据5::查表转发的时候,无法命中路由,此时节点A就要作为代理转发节点执行代理转发行为,然后根据目的地址6::查表转发到节点B。节点B如果完成收敛,则按照收敛后的最短路径将报文转发到节点F;节点B如果未完成收敛,则按照TI-LFA流程经过备份路径转发到节点F。通过上述方式,就绕过了故障节点E。

SRv6网络编程自学系列 | IP FRR与端到端保护_第4张图片

图6-9 对SRv6 Endpoint故障节点的保护

初学者可能不太容易理解普通TI-LFA和Endpoint保护的区别,本质上二者的区别在于下一跳节点是中转节点还是目的地址中的Endpoint节点。

如图6-10所示,节点A发送报文携带Segment List 。由于TI-LFA是根据报文目的地址计算一条备份路径,所以TI-LFA计算的备份路径也经过节点E。如果节点E发生故障,普通TI-LFA无法实现保护作用。而SRv6 Endpoint保护是根据下层SID计算的备份转发路径,所以它能绕过故障的Endpoint节点。

SRv6网络编程自学系列 | IP FRR与端到端保护_第5张图片

图6-10 TI-LFA和Endpoint保护的区别

6.1.3 尾节点保护

图6-11描述了一个SRv6 L3VPN场景,节点A是头节点PE,节点F和G是尾节点PE,CE双归到节点F和节点G。在这个场景中,P节点不能维护到私网的路由表,业务报文必须要在PE节点进行终结才能继续往CE转发。所以,对于PE节点故障,必须通过冗余保护才能确保业务不中断。

SRv6网络编程自学系列 | IP FRR与端到端保护_第6张图片

图6-11 对SRv6 L3VPN场景的保护

当前有两种方法可以实现尾节点保护:Anycast FRR和镜像保护。

  1. Anycast FRR

Anycast FRR 方法是在 CE 双归的 PE 节点配置相同的 SID 来实现FRR。

如图6-12所示,CE双归的PE节点F和节点G配置了相同的Locator和VPN SID,网络节点在计算Anycast前缀的时候,会将Anycast前缀虚拟成一个节点并归属到发布Anycast的节点。节点D预安装到目的地址6::的备份路径,形成FRR主备表项,其中主路径为D→F,备份路径为D→E→G,计算的Repair Segment List为<5::7>。

节点F发生故障后,节点D感知到下一跳直连接口的故障,快速切换到备份路径,并且封装Repair Segment List <5::7>,然后将报文转发到节点G。节点G利用VPN SID 6::1查找本地SID表,然后执行VPN SID的指令,通过私网接口将报文转发到CE节点。

SRv6网络编程自学系列 | IP FRR与端到端保护_第7张图片

图6-12 Anycast FRR保护

  1. 镜像保护

业界提出了另外一种尾节点保护技术:镜像保护。在双归PE场景下,一对PE节点可以配置成镜像组,并通过IGP在网络里扩散镜像关系。当镜像组内的某个节点发生故障的时候,可以通过FRR到达镜像组内的其他节点,以达到快速收敛的目的。

如图6-13所示,SRv6 L3VPN场景下,CE双归到节点F和节点G,节点F和节点G上配置的Locator分别为6::/64和7::/64,VPN SID分别为6::100和7::100,同时在节点G上针对节点F的Locator 6::/64配置Mirror SID(镜像SID),取值为7::1。节点G收到节点F发布的VPN路由时,生成双归PE的VPN SID的镜像表项<7::1, 6::100>:<7::100>。

SRv6网络编程自学系列 | IP FRR与端到端保护_第8张图片

图6-13 镜像保护

节点G配置Mirror SID以后,会在IGP发布一个Mirror SID TLV,将Mirror SID泛洪出去,Mirror SID TLV同时还携带该Mirror SID要保护的Locator。

IGP网络节点收到该TLV以后,会做如下处理。

在备份表项计算阶段,如果接收到TLV的网络节点是被保护Locator对应节点的直连节点,该节点计算Mirror SID要保护的Locator路由的备份路径时,会使用Mirror SID作为备份,也就是将报文引导到该节点的镜像保护节点。

如图6-13所示,节点D在计算路由6::/64的备份路径的时候,会使用7::1作为备份路径的最后一个SID,从而将流量引导到节点G。此外,为确保流量能够转发到节点G,还需要增加Repair Segment List <5::7>,这样节点D计算出来的完整Repair Segment List就是<5::7,7::1>。

在数据转发阶段,正常情况下,根据下一跳IGP路由的开销,节点A会优选节点F发布的路由。在报文转发时,节点A将报文目的地址封装为6::100(VPN SID),并转发到节点F。节点F收到报文以后,根据6:100关联到对应的VPN实例路由转发表,根据内层IP目的地址查表转发到CE。

当节点F发生故障时,节点D先感知到故障,激活备份路径,封装Repair Segment List <5::7,7::1>,指导报文无环转发到节点G。节点G根据7::1查找本地SID表,命中一个Mirror SID,节点G执行Mirror SID的指令,然后根据内层报文的IP地址,在SID 7::100关联的本地VPN实例路由转发表中进行查表转发到CE。

你可能感兴趣的:(网络,tcp/ip,网络协议)