Datacom-HCIE-15 SRv6原理与配置
Segment Routing架构设计之初,就为数据平面设计了两种实现方式:一种是SR-MPLS,其复用了MPLS数据平面,可以在现有IP/MPLS网络上增量部署;另一种是SRv6,使用IPv6数据平面,基于IPv6路由扩展头进行扩展。
本文将介绍SRv6的概念与原理和基于华为NetEngine系列路由器的应用。
SRv6概述
IP/MPLS网络简介
MPLS是一种介于二层和三层之间的2.5层技术,为面向无连接的IP网络增加了面向连接的属性。早期的MPLS标签转发能提高IP网络的转发效率,随着硬件能力提升此优点已不明显,但是面向连接的标签转发为IP网络提供很好的QoS保障,同时可以很好的支持TE、VPN和FRR。
IP/MPLS网络取代了ATM、FR和X.25等专用网络,最终MPLS被应用于IP骨干网、城域网、移动承载网等多种网络场景,用于支持多业务综合承载,实现了互联网的ALL IP化。
MPLS LDP与RSVP-TE存在的问题
SR的起源与解决方案
SDN概念的提出对网络产业产生巨大影响,业界出现了诸多用于实现SDN的协议,例如OpenFlow、POF(ProtocolOblivious Forwarding,协议无关转发)、P4(Programming Protocol-independent Packet Processors,编程协议无关的包处理)和Segment Routing。相比于革命性的协议,Segment Routing同时考虑了对现网的兼容、平滑演进和提供可编程能力,是事实上的SDN标准。
从MPLS到SRv6
MPLS带来了网络孤岛问题。SRv6统一转发平面,同时拥有简化协议、高扩展性和可编程等优势
SRv6的技术价值
SRv6技术本身可以简化现有网络协议,降低网络管理复杂度,除此以外,SRv6更核心的优势是NativeIPv6特质与网络编程能力。
基于Native IPv6特质,SRv6能更好地促进云网融合、兼容存量网络、提升跨域体验。
基于网络编程能力,SRv6可以更好地进行路径编程,满足业务的SLA,同时还能将网络和应用连接起来,构建智能云网。
SRv6原理
SRv6基本概念
SRv6原理简介
SRv6在头节点上对数据压入段路由扩展报文头(SRH,Segment Routing Header)来指导数据转发。
SRv6报文没有改变原有IPv6报文的封装结构,SRv6报文仍旧是IPv6报文,普通的IPv6设备也可以识别,所以说SRv6是Native IPv6技术。
SRv6 的Native IPv6特质使得SRv6设备能够和普通IPv6设备共同组网,对现有网络具有更好的兼容性。
SRv6 SRH介绍
RFC 8754中定义IPv6 SRH扩展头标准,在IPv6报文增加一个SRH扩展头。其格式如下:
SRv6 Segment介绍
SRv6 Segment是IPv6地址形式,通常也可以称为SRv6 SID(Segment Identifier)。
如图所示,SRv6 SID由Locator、Function和Arguments三部分组成,格式为Locator:Function:Arguments。注意Length(L+F+A) <= 128。当长度和小于128时,保留位用0补齐。
如果没有Arguments字段,格式则是Locator:Function。Locator占据IPv6地址的高比特位,Function部分占据IPv6地址的剩余部分。
SRv6 Segment: Locator
Locator是网络拓扑中的一个网络节点的标识,用于路由和转发报文到该节点,实现网络指令的可寻址。
Locator标识的位置信息由两个重要的属性:可路由和可聚合。节点配置Locator之后,系统会生成一条Locator网段路由,并且通过IGP在SR域内扩散。网络内其他节点通过Locator网段路由就可以定位到本节点,同时本节点发布的所有SRv6SID也都可以通过该条Locator网段路由到达。
在华为设备配置中,如图配置前缀为2001:DB8:ABCD::,长度为64 bit:
[Huawei] segment-routing ipv6
[Huawei-segment-routing-ipv6] locator srv6_locator1 ipv6-prefix 2001:DB8:ABCD:: 64
SRv6 Segment: Function & Arguments
Function用来标识该指令要执行的转发动作。在SRv6网络编程中,不同的转发行为由不同的Function来标识,例如在RFC中定义了公认的End、End.X、End.DX4、End.DX6等。
例如End.x类似SR-MPLS中的Adjacency SID,用于标识某条链路,配置如图:
[Huawei-segment-routing-ipv6] locator srv6_locator1 ipv6-prefix 2001:DB8:ABCD:: 64
[Huawei-segment-routing-ipv6] opcode ::1 end-x interface G3/0/0 next-hop 2001:DB8:200::1
此Function对应的opcode为::1,此时没有Arguments,那么SRv6 SID值为2001:db8🔡:1。
此Function的行为表示将报文从指定接口(G3/0/0),转发给对应的邻居节点(2001:DB8:200::1)。
SRv6 Segment类型介绍
SRv6 Segment命名规则
SRv6 Segment的命名遵循一定规则,可以从命名组合中快速判断指令功能:
End:End是最基础的Segment Endpoint执行指令,表示中止当前指令,开始执行下一个指令。对应的转发动作是将SL值-1,并将SL指向的SID复制到IPv6报文头的目的地址中。
X:指定一个或一组三层接口转发报文。对应的转发行为是按照指定出接口转发报文。
T:查询路由表并转发报文。
D:解封装。移除IPv6报文头和与它相关的扩展报文头。
V:根据VLAN查表转发。
U:根据单播MAC查表转发。
M:查询二层转发表进行组播转发。
B6:应用指定的SRv6 Policy。
BM:应用指定的SR-MPLS Policy。
SRv6 Segment举例
End SID用于标识网络中的某个目的节点(Node)。类似SR-MPLS中的Node SID。End SID通过IGP协议扩散到其他网元,全局可见,本 地有效。
End.X SID表示三层交叉连接的Endpoint SID,用于标识网络中的某条链路。类似SR-MPLS中的Adjacency SID。End.X SID通过IGP协议扩 散到其他网元全局可见,本地有效。
End.DT4 SID表示PE类型的Endpoint SID,用于标识网络中的某个IPv4 VPN实例。End.DT4 SID对应的转发动作是解封装报文,并且查找IPv4 VPN实例路由表转发。End.DT4 SID在L3VPNv4场景使用,等价于IPv4 VPN的标签。End.DT4 SID可以通过静态配置生成,也可以通 过BGP在Locator的动态SID范围内自动分配。
SRv6 Flavors附加行为
Flavors是为了增强SRv6 Segment而定义的附加行为。这些附加行为是可选项,它们将会增强SRv6 Segment的执行动作,满足更丰富的业务需求。
Segment Routing over IPv6 (SRv6) Network Programming中定义了以下附加行为,PSP(Penultimate SegmentPop of the SRH,倒数第二段弹出SRH)、USP(Ultimate Segment Pop of the SRH,倒数第一段弹出SRH)和USD(Ultimate Segment Decapsulation,倒数第一段解封装)。
SRv6 Locator配置命令
- 使能SRv6功能,并进入SRv6视图
[Huawei] segment-routing ipv6
配置segment-routing ipv6命令后,可以在SRv6视图下配置Locator和SRv6 SID,以生成SRv6 Local SID转发表项。 - 配置SRv6 SID Locator字段
[Huawei-segment-routing-ipv6] locator locator-name [ ipv6-prefix ipv6-address prefix-length [ [ static static-length ] |[ args args-length ] ] * ]
SRv6 SID是IPv6地址形式,总计128位。SRv6 SID格式为Locator:Function:Args。其中:
Locator字段对应ipv6-prefix ipv6-address参数,长度由prefix-length参数决定。
Function字段也称为Opcode,可以通过IGP协议动态分配,也可以通过opcode命令静态配置。配置Locator时可以通过static static-length参数指定静态段长度,静态段长度决定能够在该Locator下配置多少静态Opcode,IGP协议动态分配Opcode时会在静态段范围外申请,确保最终构成的SRv6 SID不会冲突。
Args字段由args args-length参数决定,Args字段在SRv6 SID里是可选的,由命令配置决定。
3. 配置静态End SID的Opcode
[Huawei-segment-routing-ipv6-locator] opcode func-opcode end [no-flavor | psp | psp-usp-usd ]
End SID标识一个SRv6节点。
4. 静态配置End.X SID的Opcode
[Huawei-segment-routing-ipv6-locator] opcode func-opcode end-x interface {interface-name | interface-typeinterface-number} nexthop nexthop-address [no-flavor | psp | psp-usp-usd]
End.X SID全称为Layer-3 cross-connect,表示SRv6节点的三层邻接。所以在参数配置过程中需要指定接口和接口下一跳地址。
SRv6 Locator配置示例
SRv6 SID分为静态配置和动态配置两种方式。动态配置只需要配置locator命令,opcode由IGP动态分配。静态配置则手动配置对应类型SID的opcode。
Locator命令的参数关系简示如下:
静态配置SID时,SID只占用静态段范围,静态段取值从1开始,动态段设置为0;动态分配SID时,SID会占用动态段和静态段范围,动态段取值从1开始,静态段取值从0开始。
本配置示例Locator是2001:DB8:ABCD::,长度占用64位,静态段占用32位,动态段占用32位,args字段占用0位。取值范围如下:
静态段起始值: 2001:DB8:ABCD:0000:0000:0000:0000:0001;静态段结束值: 2001:DB8:ABCD:0000:0000:0000:FFFF:FFFF
动态段起始值: 2001:DB8:ABCD:0000:0000:0001:0000:0000;动态段结束值: 2001:DB8:ABCD:0000:FFFF:FFFF:FFFF:FFFF
推荐静态配置End SID和End.X SID。动态生成的SID如果设备重启,SID会变化,不利于维护。
SRv6节点介绍
SRv6节点
RFC8754中定义了SR有三种类型节点:
源节点(SR Source Node):生成SRv6报文的源节点。
中转节点(Transit Node):转发SRv6报文但不进行SRv6处理的IPv6节点。
Endpoint节点(SR Segment Endpoint Node):接收并处理SRv6报文的任何节点,其中该报文的IPv6目标地址必须是本地配置的SID或者本地接口地址。
SRv6源节点
源节点将数据包引导到SRv6 Segment List中,如果SRv6 Segment List只包含单个SID,并且无需在SRv6报文中添加信息或TLV字段,则SRv6报文的目的地址字段设置为该SID。
源节点可以是生成IPv6报文且支持SRv6的主机,也可以是SRv6域的边缘设备。
源节点行为
SRv6源节点负责将流量引导到SRv6 Policy中,并执行可能的SRH封装。以下列举了SRv6源节点封装报头的几种模式:
中转节点
中转节点是在SRv6报文转发路径上不参与SRv6处理的IPv6节点,中转节点只执行普通的IPv6报文转发。
当节点收到SRv6报文后解析报文的IPv6目的地址字段。如果IPv6目的地址不是本地配置的SRv6 SID也不是本地接口地址,节点则将SRv6报文当做普通IPv6报文查询路由表执行转发,不处理SRH。
中转节点可以是普通的IPv6节点,也可以是支持SRv6的节点。
Endpoint节点
在SRv6报文转发过程中,节点接收报文的IPv6目的地址是本地配置的SID,则节点被称为Endpoint节点。
例如:R3使用报文的IPv6目的地址FC03::3查找Local SID表,命中到End SID,随后R3将报文SL减1,同时将SL=1的SID做为报文目标IPv6地址,并查路由表转发出去。
Endpoint Node在数据的转发路径上可以有多个,每个Endpoint Node都会为报文提供转发,封装和解封装等服务。
SRv6转发原理
SRv6转发模式
SRv6有两种转发模式:SRv6 Policy和SRv6 BE。
SRv6 Policy可以实现流量工程,配合控制器可以更好地响应业务的差异化需求,做到业务驱动网络。
SRv6 BE是一种简化的SRv6实现,正常情况下不含有SRH扩展头,只能提供尽力而为的转发。
在SRv6发展早期,基于IPv6路由可达性,利用SRv6 BE快速开通业务,具有无与伦比的优势;在后续演进中,可以按需升级网络的中间节点,部署SRv6 Policy,满足高价值业务的需求。
SRv6 Locator信息扩散
无论基于SRv6 BE或是SRv6 Policy转发流量,路由器都需要有SRv6 Locator的相关路由信息才能转发SRv6报文。
SRv6节点通常通过扩展IGP(扩展OSPFv3或扩展IS-IS),将Locator相关路由扩散到网络节点上(包括源节点,中转节点,Endpoint节点)。
SRv6 BE转发过程
传统MPLS有LDP和RSVP-TE两种控制协议,其中LDP方式不支持流量工程能力,LDP利用IGP算路结果,建立LDPLSP指导转发。在SRv6里,也有类似的方式,只不过SRv6仅使用一个业务SID来指引报文在IP网络里进行尽力而为(Best Effort,BE)的转发,这种方式就是SRv6 BE。
SRv6 BE的转发路径计算依据IGP开销。
SRv6 Policy转发过程
在SRv6转发过程中每经过一个SRv6 Endpoint节点,Segments Left(SL)字段减1,IPv6报文头中的目的IPv6地址变换一次。Segments Left和Segment List字段共同决定IPv6 DA信息。
与SR-MPLS不同,SRv6 SRH是从下到上逆序操作,SRH中的Segment在经过节点后也不会被弹出。因此SRv6报头可以
做路径回溯。
SRv6 Policy路径建立与引流
SRv6 Policy简介
SRv6 Policy是在SRv6技术基础上发展的一种新的引流技术。
SRv6 Policy路径表示为指定路径的段列表(Segment List),称为SID列表(Segment IDList)。每个SID列表是从源到目的地的端到端路径,并指示网络中的设备遵循指定的路径,而不是遵循IGP计算的最短路径。
如果数据包被导入SRv6 Policy中,SID列表由头端添加到数据包上,网络的其余设备执行SID列表中嵌入的指令。
标识SRv6 Policy
一个SRv6 Policy有一个元组标识<headend, color, endpoint>。
对于一个指定的源节点,SRv6 Policy由<color, endpoint>标识:
头端(headend):SRv6 Policy生成的节点,一般是全局唯一的IP地址。
颜色(color):32比特扩展团体属性,用于标识某一种业务意图(例如低延时)。
尾端(endpoint):SRv6 Policy的目的地址,一般是全局唯一的IPv6地址。
在特定头端,color和endpoint被用于标识SRv6 Policy转发路径。
SRv6 Policy路径建立
SRv6 Policy路径模型
一个SRv6 Policy可以包含多个候选路径(Candidate Path)。候选路径携带优先级属性(Preference)。优先级最高的有效候选路径为SRv6 Policy的主路径,优先级次高的有效路径为SRv6 Policy的备份路径。
一个候选路径就是SRv6 Policy通过静态配置或BGP IPv6 SR Policy向头端发送的基础单元。
Segment List附带权重(Weight)来控制SRv6路径的负载分担。
SRv6 Policy路径建立概述
在华为SRv6 Policy解决方案架构中,依赖控制器(iMaster NCE-IP)建立SRv6 Policy路径:
- 控制器通过BGP-LS(Link-state)收集扩展IGP协议收集的拓扑信息,用于计算SRv6 Policy路径和状态呈现。
- 控制器通过BGP IPv6 SR Policy协议向源节点下发SRv6 Policy信息(headend、color、endpoint等)。
在华为SRv6 Policy解决方案中,还会使用NETCONF协议,该协议主要用于下发业务接口、路由策略(添加Color属性)等其他配置。
除了通过iMaster NCE-IP下发SRv6 Policy之外,也可以通过手工的方式部署SRv6 Policy。
通过BGP-LS收集信息
在华为SRv6 Policy解决方案架构中,BGP-LS的主要功能有两个:
通过BGP-LS路由将IS-IS/OSPFv3收集的拓扑信息,前缀信息,SRv6 Locator和SID信息通告给iMaster NCE-IP。
通过BGP-LS路由通告SRv6 Policy的状态。
通过BGP IPv6 SR Policy下发路径
iMaster NCE-IP可以通过BGP IPv6 SR Policy邻居下发SRv6 Policy给源节点。
SRv6 Policy在BGP路由表呈现为[distinguisher][color][endpoint]。
SRv6 Policy跨域路径建立
SRv6设备需要获取全网的SID信息才能实现端到端的数据转发。
在一个AS内,设备可以通过扩展的IGP协议(扩展OSPFv3或扩展IS-IS)获取AS内的SID信息,而在跨域场景中需要借助BGP帮助传递SID信息,这种通过BGP传递SID的技术叫做BGP EPE(Egress PeerEngineering)。
SRv6 Policy路径粘连
SRv6的SRH头部有栈深的限制,因此对于大型网络可以部署SRv6路径粘连方案。
路径粘连主要通过粘连SID与粘连节点实现:
粘连SID也叫Binding SID,通过Binding SID可以表示一段SRv6 Policy转发路径。
粘连节点会处理Binding SID,并压入SRH信息,粘连节点一般是ABR或ASBR设备。
SRv6粘连标签常用的有两种封装模式:
Insert模式:在原始IPv6 报文头后插入一个 SRH,数据包基于原始IPv6头部与新SRH头指导转发。
Encaps模式:在原始IPv6 报文头前插入外层IPv6头部与SRH头,数据包基于外层IPv6头部与SRH头部转发数据。
SRv6 Policy引流
SRv6 Policy基于Color引流
SRv6 Policy可以基于路由Color属性引流。Color引流是直接基于路由的扩展团体属性Color和目的地址迭代到SRv6 Policy。
SRv6 Policy基于DSCP引流
对于去往同一个目的地址的不同业务流量(HTTP,FTP等),基于Color引流会导致所有流量都迭代到同一条转发路径,无法精细化控制流量,因此需要使用基于DSCP引流的方式将流量迭代到不同的转发路径。
SRv6典型用例
L3VPN Over SRv6 Policy
当使用SRv6 Policy承载VPN流量时,最末跳SRv6设备在处理数据时,与普通SRv6处理数据的方式稍有不同。
L3VPN Over SRv6 BE
SRv6 BE(Best Effort)承载VPN流量时,PE之间的P设备不作为Endpoint节点使用。
Native IPv6 Over SRv6 Policy
普通IPv6数据也能被SRv6承载。
SRv6高可靠性
SRv6高可靠性概述
广域承载网高可靠性需求
50 ms故障恢复已经成为广域承载网基础要求。
语音业务:实时性强,如果故障恢复时间控制在毫秒级,用户无感知或有轻微感觉,对业务影响不大,达到秒级,则会话中断。
IPTV业务:如果故障恢复时间控制在毫秒级,IPTV可能出现瞬时马赛克现象。
多层可靠性方案概览
广域承载网需要从设备、网络、业务各层构建高可靠性,实现端到端99.999%高可用、全业务50 ms快速保护倒换。
多层网络高可靠性技术概览
多层网络高可靠性技术使用场景
SRv6隧道状态检测与隧道保护
SRv6隧道检测技术
SRv6隧道一般可以通过SBFD,Ping,Tracert等方式检测连通性。
SBFD工作原理
SRv6 Ping/Tracert介绍
SRv6 Ping工作原理
SRv6 Ping可以分为逐段Ping测试与非逐段Ping测试(端到端)。
SRv6 Tracert工作原理
SRv6 Tracert可以分为Overlay Tracert与非Overlay Tracert。
隧道保护技术概述
SRv6隧道保护可以分为两大类:本地保护和端到端保护
本地保护技术
TI-LFA FRR原理
TI-LFA(Topology-Independent Loop-free Alternate)FRR能为SRv6隧道提供链路及节点的保护。当某处链路或节点故障时,流量会快速切换到备份路径继续转发。
如图,PE1到PE2的最短路径也就是主用路径为PE1->P1->P4->PE2,P1需要计算到PE2的TI-LFA备份路径:
- 排除主下一跳(Link P1->P4)计算收敛后的最短路径:P1->P2->P3->P4->PE2。
- 计算P空间和Q空间,P空间为(P1,P2),Q空间为(P3,P4,PE2)。
- 计算TI-LFA路径:把任意路径表示为多段路径:源节点<–>P<–>Q<->目的节点。其中源节点到P是无环路径,Q到目的节点是无环路径。P到Q使用严格显式路径(END.X SID)来表达,这样整个TI-LFA严格显式路径一定是无环的。为了简化修复路径,选取P空间中离源节点最远的节点P2,以及Q空间中距离目的节点最远的节点P3,以及PQ之间的链
路。 - P1感知到P1->PE2接口状态为Down,使用备份表项转发,封装新的SRH。其中Segment List为FC03::6:C4,FC06:,并修改IPv6目的地址为FC03::C4,之后将报文转发到备份出接口为B->C。
TI-LFA FRR的局限
在SRv6 Policy中,经常要约束数据报文在网络中的转发路径,需要指定报文沿途经过的节点或链路。但如果某些必须经过的节点或链路出现故障后,TI-LFA FRR就无法达到保护的作用。
Midpoint保护概述
为了解决SRv6 Policy场景由于严格节点约束导致的TI-LFA FRR保护失效问题,需要由中间节点(Midpoint)的上游节点代替它完成这个转发处理,这个上游节点称之为代理转发(Proxy Forwarding)节点。
代理转发节点感知到报文的下一跳接口故障,并且下一跳是报文目的地址,且SL > 0时,代理转发节点代替中间节点执行End行为,将SL减1,并将下层要处理的SID更新到外层IPv6报文头,然后按照下层SID的指令进行转发,从而绕过故障节点,实现SRv6中间节点故障的保护。
Midpoint保护原理
Midpoint保护流程:
- 正常时,P1节点计算了到各个节点的IGP最短路径和TI-LFA备份路径,例如去PE2节点的最短路径和TI-LFA路径。
- 当节点P1配置了Middle point TI-LFA后,如果节点P2发生故障时,P1感知到P2的出接口故障,报文的目的地址P2为P1的直连邻居,且SRH的SL>0,会触发Middle point TI-LFA动作。
- 节点P1执行代理转发,SL减一,将Next SID FC06::6拷贝到IPv6目的地址中,后根据目的地址PE2转发,流量可以经过P1->P3->P4顺利到达PE2。
- 节点P1进行代理转发后,如果发现到目的地址PE2的下一跳依然是P2,此时P1将流量转发到TI-LFA备份路径。也就是说P1在进行了Middlepoint TI-LFA之后,紧接着进行一次基础TI-LFA处理,从而实现流量切换到正确的备份路径。
- 节点PE1完成IGP收敛之后,删除到P2的FIB表项,而此时如果iMasterNCE-IP还下发新的Policy的Segment List,节点PE2也会进行ProxyForwarding处理,SL减一,将Next SID FC06::6作为IPv6目的地址,并沿途转发到PE2。
微环介绍
TI-LFA FRR以及Midpoint保护能够在IGP收敛完成前,短暂的维持数据转发,但是当IGP收敛完成后转发便不再会基于FRR的方式(隧道方式)进行转发,而是基于IGP路由按照正常的方式转发数据。
但现网中设备的收敛速度有可能是不一样的,因此有可能产生短暂的环路,直到沿途的路由器都收敛完成此类环路才会消失,这种短暂的环路被称为微环。
本地正切微环
本地正切防微环指的是紧邻故障点的节点收敛后引发的环路
- P1->P4间的链路故障时,流量先按TI-LFA备份路径转发。
- 当P1收敛后,将下一跳收敛到P2 ,P1按照收敛后的路径把流量转发到P2。
- 但网络中P2和其它结点还未收敛,P2到节点PE2的下一跳还是P1,这样就会在P1和P2间形成环路,直到P2收敛完成。
本地正切防微环方案
防微环的措施是该节点收敛后延迟一段时间再下发转发路径,避免故障点相邻节点在IGP收敛后引发环路,具体流程如下:
- P1感知到P4的接口故障,进入TI-LFA流程,报文按照TI-LFA备份路径转发到PE2。
- P1启动定时器,在定时器超时之前保持原转发表项,继续按照TI-LFA备份路径转发。
- 定时器超时,网络中其他节点均完成收敛,P1进行收敛,按照新的路径正常转发。
由于TI-LFA一定是个无环路径,所以只需要维持一段时间继续走TI-LFA路径,待网络中其他结点完成收敛以后退出TI-LFA。
远端正切微环
故障发生在远端,节点之间也可能形成环路。
沿着报文转发路径,如果离故障点更近的节点先于离故障点远的节点收敛,就可能会导致环路:
- P3->P4之间链路故障,假设P3执行本地正切防微环,延时收敛,流量沿着TI-LFA备份路径转发。但是只有P3进行延时收敛,而网络中的其他节点依然正常进行IGP收敛。
- P2先收敛,计算到PE2的新路径为P2->P1->P5->PE2,则流量到达P2之后不会向P3转发而是回发到P1。
- P1尚未收敛完成,依然沿着旧路径转发P1->P2->P3->P4->P5->PE2,流量又回发到P2,形成环路
远端正切防微环方案
网络节点只能针对本地直连的链路/节点故障预先计算无环备份路径,而无法针对网络中任何潜在的故障预先计算无环路径。所以要解决微环问题,需要在节点收敛之后计算无环路径。
如下图,P2收敛后的计算无环的TI-LFA路径,路径为P2->P1->P5->PE2。P3计算的防环路径可以是严格显式路径,也可以是松散路径。
回切微环
分布式计算的收敛无序性同样影响着故障回切场景,
导致存在微环:
- P1->P4之间的链路故障,PE1到PE2的路径为PE1->P1->P2->P3->P4->PE2。
- 当P1->P4之间的链路故障恢复,如果P2完成收敛,P2上到PE2的路径为P2->P1->P4->PE2,P2将流量转发到P1。
- 而此时P1上可能由于存在大量业务,或者CPU利用率比较高等因素,导致尚未完成IGP收敛,依然使用旧路径讲流量继续回发到P2,从而形成环路。
回切防微环方案
回切防微环的方式与远端正切防微环类似
如下图所示,P2在收敛之后,在报文中封装新的SRH,约束流量按照收敛后路径转发,按照严格显式路径将流量转发到目的地址。当P1收敛后,流量在P1按照收敛后路径转发到PE2结点。
端到端保护技术
SRv6 Policy HSB
通过在部署SRv6 Policy时配置两个优先级不同的candidate-path,可以实现端到端的SRv6 Policy隧道保护。其中preference高的为主路径,低的为备份路径,并为这两个路径启动SBFD检测。
当主路径的SBFD检测到故障时,主路径切换到备路径。
对于SRv6网络中如果有部分设备无法支持SRv6会导致无法使用本地保护,因此在这种场景下也可以使用HSB提供高可靠性。
SRv6 Policy ECMP
在部署SRv6 Policy时可以在一个candidate-path中配置两个Segment-list,可以实现SRv6 Policy负载均衡。数据在两个路径之间负载均衡。
当其中一个路径失效时,数据依然可以在另一个路径上转发。
SRv6 Policy逃生路径
当PE1通过SBFD感知到主路径和备份路径都失效的情况下,PE1会将流量承载与SRv6 BE隧道之上。
SRv6尾节点保护与接入保护
SRv6尾节点保护概述
对于同一个源端节点,SRv6 Policy是基于<Color,Endpoint>确定隧道的,当Endpoint即尾节点出现故障时隧道就无法将数据发送目标网段。
由此可见,SRv6隧道常用的局部保护和端到端保护只能保护隧道的源端PE与中间的P设备,不能保护SRv6尾节点。
当尾节点出现故障时,主要通过VPN FRR技术修复,除此之外也可以通过Anycast FRR与镜像保护技术修复。
VPN FRR介绍
VPN FRR通过直接形成VPN备份路由解决了尾节点故障的问题。VPN FRR原理如下:
源端PE基于学习到的两条不同下一跳PE的私网路由,预先计算出主备路由并下发FIB,结合BFD快速探测远端PE故障,在感知到远端故障后且VPN路由收敛前,先将VPN流量切换到备份路径上。
Anycast FRR介绍
Anycast FRR通过在CE双归的PE上部署相同的Locator和VPN SID来实现SRv6尾节点保护。
SRv6接入保护介绍
当CE双归PE时,如果尾节点PE到CE的链路发生故障,则有可能导致流量丢失,此时可以使用Mixed FRR技术解决。
PE2从CE2收到一份私网路由,同时从PE3收到一份私网路由,二者形成FRR保护。当PE2->CE2链路故障时,PE2检测故障,将所有相关流量导入备份路径PE3上,这种情况下,主路径下一跳是接入接口,备路径是SRv6隧道,形成混合FRR保护。
SRv6基础配置
SRv6 BE
L3VPNv4 over SRv6 BE
组网需求:
1.PE1和PE2设备各有一个CE属于VPN实例vpna。
2.在骨干网络中部署L3VPN迭代SRv6 BE路径,使得CE1和CE2的loopback1接口可以相互通信。
配置思路:
1.完成设备接口IPv6地址及IS-IS配置(略)。
2.在PE1与PE2之间建立MP-BGP对等体关系。
3.骨干网上使能Segment Routing,建立SRv6 BE路径。
4.PE上配置使能IPv4地址族VPN实例。
5.PE之间配置MP-IBGP交换路由信息。
6.结果验证。
SRv6 Policy
L3VPNv4 over SRv6 Policy
组网需求:
1.PE1和PE2设备各有一个CE属于VPN实例vpna。
2.在骨干网络中部署L3VPN迭代SRv6 Policy,使得CE1和CE2的loopback1接口可以相互通信。
配置思路:
1.完成设备接口IPv6地址及IS-IS配置(略)。
2.在PE1与PE2之间建立MP-BGP对等体关系。
3.骨干网上使能Segment Routing,建立SRv6 Policy路径。
4.PE上配置使能IPv4地址族VPN实例,PE之间配置MP-IBGP交换路由信息。
5.配置隧道策略,引入私网流量。
6.结果验证。
基于iMaster NCE-IP部署SRv6
基于iMaster NCE-IP部署SRv6
现网中使用静态部署SRv6的方式会对网络运维带来较大挑战,比如:静态部署SRv6周期较长,无法根据全局规划路径,也无法根据网络质量调整现有SRv6的转发路径。
通过iMaster NCE-IP部署SRv6能较好地规避静态部署SRv6面临的问题。
iMaster NCE-IP通过以下几种协议部署SRv6隧道以及相关VPN业务。
BGP-LS
BGP IPv6 SR Policy
NETCONF
SRv6 Policy隧道发布流程
为方便配置,控制器提供以下功能:
创建双向隧道,即在创建源节点到宿节点的隧道时,直接创建宿节点到源节点的隧道。
支持创建隧道模板,Color模板,简化参数的重复配置。
在华为云广域网络解决方案中:
SRv6 Policy:配置信息由BGP IPv6 SR Policy下发,隧道状态由BGP-LS上报。
SRv6 Policy隧道算路所需关键信息
iMaster NCE-IP计算SRv6隧道路径需要通过IGP收集如下关键信息:
SID:END SID、END.X SID。
Locator:节点配置Locator之后,系统会生成一条Locator网段路由,并且通过IGP在SR域内扩散。网络内其他节点通过Locator网段路由就可以定位到本节点。
接口带宽信息:物理带宽、可预留带宽。
接口时延与丢包率信息。
网络拓扑信息。
BGP-LS将IGP收集的信息发布给iMaster NCE-IP.
IGP基本配置
在华为SRv6解决方案中,IGP推荐选用扩展IS-IS协议收集网络基本信息。
IGP基本配置如下:
IS-IS全局配置
[P1]isis 1
[P1-isis-1] is-level level-2
[P1-isis-1] cost-style wide //narrow模式不支持携带TE场景下所需的TE信息(带宽等),故需要配置为wide类型。
[P1-isis-1] network-entity 49.0001.0010.0000.0005.00
[P1-isis-1] is-name P1
[P1-isis-1] ipv6 enable topology ipv6
[P1-isis-1] ipv6 bgp-ls enable level-2 //将IS-IS收集到的拓扑信息通过BGP-LS发送到控制器,该功能只需要在RR上执行即可,即IGP域内其实只需要一台设备与控制器通过BGP-LS传递拓扑信息。
[P1-isis-1] ipv6 advertise link attributes //开启在LSP中携带链路属性相关TLV,TLV信息包括接口IPv6地址和接口Index。
[P1-isis-1] ipv6 metric-delay advertisement enable level-1-2 //配置IPv6时延发布功能,由IS-IS协议收集和扩散域内IPv4链路时延信息,通过BGP-LS上报控制器,控制器使用时延计算P2P网络的最佳路径信息。
[P1-isis-1] ipv6 traffic-eng level-2 //使能IS-IS的TE特性,向TE模块发送链路带宽信息
[P1]interface GigabitEthernet0/3/0
[P1-GigabitEthernet0/3/0] isis ipv6 enable 1
[P1-GigabitEthernet0/3/0] isis circuit-type p2p //IS-IS的接口网络类型必须配置为P2P,否则控制器无法形成网络拓扑。
BGP-LS上报拓扑信息到控制器
每台路由器维护一个或多个链路状态数据库,该数据库包含了多种链路属性,例如:接口IP地址、链路度量值、TE度量值、链路带宽、可预留带宽等信息。路由器的BGP进程从这些链路状态数据库中获取信息,并通过扩展的NLRI属性携带这些信息。
BGP-LS部署方案
BGP-LS主要用于上传网络拓扑信息与隧道信息,因此iMaster NCE-IP至少需要与两类设备建立BGP-LS邻居关系:
与AS内的某网络节点建立BGP-LS邻居关系:主要用于获取网络拓扑信息,一般使用BGP RR与控制器建立邻居关系。
与隧道源节点建立BGP-LS邻居关系:主要用于获取SRv6 Policy隧道状态。
BGP-LS部署一般有两种方案:
建立BGP-LS邻居
计算SRv6 Policy并部署
SRv6 Policy路径计算算法,在满足约束的情况下,控制器可以提供的算路结果包括:
最小开销:满足约束的所有路径中,cost最小的路径。
最小时延:满足约束的所有路径中,时延最小的路径。
带宽均衡:满足约束,cost也相同的所有路径中,剩余带宽更多的路径。
SRv6 Policy创建时需要指定每个隧道对应的Color。
BGP IPv6 SR Policy部署方案
BGP IPv6 SR Policy主要用于下发SRv6 Policy信息,因此iMaster NCE-IP至少需要隧道源节点建立BGP IPv6 SR Policy邻居关系:
BGP IPv6 SR Policy部署一般有两种方案:
建立BGP IPv6 SR Policy邻居
通过SRv6 Policy Group创建隧道
SRv6 Policy Group:快速建立共享相同SLA要求的一组隧道。
适用场景:在创建业务之前批量创建多条SRv6 Policy隧道。隧道类型可选两种类型:
Any To Any:在网元间建立全联接的网络。
Hub-Spoke:网元的角色分为Hub和Spoke两种,所有Spoke节点间的通信均须通过Hub节点传递。
在华为云广域网络解决方案中,SRv6 Policy Group用于隧道规划场景,即先将隧道路径计算完成,当有业务需求时,隧道按需下发。
通过SRv6 Policy承载VPN业务
在企业网场景中,通常有以下VPN类型:
L2VPN:客户IP地址在同一个网段,
L3VPN:客户IP地址在不同网段。
EVPN:融合L2VPN和L3VPN。
隧道策略(Tunnel Policy)是应用模块决定选择何种隧道的一种策略,隧道策略有两种方式:
隧道类型优先级:按照隧道类型的优先级顺序及参与负载分担的隧道条数迭代到对应的隧道(首选方式)。
隧道绑定:指将某个目的地址与某条隧道进行绑定,从而使应用了隧道绑定的VPN业务到该目的地址的流量只能承载在该条隧道上。
VPN业务从隧道策略中选择Up状态的隧道类型,然后再根据需求从满足条件的隧道类型中选择转发路径。
本文简单介绍了SRv6网络编程概念、SRv6指令集(Endpoint节点行为、源节点行为和Flavors)和
SRv6 Policy,并介绍基于华为NetEngine系列路由器的SRv6 SID基本配置。
• SRv6利用IPv6 128 bit地址的可编程能力,丰富了SRv6指令表达的网络功能。例如除可以标识转发路径
的指令外,还能标识VAS(防火墙、应用加速或用户网关等)。如果需要部署一个新的网络功能,只需要
定义一个新的指令即可,不需要改变协议的机制或部署。
• SRv6 Policy基于MP-BGP扩展新的NLRI承载信息。控制器和转发器建立BGP IPv6 SR Policy邻居关系以
下发SRv6 Policy。