SRv6可靠性方案(二)
本文为SRv6可靠性方案第二篇,第一篇详见:SRv6技术课堂:SRv6可靠性方案(一)
节点A转发报文给目的地址F,并在SRv6扩展头指定经过中间节点E。
节点E故障的时候,节点B感知到报文下一跳接口故障,而且自己是目的地址5::的倒数第二跳,SL > 0。所以,节点B执行Proxy forwarding行为,SL--,并将下层SID 6::拷贝到外层IPv6头,由于SL=0,POP SRH扩展头,然后根据目的地址6::查表转发。
由于目的地址6::的下一跳依然是节点E,但是节点B不是该目的地址的倒数第二跳,SL = 0,所以不执行Proxy forwarding行为,而是按照正常转发流程切换到备份路径转发,备份路径的Repair List为3::1,所以节点B插入SID 3::1,走备份路径转发到节点F。
当节点A的IGP完成收敛以后,节点A删除到节点E 5::的路由转发表项,所以节点A根据5::查表转发的时候,无法命中路由,这个时候节点A就要作为Proxy forwarding节点执行Proxy forwarding行为,SL--,并将下层SID 6::拷贝到外层IPv6头,然后根据目的地址6::查表转发到B,这样绕过节点E,到达目的节点F。
为了支持SRv6 Enpoint故障保护,我们在SRv6 SID转发伪码里插入一段转发流程(参考draft-chen-rtgwg-srv6-midpoint-protection),用于指导Endpoint节点故障时SID执行的Proxy forwarding转发动作。 IF the primary outbound interface used to forward the packet failed IF NH = SRH && SL != 0, and the failed endpoint is directly connected to the PLR THEN SL--; update the IPv6 DA with SRH[SL]; FIB lookup on the updated DA; forward the packet according to the matched entry; ELSE forward the packet according to the backup nexthop; ELSE // there is no FIB entry for forwarding the packet IF NH = SRH && SL != 0 THEN SL--; update the IPv6 DA with SRH[SL]; FIB lookup on the updated DA; forward the packet according to the matched entry; ELSE drop the packet; //ELSE //forward accordingly to the matched entry;
Anycast FRR能够实现PE节点故障的保护,但是Anycast FRR存在如下问题:
需要静态指定VPN SID,因为需要保证两个PE的VPN SID一致。
受限于IGP层面的优选,无法进行VPN层面的选路。例如,如果VPN希望在节点F和G形成负载分担,或者优选节点G。但IGP到7::的路径优选的是节点F,没有办法控制VPN层面的选路。
当AC侧接口故障的时候,例如,节点G到CE的链路故障的时候,报文还是会转发到G,然后绕行到F,会产生流量的绕行,而且无法恢复。
当出现插花组网的时候,不同的多归集合需要规划不同Locator,难以部署。
如下图所示, L3VPN over SRv6 BE场景,CE双归到节点G和节点F,节点G和节点F分别配置Locator为6::/64和7::/64,VPN SID 为6::100和7::100,同时节点F针对节点G配置Locator 6::/64的镜像SID(7::1)。节点F收到节点G发布的VPN路由的时候,会根据Mirror SID的配置生成双归PE的VPN SID的镜像表:7::1,6::100 <->7::100,这个镜像表表示7::1,6::100这两层Sid和7::100这个Sid是等价的。
IGP网络节点收到该TLV以后,会做如下处理:
如果接受到TLV的网络节点是被保护Locator对应节点的直连节点,该节点计算Mirror SID要保护的Locator路由的备份路径的时候,会使用Mirror SID作为备份,也就是将流量引导到作为该节点的镜像保护的节点。如图所示,节点C在计算路由6::/64的备份路径的时候,会使用7::1作为Repir List作为备份路径的最后一个SID,从而将流量引导到节点F,同时Repair List会增加到节点F针对故障点G的Repair List,4::6,这样节点C计算出来的Repair List就是4::6,7::1.
Ingress PE节点A该VPN路由优选下一跳节点G,目的地址封装6::100(VPN SID)转发到节点G,节点G根据6:100索引到对应的VPN转发表,根据内层IP目的地址查表转发到CE。如图1-21所示,当节点G故障时,节点C先感知到故障,激活备份路径,封装Repair List: <4::6,7::1>,指导报文无环转发到节点F,节点F根据7::1查到本地SID是1个Mirror SID,根据下层SID 6::100查映射表,映射到本地7::100,然后根据7::100关联的本地VRF表按内层IP地址查表转发到CE。
相对于Anycast方式实现尾结点保护,Mirror保护方案不要求双归PE配置相同Locator,所以保留了Overlay层面选路的能力,同时AC侧故障头结点PE能进行收敛。
(未完待续)