Segment Routing基础知识

本文是在读C. Filsfils et al. 所著的Segment Routing第一卷第2章内容所做的总结

What is Segment Routing

Segment Routing (SR) architecture 基于源路由。节点(通常为路由器/主机/设备)选择路径,并且引导数据包沿着该路径通过网络,其做法是在数据包报头中插入带顺序的Segment列表,以指示接收到这些数据包的节点怎么去处理和转发这些数据包。Segment其实是一个指令,可以表示任何类型的指令:与拓扑相关的,基于服务的,基于上下文的等。
因为指令被编码在数据包报头中,所以网络节点在接收数据包时只需执行这些指令。转发路径上的节点并不需要为所有可能经过它们的流维持状态信息,也就是所谓的“状态在数据包中”。
源节点通过在数据包报头中添加适当的Segment,可以实现基于单条流颗粒度的数据包引导。由于除了源节点之外的节点不需要存储和维持任何流状态信息,所以流量引导的决定权仅在于节点。通过这种方式,SR能在IP和MPLS网络中提供高级流量引导能力,同时在数据平面和控制平面中保持可扩展性。

Segment Routing Concepts

  • Segment和Segment Identifier
    Segment是节点针对所接受到的数据包要执行的指令,此指令包含在数据包报头中。指令的例子包括:按照去往目的地的最短路径转发数据包;通过特定接口转发数据包;将数据包发到指定应用/服务实例等。
    Segment Identifier (SID)用于标识Segment。SID的格式取决于具体实现。SID的格式的例子包括:MPLS标签,MPLS标签空间中的索引,IPv6地址。
    Segment和SID有时为了简便不做区分,可以交替使用。

  • Segment组合
    Segment是构建网络路径基本模块,可以单独使用,也可以组合成一个有序列表,这种有序列表称为Segment List。

  • Segment List Operations
    SR数据包在其报头携带了Segment List。当前针对数据包执行的指令,是active Segment的指令。如果数据包在active Segment的指令是“沿着去往目的地节点1的最短路径转发数据包”,则收到该数据包的每个节点将沿着最短路径将数据包转发到节点1。
    除了执行编码在Segment List中的指令外,节点还需要维护Segment List本身。为此定义了三个基本的Segment List Operations:
    (1) PUSH
    在Segment List的头部插入一个或多个Segment,并将第一个Segment设置为活动Segment。如果数据包报头中还没有Segment List,则首先插入Segment List。
    (2) CONTINUE
    active Segment还没有完成,所以让它保持active。
    (3) NEXT
    active Segment已经完成,Segment List中的下一个Segment将称为active Segment。
    这些操作映射到实际数据平面中。需要区分一下指令和操作,指令是存在于Segment中的,操作是针对Segment List的。

  • Global & Local Segment:
    Global 是指 “SR domain” 内。
    Global Segment:SR domain中所有SR-enabled的节点都支持域Global Segment相关联的指令,并且它们都会在转发表中安装Global Segment的指令。
    Local Segment: 只有生成Local Segment的节点支持与Local Segment相关联的指令,并且只有生成它的节点会在转发表中安装相关联的指令。
    需要注意的是,Local Segment虽然是本地有效的,但并不意味着网络上的节点不知道其它节点的Local Segments。为了能够使用Local Segment,其它节点也是需要知道Local Segment的存在和功能的。

SR Control Plane

SR Control Plane当前支持IGP IS-IS/OSPF和BGP。这里暂时只讲IGP。IGP Segment分为两种类型:IGP Prefix Segment & IGP Adjacency Segment。

IGP Prefix Segment

