问题描述
在 SRv6 Policy 中,经常要约束数据报文在网络中的转发路径,需要指定报文沿途经过的节点或链路。但如果某些必须经过的节点或链路出现故障后,TI-LFA FRR 就无法达到保护的作用;
解决方案
为了解决 SRv6 Policy 场景由于严格节点约束导致的 TI-LFA FRR 保护失效问题,需要由中间节点(Midpoint)的上游节点代替它完成这个转发处理,这个上游节点称之为代理转发(Proxy Forwarding)节点;
代理转发节点感知到报文的下一跳接口故障,并且下一跳是报文目的地址,且 SL > 0 时,代理转发节点代替中间节点执行 End 行为,将 SL 减 1,并将下层要处理的 SID 更新到外层 IPv6 报文头,然后按照下层 SID 的指令进行转发,从而绕过故障节点,实现 SRv6 中间节点故障的保护;
原理简述
Midpoint 保护流程:
正常时,P1 节点计算了到各个节点的 IGP 最短路径和 TI-LFA 备份路径,例如去 PE2 节点的最短路径和 TI-LFA 路径;
当节点 P1 配置了 Middle point TI-LFA 后,如果节点 P2 发生故障时,P1 感知到 P2 的出接口故障,报文的目的地址 P2 为 P1 的直连邻居,且 SRH 的 SL>0,会触发 Middle point TI-LFA 动作;
节点 P1 执行代理转发,SL 减一,将 Next SID FC06::6 拷贝到 IPv6 目的地址中,后根据目的地址 PE2 转发,流量可以经过 P1->P3->P4 顺利到达 PE2;
节点 P1 进行代理转发后,如果发现到目的地址 PE2 的下一跳依然是 P2,此时 P1 将流量转发到 TI-LFA 备份路径。也就是说 P1 在进行了 Middle point TI-LFA 之后,紧接着进行一次基础 TI-LFA 处理,从而实现流量切换到正确的备份路径;
节点 PE1 完成 IGP 收敛之后,删除到 P2 的 FIB 表项,而此时如果 iMaster NCE-IP 还下发新的 Policy 的 Segment List,节点 PE2 也会进行 Proxy Forwarding 处理,SL 减一,将 Next SID FC06::6 作为 IPv6 目的地址,并沿途转发到 PE2;