手册下载
SRv6 TE Policy技术白皮书-6W101-整本手册.pdf (1.36 MB)
SRv6 TE Policy技术白皮书
Copyright © 2023 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
3.2.4 通过PCEP协议学习SRv6 TE Policy
4.2.1 SRv6 TE Policy与echo BFD联动
4.2.3 SBFD/BFD检测SRv6 TE Policy指定回程路径
4.3.1 SRv6 TE Policy的智能策略路由功能简介
4.3.2 SRv6 TE Policy的智能策略路由工作机制
SRv6 TE Policy是一种基于SRv6的流量工程,为用户提供了流量转发过程中的路径选择、路径切换和备份保护等功能。类似于MPLS TE技术,SRv6 TE Policy也可以看做是SRv6基础上发展的一种新的TE隧道技术。
SRv6 TE Policy提供了灵活的转发路径选择方法,可以满足用户不同的转发需求。当Segment Routing网络的源节点和目的节点之间存在多条路径时,合理利用SRv6 TE Policy选择转发路径,不仅可以方便管理员对网络进行管理和规划,还可以有效地减轻网络设备的转发压力。
SRv6 TE Policy技术具有如下优势:
· 高可靠性
支持通过SBFD检测SRv6 TE Policy的连通性,快速定位故障点。同时支持热备份,有效减少网络故障时的丢包数量。
· 引流多样化
SRv6 TE Policy支持基于BSID、基于Color和基于DSCP等多种引流方式。可以根据不同转发需求灵活选择引流方式。
· 灵活部署
SRv6 TE Policy支持部署在多种网络环境中,如IP L3VPN over SRv6、EVPN VPLS over SRv6等。
SRv6 TE Policy通过三元组{Headend、Color、Endpoint}来标识:
· Headend:源节点。源节点将报文引入SRv6 TE Policy,并由SRv6 TE Policy引导报文在选定的路径上转发。
· Color:转发路径的Color属性,用于在相同的源和目的节点之间区分多个SRv6 TE Policy。通过Color属性可以代表不同业务质量要求,例如低延时、高带宽。
· Endpoint:SRv6 TE Policy目的节点的IPv6地址。
如图1所示,一个SRv6 TE Policy由BSID和多条具有不同优先级的Candidate Paths(候选路径)组成,每个候选路径包括由Segment List(SID列表)标识的一条或多条转发路径。
· BSID
Binding SID,与SRv6 TE Policy关联。如果报文的目的地址为BSID,则将流量引导到该BSID所属的SRv6 TE Policy。
· 候选路径(Candidate Path)
一个SRv6 TE Policy包含一条或多条候选路径,不同候选路径具有不同优先级。通过SRv6 TE Policy转发流量时,设备根据候选路径的优先级从多条候选路径中选择优先级最高的作为流量转发路径。
· SID列表
SID列表包含报文转发路径信息,由转发路径上各个节点的SID(IPv6地址)组成。
候选路径由一个SID列表或者多个带权重的SID列表组成。SRv6 TE Policy选择某条候选路径后,会根据SID列表的权重,在候选路径的多个SID列表间进行负载分担。
SRv6 TE Policy组是一组具有相同Endpoint的SRv6 TE Policy的集合。通过SRv6 TE Policy组转发的流量可以根据报文的DSCP或Dot1p值等标识信息映射到SRv6 TE Policy组中不同Color值的SRv6 TE Policy中转发,根据业务的不同标识信息,实现差异化转发控制。
SRv6 TE Policy组由Group ID标识,同时也存在BSID、Color和Endpoint属性:
· Color:SRv6 TE Policy组携带的扩展团体属性,携带相同Color属性的BGP路由可以迭代到该SRv6 TE Policy组。
· Endpoint:SRv6 TE Policy组目的节点的IPv6地址。如果SRv6 TE Policy和SRv6 TE Policy组的Endpoint相同,则该SRv6 TE Policy属于这个SRv6 TE Policy组。
· BSID:入节点的SID。
图2 SRv6 TE Policy组的构成
采用该方式时,需要手工创建SRv6 TE Policy组,指定SRv6 TE Policy组ID和Color属性并配置SRv6 TE Policy组的目的节点地址。
创建SRv6 TE Policy组的ODN模板后,当设备收到BGP路由时,如果该BGP路由携带的Color扩展团体属性与ODN模板的Color值相同,则以该BGP路由的下一跳地址作为SRv6 TE Policy组的目的节点地址,以ODN模板的Color值作为SRv6 TE Policy组的Color属性,生成一个SRv6 TE Policy组。设备将在未分配的组ID中,选择最小的组ID分配给该SRv6 TE Policy组。
作为一种TE隧道技术,实现流量通过SRv6 TE Policy转发的基本步骤为:
(1) SRv6 TE Policy创建:创建一个SRv6 TE Policy,生成SRv6 TE Policy中用于转发流量的路径,即候选路径。
(2) SRv6 TE Policy引流:SRv6 TE Policy隧道创建之后,将流量引入到隧道中转发。
(3) SRv6 TE Policy选路:流量引入到SRv6 TE Policy隧道中之后,选择SRv6 TE Policy中最优的候选路径转发流量。
(4) SRv6 TE Policy数据封装和转发:为报文封装SRv6 TE Policy的SID list,实现流量从源节点到尾节点沿着SRv6 TE Policy隧道路径转发。
SRv6 TE Policy可以采用多种方式来生成:
· 通过NETCONF或命令行静态部署SRv6 TE Policy。
· 通过ODN功能自动创建SRv6 TE Policy。
· 通过控制器下发的BGP IPv6 SR Policy路由学习SRv6 TE Policy。
· 通过PCEP协议学习SRv6 TE Policy。
如图3所示,用户可以在源节点A手工静态配置SRv6 TE Policy。部署SRv6 TE Policy时,用户需要指定SRv6 TE Policy的Color属性、Endpoint地址、BSID、候选路径和SID列表。
如图4所示,在A节点创建ODN模板后,如果设备接收到的BGP路由携带的Color扩展团体属性与ODN模板的Color值相同,则以该BGP路由的下一跳地址作为SRv6 TE Policy的目的节点地址,以ODN模板的Color值作为SRv6 TE Policy的Color属性,自动创建一个SRv6 TE Policy。
根据ODN模板创建SRv6 TE Policy时,可以利用IPv6地址前缀列表对BGP路由进行过滤。通过IPv6地址前缀列表过滤的BGP路由可以触发生成SRv6 TE Policy,被IPv6地址前缀列表拒绝的BGP路由不能触发建立SRv6 TE Policy。
该SRv6 TE Policy会在指定Locator段内自动申请一个BSID。ODN自动创建SRv6 TE Policy后,会生成两条候选路径:
· Preference为200的候选路径,该候选路径下的SID列表需要通过亲和属性或Flex-Algo算法动态计算。
· Preference为100的候选路径,该候选路径下的SID列表需要由PCE计算。关于PCE计算的详细介绍,请参见“3. 采用PCE计算的路径建立Segment List”。
由ODN功能自动创建的SRv6 TE Policy下也可以手工创建候选路径。
图4 通过ODN自动创建SRv6 TE Policy
如图5所示,控制器下发SRv6 TE Policy过程为:
(1) 控制器通过BGP-LS收集网络拓扑和SID信息。
(2) 控制器与源节点之间建立BGP IPv6 SR Policy地址族的BGP会话。
(3) 控制器计算SRv6 TE Policy候选路径后,通过BGP会话将SRv6 TE Policy的Color属性、Endpoint地址、BSID、候选路径和SID列表下发给源节点。源节点设备生成SRv6 TE Policy。
为了支持SRv6 TE Policy,MP-BGP定义了新的子地址族——BGP SRv6 TE Policy地址族,并新增了SRv6 TE Policy NLRI(Network Layer Reachability Information,网络层可达性信息),即SRv6 TE Policy路由(也称为BGP SRv6 TE Policy路由)。SRv6 TE Policy路由中包含SRv6 TE Policy的相关配置,包括BSID、Color、Endpoint、候选路径优先级、SID列表和SID列表的权重等。
在设备间建立BGP SRv6 TE Policy对等体后,设备可以将本地配置的SRv6 TE Policy通过SRv6 TE Policy路由发布到对端。对端设备根据接收到的SRv6 TE Policy路由生成对应的SRv6 TE Policy。
关于BGP IPv6 SR Policy的NLRI详细信息,请参见“6.1 SRv6 TE Policy NLRI”。
PCEP是IETF定义的基于TCP的协议,它定义了一组消息和对象,用于管理PCEP会话,并为多域流量工程请求和发送路径。PCEP交互包括PCC(Path Computation Client,路径计算客户端)向PCE(Path Computation Element,路径计算单元)发送路径状态信息报告,以及PCE向PCC更新路径。在控制器集中算路场景中,PCEP通常作为控制器和转发器之间的通信协议,配合控制器的算路功能,实现全局路径调优。关于PCE的详细介绍,请参见“MPLS配置指导”中的“MPLS TE”。
如图6所示,在SRv6 TE Policy网络中,SRv6源节点可以通过PCE托管方式来生成SRv6 TE Policy。SRv6源节点作为PCC,将路径计算托管给控制器(PCE),由PCE计算候选路径并建立SID列表,生成完整SRv6 TE Policy。PCE通过PCEP协议把生成的SRv6 TE Policy的名称、Color属性、Endpoint地址、BSID、候选路径和SID列表等完整信息下发给SRv6源节点。
图6 通过PECP协议学习SRv6 TE Policy示意图
SID列表代表了转发路径,是SRv6 TE Policy的关键组成部分,SID列表支持手工创建和动态计算两种方式。
通过命令行手工创建SID列表,并在SID列表中指定报文需要经过节点。
手工创建的SRv6 TE Policy和由ODN功能自动创建的SRv6 TE Policy,均支持在SRv6 TE Policy的源节点采用动态计算的路径建立SID列表。
SRv6 TE Policy支持采用如下方式动态计算路径:
· 根据亲和属性动态计算路径
· 根据Flex-Algo算法动态计算路径
· 使用PCE动态计算路径
SRv6 TE Policy根据亲和属性动态计算路径的过程为:
(1) 根据亲和属性规则决定SRv6 TE Policy可以使用哪些链路。
亲和属性规则通过引用亲和属性名称,来关联指定的亲和属性比特位,以实现SRv6 TE Policy根据亲和属性规则选择具有指定亲和属性比特位的链路。
¡ 链路属性:32位的二进制数,每一位二进制数代表一个属性,属性值为0或1。
¡ 亲和属性比特位:取值为0~31。当亲和属性比特位取值为N时,表示其与链路属性从右向左的第N+1位进行比较。仅当链路属性的第N+1位为1时,该链路才具有该亲和属性。
例如,亲和属性名称为blue,对应亲和属性比特位为1;亲和属性名称为red,对应亲和属性比特位为5。在不同亲和属性规则下,选择链路的方式为:
¡ 亲和属性规则为include-any,表示只有链路具有该规则中指定的任意一个亲和属性时,SRv6 TE Policy才可以使用该链路。include-any { bule, red }表示,如果链路的32位链路属性中第二位(blue对应的亲和属性比特位)或第六位(red对应的亲和属性比特位)为1,则该链路可用。
¡ 亲和属性规则为include-all,表示只有链路具有该规则中所有亲和属性时,SRv6 TE Policy才可以使用该链路。include-all { bule, red }表示,如果链路的32位链路属性中第二位(blue对应的亲和属性比特位)和第六位(red对应的亲和属性比特位)均为1,则该链路可用。
¡ 亲和属性规则为exclude-any时,表示只要链路具有该规则中指定的任意一个亲和属性时,SRv6 TE Policy不可以使用该链路。exclude-any { bule, red }表示,如果链路的32位链路属性中第二位(blue对应的亲和属性比特位)或第六位(red对应的亲和属性比特位)为1,则该链路不可用。
(2) 根据度量类型计算路径。
SRv6 TE Policy支持的度量类型及计算方式为:
¡ 以跳数作为度量值,选择跳数最少的链路。
¡ 以IGP链路开销值作为度量值,选择IGP链路开销值最低的链路。
¡ 以接口平均时延作为度量值,选择接口平均时延最低的链路。
¡ 以MPLS TE度量值作为度量值,选择TE度量值最低的链路。
路径计算完成后,设备将该路径上所有链路或节点对应的SID由近到远排列,组成SRv6 TE Policy的SID列表。选择SID时,优先选择End SID。如果设备上没有End SID,则选择End.X SID。
如图7所示,链路中间的数字表示cost值。SRv6 TE Policy的亲和属性规则为include-any,SRv6 TE Policy根据亲和属性动态计算路径的过程为:
(1) 根据亲和属性规则,选择亲和属性为“红色”的链路。
(2) 根据不同度量类型选择不同链路:
¡ 以跳数作为度量值时,选择跳数最少的链路,使用A-B-C-D-E-F作为转发路径。
¡ 以IGP链路开销值作为度量值时,选择IGP开销最小的链路,使用A-B-C-I-H-D-E-F作为转发路径。
图7 SRv6 TE Policy根据亲和属性动态计算路径示意图
SRv6 TE Policy使用指定的Flex-Algo算法计算转发路径。通过Flex-Algo算法得到转发路径后,设备会将该路径上所有链路或节点对应的SID由近到远排列,组成SRv6 TE Policy的SID列表。选择SID时,优先选择End SID。如果设备上没有End SID,则选择End.X SID。Flex-Algo算法的详细介绍,请参见《Flex-Algo技术白皮书》。
在SRv6 TE Policy网络中,SRv6节点可以作为PCC(Path Computation Client,路径计算客户端),根据PCE(Path Computation Element,路径计算单元)计算的路径建立SID列表。
· PCE:网络中的一个实体,用于为网络上的设备提供路径计算服务。可进行区域内的路径计算,也可在复杂的网络环境中计算完整的SID列表。PCE分为以下两种类型:
¡ Stateless PCE(Stateless Path Computation Element,无状态PCE):该类型PCE仅提供路径计算服务。
¡ Stateful PCE(Stateful Path Computation Element,有状态PCE):该类型PCE掌握了网络内所有PCC维护的路径信息,可以重新计算和优化域内的转发路径,以达到最大程度分配和使用网络资源的目的。Stateful PCE包括Active-Stateful PCE(Active-Stateful Path Computation Element,主动有状态PCE)和Passive-Stateful PCE(Passive-Stateful Path Computation Element,被动有状态PCE)两种类型。被动有状态PCE仅维护PCC的SID列表信息,不能实时根据网络状况优化路径,并通知PCC更新路径;主动有状态PCE可以实时根据网络状况优化路径,并通知PCC更新路径。
· PCC:请求PCE执行路径计算,并根据PCE返回的路径信息建立转发路径。PCC必须与PCE类型一致。因此,PCC分为以下两种类型:
¡ Stateless PCC(Stateless Path Computation Client,无状态PCC):该类型PCC仅向PCE发送路径计算请求。
¡ Stateful PCC(Stateful Path Computation Client,有状态PCC):该类型PCC的SID列表信息委托给PCE,由Stateful PCE维护PCC的路径信息。Stateful PCC包括Active-Stateful PCC(Active-Stateful Path Computation Client,主动有状态PCC)和Passive-Stateful PCC(Passive-Stateful Path Computation Client,被动有状态PCC)两种类型。被动有状态PCC的SID列表信息仅上报PCE,但不由PCE计算,不能实时更新路径;主动有状态PCC的SID列表信息上报PCE,并由PCE计算,可以实时更新路径。
· PCEP(Path Computation Element Protocol,路径计算单元通信协议):运行于PCC与PCE之间的通信协议,用于建立PCEP会话、交互PCEP消息。该协议基于TCP。
如图8所示,PCE路径计算过程如下:
(1) PCC向PCE发起路径计算请求。
(2) PCE收到该请求后,为PCC计算路径。
(3) PCE完成路径计算后,对PCC的路径请求进行应答,要求PCC创建路径信息。
(4) PCC根据PCE计算的路径信息在SRv6 TE Policy的候选路径下创建SID列表信息。
可以通过多种方式将流量引入到SRv6 TE Policy转发,其中包括:
· 基于BSID引流
· 基于DSCP引流
· 基于CBTS引流
· 基于静态路由引流
· 基于策略路由引流
· 自引流功能
如果接收到的报文的目的IPv6地址为某个SRv6 TE Policy的BSID,则通过该SRv6 TE Policy转发该报文。基于BSID引流通常用于SID缝接场景,通过在某个SRv6 TE Policy的SID列表中加入另一个SRv6 TE Policy的BSID,可以在流量转发过程中减少报文SRH头的长度,实现不同SRv6 TE Policy之间的缝接。
Color引流是直接基于路由的扩展团体属性Color和目的地址,将流量引入到SRv6 TE Policy转发。如果设备上存在Color和Endpoint地址与BGP路由的Color扩展团体属性和下一跳地址完全相同的SRv6 TE Policy,则将该BGP路由迭代到SRv6 TE Policy。当设备收到匹配该BGP路由的报文时,会通过SRv6 TE Policy转发该报文。
如图9所示,Color引流过程为:
(1) 通过控制器向源节点A下发SRv6 TE Policy 1,其Color为100,EndPoint是设备H的地址5::5。
(2) 设备H将BGP VPNv4路由2.2.2.2/32发送给源节点设备A。该路由的Color扩展团体属性值为100,下一跳为设备H的地址5::5。
(3) 当源节点A收到BGP VPNv4路由2.2.2.2/32后,根据Color扩展团体属性100和下一跳地址5::5,将该路由迭代到SRv6 TE Policy 1。匹配该BGP路由的报文会通过SRv6 TE Policy 1转发。
图9 Color引流示意图
根据报文的DSCP值将报文引流到SRv6 TE Policy时,需要部署SRv6 TE Policy组。SRv6 TE Policy组由多个Color属性不同,但Endpoint地址相同的SRv6 TE Policy组成。
基于DSCP引流的工作机制为:
(1) 将Color属性不同的多个SRv6 TE Policy加入到一个SRv6 TE Policy组,并指定DSCP值与Color属性的映射关系。
(2) 采用以下任意一种方式,均可实现引流到SRv6 TE Policy组:
¡ 配置隧道策略,在隧道策略中将指定的目的地址与SRv6 TE Policy组绑定,从而实现去往该目的地址的流量引入到SRv6 TE Policy组转发。
¡ 配置隧道策略,在隧道策略中配置SRv6 TE Policy组为优先隧道,当路由的下一跳地址为SRv6 TE Policy组的目的节点地址时,流量优先引入到SRv6 TE Policy组中转发。
¡ 查找到Color和Endpoint地址与BGP路由的Color扩展团体属性和下一跳地址匹配的SRv6 TE Policy组后,将该BGP路由迭代到SRv6 TE Policy组。
(3) 根据报文的DSCP值查找与其关联的Color属性,再通过Color属性匹配到SRv6 TE Policy组中的某个SRv6 TE Policy。这样,就形成了DSCP->Color->SRv6 TE Policy的映射关系,实现携带指定DSCP的报文通过指定SRv6 TE Policy转发。
如图10所示,DSCP引流过程为:
(1) 通过控制器向源节点A下发SRv6 TE Policy,SRv6 TE Policy 1的Color是100,EndPoint是设备H的地址5::5;SRv6 TE Policy 2的Color是200,EndPoint也是设备H的地址5::5。
(2) 设备H将BGP VPNv4路由2.2.2.2/32发送给源节点设备A,下一跳地址为5::5。
(3) 在源节点设备A上创建SRv6 TE Policy组111,其EndPoint为设备H的地址5::5。在SRv6 TE Policy组内创建Color和DSCP映射关系,Color 100映射为DSCP 10,Color 200映射为DSCP 20。之后在源节点A上配置隧道策略,将SRv6 TE Policy组与目的地址2.2.2.2绑定。
(4) 源节点A根据报文的目的地址,查找到匹配的隧道绑定策略,进而关联到SRv6 TE Policy组,然后根据报文的DSCP值查找映射的Color,再根据Color匹配到SRv6 TE Policy组里具体的某一个SRv6 TE Policy,在该SRv6 TE Policy中选择最优的候选路径,并按照候选路径中SID List将DSCP值为10的报文按B -> C -> D -> H路径转发,从而实现报文的DSCP引流。
图10 DSCP引流示意图
根据报文的802.1p值将报文引流到SRv6 TE Policy时,需要部署SRv6 TE Policy组。SRv6 TE Policy组由多个Color属性不同,但Endpoint地址相同的SRv6 TE Policy组成。
基于802.1p引流的工作机制为:
(1) 将Color属性不同的多个SRv6 TE Policy加入到一个SRv6 TE Policy组,并指定802.1p值与Color属性的映射关系。
(2) 采用以下任意一种方式,均可实现引流到引流到SRv6 TE Policy组:
¡ 配置隧道策略,在隧道策略中将指定的目的地址与SRv6 TE Policy组绑定,从而实现去往该目的地址的流量引入到SRv6 TE Policy组转发。
¡ 配置隧道策略,在隧道策略中配置SRv6 TE Policy组为优先隧道,当路由的下一跳地址为SRv6 TE Policy组的目的节点地址时,流量优先引入到SRv6 TE Policy组中转发。
¡ 查找到Color和Endpoint地址与BGP路由的Color扩展团体属性和下一跳地址匹配的SRv6 TE Policy组后,将该BGP路由迭代到SRv6 TE Policy组。
(3) 根据报文的802.1p值查找与其关联的Color属性,再通过Color属性匹配到SRv6 TE Policy组中的某个SRv6 TE Policy。这样,就形成了802.1p->Color->SRv6 TE Policy的映射关系,实现携带指定802.1p的报文通过指定SRv6 TE Policy转发。
如图11所示,802.1p引流过程为:
(1) 通过控制器向源节点A下发SRv6 TE Policy,SRv6 TE Policy 1的Color是100,EndPoint是设备H的地址5::5;SRv6 TE Policy 2的Color是200,EndPoint也是设备H的地址5::5。
(2) 设备H将BGP VPNv4路由2.2.2.2/32发送给源节点设备A,下一跳地址为5::5。
(3) 在源节点设备A上创建SRv6 TE Policy组111,其EndPoint为设备H的地址5::5。在SRv6 TE Policy组内创建Color和Dot1p映射关系,Color 100映射为Dot1p 10,Color 200映射为Dot1p 20。之后在源节点A上配置隧道策略,将SRv6 TE Policy组与目的地址2.2.2.2绑定。
(4) 源节点A根据报文的目的地址,查找到匹配的隧道绑定策略,进而关联到SRv6 TE Policy组,然后根据报文的Dot1p值查找映射的Color,再根据Color匹配到SRv6 TE Policy组里具体的某一个SRv6 TE Policy,在该SRv6 TE Policy中选择最优的候选路径,并按照候选路径中SID List将Dot1p值为10的报文按B -> C -> D -> H路径转发,从而实现报文的Dot1p引流。
图11 802.1p引流示意图
service-class是一种设备的本地标识,可以通过QoS策略来标识流量的service-class。根据报文的service-class标识将报文引流到SRv6 TE Policy时,需要部署SRv6 TE Policy组。SRv6 TE Policy组由多个Color属性不同,但Endpoint地址相同的SRv6 TE Policy组成。
基于service-class引流的工作机制为:
(1) 将Color属性不同的多个SRv6 TE Policy加入到一个SRv6 TE Policy组,并指定service-class值与Color属性的映射关系。
(2) 采用以下任意一种方式,均可实现引流到SRv6 TE Policy组:
¡ 配置隧道策略,在隧道策略中将指定的目的地址与SRv6 TE Policy组绑定,从而实现去往该目的地址的流量引入到SRv6 TE Policy组转发。
¡ 配置隧道策略,在隧道策略中配置SRv6 TE Policy组为优先隧道,当路由的下一跳地址为SRv6 TE Policy组的目的节点地址时,流量优先引入到SRv6 TE Policy组中转发。
¡ 查找到Color和Endpoint地址与BGP路由的Color扩展团体属性和下一跳地址匹配的SRv6 TE Policy组后,将该BGP路由迭代到SRv6 TE Policy组。
(3) 根据报文的service-class标识查找与其关联的Color属性,再通过Color属性匹配到SRv6 TE Policy组中的某个SRv6 TE Policy。这样,就形成了service-class->Color->SRv6 TE Policy的映射关系,实现携带指定service-class标识的报文通过指定SRv6 TE Policy转发。
如图12所示,service-class引流过程为:
(1) 通过控制器向源节点A下发SRv6 TE Policy,SRv6 TE Policy 1的Color是100,EndPoint是设备H的地址5::5;SRv6 TE Policy 2的Color是200,EndPoint也是设备H的地址5::5。
(2) 设备H将BGP VPNv4路由2.2.2.2/32发送给源节点设备A,下一跳地址为5::5。
(3) 在源节点设备A上创建SRv6 TE Policy组111,其EndPoint为设备H的地址5::5。在SRv6 TE Policy组内创建Color和service-class映射关系,Color 100映射为service-class 1,Color 200映射为service-class 2。之后在源节点A上配置隧道策略,将SRv6 TE Policy组与目的地址2.2.2.2绑定。
(4) 源节点A根据报文的目的地址,查找到匹配的隧道绑定策略,进而关联到SRv6 TE Policy组,然后根据报文的service-class标识查找映射的Color,再根据Color匹配到SRv6 TE Policy组里具体的某一个SRv6 TE Policy,在该SRv6 TE Policy中选择最优的候选路径,并按照候选路径中SID List将service-class值为1的报文按B -> C -> D -> H路径转发,从而实现报文的service-class引流。
图12 service-class引流示意图
SRv6 TE Policy CBTS(Class-based Tunnel Selection,基于服务类型的隧道选择)是一种SRv6 TE Policy隧道的选择方式。有别于传统的隧道选择方式,CBTS可以基于流量的转发类选择对应的SRv6 TE Policy隧道进行转发,以便为不同的业务提供不同的转发服务。
SRv6 TE Policy CBTS工作原理为:
· 指定SRv6 TE Policy的转发类(Service-class属性)。
· 通过流分类匹配需要经过SRv6 TE Policy转发的流量,将不同业务的流量映射成不同的转发类,映射到指定转发类的业务流量可以通过具有对应转发类的SRv6 TE Policy隧道转发。
流量匹配了多条SRv6 TE Policy隧道时,SRv6 TE Policy CBTS按照如下规则优选转发该流量的SRv6 TE Policy隧道::
(1) 设备会优先选择与流量的转发类值相同的SRv6 TE Policy转发该流量。
(2) 存在多条与流量的转发类值相同的SRv6 TE Policy时,如果只有一条流且为逐流负载分担,则随机选择一个SRv6 TE Policy转发流量;如果只有一条流但是为逐包负载分担或有多条流,则流量在相同转发类的SRv6 TE Policy间进行负载分担。
(3) 如果不存在与流量的转发类值相同的SRv6 TE Policy,则选择隧道转发优先级最低的SRv6 TE Policy转发流量。SRv6 TE Policy转发类的取值越小,隧道转发的优先级越低,没有配置转发类的隧道优先级最低。
如图13所示,隧道的选择原则为:
· 从Device A到Device B转发类值为3的流量通过SRv6 TE Policy B转发。
· 从Device A到Device B转发类值为6的流量通过SRv6 TE Policy C转发。
· 从Device A到Device B转发类值为4的流量通过SRv6 TE Policy A转发。
· 从Device A到Device B未配置隧道转发类的流量通过SRv6 TE Policy A转发。
如图14所示,基于CBTS引流的工作过程为:
(1) 通过控制器向源节点A下发SRv6 TE Policy,SRv6 TE Policy 1的Color是100,Service-class为1,EndPoint是设备H的地址5::5;SRv6 TE Policy 2的Color是200,Service-class为2,EndPoint也是设备H的地址5::5。
(2) 设备H将BGP VPNv4路由2.2.2.2/32发送给源节点设备A,下一跳地址为5::5。
(3) 在源节点A根据报文的五元组等特征,使用QoS策略标记报文的的Service-class值。
(4) 源节点A收到Service-class为1的报文时,通过SRv6 TE Policy 1转发;源节点A收到Service-class为2的报文时,通过SRv6 TE Policy 2转发。
图14 CBTS引流示意图
TE class ID是一种设备的本地标识,可以通过QoS策略来标识流量的TE class ID。相较于关于service-class,TE class ID数量更多,且基于TE class ID的引流还可以实现SRv6 TE Policy的智能策略路由功能。根据报文的TE class ID标识将报文引流到SRv6 TE Policy时,需要部署SRv6 TE Policy组。SRv6 TE Policy组由多个Color属性不同,但Endpoint地址相同的SRv6 TE Policy组成。
基于TE class ID引流的工作机制为:
(1) 将Color属性不同的多个SRv6 TE Policy加入到一个SRv6 TE Policy组,并指定TE class ID值与Color属性的映射关系。
(2) 采用以下任意一种方式,均可实现引流到SRv6 TE Policy组:
¡ 配置隧道策略,在隧道策略中将指定的目的地址与SRv6 TE Policy组绑定,从而实现去往该目的地址的流量引入到SRv6 TE Policy组转发。
¡ 配置隧道策略,在隧道策略中配置SRv6 TE Policy组为优先隧道,当路由的下一跳地址为SRv6 TE Policy组的目的节点地址时,流量优先引入到SRv6 TE Policy组中转发。
¡ 查找到Color和Endpoint地址与BGP路由的Color扩展团体属性和下一跳地址匹配的SRv6 TE Policy组后,将该BGP路由迭代到SRv6 TE Policy组。
(3) 根据报文的TE class ID标识查找与其关联的Color属性,再通过Color属性匹配到SRv6 TE Policy组中的某个SRv6 TE Policy。这样,就形成了TE class ID->Color->SRv6 TE Policy的映射关系,实现携带指定TE class ID标识的报文通过指定SRv6 TE Policy转发。
如图15所示,TE class ID引流过程为:
(1) 通过控制器向源节点A下发SRv6 TE Policy,SRv6 TE Policy 1的Color是100,EndPoint是设备H的地址5::5;SRv6 TE Policy 2的Color是200,EndPoint也是设备H的地址5::5。
(2) 设备H将BGP VPNv4路由2.2.2.2/32发送给源节点设备A,下一跳地址为5::5。
(3) 在源节点设备A上创建SRv6 TE Policy组111,其EndPoint为设备H的地址5::5。在SRv6 TE Policy组内创建Color和TE class ID映射关系,Color 100映射为TE class ID 1,Color 200映射为TE class ID 2。之后在源节点A上配置隧道策略,将SRv6 TE Policy组与目的地址2.2.2.2绑定。
(4) 源节点A根据报文的目的地址,查找到匹配的隧道绑定策略,进而关联到SRv6 TE Policy组,然后根据报文的TE class ID标识查找映射的Color,再根据Color匹配到SRv6 TE Policy组里具体的某一个SRv6 TE Policy,在该SRv6 TE Policy中选择最优的候选路径,并按照候选路径中SID List将TE class ID值为1的报文按B -> C -> D -> H路径转发,从而实现报文的TE class ID引流。
图15 TE class ID引流示意图
APN ID是APN6(Application-aware IPv6 Networking,应用感知型IPv6网络)中定义的一种应用的标识信息,网络设备基于APN ID来区分不同应用的业务流。关于基于APN ID引流的详细介绍,请参见“APN6技术白皮书”。
在设备上创建一条迭代到SRv6 TE Policy的静态路由后,通过静态路由将流量引流到SRv6 TE Policy,如果设备收到匹配该静态路由的报文,则通过指定SRv6 TE Policy转发该报文。
在设备上创建策略路由,并在该策略路由中通过apply子句指定SRv6 TE Policy后,通过策略路由将流量引流到SRv6 TE Policy,如果设备收到匹配该策略路由定义的匹配规则的报文,则通过指定SRv6 TE Policy转发该报文。
在设备上创建绑定了重定向SRv6 TE Policy流行为的QoS策略,再将QoS策略应用到接口或全局,设备将符合该QoS策略中的匹配条件的报文流量重定向到SRv6 TE Policy。
在Flowspec控制器上创建Flowspec路由,该Flowspec路由中定义了报文匹配规则和重定向到SRv6 TE Policy的流量转发动作。Flowspec控制器通过扩展的BGP协议将Flowspec路由发布给Flowspec转发器,即SRv6 TE Policy源节点。SRv6 TE Policy源节点根据该Flowspec路由中定义的重定向到SRv6 TE Policy的流量转发动作将符合报文匹配规则的流量通过指定SRv6 TE Policy转发。
自引流是指将SRv6 TE Policy隧道或SRv6 TE Policy组发布到IGP(OSPFv3或IS-IS)路由中,让SRv6 TE Policy隧道或SRv6 TE Policy组参与IGP路由的计算,使得流量可以通过SRv6 TE Policy隧道或SRv6 TE Policy组转发。
自动引流目前仅支持IGP Shortcut方式,也称为自动路由宣告(AutoRoute Announce),该功能将SRv6 TE Policy或SRv6 TE Policy组当作一条直接连接隧道Ingress节点(头节点)和Egress节点(尾节点)的链路,在隧道的Ingress节点上进行IGP路由计算时考虑该SRv6 TE Policy或SRv6 TE Policy组。
IGP Shortcut功能不会通过IGP路由协议将SRv6 TE Policy隧道或SRv6 TE Policy组作为一条链路发布给邻居。因此,其他设备在路由计算时不会考虑SRv6 TE Policy隧道或SRv6 TE Policy组。
通过自引流方式将流量引入到SRv6 TE Policy组后,流量将在SRv6 TE Policy组内基于DSCP或Dot1p引流方式查找匹配的SRv6 TE Policy,通过该SRv6 TE Policy转发流量。
例如,在图16中,Device D到Device C之间存在一条SRv6 TE Policy隧道,IGP Shortcut可以使源节点节点Device D在计算IGP路由时利用这条隧道,从而将进入Device D的报文引到Device D与Device C之间的SRv6 TE Policy隧道上。
图16 IGP Shortcut与转发邻接示意图
数据报文引流到SRv6 TE Policy后,在SRv6 TE Policy中选择路径的过程为:
(1) 在SRv6 TE Policy中选择优先级取值最大的有效候选路径转发流量。
(2) 在优先级取值最大的有效候选路径的各个SID列表间进行WECMP(Weighted ECMP,权重负载分担),即基于权重对通过SRv6 TE Policy转发的流量进行负载分担。假设候选路径中包含n个有效SID列表,第x个SID列表的权重为Wight x,则第x个SID列表转发流量的比例为Weight x/(Weight 1+Weight 2+…+Weight n)。
如图17所示,根据BSID选择有效的SRv6 TE Policy转发流量,再选取优先级取值最大的有效候选路径转发流量。该候选路径中有两个有效的SID列表:SID List 1和SID List 2,其权重分别为20和80。通过该SRv6 TE Policy转发流量时,SID List 1和SID List 2转发的流量占比分别为1/5和4/5。
图17 SRv6 TE Policy转发流量时选路过程示意图
SRv6 TE Policy中的报文支持Encaps和Insert封装方式。Encaps封装方式是指在原始报文外层再封装新的IPv6头和SRH扩展头,Insert封装方式则是在原始报文IPv6头之后插入SRH扩展头。
根据封装方式的差异,报文转发过程稍有不同。
如图18所示,以SID缝接场景中基于BSID引流为例,SRv6 TE Policy的报文转发过程为:
(1) Device A将流量引入到SRv6 TE Policy A转发。SRv6 TE Policy A的SID中引入了SRv6 TE Policy B的BSID 20::2。根据SRv6 TE Policy A为报文封装SRH头,SRH头携带的SID列表为{10::2, 20::2, 50::2}。其中,10::2为Device B的End SID;50::2为Device F的End SID。
(2) Device A将封装后的报文发送给下一跳Device B。
(3) Device B收到报文后,根据SRH获取到下一跳为Device C,将报文发送给Device C。
(4) Device C收到报文后发现报文的目的地址为20::2,为本地SRv6 TE Policy B的BSID。SRv6 TE Policy B的封装方式为Encaps模式。因此Device C根据SRv6 TE Policy B为报文再封装一个外层IPv6头和SRH,SRH头携带的SID列表为{30::2, 40::2}。其中,30::2为Device D的End SID;40::2为Device E的End SID。外层IPv6头的目的地址更新为30::2,下一跳为Device D,将报文发送给Device D。
(5) Device D收到报文后,根据外层SRH获取到下一跳为Device E,将报文发送给Device E。
(6) Device E收到报文后,检查外层SRH头中的SL值,发现SL=0。对报文的外层IPv6头和SRH头进行解封装,删除封装报文头,再根据内层报文的目的地址将报文发送给Device F。
(7) Device F收到报文后,检查外层SRH头中的SL值,发现SL=0,Device F是SRv6 TE Policy A的尾节点,对报文的外层IPv6头和SRH头进行解封装,删除封装报文头。
图18 Encaps封装方式的SRv6 TE Policy报文转发过程示意图
如图19所示,以SID缝接场景中基于BSID引流为例,SRv6 TE Policy的报文转发过程为:
(1) Device A将流量引入到SRv6 TE Policy A转发。为了减少SRH封装的长度,SRv6 TE Policy A的SID中引入了SRv6 TE Policy B的BSID 20::2。根据SRv6 TE Policy A为报文封装SRH头,SRH头携带的SID列表为{10::2, 20::2, 50::2}。其中,10::2为Device B的End SID;50::2为Device F的End SID。
(2) Device A将封装后的报文发送给下一跳Device B。
(3) Device B收到报文后,根据SRH获取到下一跳为Device C,将报文发送给Device C。
(4) Device C收到报文后发现报文的目的地址为20::2,为本地SRv6 TE Policy B的BSID,SRv6 TE Policy B的封装方式为Insert模式,因此Device C根据SRv6 TE Policy B在原始IPv6报文头后插入SRH,SRH头携带的SID列表为{30::2, 40::2}。其中,30::2为Device D的End SID;40::2为Device E的End SID。外层IPv6头的目的地址更新为30::2,下一跳为Device D,将报文发送给Device D。
(5) Device D收到报文后,根据外层SRH获取到下一跳为Device E,将报文发送给Device E。
(6) Device E收到报文后,检查外层SRH头中的SL值,发现SL=0。对报文的外层SRH头进行解封装,再根据内层SRH更新目的地址,将报文发送给Device F。
(7) Device F收到报文后,检查外层SRH头中的SL值,发现SL=0,Device F是SRv6 TE Policy A的尾节点,对报文的外层IPv6头和SRH头进行解封装,删除封装报文头。
图19 Insert封装方式的SRv6 TE Policy报文转发
通过无效的SRv6 TE Policy转发流量,会导致流量转发失败。因此,只有SRv6 TE Policy有效时,才能通过该SRv6 TE Policy转发流量。
SRv6 TE Policy有效性判断规则为:只要SRv6 TE Policy中存在一个有效的SID列表,则该SRv6 TE Policy有效;否则,SRv6 TE Policy无效。
存在以下任意一种情况时,SID列表无效:
· SID列表为空;
· SID列表的权重为0;
· SR节点无法与SID列表中的第一跳IPv6地址互通;
· 检测SID列表的BFD会话或SBFD会话DOWN。
echo BFD方式检查SRv6 TE Policy时,无需在本地和Reflector端配置相同的标识符。相较于SBFD检查SRv6 TE Policy,echo BFD方式的配置更简单,无需规划本地和远端标识符。
echo BFD检测SRv6 TE Policy的过程如下:
(1) 头节点发送BFD echo报文,BFD echo报文封装SRv6 TE Policy中的SID列表。
(2) 尾节点收到BFD echo报文后,通过IPv6路由的最短路径将BFD echo报文转发回头节点。
(3) 如果头节点在检测时间超时前能够收到尾节点转发回的BFD echo报文,则认为SRv6 TE Policy的SID列表正常。否则,头节点认为SID列表故障。如果主路径下的所有SID列表都发生故障,则BFD触发主备路径切换。
echo报文方式的BFD对SRv6 TE Policy进行检测时,如果被选中的候选路径中存在多个SID列表,则SRv6 TE Policy会建立多个BFD会话分别用来检测每一个SID列表对应的转发路径。
echo BFD方式检查SRv6 TE Policy时,BFD报文支持Insert和Encaps的两种封装方式,缺省情况下,BFD报文采用Insert封装方式。
如图20所示,在Device A上配置SRv6 TE Policy,并使用echo报文方式的BFD检测该SRv6 TE Policy。BFD报文采用缺省的Insert封装方式时,Device A将构造特殊的BFD报文,BFD报文的源地址为Device A的本地IPv6地址a,且将该IPv6地址a插入到SID列表中SL=0的位置。Device D接收到BFD报文,更新IPv6报文头的目的地址为a,并根据IPv6地址a查找IPv6路由表把报文环回给Device A。
对于echo报文方式的BFD会话,echo报文按如下优先顺序选取报文源地址:
(1) bfd echo-source-ipv6命令指定的报文源地址;
(2) bfd echo命令指定的BFD会话源地址;
(3) srv6-policy bfd echo命令指定的BFD会话源地址。
图20 echo报文方式的BFD会话检测SRv6 TE Policy(Insert封装)
如图21所示,在Device A上配置SRv6 TE Policy,并使用echo报文方式的BFD检测该SRv6 TE Policy,BFD报文采用Encaps封装方式时,Device A先构造BFD报文,该BFD报文的源地址和目的地址均为Device A的本地IPv6地址a,Device A在BFD报文外层再封装一个IPv6头和SRH头,外层IPv6头的源地址为encapsulation source-address命令指定的IPv6地址,SRH头中包含SRv6 TE Policy的SID列表。Device D接收到BFD报文时,将外层IPv6头和SRH头解封装,并根据地址a查找IPv6路由表把报文环回给Device A。
图21 echo报文方式的BFD会话检测SRv6 TE Policy(Encaps封装)
SRv6 TE Policy不会通过设备之间互相发送的消息来维持自身状态,可以利用SBFD(Seamless BFD,无缝BFD)来检测SRv6 TE Policy路径的故障。通过SBFD检测SRv6 TE Policy的连通性,可以提供毫秒级的故障检测速度,并实现快速的故障切换。
SBFD检测SRv6 TE Policy的过程如下:
(1) 头节点作为Initiator发送SBFD报文,SBFD报文封装SRv6 TE Policy中的SID列表。
(2) 作为Reflector的尾节点收到SBFD报文后,检查报文中携带的远端标识符是否与本地配置的标识符一致。如果一致,Reflector将通过IPv6路由向Initiator发送SBFD响应报文。如果不一致,Reflector将丢弃收到的SBFD报文。
(3) 如果头节点在检测时间超时前能够收到SBFD响应报文,则认为SRv6 TE Policy的SID列表正常。否则,头节点认为SID列表故障。
SBFD对SRv6 TE Policy进行检测时,如果被选中的候选路径中存在多个SID列表,则SRv6 TE Policy会建立多个SBFD会话分别用来检测每一个SID列表对应的转发路径。
SBFD方式检查SRv6 TE Policy时,SBFD报文支持Insert和Encaps的两种封装方式,缺省情况下,SBFD报文采用Insert封装方式。
如图22所示,在Device A上配置SRv6 TE Policy,并使用SBFD检测该SRv6 TE Policy。SBFD报文采用缺省的Insert封装方式时,Device A将构造SBFD报文,SBFD报文的源地址为Device A的本地IPv6地址a,同时将SRv6 TE Policy的End-point地址e插入到SID列表中SL=0的位置。Device D接收到SBFD报文时,将IPv6头和SRH头解封装,根据SBFD报文的源地址a查找IPv6路由表,重新构造SBFD报文返回给Device A。
图22 SBFD for SRv6 TE Policy检测过程(Insert封装)
如图23所示,在Device A上配置SRv6 TE Policy,并使用SBFD检测该SRv6 TE Policy。SBFD报文采用Encaps封装方式时,Device A将构造SBFD报文,SBFD报文的源地址为Device A的本地IPv6地址a,将SRv6 TE Policy的End-point地址e作为SBFD报文的目的地址,同时在SBFD报文外层再封装一个IPv6头和SRH头,IPv6头的源地址仍为a。Device D接收到SBFD报文时,将外层IPv6头和SRH头解封装,根据SBFD报文的源地址a查找IPv6路由表,重新构造SBFD报文返回给Device A。
图23 SBFD for SRv6 TE Policy检测过程(Encaps封装)
如果SRv6 TE Policy的头节点和尾节点之间存在多个SRv6 TE Policy,通过SBFD或BFD echo方式检测这些SRv6 TE Policy连通性时,缺省情况下,SBFD/BFD回程报文均通过IP路径转发,一旦中间设备故障,则回程报文会被丢弃,导致SBFD/BFD会话down,从而错误地认为所有SRv6 TE Policy的SID列表故障。
为了解决上述问题,可以使SBFD/BFD回程报文按照SRv6 TE Policy的指定SID列表转发,以确保连通性。
如图24所示,以SBFD检测SRv6 TE Policy指定回程路径功能为例,具体实现流程如下:
(1) 在Device A和Device D上分别建立一个SRv6 TE Policy,SRv6 TE Policy AtoD和SRv6 TE Policy DtoA。SRv6 TE Policy AtoD的转发路径为A > B > C > D,SRv6 TE Policy DtoA的转发路径为D > F > E > A。在Device D上为SID列表D > F > E > A指定Local BSID为x。
(2) 在Device A上开启SBFD检测SRv6 TE Policy AtoD,为SBFD回程报文的指定Reverse BSID为x,x等于Device D上指定的Local BSID。Device A发送SBFD报文时,将为SBFD报文封装Aux Path TLV(备用路径TLV),该TLV中包含Reverse BSID。
对于echo方式的BFD报文则将Reverse BSID封装到SRH中SL=1的位置。
(3) Device D接收到SBFD报文时,获取Reverse BSID信息。Reverse BSID与本地SID列表D > F > E > A指定的Local BSID相同,因此Device D为回程的SBFD报文重新IPv6头及SRH,其中SRH携带了Local BSID对应的SID列表。
(4) 回程报文按照SID列表中指定的路径D > F > E > A返回Device A。
通常情况下,可以通过SBFD/BFD检测SRv6 TE Policy时指定的回程路径来保证回程和去程路径一致。
图24 SBFD检测SRv6 TE Policy指定回程路径示意图
当SRv6 TE Policy中存在多条有效候选路径时,设备通过优先级最大的候选路径转发报文。如果该候选路径发生故障,则SRv6 TE Policy需要重新选择有效候选路径转发报文。由于选择新的有效候选路径会耗费一些时间,所以在切换转发路径的过程中会造成丢包,影响业务流量转发。
SRv6 TE Policy的热备份功能可以解决上述问题。SRv6 TE Policy的热备份是指通过备份候选路径对主候选路径进行保护。如图25所示,如果一个SRv6 TE Policy下存在多条候选路径,则优先级最高的有效候选路径作为主路径,优先级次高的有效候选路径作为备份路径。如果主路径下所有SID列表对应的转发路径都发生故障,则将流量立即切换到备份候选路径转发,以减少对业务的影响。
图25 SRv6 TE Policy热备份示意图
SRv6 TE Policy热备份功能和SRv6 TE Policy与SBFD联动功能配合使用时,SBFD可以同时检测SRv6 TE Policy中优先级最高和次高的两条候选路径里的所有SID列表对应的转发路径。如果优先级最高的候选路径里所有SID列表对应的转发路径都发生故障,则将流量切换到备份路径。当流量切换到备份路径后,会重新计算主备路径。原备份路径将作为主路径,并重新选择一个有效的候选路径作为新的备份路径。当主备路径同时故障时,SRv6 TE Policy将重新计算主备路径。
如图26所示,网络中两个节点间建立一个SRv6 TE Policy组,该SRv6 TE Policy组中存在多个SRv6 TE Policy隧道,不同SRv6 TE Policy隧道的网络质量可能各不相同且实时变化。业务流量在SRv6 TE Policy组中转发时,用户希望业务流量可以根据SRv6 TE Policy隧道的网络质量情况自动切换转发路径,从而保证业务流量转发过程中始终达到网络质量标准。
SRv6 TE Policy的IPR(Intelligent Policy Route,智能策略路由)功能借助iFIT对SRv6 TE Policy隧道的网络质量进行实时检测,根据iFIT的检测结果来排除不符合网络质量标准的SRv6 TE Policy隧道,计算出当前优先级最高的SRv6 TE Policy隧道,并引导流量从该SRv6 TE Policy隧道转发。
图26 SRv6 TE Policy的智能策略路由功能示意图
SRv6 TE Policy的智能策略路由主要由三个功能协同完成:SRv6 TE Policy的iFIT测量功能、SRv6 TE Policy的IPR算路功能和业务流量引入IPR模板的功能。
如图27所示,通过在SRv6 TE Policy的头节点和尾节点上部署iFIT功能,测量各个SRv6 TE Policy端到端的丢包率、时延和抖动,并在头节点上分析和计算得到每个SRv6 TE Policy的实时丢包率、时延和抖动数据。SRv6 TE Policy的iFIT测量功能详细工作流程如下:
(1) SRv6 TE Policy头节点iFIT的工作模式设置为Analyzer,头节点将自动创建iFIT实例,并分配FlowID。
(2) SRv6 TE Policy头节点作为数据发送端,当报文通过SRv6 TE Policy转发时,头节点为原始报文封装携带iFIT选项字段的DOH报文头和SRH报文头,iFIT选项字段中包括标识目标流的FlowID、丢包测量染色位L、时延测量染色位D及周期标识等信息。头节点按SRv6 TE Policy的iFIT检测周期为报文的丢包测量染色位L和时延测量染色位D染色,根据报文染色信息来统计周期内通过该SRv6 TE Policy转发的报文个数,并记录周期内从该SRv6 TE Policy发送的时延测量染色位D置1报文的时间戳。
(3) 尾节点iFIT的工作模式设置为Collector,作为数据接收端,解析报文中iFIT选项字段,得到SRv6 TE Policy的iFIT检测周期等信息,根据报文染色信息来统计SRv6 TE Policy的iFIT检测周期内从SRv6 TE Policy接收到的报文个数,并记录SRv6 TE Policy的iFIT检测周期内从该SRv6 TE Policy接收的时延测量染色位D置1报文的时间戳。
(4) 尾节点通过接收到报文的源地址与头节点建立UDP会话,并将统计到的报文计数和报文时间戳通过UDP会话按照SRv6 TE Policy的iFIT检测周期返回给头节点,由头节点分析和计算通过SRv6 TE Policy转发报文的丢包率、时延和抖动。
图27 SRv6 TE Policy的iFIT测量功能示意图
如图28所示,SRv6 TE Policy的头节点根据iFIT测量的不同SRv6 TE Policy的丢包率、时延和抖动数据,以及SRv6 TE Policy的选路优先级,周期性计算当前最优的SRv6 TE Policy。
IPR算路需要定义IPR模板,IPR模板代表一种基于SLA(Service Level Agreement,服务水平协议)的SRv6 TE Policy选路策略,IPR模板中可以定义如下内容:
· 不同的SLA(Service Level Agreement,服务水平协议)标准,包括业务流量的时延标准、丢包标准、抖动标准和综合度量指标CMI(Composite Measure Indicator)标准。其中,综合度量指标CMI=时延(毫秒)+抖动(毫秒)+丢包率(‰)。
· SRv6 TE Policy的Color值和选路优先级的映射关系。选路优先级的数值越小,优先级越高。
· SRv6 TE Policy的切换时间和回切时间参数。
IPR算路功能的详细工作机制如下:
(1) 头节点按照IPR计算周期定期进行路径计算。计算最优SRv6 TE Policy时,首先检查SRv6 TE Policy的时延、丢包率、抖动和综合度量指标是否完全满足IPR模板中定义的SLA标准。如果任一指标不满足,则该SRv6 TE Policy不能作为备选的转发路径参与最优SRv6 TE Policy计算。
(2) 从备选的SRv6 TE Policy中选取选路优先级数值最小的SRv6 TE Policy,作为最优SRv6 TE Policy。如果多个不同SRv6 TE Policy具有相同的选路优先级,则流量可以在这些SRv6 TE Policy上进行负载分担。
(3) 当SRv6 TE Policy头节点计算出最优SRv6 TE Policy和业务当前使用的SRv6 TE Policy不同时,为了避免SRv6 TE Policy震荡导致业务频繁切换路径,业务流量将等待一定时间后再切换到最优的SRv6 TE Policy中转发。
如果SRv6 TE Policy的iFIT功能未能检测到某个SRv6 TE Policy的时延、丢包率、抖动和CMI参数,但该SRv6 TE Policy有效,则该SRv6 TE Policy仍可以作为备选路径参与路径优选。
图28 SRv6 TE Policy的IPR算路机制示意图
业务流量引入IPR模板的流程如下:
(1) 将流量通过以下方式引入到SRv6 TE Policy组中,
a. 根据报文的目的地址匹配隧道绑定策略,关联到SRv6 TE Policy组。
b. 查找到Color和Endpoint地址与BGP路由的Color扩展团体属性和下一跳地址匹配的SRv6 TE Policy组后,将该BGP路由迭代到SRv6 TE Policy组。
(2) 设置SRv6 TE Policy组的转发类型为基于TE Class ID转发流量。
(3) 配置指定TE Class ID和IPR模板的映射关系。此时,业务流量将在SRv6 TE Policy组动态选取最优SRv6 TE Policy转发。
如图29所示,多个云数据中心通过云骨干网互联,在云数据中心之间存在多种业务流量,不同业务的SLA(Service Level Agreement,服务水平等级)要求不同。在云骨干网中通过控制器部署多个SRv6 TE Policy,形成SRv6 TE Policy组。对于SRv6 TE Policy隧道可以部署iFIT测量其丢包率、时延和抖动等参数,衡量不同SRv6 TE Policy隧道的网络质量。
在源节点A通过QoS策略对业务流进行分类,标识出不同业务类型的DSCP值,将业务流量引入SRv6 TE Policy组后再根据DSCP->Color->SRv6 TE Policy的映射关系将不同业务流量映射到不同的SRv6 TE Policy中转发,实现不同业务的差异化SLA的需求。
SRv6 TE Policy NLRI用于描述SRv6 SID的网络层可达信息。
SRv6 TE Policy NLRI的报文格式如图30所示。
SRv6 TE Policy NLRI包含字段如表1所示。
表1 SRv6 TE Policy NLRI的字段描述表
字段名称 |
长度 |
含义 |
NLRI Length |
8比特 |
SRv6 Policy NLRI长度 |
Distinguisher |
32比特 |
标识符,唯一标识一个SRv6 TE Policy |
Policy Color |
32比特 |
SRv6 TE Policy的Color属性 |
Endpoint |
128比特 |
SRv6 TE Policy的目的节点地址 |
携带SRv6 TE Policy NLRI的BGP Update消息中,需要同时携带Tunnel Encapsulaton Attribute。如表2所示,在Tunnel Encapsulaton Attribute中通过定义以下子TLV来记录SRv6 TE Policy的相关信息。
表2 Tunnel Encapsulaton Attribute中子TLV描述表
TLV名称 |
作用 |
携带位置 |
Preference Sub-TLV |
通告候选路径的优先级 |
Tunnel Encapsulation Attribute |
SRv6 Binding SID Sub-TLV |
通告候选路径的BSID |
Tunnel Encapsulation Attribute |
Segment List Sub-TLV |
通告Segment List |
Tunnel Encapsulation Attribute |
Weight Sub-TLV |
通告Segment List的权重 |
Segment List Sub-TLV |
Policy Candidate Path Name Sub-TLV |
通告候选路径的名称 |
Tunnel Encapsulation Attribute |
Preference Sub-TLV用于承载候选路径的优先级。
Preference Sub-TLV的报文格式如图31所示。
Preference Sub-TLV包含字段如表3所示。
表3 Preference Sub-TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
8比特 |
类型,取值为12 |
Length |
8比特 |
长度 |
Flags |
8比特 |
标志位,目前无定义 |
Reserved |
8比特 |
预留值,取值为0 |
Preference |
32比特 |
SRv6 TE Policy的候选路径的Preference值 |
Binding SID Sub-TLV用于标识SRv6 TE Policy的BSID。
Binding SID Sub-TLV的报文格式如图32所示。
Binding SID Sub-TLV包含字段如表4所示。
表4 Binding SID Sub-TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
8比特 |
类型,取值为13 |
Length |
8比特 |
长度 |
Flags |
8比特 |
标志位,目前无定义 |
Reserved |
8比特 |
预留值,取值为0 |
Binding SID |
32比特 |
BSID值 |
Segment List Sub-TLV用于承载候选路径的的SID列表。
Segment List Sub-TLV的报文格式如图33所示。
Segment List Sub-TLV包含字段如表5所示。
表5 Segment List Sub-TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
8比特 |
类型,取值为128 |
Length |
16比特 |
长度 |
Reserved |
8比特 |
预留值,取值为0 |
Sub-TLVS |
32比特 |
· 一个可选的Weight sub-TLV · 0到多个Segment sub-TLVs |
Weight Sub-TLV用于承载SID列表的权重。
Weight Sub-TLV的报文格式如图34所示。
图34 Weight Sub-TLV
Weight Sub-TLV包含字段如表6所示。
表6 Weight Sub-TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
8比特 |
类型,取值为9 |
Length |
8比特 |
长度 |
Flags |
8比特 |
标志位 |
Reserved |
8比特 |
预留值,取值为0 |
Weight |
32比特 |
SID列表的权重值 |
BGP-LS汇总IGP协议收集的拓扑信息上送给控制器,使得控制器可以了解全网拓扑,并基于全网拓扑计算最优路径。
BGP-LS特性产生前,控制器通过IGP(OSPF、OSPFv3或IS-IS)协议泛洪的方式收集网络的拓扑信息,对于跨IGP域的拓扑信息收集,IGP协议需要将各个域的拓扑信息单独上送给控制器,如果存在多种IGP协议的网络中,控制器还需要支持不同的IGP协议。使用BGP-LS收集的拓扑信息,对于控制器仅需支持BGP-LS,且由BGP-LS汇总各个域的拓扑信息,更加方便。
为了收集拓扑信息,BGP-LS在原有BGP的基础上,引入了一系列新的NLRI(Network Layer Reachability Information,网络层可达信息)来携带链路、节点和IPv4/IPv6前缀相关信息,这种新的NLRI叫做链路状态NLRI(Link-State NLRI)。在RFC7752中定义了:
· Type值为1的Node NLRI;
· Type值为2的Link NLRI;
· Type值为3的IPv4 Topology Prefix NLRI;
· Type值为4的IPv6 Topology Prefix NLRI。
根据draft-ietf-idr-te-lsp-distribution草案,TE Policy(含SRv6 TE Policy、SR-MPLS TE Policy、RSVP-TE等)的信息也通过链路状态NLRI(Link-State NLRI)来携带,其NLRI的Type值为5。NLRI的报文格式如下:
图35 TE Policy NLRI的格式
TE Policy NLRI包含字段如表7所示。
表7 TE Policy NLRI的字段描述表
字段名称 |
长度 |
含义 |
Protocol-ID |
8比特 |
协议ID,BGP-LS通过指定协议学习节点的TE Policy 信息: · 8:RSVP-TE · 9:Segment Routing |
Identifier |
64比特 |
节点标识符 |
Node Descriptors |
长度可变 |
描述头端节点 |
TE Policy Descriptors |
长度可变 |
TE Policy的相关信息,SRv6 TE Policy的NLRI中必须携带SR Policy Candidate Path Descriptor TLV |
SRv6 TE Policy的NLRI中必须携带SR Policy Candidate Path Descriptor TLV,其格式如下:
图36 SR Policy Candidate Path Descriptor TLV的格式
SR Policy Candidate Path Descriptor TLV包含字段如表8所示。
表8 TE Policy NLRI的字段描述表
字段名称 |
长度 |
含义 |
Type |
16比特 |
类型,取值为554 |
Length |
16比特 |
长度,取值为24或36或48字节 |
Protocol |
8比特 |
生成候选路径的协议类型,取值包括: · PCEP · BGP · 静态配置(NETCONF或CLI配置) |
Flags |
8比特 |
标志位 |
Reserved |
8比特 |
预留位,全为0 |
Endpoint |
32或128比特 |
SRv6 TE Policy的目的节点 |
Color |
32比特 |
SRv6 TE Policy的Color属性 |
Originator AS Number |
32比特 |
生成候选路径的自治系统编号 |
Originator Address |
32或128比特 |
生成候选路径的设备地址 |
Discriminator |
32比特 |
候选路径的标识符 |
除SR Policy Candidate Path Descriptor TLV外,BGP-LS还为TE Policy NLRI定义了多种可选非传递的属性,以通告SRv6 TE Policy的候选路径状态等各种信息。
BGP-LS针对SRv6 TE Policy的扩展具体如表9所示。
表9 BGP-LS针对SRv6 TE Policy的扩展
TLV名称 |
作用 |
携带位置 |
SR Binding SID TLV |
通告SRv6 TE Policy候选路径的BSID,BSID可以是4字节的MPLS标签或16字节的SRv6 SID |
TE Policy NLRI |
SRv6 Binding SID TLV |
通告SRv6 TE Policy候选路径的BSID,BSID固定为16字节 |
TE Policy NLRI |
SR Candidate Path State TLV |
通告SRv6 TE Policy候选路径的属性和状态信息 |
TE Policy NLRI |
SR Policy Name TLV |
通告SRv6 TE Policy的名称 |
TE Policy NLRI |
SR Candidate Path Name TLV |
通告SRv6 TE Policy候选路径的名称 |
TE Policy NLRI |
SR Candidate Path Constraints TLV |
通告SRv6 TE Policy候选路径的约束条件,这些约束条件通常应用于由头端动态计算候选路径 |
TE Policy NLRI |
SR Affinity Constraint Sub-TLV |
通告SRv6 TE Policy候选路径的亲和属性 |
SR Candidate Path Constraints TLV |
SR SRLG Constraint Sub-TLV |
通告SRv6 TE Policy候选路径的共享风险链路组的值 |
SR Candidate Path Constraints TLV |
SR Bandwidth Constraint Sub-TLV |
通告SRv6 TE Policy候选路径的带宽要求 |
SR Candidate Path Constraints TLV |
SR Disjoint Group Constraint Sub-TLV |
通告SRv6 TE Policy候选路径的不相交约束组标识 |
SR Candidate Path Constraints TLV |
SR Bidirectional Group Constraint Sub-TLV |
通告SRv6 TE Policy候选路径的双向组标识 |
SR Candidate Path Constraints TLV |
SR Metric Constraint Sub-TLV |
通告SRv6 TE Policy候选路径的度量值 |
SR Candidate Path Constraints TLV |
SR Segment List TLV |
通告SRv6 TE Policy候选路径的SID列表 |
TE Policy NLRI |
SR Segment Sub-TLV |
通告SRv6 TE Policy候选路径的SID列表中的某个SID值 |
SR Segment List TLV |
SR Binding SID TLV用于通告SRv6 TE Policy候选路径的BSID。
图37 SR Binding SID TLV的格式
SR Binding SID TLV包含字段如表10所示。
表10 SR Binding SID TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
16比特 |
类型,取值为1201 |
Length |
16比特 |
长度 |
BSID Flags |
16比特 |
候选路径BSID的标志位,长度2字节: · D-Flag:标识该BSID是一个SRv6 SID还是一个MPLS标签 · B-Flag:标识BSID的值是否正常分配 · U-Flag:标识Specified BSID是否可用 · L-Flag:标识是从SRLB标签段中分配的或动态标签池中分配 · F-Flag:标识指定的BSID不可用,需要动态分配 |
Reserved |
16比特 |
预留值,取值为0 |
Binding SID |
32或128比特 |
表示实际使用或分配的BSID值,这个值可能是预先指定的,指定后该BSID可用,也可能是动态分配的 |
Specified Binding SID |
32或128比特 |
标识指定的BSID值,未指定BSID则显示为0,指定的BSID值即使不可用也会显示 |
SRv6 Binding SID TLV用于通告SRv6 TE Policy候选路径的BSID。
图38 SRv6 Binding SID TLV的格式
SRv6 Binding SID TLV包含字段如表11所示。
表11 SRv6 Binding SID TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
16比特 |
类型,取值为1212 |
Length |
16比特 |
长度 |
BSID Flags |
16比特 |
候选路径BSID的标志位,长度2字节: · B-Flag:标识BSID的值是否正常分配 · U-Flag:标识Specified BSID是否可用 · F-Flag:标识指定的BSID不可用,需要动态分配 |
Reserved |
16比特 |
预留值,取值为0 |
Binding SID |
128比特 |
表示实际使用或分配的BSID值,这个值可能是预先指定的,指定后该BSID可用,也可能是动态分配的 |
Specified Binding SID |
128比特 |
标识指定的BSID值,未指定BSID则显示为0,指定的BSID值即使不可用也会显示 |
SR Candidate Path State TLV用于通告SRv6 TE Policy候选路径的属性和状态信息。
图39 SR Candidate Path State TLV的格式
SR Candidate Path State TLV包含字段如表12所示。
表12 SR Candidate Path State TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
16比特 |
类型,取值为1202 |
Length |
16比特 |
长度 |
Priority |
8比特 |
拓扑变化时候选路径的重新计算的优先顺序 |
Reserved |
8比特 |
预留值,取值为0 |
Flags |
16比特 |
候选路径的状态和属性信息 · S-Flag:标识候选路径shutdown状态 · A-Flag:标识候选路径是否主用状态 · B-Flag:标识候选路径是否备用状态 · E-Flag:标识候选路径是否表经过有效性评估 · V-Flag:标识候选路径是否至少有一个有效的SID列表 · O-Flag:标识候选路径是否根据ODN按需下一跳模板计算 · D-Flag:标识候选路径是否委托给PCE/控制器计算 · C-Flag:标识候选路径是否由PCE/控制器下发 · I-Flag:标识候选路径为优选的候选路径,SRv6 TE Policy不存在其他候选路径,本候选路径失效时丢弃流量的功能 · T-Flag:标识头节点上该SRv6 TE Policy可以用于标签缝接 · U-Flag:标识本候选路径所属的SRv6 TE Policy正处于所有候选路径失效时丢弃流量状态 |
Preference |
32比特 |
候选路径的优先级 |
SR Policy Name TLV用于通告SRv6 TE Policy的名称。
图40 SR Policy Name TLV的格式
SR Policy Name TLV包含字段如表13所示。
表13 SR Policy Name TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
16比特 |
类型,取值为1213 |
Length |
16比特 |
长度 |
SR Policy Name |
可变 |
SRv6 TE Policy的名称 |
SR Candidate Path Name TLV用于通告SRv6 TE Policy候选路径的名称。
图41 SR Candidate Path Name TLV的格式
SR Candidate Path Name TLV包含字段如表14所示。
表14 SR Candidate Path Name TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
16比特 |
类型,取值为1203 |
Length |
16比特 |
长度 |
Candidate Path Name |
可变 |
SRv6 TE Policy候选路径的名称 |
SR Candidate Path Constraints TLV用于通告SRv6 TE Policy候选路径的约束条件,这些约束条件通常应用于由头端动态计算候选路径。
图42 SR Candidate Path Constraints TLV的格式
SR Candidate Path Constraints TLV包含字段如表15所示。
表15 SR Candidate Path Constraints TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
16比特 |
类型,取值为1204 |
Length |
16比特 |
长度 |
Flags |
16比特 |
候选路径的约束条件 · D-Flag:标识候选路径的转发平面是基于SRv6还是SR-MPLS · P-Flag:标识候选路径的SID列表中优选保护类型的SID · U-Flag:标识候选路径的SID列表中优选非保护类型的SID · A-Flag:标识候选路径的SID列表中的SID属于指定的Flex-Algo Algorithm · T-Flag:标识候选路径的SID列表中的SID属于指定的拓扑 · S-Flag:标识候选路径的SID列表中严格要求SID为保护类型SID或非保护类型SID,而不是偏好 · F-Flag:标识候选路径在计算完成后是固定的,除非操作员干预,否则不会被修改 |
Reserved1 |
16比特 |
预留值,取值为0 |
MTID |
16比特 |
如果T-Flag置位,表示只能采用指定的IGP拓扑ID计算候选路径,如果T-Flag未置位,表示优先采用指定的IGP拓扑ID计算候选路径,如果无法计算可以采用其他IGP拓扑ID计算候选路径 |
Algorithm |
8比特 |
指定Flex-Algo算法ID,如果A-Flag置位,表示只能采用指定的Flex-Algo算法计算候选路径,如果A-Flag未置位,表示优先采用指定Flex-Algo算法计算候选路径,如果无法计算可以采用其他Flex-Algo算法计算候选路径 |
Reserved2 |
8比特 |
预留值,取值为0 |
Sub-TLVs |
可变 |
候选路径的TE约束条件Sub-TLV |
SR Segment List TLV用于通告SRv6 TE Policy候选路径中的一个SID列表。
图43 SR Segment List TLV的格式
SR Segment List TLV包含字段如表16所示。
表16 SR Segment List TLV的字段描述表
字段名称 |
长度 |
含义 |
Type |
16比特 |
类型,取值为1205 |
Length |
16比特 |
长度 |
Flags |
16比特 |
SID列表的状态信息 · D-Flag:标识SID列表是由SRv6 SID组成还是MPLS标签组成 · E-Flag:标识SID列表是一个静态指定的显式路径或动态路径 · C-Flag:如果置位,表示SID列表为动态路径时,已计算出一个SID列表,如果SID列表是静态指定的显式路径则一直置位 · V-Flag:表示SID列表通过了路径校验,或者未设置SID列表的校验功能 · R-Flag:表示SID列表的第一个SID是否可达 · F-Flag:表示SID列表动态计算失败 · A-Flag:表示SID列表中的所有SID均属于一个Flex-Algo算法 · T-Flag:表示SID列表中的所有SID均属于一个拓扑实例 · M-Flag:表示因BFD等检测失败,SID列表从转发表项中卸载 |
Reserved1 |
16比特 |
预留值,取值为0 |
MTID |
16比特 |
如果T-Flag置位,表示只能采用指定的IGP拓扑ID计算SID列表,如果T-Flag未置位,表示优先采用指定的IGP拓扑ID计算SID列表,如果无法计算可以采用其他IGP拓扑ID计算SID列表 |
Algorithm |
8比特 |
指定Flex-Algo算法ID,如果A-Flag置位,表示只能采用指定的Flex-Algo算法计算候选路径,如果A-Flag未置位,表示优先采用指定Flex-Algo算法计算候选路径,如果无法计算可以采用其他Flex-Algo算法计算候选路径 |
Reserved2 |
8比特 |
预留值,取值为0 |
Weight |
32比特 |
SID列表的权重值 |
Sub-TLV |
可变 |
SID列表的Sub-TLV |
· draft-ietf-spring-segment-routing-policy-09
· draft-ietf-idr-te-lsp-distribution
· RFC9256