HCIE-广域承载解决方案专题01-SR

发布时间 2023-08-29 11:53:19作者: Qurare

HCIE-广域承载解决方案专题01-SR基本概念

1 SR(Segment Routing)概述

1.1 MPLS LDP与RSVP-TE存在的问题

MPLS LDP

image-20230828093427227

  • LDP本身并无算路能力,需依赖IGP进行路径计算
  • 控制面需要IGP及LDP,设备之间需要发送大量的消息来维持邻居关系及路径状态,浪费了链路带宽及设备资源
  • 若LDP与IGP切换过程中未同步,则可能出现数据转发问题

RSVP-TE

相当于更细化的traffic filter

image-20230828093518691

  • RSVP-TE的配置复杂,不支持负载分担
  • 为了实现TE,设备之间需要发送大量RSVP报文来维持邻居关系及路径状态,浪费了链路带宽及设备资源
  • RSVP-TE本质上是分布式架构,每台设备只知道自己的状态,设备之间需要交互信令报文

为了解决以上问题, 业界提出了一个新概念: 业务驱动网络(有业务来定义网络架构)

image-20230828094747104

解决思路就是业务驱动网络,由业务来定义网络的架构——由应用提出需求(时延、带宽、丢包率等),控制器收集网络拓扑、带宽利用率、时延等信息,根据业务需求计算显式路径

根据以上概念, 提出了一个解决思路: Segment Routing

1.2 Segment Routing解决思路

image-20230828095032575

优点:

  • 简化协议

    • 扩展后的IGP/BGP具有标签分发能力(option/tlv), 因此网络中可以无需LDP, 实现协议简化, 减少设备资源占用率.

    • 引入源路由机制: 在头端节点实例化转发策略为标签列表, 控制业务的转发路径

      以上图举例, 控制器收集业务需求和拓扑信息, 根据业务需求发送给R1, 业务流量从控制器发给R1时, R1收到控制器信息后会进行查表来完成路径定义, 根据定义的路径发送给R2(假如), R2收到后无需查表直接按照R1定义的路径进行转发, 后续设备同R2.

  • 业务定义网络:

    • 由应用提出需求(时延、带宽、丢包率等), 然后控制器集中计算显式路径, 最后下发SR路径来承载业务

image-20230828163831554

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

image-20230828165051231

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构成的有序列表

image-20230828165429947

2.1.3 源路由

源路由(Source Routing)源节点(R1)选择一条路径并在报文中压入一个有序的Segment List, 网络中的其他节点按照报文封装的Segment List进行转发

源节点也叫源路由设备, 即收到流量的第一台设备

image-20230828170245194

2.1.4 Segment 分类

image-20230828170415569

Segment分类 作用
Prefix Segment(前缀段) 表示网络中某一条路由信息
Adjacency Segment(邻接段) 标识两台设备之间的邻接关系
Node Segment 表示设备上的环回口路由信息, 是一种特殊的Prefix Segment

2.1.5 Prefix Segment

Prefix Segment表示网络中某一条路由信息, 配置方式为手工配置, 通过扩展后的IGP协议通告给其他设备(泛洪), 使用Prefix SID进行标识.

全局可见+全局有效

image-20230828171654334

注: 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)

image-20230828171726820

简单来说, 由于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协议自动生成.

全局可见+本地有效

image-20230829100758090

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)

控制器上通过业务需求设计出网络的路径, 该策略下发给源路由设备, 源路由设备根据策略, 直接写入整个转发路径

image-20230829103627004

  • 可以有CLI、NETCONF、PECP、BGP SR Policy等多种方式生成
  • 包含Segment List, 完整的指导流量引入和转发

注: ENSP缺少控制器, 无法完成SR Policy实验, 后面试试EVE-NG能不能搞

2.2 SR-MPLS与SRv6

SR-MPLS

image-20230829111247837

SRv6

image-20230829111307754

SR-MPLS SRv6
数据转发平面 基于MPLS 基于IPv6
SID值 MPLS标签值 IPv6地址
其他 段序列被编码为标签栈, 处理段位于栈顶, 处理完成后弹出栈 段序列被编码为标签栈, 使用IPv6扩展头SRH(Segment Routing Header)承载
地位 MPLS-LDP平替 未来大方向、银行和互联网头部已经陆续开始改造

2.3 标签栈、粘连标签与粘连节点

标签栈: 就是集中压入依次弹出, 没啥好说的, 有点数据结构基础都看得懂

image-20230829111917526

粘连标签与粘连节点: 当标签栈深度超过转发器所支持的标签栈深度时,控制器需要为转发器分配多个标签栈,在合适的节点下发标签栈的同时分配一种特殊的标签,然后将这些标签栈关联起来,实现逐段转发

这种特殊的标签称为粘连标签,这个合适的节点称为粘连节点。控制器为粘连节点分配粘连标签,并将其压在标签栈底。

image-20230829111932987

图中R2为粘连节点, 100为粘连标签会在R2转换为下一个标签栈, Segment List为

  • 1013-1032-100
  • 1024-1045-1056

简单理解, 将一台长路径进行分为多段, 每段对应一个标签栈, 每段末尾为粘连节点, 粘连节点会被追加一个粘连标签后压入那段对应标签栈的底部.