Segment Routing(SR)简单介绍

1.什么是segment routing(SR)

1.1 基本概念

  • SR架构基于源路由。节点(路由器、主机或设备)选择路径,并且引导数据包沿着该路径通过网络,具体实施是在数据报头中插入带顺序的段列表(segment list),以指示收到这些数据包的节点怎么去转发和处理这些数据包。

  • SR能够使网络更加简化,并具有良好的可扩展能力,主要体现在以下方面:

    1. 更简单的控制平面

      对现在的控制平面进行简化,如:在MPLS网络中,不再需要部署复杂的LDP/RSVP-TE协议,只需要设备通过IGP路由协议对SR的扩展来实现标签分发和同步,或者由控制器统一负责SR标签的分配,并下发和同步给设备。

    2. 易扩展的数据平面

      复用已有的MPLS和IPv6转发平面,网络设备不做改动或者进行小的改动,如:在MPLS网络中,segment就是MPLS标签,路径就是标签栈,在IPv6网络中,segment就是IPv6 地址路径就是封装在路由表项中的IPv6地址列表

2.Segment Routing的优势

  • 协议栈瘦身(简单)
  • 无需再使用LDP、RSVP等负载的标签分发协议,也无需担心LDP和IGP同步、LDP对负载均衡支持力度不够等问题。
  • 更具备实施、排错优势的FRR(快速重路由)
  • 自动50ms保护
  • 易于操作和理解
  • 关键业务选取低时延路径(少量segment就可以指示一条显式路径)
  • 对SDN和OpenFlow的影响

3.概念和术语

  • SR Domain:SR节点的集合,可以是连接到相同物理架构的节点,也可以是远端互联的节点
  • SR Global Block(SRGB):SR节点的本地属性,在MPLS中,为全局segment预留的本地标签集合;在IPv6中,是一些用以表示全局segment的地址集合,在一个SR Domain中,建议所有节点使用相同的SRGB,以方便实际应用中的管理维护与故障排除。
  • Segment:Segment是指导设备处理报文的任何指令,如:根据最短路径转发到目的地,通过在指定端口转发报文,将报文转发到指定应用。指令类型的标识符或字段,表示转发和服务,SR中使用数字来代表segment。(**segment就是数字 **)
  • 端标识(Segment ID):-SID用于标识segment,其格式取决于实现SID格式的例子,包括:MPLS(多协议标签交换)标签、MPLS标签空间的索引或者IPv6地址等。很多时候SID和segment混用。(SID=MPLS label)
  • Active segment:收到报文的SR节点必须处理的segment,在MPLS中为标签栈的最外层标签,在IPv6中为携带了SRH头的报文的目的地址。
  • Segment Actions:
    1. PUSH:在Segment List的顶部插入一个segment,在MPLS中为标签栈的最外层标签,在IPv6中为SRH头中的第一个IPv6地址。
    2. NEXT:当前的active segment处理完时,the next segment变为active segment。
    3. CONTINUE:当前的active segment还没有处理完,还继续保持active状态,在MPLS相当于SWAP操作,在IPv6为IPv6报文依据目的地址转发的常规操作。
  • SR Tunnel:在头节点上将Segment List封装到报文头中的隧道,可以由管理员手工创建,也可以是控制器通过NETCONF或PCEP等接口协议自动创建。一个SR隧道既可用于TE流量工程应用,也可用于OAM、FRR等目的。
  • Segment List Depth:一个SR隧道中能封装的segment数量,也就是Segment List的深度,创建SR隧道的节点应该清楚它能处理的Segment List最大深度。

3.1 Segment

  • 全局(global)Segment:SR域的任一节点都明白该Segment的相关指令。SR域的每个节点的转发表中都安装了该Segment相关指令(到达目的地的最短路径)。在MPLS SR 中:为段路由全局块(SRGB)中的全局标签值。–SRGB(标签范围)
  • 本地(local)Segment:只有该Segment的始发节点明白他的相关指令。在MPLS SR 中,为本地分发的标签。

3.2 SR的全局块(SRGB)

  • 预留给SR全局segment的MPLS标签范围(理论值为16000到2的20次方-1)
  • 默认的SRGB范围是16000-23000。
  • prefix-SID是作为整个SR域范围唯一特定的索引在IGP中进行通告
  • prefix-SID索引指向SRGB内特定的标签(–索引是基于0开始,第一个索引=0,–标签=prefix-SID索引+SRGB基值(SRGB的第一个值)例如:prefix1.1.1.65/32,它的prefix-SID索引被设定为65,则在此SRGB中,得到的MPLS标签是16065)

