Segment Routing技术⑴-SR概述

2021-09-09 11:43:09 阅读量:


\
作者:吴俊


序言

SR是一种源路由的转发技术,通过在原始数据包中插入相应的指令,规划数据包的转发路径,而不是简单的通过IP报文的目的IP进行简单查路由表简单转发。
 
我们可以先聊下它的基础,SR有两个转发平面,第一个是MPLS基于标签转发,一个是SRv6通过SRv6中的路由扩展包头中的SRH来实现。


一、SR产生的背景
 

(1)本节重点:

 
了解使用标签技术带来的问题
①LDP和IGP同步的问题
②RSVP维护表项繁琐的问题
 

(2)SR取代LDP和SRVP的前因后果

 
首先现网中使用标签是好的,带来了很大的好处,我们就无需骨干网所有路由器全部运行BGP来解决路由黑洞。那么骨干核心路由器就不需要承载大量的路由条目,达到节约路由器储存空间和提高路由器数据转发的效率(不需要查找大量路由进行最长掩码匹配)。
 
SRTE相比MPLS-TE,转发路径上的节点不必为所有经过他们的流维持状态信息,只是头端设备知道数据经过的节点和链路。我们序言中讲了,Segment-ID可以是MPLS的标签,该标签以前我们是独立于IGP协议的,使用的是LDP协议或者MP-BGP或者BGP-LU来分配标签。
 
例如:现在骨干网很多使用到标签的技术,例如MPLS L3VPN和L2VPN。那么我们在配置设备的时候,即需要配置IGP或者BGP等单播路由协议,还额外需要部署一个LDP或者RSVP-TE或者MP-BGP来进行分配标签。那么也就是说,路由的计算和学习使用ISIS或者OSPF和BGP协议,标签的分配使用LDP或者MP-BGP协议,导致的一个直接问题是路由协议和LDP同步的问题。
 
例如下图:
 
\
 
当R1访问R4后面的私有网段时,通过LDP的LSP的外层标签作为递送标签,解决MPLS域中间路由器的路由黑洞。
 
以下几种情况会出现LDP和IGP同步的现象:当R1和R3之间的链路出现故障,那么IGP会先收敛,然后LDP才会收敛,数据包传递到R2后就会出现短暂丢包。
 
在VPNV4场景如果是华为设备,那么R1没有R2通告的关于R4节点的32位主机路由,那么R1将自行丢包。那么R1和R3链路故障后,R1上的IGP和LDP都收敛完成后LSP才能使用,导致到其它设备出现丢包。
 
使用标签的还一个技术就是MPLS-TE,使用RSVP作为标签分发协议,RSVP协议扩展性不好,Path和Resv报文是周期性更新的,来维护ERO表项,而且对ECMP的支持的也不好,需要建立多个隧道才能进行ECMP。
 
当然RSVP也不全是缺点,它是可以为业务预留带宽的,提供不同业务差分的服务。如果熟悉QoS的朋友应该知道,QoS服务模型中有一个就是集成服务模型,里面可以使用RSVP来预留带宽,只是不能做到流量工程。
 

(3)SR的应用离网络多远?

 
Segment Routing出来后,有两个转发平面,一个是基于标签的SR-MPLS,一个是基于IPv6的SRv6。那么前者很容易在网络中进行部署,因为现在的厂家设备(硬件芯片)都能很好的支持MPLS转发,现在可以实现流量从虚机出来就可以控制数据报文的走向。
 
二、SR产生的灵感
 
好比普通人被苹果砸中那么只会自认为自己倒霉,而牛顿却发现了万有引入。那么思科公司的克拉伦斯乘坐飞机通过行李的托运而发明了Segment Routing,想想自己真是感到惭愧,能够让各位读者窥豹一斑就甚有成就感。
 
(1)本节介绍的重点
 
①Segment-Routing的灵感
②SR的转发机制
③应用驱动网络
④Segment-Routing的介绍
 

(2)SR的灵感-行李的托运

\ 
飞机从西雅图到柏林,共有三条路径,每一条路径都经过了中间站点,那么乘客在中途转机的时候,是不需要把行李再进行安检一次,而是工作人员直接把行李托运到另一架飞机上。
 
乘客是无感知的,到了目的地取走行李即可。那么是怎么做到的呢?就是机场工作人员将乘客经过的中间站点以及最后的目的站点都使用标签贴在行李上。
 
飞机飞到一个站点(网络中称为段)的时候,将撕掉一个标签表示已经到了一个站点(其实真实生活并没有真的撕掉标签操作),那么一个标签(一个IPv6地址)就代表完成了整个路径的某个路段,在网络中我们称为段路由,也被称为“Segment”。
 

(3)SR转发机制

 \ 
 
SR框架基于源路由。节点(通常为路由器、主机或者其它设备)选择路径,并且引导数据包沿着该路径到达目的地。做法就是在数据包的IP头部插入顺序的Segment-List(SID组合)。
 
提示接收到的数据包怎么处理和转发这些数据包(发给其它节点或者IGP邻居)。如图:数据从A发往Z,那么按照IGP或者BGP路由的形式转发,可能不能按照我们规划的路径转发。
 
所以将路径设备的标签压入到数据报头,途中的16072表示数据传递到C节点,29003表示经过C和O的链路,到了O节点后,通过16065送到目的节点Z。每经过一个节点或者链路的时候都会将标签进行剥离。
 
上面这个报文的走向,类似我今天去公司上班,条条道路通罗马,那么我们根据自己的需求(例如我要在C到O的道路上买个早餐等等)来规划我上班的路径。
 

(4)应用驱动网络

 \
