分段路由(segment routing,SR)
一、介绍
定义:SR是一种新型的MPLS技术,其中控制平面基于IGP路由协议扩展实现,转发层面基于MPLS转发网络实现,对的segment在转发层面呈现为标签。SR-TE是使用SR作为控制信令的一种新型的MPLS TE隧道技术,控制器负责计算隧道的转发路径,并将与路径严格对应的标签栈下发给转发器,在SR-TE隧道的入节点上,转发器根据标签栈进行转发。
目的:普通的RSVP-TE技术由于控制协议的复杂已经不能满足快速发展的需求,而SR-TE作为一种新型的MPLS-TE隧道技术具有独特的优势。
比较项SR-TERSVP-TE
控制平面使用SR作为控制信令,信令控制协议为IGP协议扩展,控制平面简单。无需专门的MPLS的控制协议,减少协议数量。需要RSVP-TE作为MPLS的控制协议,控制平面较复杂。
标签分配每条链路仅分配一个标签,所有的LSP共用这一个标签,减少了标签资源的占用,减轻了标签转发表的维护工作量。每条LSP分配一个标签,当有多条LSP时,同一条链路上需要分配多个标签,标签资源占用的多,标签转发表的维护工作量大。
路径调整和控制网络中间设备不感知隧道,仅通过对入节点的报文进行标签操作即可任意控制业务转发路径,无需逐节点下发配置。
当路径中的某处发生故障,由控制器重新计算路径并更新入节点的标签栈,即可完成路径调整。
需逐节点下发配置
优势:简化了MPLS控制协议,减少资源占用,简化网络运维和管理,增强路径调整和控制能力。
二、相关概念
链路标签(adjacency segment):用于标识SR网络中的路由邻接链路,是SR-TE主要使用的标签类型。链路标签具有一定的方向性,用于指导报文的转发时仅在源节点本地有效。
标签栈:标签栈是标签排序的集合,用于表示一条完整的LSP。标签栈中的每一个链路标签标识一条具体的链路,整个标签栈从栈顶到栈底依次标识了整条LSP路径的所有链路。在报文转发的过程中,根据标签栈栈顶的链路标签查找对应的链路,并将标签弹出后转发,将标签栈中的所有链路标签弹出后,报文就走完了整条LSP。到达SR-TE隧道的目的地。
粘连标签和粘连节点:当标签栈深度超过转发器所支持的标签深度时,一个标签栈无法携带整条LSP的链路标签,则需要将整条路径分为多个标签栈携带,并通过一种特殊的标签将相邻的标签栈粘连在一起,多个标签栈首尾相连,从而标识一条完整的LSP。这种特殊的标签就叫做粘连标签,粘连标签所在的节点就叫做粘连节点。控制器为粘连节点分配粘连标签,将粘连标签压入LSP上游标签栈的栈底,并将粘连标签与相邻的下游标签栈相关联。与链路标签不同,粘连标签不能标识链路。当报文根据LSP上游标签栈转发至粘连节点时,根据粘连标签与下游标签栈的关联关系,用新的标签栈替换该粘连标签,继续指导报文在LSP下游的转发
三、标签分配方式
IS-IS分配:转发器的IGP协议(目前仅支持IS-IS协议)分配标签,并将分配的标签上报给控制器。
在转发器PE1、P1、P2、P3、P4和PE2上分别使能IS-IS SR能力,相互之间建立IS-IS邻居。对于具有SR能力的IS-IS实例,会对所有使能IS-IS协议的出接口分配SR链路标签。链路标签通过IS-IS的SR协议扩展,泛洪到整个网络中。如上图所示,以P3设备为例,IS-IS分配标签的具体过程如下:
P3的IS-IS协议为其所有链路申请本地动态标签(例如:P3为链路P3->P4分配链路标签9002)。
P3的IS-IS协议发布链路标签,泛洪到整个网络。
P3上生成链路标签对应的标签转发表。
网络中的其它设备的IS-IS协议学习到P3发布的链路标签,但是不生成标签转发表。
PE1、PE2、P1、P2、P4按照P3的方式分配和发布链路标签,生成链路标签对应的标签转发表。当在一个或多个转发器与控制器之间配置IS-IS或者BGP-LS协议,建立了邻居关系,IS-IS或者BGP-LS引入带有SR标签信息的拓扑,向控制器上报。
控制器分配:标签分配由控制器完成,转发器提供NETCONF接口,控制器通过NETCONF下发SR标签给转发器。
如上图所示,各转发器上使能IS-IS SR能力,相互之间建立IS-IS邻居;控制器与转发器之间建立IS-IS邻居或者BGP-LS邻居。IS-IS协议收集网络拓扑后,通过IS-IS或者BGP-LS上报给控制器。控制器为拓扑中的每个链路分配链路标签,并将链路标签信息通过NETCONF下发给标签对应的源节点转发器,在转发器上生成链路标签转发表。
四、SR-TE隧道
隧道的创建
SR-TE隧道创建包括隧道配置和隧道建立。在SR-TE隧道创建之前,需要在各转发器之间建立IS-IS邻居关系,转发器与控制器之间建立IS-IS或BGP-LS邻居关系,实现网络层互通,完成标签的分配以及网络拓扑信息的收集,并将标签和网络拓扑信息上送给控制器,供控制器进行路径计算。
(1)SR-TE隧道的配置
SR-TE隧道的属性是创建隧道的依据。SR-TE隧道可以在控制器上配置,也可以在转发器上配置。
控制器上配置隧道:在控制器上进行SR-TE隧道配置后,控制器将隧道属性通过NETCONF下发给转发器,转发器将隧道托管给控制器进行管理。
转发器上配置隧道:在转发器上进行SR-TE隧道配置后,控制器向转发器获取隧道属性,转发器将隧道托管给控制器进行管理。
控制器对隧道的管理包括隧道的路径计算、标签栈生成及隧道维护。
(2)隧道的建立
控制器基于SR-TE的隧道约束属性,通过路径计算单元PCE(Path Computation Element)进行类似普通TE的路径计算,计算出来的路径根据拓扑和链路标签,将整条路径的链路标签整合在一起,生成一个标签栈(即算路结果)。
当标签栈深度超过转发器所支持的标签栈深度时,一个标签栈无法携带所有的链路标签,则控制器需要将整条路径分为多个标签栈携带。
如上图所示,控制器计算出SR-TE隧道路径为PE1->P3->P1->P2->P4->PE2,对应2个标签栈{1003,1006,100}和{1005,1009,},其中100为粘连标签,与标签栈{1005,1009,1010}关联,其他为链路标签。
控制器通过NETCONF将标签栈下发给转发器。
如上图所示,控制器下发标签栈的过程如下:
控制器将粘连标签100和标签栈{1005,1009,1010}下发给粘连节点P1。
控制器将标签栈{1003,1006,100}下发给入节点PE1。
转发器根据控制器下发的标签栈建立SR-TE隧道LSP。
五、SR-TE数据转发
转发原理
转发器上根据SR-TE隧道LSP对应的标签栈,对报文进行标签操作,并根据栈顶标签逐跳查找转发出接口,指导数据报文转发到隧道目的地址。
与MPLS基本转发过程类似,SR-TE的标签操作类型包括标签栈压入(Push)、粘连标签与标签栈交换(Swap)和标签弹出(Pop)。
Push:当报文进入SR-TE隧道时,入节点设备在报文二层首部和IP首部之间插入一个标签栈;或者根据需要(例如:LDP over SR-TE场景),在MPLS报文的标签栈顶增加一个新的标签栈。
Swap:当报文在粘连节点转发时,栈顶的标签为粘连标签,根据粘连标签与标签栈的关联关系,用新的标签栈替换该粘连标签。
Pop:当报文在SR-TE隧道中转发时,根据栈顶的标签查找转发出接口之后,将栈顶的标签剥掉。
转发过程
以下图为例,说明SR-TE的数据转发过程。
如上图所示,控制器计算出SR-TE隧道路径为A->B->C->D->E->F,对应2个标签栈{1003,1006,100}和{1005,1009,1010},分别下发给入节点A和粘连节点C。其中,100为粘连标签,与标签栈{1005,1009,1010}相关联;其他为链路标签。
步骤设备操作
1入节点A入节点A为数据报文添加标签栈{1003,1006,100},然后根据栈顶的标签1003匹配链路,找到对应的转发出接口为A->B链路,之后将标签1003弹出。报文携带标签栈{1006,100},通过A->B链路向下游节点B转发。
2中间节点B中间节点B收到报文后,根据栈顶的标签1006匹配链路,找到对应的转发出接口为B->C链路,之后将标签1006弹出。报文携带标签栈{100},通过B->C链路向下游节点C转发。
3粘连节点C粘连节点C收到报文后,识别出栈顶的标签100为粘连标签,将粘连标签100交换为与其关联的标签栈{1005,1009,1010},然后根据新的栈顶的标签1005匹配链路,找到对应的转发出接口为C->D链路,之后将标签1005弹出。报文携带标签栈{1009,1010},通过C->D链路向下游节点D转发。
4中间节点D、E节点D、E收到报文后,以与中间节点B相同的方式继续转发。直到节点E弹出最后一个标签1010,数据报文转发至节点F。
5出节点F出节点F收到的报文不带标签,通过查找路由表继续转发。
转载网址:http://support.huawei.com/enterprise/zh/doc/DOC1100004215?section=k008