1.什么是segment routing(SR)
1.1 基本概念
SR架构基于源路由。节点(路由器、主机或设备)选择路径,并且引导数据包沿着该路径通过网络,具体实施是在数据报头中插入带顺序的段列表(segment list),以指示收到这些数据包的节点怎么去转发和处理这些数据包。
-
SR能够使网络更加简化,并具有良好的可扩展能力,主要体现在以下方面:
-
更简单的控制平面
对现在的控制平面进行简化,如:在MPLS网络中,不再需要部署复杂的LDP/RSVP-TE协议,只需要设备通过IGP路由协议对SR的扩展来实现标签分发和同步,或者由控制器统一负责SR标签的分配,并下发和同步给设备。
-
易扩展的数据平面
复用已有的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:
- PUSH:在Segment List的顶部插入一个segment,在MPLS中为标签栈的最外层标签,在IPv6中为SRH头中的第一个IPv6地址。
- NEXT:当前的active segment处理完时,the next segment变为active segment。
- 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感知能力
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,以保证节点之间互相通告其连通性。
参考:http://www.h3c.com/cn/d_201706/1000459_30004_0.htm#_Toc484881411