HCIE-广域承载解决方案专题01-SR
HCIE-广域承载解决方案专题01-SR基本概念
1 SR(Segment Routing)概述
1.1 MPLS LDP与RSVP-TE存在的问题
MPLS LDP
- LDP本身并无算路能力,需依赖IGP进行路径计算
- 控制面需要IGP及LDP,设备之间需要发送大量的消息来维持邻居关系及路径状态,浪费了链路带宽及设备资源
- 若LDP与IGP切换过程中未同步,则可能出现数据转发问题
RSVP-TE
相当于更细化的traffic filter
- RSVP-TE的配置复杂,不支持负载分担
- 为了实现TE,设备之间需要发送大量RSVP报文来维持邻居关系及路径状态,浪费了链路带宽及设备资源
- RSVP-TE本质上是分布式架构,每台设备只知道自己的状态,设备之间需要交互信令报文
为了解决以上问题, 业界提出了一个新概念: 业务驱动网络(有业务来定义网络架构)
解决思路就是业务驱动网络,由业务来定义网络的架构——由应用提出需求(时延、带宽、丢包率等),控制器收集网络拓扑、带宽利用率、时延等信息,根据业务需求计算显式路径
根据以上概念, 提出了一个解决思路: Segment Routing
1.2 Segment Routing解决思路
优点:
-
简化协议
-
扩展后的IGP/BGP具有标签分发能力(option/tlv), 因此网络中可以无需LDP, 实现协议简化, 减少设备资源占用率.
-
引入源路由机制: 在头端节点实例化转发策略为标签列表, 控制业务的转发路径
以上图举例, 控制器收集业务需求和拓扑信息, 根据业务需求发送给R1, 业务流量从控制器发给R1时, R1收到控制器信息后会进行查表来完成路径定义, 根据定义的路径发送给R2(假如), R2收到后无需查表直接按照R1定义的路径进行转发, 后续设备同R2.
-
-
业务定义网络:
- 由应用提出需求(时延、带宽、丢包率等), 然后控制器集中计算显式路径, 最后下发SR路径来承载业务
1.3 SR概述
SR(Segment Routing, 段路由)是基于源路由理念而设计的在网络上转发数据包的一种架构.
SR将网络路径分成一个个段(Segment),并且为这些段和网络中的转发节点分配段标识ID。通过对段和网络节点进行有序排列(Segment List),就可以得到一条转发路径.
网络路径类似MPLS中的标签栈机制, 通过标签知道下一跳设备的地址.
SR将代表转发路径的段序列编码在数据包头部,随数据包传输。接收端收到数据包后,对段序列进行解析*
- 如果段序列的顶部段标识是本节点时,则弹出该标识,然后进行下一步处理;
- 如果不是本节点,则使用ECMP(Equal Cost Multiple Path,等价负载分担)方式将数据包转发到下一节点
SR的特点
- 通过对现有协议(例如IGP)进行扩展,能使现有网络更好的平滑演进。
- 同时支持控制器的集中控制模式和转发器的分布控制模式,提供集中控制和分布控制之间的平衡。
- 采用源路由技术,提供网络和上层应用快速交互的能力
注: 这里讲的SR其实是SR-MPLS
1.4 SR的优势
- 简化了MPLS的控制平面: 不再需要LDP等隧道协议, 使用控制器或IGP集中计算路径和分发标签
- 高效TI-LFA FRR保护实现路径故障快速恢复
- 具有网络容量扩展能力: SR的标签数量: 全网节点数+本地邻接数
- 更好地向SDN网络平滑演进: 兼容传统网络和SDN网络
2 SR技术原理
2.1 基本概念
2.1.1 Segment
SR会将段信息(Segment)放在数据包中一同发送, 所以设备会根据Segment信息执行动作, 可以理解为Segment就是指代一个动作, 如
- 指令1: 沿着最短路径(支持ECMP--负载分担)到达R4
- 指令2: 从R4的G0/0/2接口转发数据包
- 指令3: 沿着最短路径到达R8
2.1.2 Segment ID & Segment List
Segment ID(SID)用于标识Segment, 作用是将Segment指令转换成一种设备能够识别的语言(如MPLS标签(SR-MPLS)、IPv6地址(SRv6)等)
比如将上面的3个指令进行如下转换:
- 指令1: 沿着最短路径(支持ECMP--负载分担)到达R4---->400
- 指令2: 从R4的G0/0/2接口转发数据包---->1046
- 指令3: 沿着最短路径到达R8---->800
第一台设备将SID有序写为一个列表: Segment List
Segment List是一个或多个SID构成的有序列表
2.1.3 源路由
源路由(Source Routing):源节点(R1)选择一条路径并在报文中压入一个有序的Segment List, 网络中的其他节点按照报文封装的Segment List进行转发
源节点也叫源路由设备, 即收到流量的第一台设备
2.1.4 Segment 分类
Segment分类 | 作用 |
---|---|
Prefix Segment(前缀段) | 表示网络中某一条路由信息 |
Adjacency Segment(邻接段) | 标识两台设备之间的邻接关系 |
Node Segment | 表示设备上的环回口路由信息, 是一种特殊的Prefix Segment |
2.1.5 Prefix Segment
Prefix Segment表示网络中某一条路由信息, 配置方式为手工配置, 通过扩展后的IGP协议通告给其他设备(泛洪), 使用Prefix SID进行标识.
全局可见+全局有效
注: Prefix Segment的信息通常是根据设备通告的SRGB信息自动计算出来的, 但SRGB范围和索引值信息为手工配置的, 其他设备收到手工配置的SRGB范围和索引值后会自动计算Prefix Segment, 所以Prefix Segment的配置方式称为手工配置, SRGB范围和索引值后面会讲到.
环回口设置为Prefix之后, 该Prefix Segment就称为Node Segment, 通常用于ECMP负载分担转发(查路由转发)
索引值
索引值(index)是对接口设置的, 索引值结合SRGB才能计算出SID信息
SRGB
SRGB(Segment Routing Global Block):用户指定的为Segment Routing MPLS预留的全局标签集合
每台设备通过扩展的路由协议通告自己的SRGB(单独配置, 本地意义)
节点通过扩展的路由协议通告前缀SID索引(index)后,各台设备分别根据SRGB计算入站及出站SID(SRGB+index)
简单来说, 由于SR-MPLS和MPLS都使用一个标签值池, 但有些时候设备不知道当前标签到底是SR-MPLS标签还是MPLS标签, SRGB通过划分一个专属于SR-MPLS的范围来进行区分.
比如我们知道1-16为MPLS LDP一般标签, 16-15999为MPLS LDP预留特殊标签, 16000-1048575为MPLS LDP通常标签, 现在SRGB规定一个范围为20000-25000, 所以MPLS LDP通常标签范围就会变成16000-19999和25001-1048575两段, 中间那段会分给SR-MPLS专用, 避免标签冲突.
在实际部署中,建议设备采用统一的SRGB, 通常设置范围为20000-25000
2.1.6 Adjacency Segment
Adjacency Segment会标识两台设备之间的邻接关系(邻居+方向), 也会通过类似标签的形式标识, 称为Adj SID, 根据IGP协议自动生成.
全局可见+本地有效
Adj SID的取值范围为除了SRGB指定范围和其他标签分发协议之外的标签.
该信息可以传播到整个SR网络, 但Adj SID只有本地意义, 如A--B--C;
A会生成一个Adj SID信息5000, 表示A有一个邻居B, 方向是A->B;
B会生成一个Adj SID信息5000, 表示B有一个邻居A, 方向是B->A;
B会生成一个Adj SID信息5001, 表示B有一个邻居C, 方向是B->C;
C会生成一个Adj SID信息5000, 表示C有一个邻居B, 方向是C->B;
每台设备的标签不会重复, 但不同设备可以使用相同标签, 在网络中表示为A的5000、B的5000、B的5001、C的5000.
A想要去往C, 可以定义以下Adj Segment List: 5000 5001
2.1.7 OSPF/IS-IS for SR-MPLS
三种SID都可以通过扩展后的IGP协议进行传递, IGP们为了支持SR, OSPF使用了不透明LSA-十类LSA传递SR信息, IS-IS使用扩展的TLV信息进行承载, 但这部分内容对于IE考试不重要, 有兴趣可以自己去理解, 这里不做展开.
2.1.8 SR Policy
RFC 8402中定义SR Policy是一段有序的段列表(an ordered list of segments)。更完整的说法是SR Policy最终呈现为一段有序的段列表,还包含了计算、生成和维护这个段列表及引入流量等SR技术的一种框架。SR Policy是当前最主流的实现SR的方式
SR是需要通过控制器对源路由设备指定段列表(Segment List)
控制器上通过业务需求设计出网络的路径, 该策略下发给源路由设备, 源路由设备根据策略, 直接写入整个转发路径
- 可以有CLI、NETCONF、PECP、BGP SR Policy等多种方式生成
- 包含Segment List, 完整的指导流量引入和转发
注: ENSP缺少控制器, 无法完成SR Policy实验, 后面试试EVE-NG能不能搞
2.2 SR-MPLS与SRv6
SR-MPLS
SRv6
SR-MPLS | SRv6 | |
---|---|---|
数据转发平面 | 基于MPLS | 基于IPv6 |
SID值 | MPLS标签值 | IPv6地址 |
其他 | 段序列被编码为标签栈, 处理段位于栈顶, 处理完成后弹出栈 | 段序列被编码为标签栈, 使用IPv6扩展头SRH(Segment Routing Header)承载 |
地位 | MPLS-LDP平替 | 未来大方向、银行和互联网头部已经陆续开始改造 |
2.3 标签栈、粘连标签与粘连节点
标签栈: 就是集中压入依次弹出, 没啥好说的, 有点数据结构基础都看得懂
粘连标签与粘连节点: 当标签栈深度超过转发器所支持的标签栈深度时,控制器需要为转发器分配多个标签栈,在合适的节点下发标签栈的同时分配一种特殊的标签,然后将这些标签栈关联起来,实现逐段转发
这种特殊的标签称为粘连标签,这个合适的节点称为粘连节点。控制器为粘连节点分配粘连标签,并将其压在标签栈底。
图中R2为粘连节点, 100为粘连标签会在R2转换为下一个标签栈, Segment List为
- 1013-1032-100
- 1024-1045-1056
简单理解, 将一台长路径进行分为多段, 每段对应一个标签栈, 每段末尾为粘连节点, 粘连节点会被追加一个粘连标签后压入那段对应标签栈的底部.
本文来自博客园,作者:Qurare,严禁转载至CSDN平台, 其他转载请注明原文链接:https://www.cnblogs.com/konjac-wjh/p/17664389.html