4. SR的控制层面

  • 标签的分配和分发:传统的MPLS网络需要LDP等协议同步和分发各个节点的标签信息,SR不再需要LDP协议,只需要通过IGP协议(ISIS或OSPF)的SR扩展来同步,或者由控制器统一进行分配和下发,大大简化了设备运行的协。
  • 标签转发表的建立:同样的传统MPLS需要通过LDP协议分发标签后形成标签转发表,而且标签转发表的规模会非常大,而SR只需要IGP协议就可以完成标签转发表的建立,并且非常容易扩展,规模也很小,条目数为N(节点标签数量,一般为全网节点数量)+A(邻接标签数据,一般为设备接口数量)
  • 路径的标识和建立:在MPLS网络中,一个报文经过的路径为LSP,通过手工指定或使用LDP、RSVP-TE协议逐跳动态建立,非常复杂且难以维护。在SR协议中,路径是由一个有序的segment列表(在MPLS中为标签栈)来表示,且被封装在报文头中进行转发,因此,SR路径不再依赖于逐跳的信令协议(LDP或RSVP-TE)来建立,而是直接由报文源节点或者控制器指定一个标签栈即可,中间的转发设备只需按标签栈的信息进行转发,非常简单。
  • 通常使用路由协议在网络中分发段信息,支持的协议包括ISIS、OSPF和BGP协议
  • IGP(包括ISIS和OSPF)分发的段称之为IGP segment
  • BGP分发的段称之为BGP segment

5.Segment routing转发层面

  • SR使用MPLS数据层面承载IPv4和IPv6数据报文,(–Segment->MPLS标签,Segment list->标签堆栈)
  • SR遵循了MPLS的一系列动作(压入,交换、弹出,PHP,显式空

6. IGP segment

IGP段分为IGP前缀segment和IGP邻接segment,使用链路状态协议通告和分发,这表明IGP网络中的所有节点都能接收到IGP segment

6.1 IGP前缀段(IGP-Prefix Segment)

  • IGP前缀segment,也成prefix-SID,即由路由协议通告的全局的Segment(用标签关联一个32位前缀是最通常的用法),通常情况下在SR域内全局唯一。
  • 一般为一个IGP Prefix分配一个Prefix-SID,不能为多个IGP Prefix分配同一个Prefix-SID,但可以会为同一个IGP Prefix分配多个Prefix-SID,用以在同一拓扑中通过不同的算法计算出不一样的选路结果。
  • Prefix-SID可以由管理员或控制器分配,且分配后基本不变。
  • 在IGP协议对Prefix-SID进行通告时,会携带相应的算法信息,用来指明使用的算法。并且会在头结点中进行检查,如果节点对算法不支持则丢弃。

6.1.1 Prefix-SID 特点

  • 表示到IGP Prefix的最短路径,且具备ECMP感知能力
  • SR域内全局唯一,即index,每个Prefix-SID为【SRGB+index】
  • 由IS-IS/OSPF SR扩展协议或控制器在SR/IGP域内通告

6.1.2 IGP-Node Segment

  • 一种IGP-Prefix Segment,用以标识一台节点设备,叫做IGP-Node Segment或Node-SID,同一Node-SID不能关联到多个节点通告的前缀,Node-SID用来指导到对应节点的最短路径报文转发,默认具备ECMP感知能力

6.1.3

  • 一种IGP-Prefix Segment,用以标识一系列节点设备,叫做IGP-Anycast Segment或Anycast-SID,Anycast-SID用来指导到相关集合节点的最短路径报文转发,默认具备ECMP感知能力

《Segment Routing(SR)简单介绍》 IGP-Prefix.jpg

6.2 IGP邻接段

  • 用数字来表明邻居
  • 引导流量由与该segment关联的链接链路转发出去(不一定是最短路径)
  • 从路由器的某个接口转发流量出去
  • 一种IGP segment,代表单向的某个邻接或一组邻接,由节点通告给邻居,通常是本地有效,但若配置为全局的,也是可以的,叫做Adjacency Segment或Adj-SID。通常情况下,一个节点应该为它所有的每个邻接分配一个Adj-SID,当然也可以为同一个邻接分配多个Adj-SID,也可以为多个邻接分配同一个Adj-SID。

6.2.1 Parallel Adjacencies

  • 在两个相邻的节点间可以用一个Adj-SID来表示一系列的并行链路,叫做Parallel Adjacencies,为了在这些并行链路链路之间实现灵活的负载均衡,可以在通告Parallel Adjacencies时为每个邻接指明不同权重值。
  • 当节点上的Adj-SID W表明一系列的链路B时,其FIB表:

​ 入口活动段: W

​ 入口操作: NEXT

​ 出接口: 在链路集合B中进行负载均衡

6.2.2 LAN Adjacency Segments

  • 在LAN子网中,OSPF的DR和IS-IS的DIS环境下,每个节点只给DR/DIS通告其连通性,而不互相通告,因此,定义了LAN Adjacency Segments,以保证节点之间互相通告其连通性。

《Segment Routing(SR)简单介绍》 IGP-Adjacency.jpg

参考:http://www.h3c.com/cn/d_201706/1000459_30004_0.htm#_Toc484881411

    原文作者:墨痕hz
    原文地址: https://www.jianshu.com/p/9e52f67e3ba4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