目录
场景一:基于Prefix Segment的转发路径 (全局有效)
场景二:基于Adjacency Segment的转发路径 (本地有效)
场景三:基于Adjacency Segment + Node Segment的转发路径 (常用)
SR-MPLS TE (Traffic Engine)流量工程
1.1 SR背景
段路由SR(Segment Routing)是基于源路由理念而设计的在网络上转发数据包的一种技术架构。
- SR-MPLS可以通过多个MPLS形成路径(基于标签转发)
- SRv6可以通过多个IPv6的拓展头部来实现
传统的专线业务使用的是MPLS LDP与 RSVP-TE(资源预留协议)
MPLS LDP和RSVP-TE存在的问题
针对以上,Segment Routing给出的解决方案:
- 简化协议,基于现有协议进行拓展:拓展后的IGP/BGP具有标签分发能力,因此网络中无需LDP,实现协议简化。引入了源路由机制:通过在头端节点实例化转发策略为标签列表,控制业务流量的转发路径。
- 由业务来定义网络:由应用提出需求(时延、带宽、丢包率等),控制器收集网络拓扑、带宽利用率、时延等信息,根据业务需求计算显式路径。
1.2 SR概述
SR(Segment Routing,段路由)是基于源路由理念而设计的在网络上转发数据包的一种架构,而不是一个单独的技术。
SR将网络路径分成一个个段(Segment),并且为这些段和网络中的转发节点分配段标识ID(即SID)。通过对段和网络节点进行有序排列(Segment List),就可以得到一条转发路径。
SR将代表转发路径的段序列编码在数据包头部,随数据包传输。接收端收到数据包后,对段序列进行解析,如果段序列的顶部段标识是本节点时,则弹出该标识,然后进行下一步处理;如果不是本节点,则使用ECMP(Equal Cost Multiple Path,等价负载分担)方式将数据包转发到下一节点。
SR具有如下特点:
- 通过对现有协议(例如IGP)进行扩展,能使现有网络更好的平滑演进。
- 同时支持控制器的集中控制模式和转发器的分布控制模式,提供集中控制和分布控制之间的平衡。
- 采用源路由技术,提供网络和上层应用快速交互的能力。
SR优势:
- 有控制器的叫TE
- 靠IGP集中算路的叫BE
- Tl-LFA(确保无环)
- SR技术的标签数量是:全网节点数+本地邻接数
- SR仅需在头节点对报文的标签进行操作即可任意控制业务路径,中间节点不需要维护路径信息。
1.3 一些名词的基本概念
基本概念:Segment
Segment是节点针对所收到的数据包要执行的指令,该指令包含在数据包头部中。
基本概念:Segment ID
Segment ID——简称SID,用于标识segment 一般就是MPLS标签,segment list是一个或多个SID构成的有序列表(MPLS 标签列表)
基本概念:源路由
源路由(Source Routing):源节点选择一条路径并在报文中压入一个有序的Segment List,网络中的其他节点按照报文封装的Segment List进行转发。
基本概念:Segment 分类
Segment分类 | 说明 |
Prefix Segment(前缀段) | 用于标识网络中的某个目的地址前缀 生成方式:手工配置 通过IGP协议扩散到其他网元,全局可见,全局有效 Node Segment是特殊的Prefix Segment |
Adjacency Segment(邻接段) | 用于标识网络中的某个邻接 生成方式:源节点通过协议动态分配 通过IGP协议扩散到其他网元,全局可见,本地有效 |
基本概念:Prefix Segment(前缀段)
Prefix Segment通过Prefix SID(Segment ID)标识。
Prefix SID是发布端通过的SRGB(Segment Routing Global Block)范围内的偏移值,接收端会根据自己的SRGB计算实际标签值用于生成MPLS的转发表项
Node Segment是特殊的Prefix Segment,用于标识特定的节点Node。
在节点的Loopback接口下配置IP地址作为前缀,这个节点的Prefix SID实际就是Node SID。
基本概念:SRGB
SRGB(Segment Routing Global Block):用户指定的为Segment Routing MPLS预留的全局标签集合。
每台设备通过扩展的路由协议通告自己的SRGB。
节点通过扩展的路由协议通告前缀SID索引(Index)后【或者可以叫为偏移量】,各台设备分别根据SRGB计算入站及出站SID。
在实际部署中,建议设备采用统一的SRGB。
为什么需要SRGB:
- SR要求前缀SID全局有效。
- 在MPLS中,设备的一部分标签空间可能被其他协议,例如LDP占用,因此需指定明确的空间用于SR全局标签。
基本概念:Adjacency Segment(邻接段)
AS内Node SID及Adjacency SID的泛洪
SR-MPLS使用IGP协议进行拓扑信息、前缀信息、SRGB和标签信息的通告。IGP协议为了完成上述功能,对于协议报文的TLV进行了一些扩展。(例如如下OSPF for SR-MPLS) 使能Segemnet mpls。
以OSPF为例,SR扩展的OSPF LSA类型:
基本概念:SR Policy 段策略
SR Policy 段策略(根本就是一个标签堆栈)可以由CLI、NETCONF、PCEP、BGP SR Policy等多种方式生成。包含Segment List,完整的指导流量引入和转发。
RFC 8402中定义SR Policy是一段有序的段列表(an ordered list of segments)。更完整的说法是SR Policy最终呈现为一段有序的段列表(Segment list),还包含了计算、生成和维护这个段列表及引入流量等SR技术的一种框架。SR Policy是当前最主流的实现SR的方式。
一个SR Policy由头端节点引导流量进入这个段策略中。它的段列表被精确的分配为标签栈指导流量转发。这个段列表由一系列的优化目标和限制(例如时延、亲和性和SRLG等)综合计算得到。这个计算可由本地或者控制器完成,然后应用到网络中。
基本概念:SR-MPLS 与SRv6
如果数据转发平面:基于MLS,就是SR-MPLS,如果是基于IPv6的就是SRV6。
标签栈 & 粘连标签 与 粘连节点
标签栈是标签的排序集合,可以标识一条完整的LSP
标签栈中每一个邻接标签标识一条具体的邻接,整个标签栈标识了整条转发路径LSP的所有邻接。
在报文转发过程中,通过标签栈中的每个邻接标签查找对应的邻接,并将标签弹出后转发,将标签栈中所有邻接标签弹出后,报文就走完了整条LSP,到达隧道的目的地。
SID的使用(其实就是标签)
通过按序组合前缀(节点) SID和邻接SID,可以构建出网络内的任何路径。
在路径中的每一跳,使用栈顶段信息区分下一跳。
段信息按照顺序堆叠在数据头的顶部。
当栈顶段信息包含另一个节点的标识时,接收节点使用ECMP的方式将数据包转发到下一跳。
当栈顶段信息是本节点的标识时,接收节点弹出顶部段并执行下一个段所需的任务。
实际应用中Prefix Segment、 Adjacency Segment可以单独使用,也可以结合使用。
1.4 关于SR应用方式的三种场景
场景一:基于Prefix Segment的转发路径 (全局有效)
基于Prefix Segment的转发路径是由IGP通过最短路径算法(SPF)计算得出。
- 通过IGP扩散之后,整个IGP域的所有设备学习到R2的Prefix SID(100)。
- 以R1为例(其他设备类似),它通过SPF算法计算出一条到达R2的最短路径。
基于Prefix Segment的转发路径并不是一条固定路径,头节点也无法控制报文的整条转发路径。
场景二:基于Adjacency Segment的转发路径 (本地有效)
通过给网络中每个邻接分配一个Adjacency Segment,然后在头节点定义一个包含多个Adjacency Segment的Segment List。
通过这种方式可以严格指定任意一条显式路径(Strict Explicit),可更好的配合实现SDN。
场景三:基于Adjacency Segment + Node Segment的转发路径 (常用)
将Adjacency Segment和Node Segment结合,通过Adjacency Segment,可以强制整条路径包含某一个邻接。而对于Node Segment,节点可以使用 SPF算法计算最短路径,也可以负载分担。——(相当于一部分路径是强制指定,一部分是SPF计算的)。
这种方式的路径并不是严格固定,所以也称作松散路径(Loose Explicit)。
1.5 SR-BE与 SR-TE
SR-MPLS BE (Best Effort)
使用SID来指导设备基于最短路径进行数据转发,没有强制走哪条路径,这种工作机制称为SR-MPLS BE。
例如在本例中使用R6的Node SID 606可以指导数据沿着去往R6的最短路径来转发数据,该最短路径是基于路由协议计算得出的,并且支持等价路径。
SR-MPLS BE是一种替代“LDP+IGP方案”的一种新方案。
SR-MPLS TE (Traffic Engine)流量工程
使用多个SID进行组合来指导数据转发,这种工作机制可以对数据的转发路径进行一定约束,从而满足流量工程的需求,因此被称为SR-MPLS TE(Traffic Engine)。
SID的组合形式:
- 使用多个Node SID。
- 使用多个Adjacency SID。
- 使用Node SID与Adjacency SID组合,如图中所示。