IGP Prefix Segment(通常缩写为Prefix Segment或Prefix-SID)是由IS-IS/OSPF通告的全局Segment,此Segment与该IGP通告的一条前缀(CIDR前缀)相关联。IGP Prefix Segment的指令是 “引导流量沿着支持ECMP的最短路径去往该Segment相关联的前缀” 。从网络中的任何地方,携带着以Prefix Segment为active Segment的数据包,将沿着支持ECMP的最短路径,转发至通告该Segment相关联前缀的节点。该路径通常是多条路径。
操作员为SR域中的前缀分配一个全域范围内唯一的Prefix-SID,**典型的是为域中每个节点的loopback地址分配一个Prefix-SID。**在将Prefix-SID与前缀相关联时,应确保Prefix-SID的唯一性,具体见书P30。
Prefix Segment遵循前往与Segment相关联的前缀的最短路径的意思是,遵循由所采用算法计算出的路径。默认情况下,采用的是以IGP链路度量作为cost的SPF算法(如Dijkstra算法)。也可以指定其它算法。

重点来了!重点来了!重点来了!


SR域中的每个节点会为收到的Prefix Segment安装转发条目。节点学习到IP前缀P,以及与该前缀相关联的Prefix-SID S。假设S指定的算法为A。那么该节点就采用算法A计算出去往前缀P的下一跳N。该节点及其下一跳N都支持算法A。如果存在多条去往前缀P的等价路径,则存在多个下一跳N1, N2, N3… 节点将在这些等价路径上均衡负载。
节点会为该Prefix Segment按照以下的SR转发条目:
— 入向active Segment: S
— 出接口: 去往下一跳N的接口
— 下一跳: N
— Segment List Operation: 如果下一跳N是P的发起者,且N指示删除active Segment(这个是采用了SR MPLS倒数第二跳的机制),则执行 “NEXT” 操作,否则执行 “CONTINUE” 操作。


Prefix Segment有两种特殊类型,一种是Node Segment,另一种是Anycast Segment。Node Segment与标识特定节点的前缀相关联。在大多数情况下,每台路由器都需要设置一个Node Segment,它通常关联到用作路由器ID的loopback的主机地址,这一loopback地址也常用作OSPF的路由器ID,和传统MPLS信令协议的路由器ID。 这两种类型详见P32,这里不多阐述。

IGP Adjacency Segment

IGP Adjacency Segment(通常写为Adjacency Segment或Adjacency-SID,甚至Adj-SID)是与单向邻接或单向邻接集合相关联的Segment。Adj-SID所包含的指令是 “引导流量由与该Segment相关联的邻接链路(集合)转发出去”。使用Adj-SID转发的流量由被引导至指定的链路,不管最短路径路由如何。如果一个节点到它某个邻居的IGP最短路径不是经由两节点之间的直连链路,通常可以用Adj-SID来引导流量经由直连链路去往邻居节点,否则一般优选使用该邻居的Prefix Segment。
典型情况下,Adj-SI是通告它的节点的Local Segment。为了使用Local Adj-SID,通常在Segment List中把节点的Prefix-SID安插在Adj-SID前面。

重点!


一个节点为它在接口I上的IGP邻接分配Adjacency Segment S。该节点在转发表中安装以下条目:
— 入向active Segment: S
— Segment List Operation: NEXT
— 出接口: I
可以为一条给定的链路分配多个Adjacency Segment,使得每个Adjacency Segment具有不通的属性。


Adjacency Segment有两种特殊类型:二层Adjacency Segment,组Adjacency Segment。具体见P37。简单的说,就是一对路由器之间可能会有多条平行链路,前者就可以对这每一条链路都分配一个Adjacency Segment,使它们独立,后者则可以给这些链路分配一个Adjacency Segment,将它们捆绑在一起。

组合使用Segment

Segment是SR的构建模块,这些构建模块可以被组合起来引导流量经由网络中任何端到端的路径。在端到段路径中不通类型的Segment可以组合在一起,例如不同类型的IGP Segment和BGP Segment。由于Segment可以是任何指令:可以是拓扑相关的,基于业务的,构建的路径也可以引导数据包经过服务连(Service Function Chain, SFC)。
具体见P43。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值