SRv6网络编程自学系列 | 现网设备兼容SRv6网络演进

187 阅读3分钟

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

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

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


目前业界也提出了一些解决方案,可以通过对现网设备的软件升级或者基于现网设备有限的网络硬件能力的升级来兼容SRv6网络,主要有两种思路:一种是通过减少SRv6 SRH里SID栈深,从而让现有硬件支持SRv6功能;另一种是通过结合一些现有的流量调度方法,在不要求端到端升级的情况下实现端到端的流量调度。

  1. 利用Binding SID减小SRv6 SID栈深

利用Binding SID可以减小SRv6 SID栈深,其思路是将一条很长的SRv6 TE路径分割成多段较短的路径,这些较短的路径叫作SRv6子路径。通过Binding SID将各个子路径串接起来,隐藏各个子路径的SID栈的细节,从而降低了对设备处理SID栈深的要求。

图7-9 利用Binding SID减小SRv6 SID栈深的原理示意

网络控制器针对R1(只有3层SID栈的处理能力),计算出一条只包含两层SID的路径A6::1,A2::B1,这里的A2::B1是一个Binding SID,代表<R3,R4,R5>这条子路径。这样,就只需向R1下发一条包含两层SID的SRv6路径,同时在R2下发<R3,R4, R5>这条子路径,并和A2::B1形成映射关系。

在报文转发阶段,对于经过显式路径<R2,R3,R4,R5,R6>到达R6的报文,R1只需要在SRH中压入两层SID栈A6::1,A2::B1。当这个报文转发到R2之后,根据A2::B1这个SID,R2会附加一个新的SRH到报文上,其SID栈为A3::1,A4::1,A5::1

  1. 将Flowspec应用于SRv6网络

核心思想就是对于支持SRv6网络的节点,通过SRH实现流量调度;对于不支持SRv6的节点,通过Flowspec的重定向功能实现流量疏导。

如图7-10所示,用户希望建立一条端到端SRv6 TE路径,从R1经R2、R6、R7、R3到达R4。但是只有R1和R4支持SRv6网络,中间设备都不支持SRv6网络。这样我们就可以结合网络控制器和Flowspec,在不支持SRv6网络的设备上实现流量调度的效果。

① 在R2上,针对目的地址下发一条重定向Flowspec规则A1::4/64 → R6,代表将目的地址为A1::4/64的报文发送到R6。

② 如果控制器知道R6去往A1::4/64的下一跳是R7,就不必在R6上再下发一条Flowspec规则,R6会按照最短路径将报文发送到R7。

③ R7到R4有两条路径:<R8,R4>和<R3,R4>,在R7上下发一条重定向Flowspec规则A1::4/64 → R3,将报文送到R3。

④ 报文到达R3后,通过最短路径转发直接到达目的R4。

这样通过SRH和Flowspec的结合就可以实现端到端的流量调度,这在SRv6网络部署初期,在网络中还有大量不支持SRv6网络的设备的情况下,不失为一种过渡的方案,可以帮助运营商逐步演进到SRv6网络。

图7-10 Flowspec应用于SRv6

随着网络设备的升级、更强性能的网络硬件的普及,这些过渡方案就可以逐渐退出历史舞台,实现真正意义上的端到端SRv6网络。