认识
已知问题
针对 MPLS 技术,其本质上仅是指导数据转发的隧道技术,有完整的隧道创建、隧道管理、维护机制。该机制都是从网络运营和管理角度驱动的需求,而非由应用(业务)驱动网络需求。
针对如上拓扑环境,已知 MPLS LDP 问题:
- LDP 本身并无算路能力,需依赖 IGP 进行路径计算;
- 控制面需要 IGP 及 LDP 协议,设备间需要发送大量消息来维持邻居关系及路径状态,浪费链路带宽及设备资源;
- 针对主备切换,不会产生流量丢失。但是,当链路回切时,若 LDP 与 IGP 未同步,在 MPLS VPN 中则可能出现数据转发问题;
针对如上拓扑环境,已知 MPLS RSVP-TE 问题:
- RSVP-TE 的配置复杂,不支持负载分担;
- 为了实现 TE,设备间需要发送大量 RSVP 报文来维持邻居关系及路径状态,浪费链路带宽及设备资源;
- RSVP-TE 本质上是分布式架构,每台设备只知道自己的状态,设备之间需要交互信令报文;
解决方案
为解决传统 IP 转发和 MPLS 转发的问题,业界提出了 SR(Segment Routing,分段路由)。Segment Routing,是种技术,其为一种允许在头端节点选路,其不需要依靠逐跳信令交互(LDP/RSVP-TE)。
SDN 概念的提出对网络产业产生巨大影响,业界出现了诸多用于实现 SDN 的协议,例如 OpenFlow、POF(Protocol Oblivious Forwarding,协议无关转发)、P4(Programming Protocol-independent Packet Processors,编程协议无关的包处理)和 Segment Routing。相比于革命性的协议,Segment Routing 同时考虑了对现网的兼容、平滑演进、提供可编程能力,是事实上的 SDN 标准。
组成
核心理念:源路由(Source Routing)
SR 是基于 Source Routing(源路由)理念而设计的在网络上转发数据包的一种技术架构。
源路由机制:
1)在源节点中,R1,选择一条路径,并在报文中压入一个有序的标签栈;
2)然后,在网络中,其他节点将按照报文封装的标签栈进行转发,进而“不再基于”传统的源末地址转发;
简而言之,在传统的 MPLS 网络中,其在各个节点不断的切换标签,而 SR 是提前在报文中存储标签列表。
控制平面:路径计算 | 标签栈的生成方法
整体上,路径计算方式有两大类,其与 SR 的部署方式有关,可分为“有控制器”与“无控制器”区分。
转发器算路,使用 SPF(Shortest Path First, 最短路径优先)算法
- 原理:基于 IGP(OSPF/IS-IS)的链路状态数据库,来计算最短路径。为了让 IGP 协议完成该功能,所以对 IGP 协议报文的 TLV 进行一些扩展。
- 场景:默认的 SR 路径计算方式,适用于无特殊约束的流量转发。
- 特点:低计算开销,依赖现有 IGP 拓扑。路径可能因拥塞或延迟不最优。简化协议,通过对现有协议(例如 IGP 协议)进行扩展,能使现有网络更好的平滑演进。扩展后的 IGP/BGP 具有标签分发能力,所以,在网络中,无需其他任何标签分发协议,实现协议简化;
转发器算路,使用 CSPF(Constrained SPF, 约束最短路径优先)算法
- 原理:在 SPF 上,额外加入约束条件(例如 Bandwidth、延迟、SRLG 等等),以剪枝不满足条件的路径。
- 场景:需要满足 SLA(例如低延迟、高带宽等等)的业务,例如视频会议、语音会话等等。
- 特点:需网络全局信息(如通过 PCE 或 SDN 控制器)。可能无法找到完全符合条件的路径。
静态配置路径(显式路径,Explicit Path)
- 原理:由管理员(CLI)或控制器(NETCONF)显式指定路径的 Segment List(Node/Adjacency SID 组合)。
- 场景:流量工程(TE)的严格路径控制。绕过拥塞或故障区域。
- 特点:完全控制路径,但需手动维护。可能牺牲路径效率。
控制器算路,集中式算路(如 PCE/SDN 控制器)
- 原理:业务提出网络需求(时延、带宽、丢包率、……)。通过控制器配合,由控制器收集信息,由控制器集中计算显式路径(预留路径资源和计算路径),最后将 SR 路径下发到头结点来承载业务。其通过 PCEP / BGP SR Policy 技术,其中 BGP SR Policy 是当前主流的路径下发方式;
- 场景:跨域或多层网络(如 IP+ 光网络协同)。复杂约束(如负载均衡、能耗优化)。是更为推荐的部署方式。
- 特点:利用全局视图优化资源。高计算精度,但依赖控制器可靠性。
数据平面:数据转发原理
SR 将网络路径分成一个个的段(Segment),并且为这些段和网络中的转发节点分配 SID(Segment ID,段标识 ID)。通过对段和网络节点进行有序排列(Segment List),就可以得到一条转发路径,来控制报文在网络中的路径。
SR 将代表转发路径的段序列编码在数据包头部,随数据包传输。接收端收到数据包后,对段序列进行解析。如果段序列的顶部段标识是本节点时,则弹出该标识,然后进行下一步处理。如果不是本节点,则使用 ECMP(Equal Cost Multiple Path,等价负载分担)方式将数据包转发到下一节点;
SID 的分配对象有两种,转发节点或者链路。本例中,转发节点 SID 1600X,X 为路由器编号;链路 SID 160XX,XX 表示链路两端的节点编号;
链路和网络节点的 SID 有序排列形成段序列(Segment List),它代表一条转发路径。SR 由源节点将段序列编码在数据包头部,随数据包传输。SR 的本质是指令,指引报文去哪里和怎么去。
构造
SR 解决当前 IP/MPLS 网络的诸多问题,有两种解决方案(实现方式):
基于 MPLS 转发的 SR-MPLS
SR MPLS 是指基于 MPLS Label 进行数据转发的 Segment Routing 技术实现。
场景:其在现有 IP/MPLS Networking 上增量部署,其利用现网环境以减少针对现网的改动。
控制平面:
- 路径组成:由 IGP 通告的 Segment 组成。
- 路径生成:SR-MPLS 路径有多种生成机制。
数据平面:
- 基于 MPLS 转发,使用 MPLS 标签值作为 SID;
- 段序列被编码为标签栈。要处理的段位于栈顶。一个段处理完成后,从标签栈中弹出相关标签。
SR-MPLS 的隧道技术有两种实现方式:
- SR-MPLS BE(Best Effort)
- SR-MPLS TE(Traffic Engineering)
基于 IPv6 转发的 SRv6 | SR-IPv6
该实现基于 IPv6 路由扩展头,来进行扩展。
场景:在 IPv6 网络中部署。
数据平面:
- 基于 IPv6 网络,使用 IPv6 地址作为 SID 值;
- 段序列被编码为标签栈,使用 IPv6 的扩展头 SRH(Segement Routing Hearder)承载;
性质
SR 的转发机制有很大改进,主要体现在以下几个方面:
其基于源路由机制,所以支持通过控制器进行集中算路,直接将路径下发到初始节点。该特性与 SDN 很好的结合,通过 SDN 控制选路。
同时,支持控制器的集中控制模式和转发器的分布控制模式,提供集中控制和分布控制之间的平衡。
采用源路由技术,提供网络和上层应用快速交互的能力;
通过业务来定义网络
业务驱动网络:
- 首先,由应用提出需求(比如时延、带宽、丢包率等等)。
- 然后,控制器收集网络信息(例如网络拓扑、带宽利用率、时延等等),并根据业务需求计算显式路径(标签栈)。
- 最后,通过协议(例如 BGP PCEP NETCONF 等等)将路径下发到设备,而后设备按照路径进行数据转发。
通过 SR 技术,能够简易的指定的报文转发路径,在现网中,可以为不同业务定义不同的路径;
比如:数据下载、视频、语音三条显式路径,实现业务驱动网络。设备由控制器纳管,支持路径实时快速发放。
简化 MPLS 网络的控制平面
SR 使用控制器或 IGP 集中算路和分发标签,其不再需要隧道协议(例如 RSVP-TE、LDP 等等);
SR 可以直接应用于 MPLS 架构,转发平面没有变化;
高效 TI-LFA FRR 保护,实现路径故障的快速恢复
在 SR 技术的基础上结合 RLFA(Remote Loop-free Alternate)FRR 算法,形成高效的 TI-LFA(Topology-Independent Loop-free Alternate)FRR 算法;
TI-LFA FRR 支持任意拓扑的节点和链路保护,能够弥补传统隧道保护技术的不足;
更具有网络容量扩展能力
传统 MPLS TE 是一种面向连接的技术,为了维护连接状态,节点间需要发送和处理大量 Keepalive 报文,设备控制层面压力大;
SR 仅在头节点对报文进行标签操作即可任意控制业务路径,中间节点不需要维护路径信息,设备控制层面压力小。
针对 SR 技术,其标签数量是:全网节点数 + 本地邻接数,只和网络规模相关,与隧道数量和业务规模无关;
针对 MPLS 技术,标签数量取决于路由数量,路由越多,设备需要维护的标签也就越多。
更好地向 SDN 网络平滑演进
SR 技术基于源路由理念而设计,通过源节点即可控制数据包在网络中的转发路径;
配合集中算路模块,即可灵活简便地实现路径控制与调整;
SR 同时支持传统网络和 SDN 网络,兼容现有设备,保障现有网络平滑演进到 SDN 网络;