SR针对不同的应用走不同的路径,SRTE的功能。由应用提出要求,有什么需求?是需要高带宽还是低带宽,时延需要大的还是小的以及要不要保护。例如,不同的应用有不同的特点。例如Voice带宽可以小、延迟小、抖动小。一般不需要保护。对比RSVP-TE,一个隧道需要维护两个表项,如果隧道很多那么维护的
 
表项就越多。SR节点不需要维护表项,会发送给控制器,在控制器上保存信息。
 
如果是SR的话,状态就在数据包中,转发节点不必为所有可能经过他们的流维持状态信息。
 

1. SR转发示例1:高带宽

 \ 
什么是高带宽路径,我们的IGP协议根据接口开销来计算最短,但是最短是不是最好的路径?根据数据拥塞来说不一定,因为最短意味着数据都会经过该路径。细心的读者会发现,上面我们仅仅部署了ISIS。那么说明ISIS可以搞定路由的计算和学习也可以用于分发标签。
 

2.SR转发示例2:低延迟

  \
 
应用告诉控制器自己低延时的需求,控制器返回一个路径。因为节点2和节点4的链路IGP开销大,所以数据都不会经过节点2和节点4的链路,那么这条链路就比较空闲,那轻量级数据从这条链路走就不会产生拥塞。
 
如果直接写16004,那么节点1就会去往节点6然后到节点4,可能产生拥塞,那么低延迟的数据走这条路径是不合适的,上面途中示例,从节点12到达1是有两条路径的那么就可以负载分担,然后节点1到达节点7默认走下面的路径(1-6-5-7),因为IGP认为这条路径是最短的。
 
SDN控制器返回告诉应用在发送报文的时候带上{16001,16002,24024,17047}的SR-List进行数据转发。这里是不能直接携带SR-List{16001,16002,17047},因为到达节点2后如果直接根据17047那么数据会把下一跳设置为节点1,而不是节点4。
 
这个和我们开车的道理是一样的,我从家到公司上班,最宽的道路不一定是最快的,因为车辆太多就会造成堵车的现象。那么可能一条不那么宽的道路反而是不堵车的,那么到达目的地可能就会更快。
 
三、Segment-Routing的基本术语      
 

(1)Segment

 
是节点对收到的数据包要执行的指令,此指令包含在数据报文中。所以我们
也说Segment Routing状态在数据包中。
 

(2)全局Segment

 
SR域中的每个节点均支持与全局Segment相关联的指令,并且SR域中每个节点在其转发表中均安装Segment指令。全局segment始终以“SRGB+Index”的方式分发。Index可以认为是Skew,是SRGB的首值+Index。Index必须唯一(除了Anycast Prefix-SID才使用相同的Index)在SR域推荐使用相同的SRGB。
 
Segment可以是标签,可以是IPv6的地址,如果是标签的话,通过以前的学习,我们得知标签的格式:
 
\
 
标签一共4个字节,前面20个比特是标签值,3比特是EXP用于QoS,1比特的栈底位。最后8比特是TTL。标签一共有104万左右,对于LDP协议华为是从1024开始分的,Segment如果是标签转发模式,那么标签从16000到23999进行分的,相当于这一块标签只给SR使用。
 

(3)本地Segment

 
只有生成本地Segment的节点与该本地Segment相关联的指令,并且只有生成本地的节点在其转发表中安装相关联的指令。
 

(4)SR的转发平面

 
SR的转发平面有两种,一种是基于MPLS标签,所以Segment即标签。一种是基于IPv6的转发平面,即Segment是IPv6地址。IPv6是通过扩展报头中的路由表头进行携带即SRH,里面是一个个的IPv6地址。
 

(5)IGP Segment

 
IGP分发两种类型的Segment,为构建转发路径的基本构建块,一个是代表节点的Prefix SID(Label)和代表IGP邻居的Adjacency SID(Label)。IGP的前缀段也就是Prefix-SID是整个SR域沿着该前缀的IGP所有ECMP最短路径进行转发。
 
\
 
如图:节点1和节点3去往节点5的时候,都是按照IGP的最短路径进行转发。会压上标签16005,而且所有节点都会关联节点5的全局的Segment,并且放入到标签转发表对数据进行转发。
IGP中使用OSPF或ISIS来进行路由信息的通告和路由计算以及标签的分发。

好处在于避免使用LDP分发标签,IGP通告路由信息和路由计算带来的同步问题。
 
\
 
另一个是代表邻居节点(或者说代表链路的Adjacency-SID),只有产生该Adjacency-SID的设备会关联该Segment,并加入到标签转发表。SR域其它节点如果是IGP同一个区域,只是知道存在该Adjacency-SID存在。(因为一个区域LSDB同步,如果是跨区域无感知该Adjacency SID的存在)。
 

(6)Segment组合

 
将多个Segment-ID进行组合,可以指导数据报文到网络的任何路径上,不受最短路径和域边界以及路由协议的影响。
 
\
 
现在有了代表节点的Prefix-SID以及代表链路的Adjacency-SID,那么通过他们的组合我们就可以在源节点对数据包的走向进行控制。
 
如图;在节点1压上代表节点4的Prefix-SID和代表链路的Adjacency-SID,那么通过顶层标签16004将数据包通过ECMP路径送给节点4,然后节点4将16004弹出,根据栈底标签24045将数据包送到节点4和5之间的链路上(就算节点4和5的开销非常非常大)到达节点5。
 
未完待续……


 

精品课程免费试听:华为认证云计算、大数据、人工智能、云服务、数通、网络安全、存储、数据中心、物联网、5G、高斯数据库、智能计算、鲲鹏应用开发精品课程,包含华为认证HCIE、HCIP、HCIA三个等级的认证培训课程,总有一门适合你!
 
\