写点什么

现网设备兼容 SRv6 网络演进

  • 2022 年 8 月 03 日
  • 本文字数:1801 字

    阅读完需:约 6 分钟

现网设备兼容SRv6网络演进

SRv6 网络兼容 IPv6,可以很方便地通过普通的 IPv6 路由转发穿越现有的网络设备。现网设备兼容 SRv6 网络演进有利于网络平滑演进,也可以有效地保护投资。目前业界也提出了一些解决方案,可以通过对现网设备的软件升级或者基于现网设备有限的网络硬件能力的升级来兼容 SRv6 网络,主要有两种思路:一种是通过减少 SRv6 SRH 里 SID 栈深,从而让现有硬件支持 SRv6 功能;另一种是通过结合一些现有的流量调度方法(例如 Flowspec、引流规则),在不要求端到端升级的情况下实现端到端的流量调度。

一、利用 Binding SID 减小 SRv6 SID 栈深

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

一条从 R1 到 R6 的显式路径<R2,R3,R4,R5,R6>如果不使用 Binding SID,需要 5 层 SID,即<A2::1,A3::1,A4::1,A5::1, A6::1>,这 里的 A2::1、A3::1、A4::1、A5::1、A6::1 分别代 表 R2、R3、R4、R5、R6。但如果 R1 的 SID 栈处理能力只能达到 3 层,那么 R1 就无法处理深度超过 3 层的 SID。


引入 Binding SID 后,网络控制器首先通过 IGP/BGP-LS 收集网络中各节点的 SID 栈处理能力,然后在计算路径时,就针对路径上各节点对 SID 栈的处理能力计算出不超出相关节点处理能力的 SRv6 路径。针对 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>。这个新的 SRH 会将报文从 R2 经过 R3 和 R4 转发到 R5。如果使能 PSP,这个 SRH 会在 R4 上被剥掉,到达 R5 的报文就剩下内层的 SRH,而且 SL 指向 A6::1。A6::1 会引导网络节点报文转发到最终的目的地 R6。

二、将 Flowspec 应用于 SRv6 网络

目前 IETF 定义了两种与 Flowspec 相关的标准和方案:BGP Flowspec 和 PCE Flowspec。BGP Flowspec 通过引入一种新的 BGP NLRI 来携带防止 DDoS 攻击以及流量过滤的引流规则。PCE Flowspec 定义如何通过 Flowspec 实现向特定隧道的自动引流。PCE Flowspec 继承了 BGP Flowspec 的思想,不同之处是 PCE Flowspec 通过扩展 PCEP 来实现 Flow Specification 的分发,即 PCE 在完成路径计算后将路径信息和引流规则(Flowspec)信息一起下发给路径的入节点,从而将路径/隧道和引流规则有机地结合起来,实现自动化引流,简化网络的配置和管理。


一个引流规则包括一系列的流过滤条件以及对应的处理规则和动作。这些规则和动作包括流量过滤、流量限速、流重定向、流量标记、流量采样和流量监控等。因此,通过在网络中应用 Flowspec,可以控制相关节点按需处理相关流量。


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

  1. 在 R2 上,针对目的地址(A1::4/64,报文的外层 IPv6 头地址,代表 R4)下发一条重定向 Flowspec 规则 A1::4/64 → R6,代表将目的地址为 A1::4/64 的报文发送到 R6。

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

  3. R7 到 R4 有两条路径:<R8,R4>和<R3,R4>,我们希望经过<R3,R4>这条路径,因此就会在 R7 上下发一条重定向 Flowspec 规则 A1::4/64 → R3,将报文送到 R3。

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


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


总之,这些方案的本质都是一种在网络状态和 SRv6 网络编程能力之间的折中平衡。在 SRv6 网络部署初期,通过在网络中间节点引入和维护一定的网络状态,降低了网络设备对 SRv6 SID 栈处理能力的要求,可以最大化地利用现网存量设备。后续随着网络设备的升级、更强性能的网络硬件的普及,这些过渡方案就可以逐渐退出历史舞台,实现真正意义上的端到端 SRv6 网络。

发布于: 刚刚阅读数: 5
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
现网设备兼容SRv6网络演进_8月月更_穿过生命散发芬芳_InfoQ写作社区