SRv6技术研究和组网设计

SRv6技术研究和组网设计

一、SRv6技术简介

SRv6全称为Segment Routing IPv6,是当下最为热门的Segment Routing和IPv6两种网络技术的结合体,兼有前者的灵活选路能力和后者的亲和力,以及SRv6特有的设备级可编程能力,使其成为IPv6网络时代最有前景的组网技术。

IPv6大家都很熟悉,是取代IPv4的下一代网络协议,那Segment究竟是何物?可以把SRv6网络想象成一台分布式“计算机”,Segment列表好比程序,Segment就是指令,兼有寻址和行为能力。我们可以将用户意图翻译成Segment列表,并附在数据报文中,输入SRv6网络“计算机”,然后依次在不同的节点上执行Segment指令,比如切换到下一个Segment、压入或弹出Segment列表、关联L2/L3 VPN等,从而实现基本选路、VPN、OAM、Service Chaining、APN6(App-aware IPv6 Networking)等不同层面的功能。

在SDN组网中,由控制器负责编排和下发Segment列表,实现智能选路的目的。随着SRv6技术和协议的完善,网络设备编程能力的提高,有望通过SDN+SRv6定义一切网络功能,引领我们迈入智能网络世界。

二、SRv6编程框架

(一)SRv6 SID

SRv6中通过SID(Segment ID)标识每个Segment,SID是一种特殊的IPv6地址,既有普通IPv6地址的路由能力,又有SRv6特有的行为能力。

每个SRv6节点都会维护一张SID表(实际上是路由表的一部分),由许多128bit的SID组成,SID标准格式为Locator+Function(Args),如下所示:

SRv6技术研究和组网设计

Locator,标识SRv6节点的定位器,每个节点起码有一个全局唯一的Locator值,作为本地SID的共享前缀,其他节点通过Locator路由访问本节点SID。
Function(Args),标识SRv6节点内不同的行为,比如END、END.X等,少数行为还需要传递Args参数。
SRv6节点收到IPv6报文之后,会根据IPv6 DA(Destination Adddress)查找全局路由表,如果匹配到某个SID,则交由SID定义的行为或Behavior处理,否则执行常规的路由转发动作。

(二)SRv6 Policy

SRv6 Policy是一种将用户意图(SLA、服务链)翻译成网络策略的机制,内核为Segment列表。网络节点和终端设备都可以按需发起或者由控制器下发SRv6 Policy,中间节点无需维护任何状态,因此SRv6 Policy适用于任意规模的网络互联和终端通讯场景。
SRv6 Policy由多个Candidate Path(简称CP)构成,其中有一个为Active CP,决定整个SRv6 Policy的行为和状态,基本格式如下:
Java

1

2

3

4

5

6

<headend, color, endpoint>
Candidate-path CP1 <protocol-origin, originator, discriminator>
B-SID
Preference 200
Weight W1, SID-List1 <SID11…SID1i>
Weight W2, SID-List2 <SID21…SID2j>

SRv6 Policy由<Headend, Color, Endpoint>三元组唯一标识,Headend和Endpoint对应头尾节点的IPv6地址,通过Color参数区分两者之间的不同SRv6 Policy。Color是概括SRv6 Policy服务能力的标签,比如SLA级别(金银铜牌等),用户通过设置自己的Color,就能自动关联到相同Color的SRv6 Policy上,实现用户意图到底层网络的映射。

Candidate Path由<protocol-origin, originator, discriminator>三元组唯一标识,protocol-origin为CP的发起协议,比如BGP SR Policy或手工配置等,originator为发起者的标识,格式为 ASN: node-address,discriminator用于区分protocol-origin +originator下发的不同CP。CP携带Preference、B-SID、Segment-List等属性,含义如下:

Preference,标识CP的优先级,用于抉择同一SRv6 Policy下的不同CP,优先级最高的成为Active CP;
B-SID,标识CP或SRv6 Policy(Active CP)行为的SID,其他节点通过B-SID引用SRv6 Policy的功能;
Segment-List,标识CP的Segment列表,由Weight和多个顺序排列的Segment子属性组成,一个CP可以有多个Segment-List,根据Weight分担流量。
在SRv6 Policy之前,我们主要用TE Tunnel实现流量工程,那么为何SRv6中会主推SRv6 Policy呢?原因如下:
组网能力,TE Tunnel本质上是一种重量级的传统接口,会消耗设备的接口资源,无法支持太大规模的组网;SRv6 Policy本质上是一种轻量级的对象,数据结构非常简单,不占用设备的接口资源,能够支持超大规模的组网;
引流能力,TE Tunnel采用粗放的DSCP引流方式,难以直观准确的反映用户意图;SRv6 Policy采用精细的Color引流方式,能够如实反映和满足用户诉求;
开放能力,TE Tunnel只能为节点自己所用,而SRv6 Policy通过对外暴露B-SID,可以在隐藏内部实现的前提下,为其他节点或机构提供选路、服务链等能力;
业务能力,TE Tunnel本身没有直接的业务描述能力,需要组合应用多个TE Tunnel和其他的技术才能满足业务需求;SRv6 Policy是完全自洽和业务特征相关的,本身集成了多路径、SLA标签、行为处理等能力,单个SRv6 Policy就可以满足业务的网络需求。

由此可见,在SRv6 Policy各方面都完胜TE Tunnel,就是一种为Segment Routing量身定制的网络技术,可以说SRv6的强大能力大部分是通过SRv6 Policy输出的。
(三)SRH
SRH(Source Routing Head)为SID列表的载体,基于IPv6路由扩展头(协议号43),新增路由类型4,是SRv6体系中最为重要的数据封装标准,具体格式如下:

SRv6技术研究和组网设计

Segment[n-1]…Segment[0]组成了完整的Segment列表或路径,SL(Segment Left)指示当前活跃的Segment。头节点SL=n-1,IPv6 DA=Segment[n-1],中间节点收到IPv6报文,如果IPv6 DA为节点本地SID,则进入SRH处理流程。暂不考虑具体SID,SRH基本行为如下:

Java

 

1

2

3

4

5

6

7

8

9

10

S01.  IF SL==0{

S02.    继续处理SRH指示的下一个扩展头

}

S03.  ELSE{

S04.    IF 本地配置要求TLV处理{

S05.      处理TLV

}

S06.    SL=SL-1,Segment[SL]复制到IPv6 DA

S07.    IPv6路由转发

}

标准SRH封装中,每个SID占用16bytes,对于长Segment列表的应用,需要考虑封装开销对MTU和传输效率的影响。业界也在研究可行的SRH压缩方法,比如G-SRH(Generalized SRH)、uSID(Micro SID)等。
SRH还能携带可选的TLV参数,以扩展支持NSH/Service Chaining、OAM、VTN(Virtual Transport Network)、APN6等高级特性。

(四)SRv6 Behavior

SRv6网络编程标准中,SRv6节点(Endpoint)通过本地定义的行为(Behavior)处理SRv6报文。SRv6定义了多种Endpoint Behavior,每个节点需要实例化它们和分配SID,并通过路由协议公布,以便外部了解节点所能提供的Behavior。

常用的Endpoint Behavior有END、END.X、END.DT4、END.DT6等,实现Underlay选路、Overlay业务承载等功能,具体如下:

END用于标识SRv6节点,具体行为还跟附加的USP(Ultimate Segment Pop)、PSP(Penultimate Segment Pop)、USD(Ultimate Segment Decapsulation)等Flavor有关系,分别代表最后一跳弹出SRH、倒数第二跳弹出SRH、最后一跳解封装,以满足不同的路径编排需求。假设收到一个IPv6报文,IPv6 DA为本节点END SID with PSP,处理流程如下:

S01. IF SL==0{ #无SRH等同于SL为0
S02. 向IPv6 SA(Source Address)发送ICMP Parameter Problem,结束
}
S03. SL=SL-1,Segment[SL]复制到IPv6 DA
S04. IF SL==0{
S05. 将前一个报文头中的NH更新为SRH中的NH,弹出SRH扩展头
}
S06. IPv6路由转发

END.X用于标识SRv6邻居,具体行为也跟Flavor有关。假设收到一个IPv6报文,IPv6 DA为本节点END.X SID with PSP,处理流程与END相似,区别在于S06:

S06. 转发给END.X指定的邻居

END.DT4用于标识SRv6节点的IPv4 VPN路由表。假设收到一个IPv6报文,IPv6 DA为本节点END.DT4 SID,处理流程如下:

S01. IF SL!=0{
S02. 向IPv6 SA发送ICMP Parameter Problem,结束
}
S03. 剥离外层IPv6头以及所有扩展头
S04. 根据END.DT4 SID关联的路由表转发内层IPv4报文

END.DT6用于标识SRv6节点的IPv6 VPN路由表。假设收到一个IPv6报文,IPv6 DA为本节点END.DT6 SID,处理流程与END.DT4相似,区别在于S04:

S04. 根据END.DT6 SID关联的路由表转发内层IPv6报文

END.B6.Encaps属于一种SRv6 Policy B-SID实例,为原始SRv6报文添加外层封装。假设收到一个IPv6报文,IPv6 DA为本节点END.B6.Encaps SID,处理流程如下:

S01. IF SL==0{
S02. 向IPv6 SA发送ICMP Parameter Problem,结束
}
S03. SL=SL-1
S04. 添加外层IPv6报文头+SRH B,B对应SRv6 Policy的Segment List
S05. 外层IPv6 SA设置为A,IPv6 DA设置为B的第一个Segment,
S06. IPv6路由转发

END.B6.Insert属于另一种SRv6 Policy B-SID实例,为原始SRv6报文插入SRH。假设收到一个IPv6报文,IPv6 DA为本节点END.B6.Insert SID,处理流程如下:

S01. IF SL==0{
S02. 向IPv6 SA发送ICMP Parameter Problem,结束
}
S03. 插入SRH B,B对应SRv6 Policy的Segment List
S04. IPv6 DA更新为B的第一个Segment
S05. IPv6路由转发

每个Behavior都有对应的16bit Code Point,比如End with PSP为0x0002、End.DT4为0x0013等,路由协议会同时携带SID和Endpoint Behavior Code Point信息,这样就能判断出SID的具体含义。

前面提及END.B6.Encaps、END.B6.Insert都属于SRv6 Policy B-SID实例,其他节点通过B-SID引用,具体行为由SRv6 Policy实现,两者关系如下:

SRv6技术研究和组网设计

同时Headend也可以直接调用SRv6 Policy封装报文,主要Behavior有H.Encaps,H.Insert等,可用于L2/L3 VPN、FRR(Fast Reroute)、端到端IPv6通讯等场景,具体如下:

H.Encaps用于为VPN或者原始IP报文添加外层IPv6+SRH隧道封装。假设某VPN IPv6报文P下一跳为END.DT6 VPN SID X,SRv6 Policy为(S3,S2,S1),处理流程如下:

S01. 为IPv6报文P添加一个外层IPv6报文头+SRH(X,S3,S2,S1;SL=3)
S02. 外层IPv6 SA=T,IPv6 DA=S1,Next-Header=IPv6
S03. IPv6路由转发

H.Insert用于为IPv6报文添加SRH扩展头。假设报文P的IPv6 DA为B2,SRv6 Policy为(S3,S2,S1),处理流程如下:

S01. 为IPv6报文P插入SRH(B2,S3,S2,S1;SL=3)
S02. IPv6 DA设置为S1
S03. IPv6路由转发

三、SRv6技术架构

前面介绍了SRv6的基本概念,知道了SRv6 Policy是满足用户意图的关键途径。接下来就面临一个现实问题,如何将用户意图自动转换成SRv6 Policy,并下发给SRv6节点,这需要一个完整的技术架构和配套的网络协议集,典型的SRv6组网结构如下:

SRv6技术研究和组网设计

基于标准的控制器、转发器两层SDN技术架构,两者之间通过南向协议交互,具体如下:

控制器,相当于中央处理器,掌握全网拓扑、实时流量、SRv6 SID等信息,负责将用户意图翻译成SRv6 Policy,并通过南向协议下发给转发器;

转发器,负责路由计算和SRv6 Policy封装转发,一方面要运行ISIS计算Underlay路由及SID,运行BGP EVPN计算Overlay路由及SID,并将Overlay路由迭代到合适的SRv6 Policy上,另一方面还要向控制器汇报Underlay网络和SRv6 Policy状态;

南向协议,控制器和转发器之间运行多种南向协议,最重要的是BGP-LS和BGP SR Policy,前者负责将转发器的链路状态转换成BGP-LS消息,以及SRv6 Policy的状态上报给控制器,后者将控制器编排好的SRv6 Policy下发给转发器。

通过以上技术的整合,SRv6技术架构可以实现用户意图驱动、智能流量调度、全方位可视化等一系列功能。

四、SRv6转发器技术

(一)ISIS

ISIS属于链路状态IGP路由协议,采用TLV携带链路状态信息,可以在不动协议主体的情况下,通过增加部分TLV类型就可以支持IPv6、SRv6等新协议特性。
为了支持SRv6协议,ISIS需要增加SRv6 Capabilities、SRv6 Locator、SRv6 End SID、SRv6 Adjacency SID等不同Level的TLV,节点所有SID共享SRv6 Locator TLV中定义的前缀。
Locator前缀同时通过MT Reachable IPv6 Prefixes TLV发布,保证非SRv6节点也能计算出前缀路由,通过该路由就能满足SID转发需求。但节点在计算FRR或防微环,以及控制器编排路径时,需要计算使用END、END.X等具体SID。

(二)BGP EVPN

BGP EVPN(Ethernet VPN)是一种MP-BGP协议实例,AFI/SAFI为25/70,支持丰富的NLRI(Network Layer Reachable Information)路由类型,比如交换MAC或IRB的Type2路由,交换Prefix网段的Type5路由,兼具L2/L3 VPN、IPv4/v6路由交换能力,能适配VxLAN SDN、骨干网SDN、分支SDWAN等不同的组网场景。
以骨干网SRv6 VPN组网为例,BGP EVPN需要携带NLRI+BGP Prefix-SID+Color等SRv6相关信息。Type5 NLRI用于交换用户L3VPN路由,取代VPNv4/v6地址簇的作用,BGP Prefix-SID通过SRv6 L3 Service TLV,携带END.DT4/6 VPN SID,Color属性用于关联EVPN路由和SRv6 Policy。

(三)SRv6 FRR

路由协议收敛时间一般为秒级,无法满足某些苛刻应用的要求。于是出现了各种IP FRR技术,基本思路都是为受保护的路由提供备用路径,在新路由生效前,通过备用路径转发流量,将中断时间降到毫秒级。IP FRR技术对于高可靠的SRv6 Policy组网尤为重要,虽然也可以依靠SRv6 Policy自身检测故障(BFD或Segment有效性)和切换CP,但扩展性和灵活性都不及IP FRR。
IP FRR技术发展经历了LFA(Loop-Free Alternate)、RLFA(Remote LFA)、TI-LFA(Topology-Independent LFA)三个时代,直到SRv6出现后,SRv6+TI-LFA才简单有效的解决了所有IP FRR问题。LFA是最基础的IP FRR技术,目的是寻找一个直连的备用节点,该节点到目标节点不会经过故障链路或节点。比如从源节点S到目标节点D,主用下一跳为E,组网和链路COST如下:

SRv6技术研究和组网设计

LFA具体算法如下:

S计算自己以及邻居N(包括E)到所有节点的距离D_opt,如果N满足D_opt(N, D) < D_opt(N, S) +D_opt(S, D),就是符合链路保护条件的备用下一跳节点;
如果N还满足D_opt(N, D) < D_opt(N, E) + D_opt(E, D),同时也是符合节点保护条件的备用下一跳节点;
受组网结构和COST数值的限制,可能无法计算出合适的备用下一跳,导致LFA失败。
RLFA是最经典的IP FRR技术,目的是寻找一个非直连的中间备用节点,弥补LFA技术的不足,从源节点到备用节点,以及从备用节点到目标节点都不会经过故障链路或节点,组网和链路COST如下:

SRv6技术研究和组网设计

RLFA具体算法如下,简单起见未考虑节点故障情形:

计算扩展P空间,要求从S正常链路直连的邻居N到P的最短路径不经过故障链路。S会计算自己以及邻居N(包括E)到节点P的距离D_opt(S, P)和D_opt(N, P),输出满足D_opt(N, P) < D_opt(N, S) + D_opt(S, P)的P空间,当然也包括S和N。上图中,P空间为<S, N, A, B>;
计算Q空间,要求从Q到D的最短路径不经过故障链路。S会计算自己到节点Q的反向距离D_opt(Q, S),输出满足D_opt(Q, D) < D_opt(Q, S) + D_opt(S, D)的Q空间,当然也包括D。上图中,Q空间为< A, B, E, D>;
计算PQ空间,取P空间和Q空间的交集,优选一个离S最近的PQ节点,如果两者非直连,需要建立S到PQ的隧道,作为备用路由出接口封装,下一跳为直连邻居N。上图中,PQ空间为<A, B>,优选A节点。
TI-LFA在RLFA算法的基础上,增加了收敛后SPF路径的约束,并通过PQ Repair-List解决PQ无交集的问题,组网和链路COST如下:

SRv6技术研究和组网设计

SRv6 TI-LFA具体算法如下:

S计算刨除故障链路的收敛后SPF路径,根据RLFA计算P空间和Q空间,输出在收敛后SPF路径上的P空间和Q空间;上图中,分别为<S, N, A>和< B, D>;
如果PQ空间有交集,则选择距离S最远的PQ节点,S节点H.Encaps原始报文,外层IPv6 DA为PQ END with USD SID;
如果PQ空间无交集,则选择距离S最远的P节点,以及最近的Q节点,S节点H.Encaps原始报文,外层IPv6 DA为PQ互联END.X with USD SID,如果PQ不相邻则需要插入Segment列表。
对于SRv6 Policy,IPv6 DA在不断的切换,为防止IPv6 DA对应节点的故障导致IP FRR失败,需要在IP FRR基础上加入中间和尾端节点故障处理机制,具体如下:

SRv6技术研究和组网设计

大意就是,SRv6 Policy中间节点故障采用Bypass跳过,极端情况下退化成SRv6 BE,尾端节点故障采用Anycast或Mirror SID规避。

IP FRR主要解决路由收敛之前转发间断问题,但各SRv6节点路由收敛速度不一会导致微环路产生,其实这是所有IP路由协议的共性问题。在SRv6防微环组网中,节点路由收敛分为两个阶段,第一阶段对于那些由于故障发生或恢复需要更新的路由表项,以严格或松散Segment列表作为临时转发表项,防止形成微环路,第二阶段保证所有节点完成路由收敛的前提下,切换到常规路由表项。

综合IP FRR、中间和尾端节点保护、防微环等技术,就能构建出真正高可靠的TI-LFA SRv6网络。

五、SRv6南向协议

(一)BGP-LS

BGP-LS(BGP Link State)也是一种MP-BGP协议实例,AFI/SAFI为16388/71。BGP-LS将底层网络链路状态信息(ISIS)抽象成Node、Link、Prefix三类NLRI上报给控制器,分别描述节点能力、邻居关系、IP前缀信息,控制器据此还原网络拓扑和计算路径。同时为了支持跨域组网,BGP-LS还扩展了BGP EPE(Egress Peer Engineering)功能,将EBGP邻居关系链路状态化,从而在控制器层面打通不同AS的链路状态数据。

BGP-LS主要通过NLRI+Attribute组合携带链路状态数据,为了支持SRv6特性,需要增加Node NLRI的SRv6 Capabilities、Link NLRI的SRv6 End.X SID、Prefix NLRI的SRv6 Locator等TLV,另外还要新增SRv6 SID NLRI类型,附属SRv6 End SID、SRv6 End.X SID、SRv6 BGP Peer Node SID等TLV。
除了翻译拓扑功能,BGP-LS还可以上报SRv6 Policy状态和B-SID,以取代PCEP协议,避免控制器和转发器异构引发的兼容性问题。

(二)BGP SR Policy

在SDN组网中,控制器可以通过BGP SR Policy向转发器下发SRv6 Policy。BGP SR Policy同样基于MP-BGP协议,AFI/SAFI=2/73,SRv6 Policy的信息主要由NLRI和Tunnel_Encapsulation属性承载。
NLRI用于携带SRv6 Policy和Candidate Path信息,格式为<Length, Distinguisher, Color, Endpoint>,对应关系如下:
SRv6 Policy,<Headend, Color, Endpoint>,Headend就是SRv6 Policy的接收者,加上NLRI的Color+Endpoint,形成完整的SRv6 Policy标识;
Candidate Path,<protocol-origin, originator, discriminator>,protocol-origin就是BGP SR Policy,originator是BGP Router ID,discriminator对应NLRI的Distinguisher,用于区分同一SRv6 Policy的不同CP,形成完整的CP标识。
Tunnel_Encapsulation,用于携带Candidate Path的各种属性,比如Preference、B-SID、Segment-List等,并以层次化TLV的形式表示。
如何把BGP SRv6 Policy精准的下发给头端节点呢?跟控制器与转发器的BGP连接方式有关,具体如下:
RR组网,控制器给SRv6 Policy附加RT=Headend:0,通过RR中转,转发器收到之后检查RT值,如果一致则导入SRv6 Policy;
直连方式,控制器直接将SRv6 Policy发给转发器,附加no_advertise community,转发器收到后自用,不转发给任何邻居。
相比于PCEP,使用BGP下发SRv6 Policy具备更好的兼容性和扩展性,理论上可以支持跨厂商的SRv6 Policy对接,和百万级SRv6 Policy的部署规模。

六、SRv6组网设计

(一)总体组网规划

下面基于金融骨干网现状和业务需求,探索如何采用SRv6升级骨干网技术架构。
骨干网由三个核心节点、数十个一级节点构成,为总分行提供就近接入和高速转发服务,根据通用SRv6技术架构要求,总体组网规划如下:

SRv6技术研究和组网设计

采用标准的控制器+转发器两层SDN组网,控制器负责智能选路,通过南向协议下发SRv6 Policy,转发器负责执行Segment指令和报文转发。

(二)转发器技术规划

转发器分为PE、P、RR等角色,采用ISIS作为Underlay路由协议,使能IPv4/v6多拓扑,网络拓扑和路由计算相互独立,同时启用SRv6扩展,交换SRv6 SID信息。

SRv6 SID格式为Locator+Function,Locator长度为112bit,其中前96bit为共同前缀,后16bit为节点数值,Function长度为16bit,其中静态Function为::00[01-FF],动态Function为::[0-F][1-F][00-FF]。END、END.X由节点动态生成,在ISIS中关联Locator后,ISIS会自动发布Locator和SID信息。ISIS还要启用TI-LFA和Micro Loop Avoid,以提高SRv6网络的收敛性能和健壮性。

PE采用BGP EVPN作为Overlay路由协议,基于Loopback IPv6地址建立域内BGP EVPN Peer,并选用SRv6隧道封装。用户VPN路由通过BGP EVPN Type5 NLRI+ BGP Prefix-SID发布,后者对应END.DT4/6 VPN SID。

假设PE已经从控制器收到SRv6 Policy,BGP EVPN路由会根据Color+Nexthop迭代到正确的SRv6 Policy上,数据平面调用H.Encaps Behavior封装VPN报文,SRH=SRv6 Policy Segment List+VPN SID,外层IPv6 SA=PE Loopback,IPv6 DA=Segment[n-1]。如果没有收到SRv6 Policy,则采用SRv6 BE转发,外层IPv6 SA=PE Loopback,IPv6 DA=VPN SID。无论哪种方式,目标PE收到报文后,根据IPv6 DA定位到VPN,剥离SRv6封装,查找VPN路由表转发。

(三)南向协议规划

控制器与转发之间用到SNMP、NETCONF、BGP-LS、BGP SR Policy等多种南向协议,这里重点介绍BGP-LS、BGP SR Policy的规划。
RR与控制器之间建立BGP-LS Peer,将ISIS的链路状态信息转换后上报控制器。RR与PE之间也要建立BGP-LS Peer,将PE传递过来的SRv6 Policy状态反射给控制器。
控制器与RR之间建立BGP SR Policy Peer,将SRv6 Policy下发给RR,RT为Headend:0。RR与PE之间也要建立BGP SR Policy Peer,将SRv6 Policy反射给PE,PE收到后根据RT导入自己始发的SRv6 Policy。

(四)控制器规划

骨干网上传输的流量根据业务类别和安全等级,分为STORAGE、INTRANET、EXTRANET三类,由相应的SRv6 Policy承载。控制器定期根据网络拓扑和流量分布,计算更新SRv6 Policy路径,通过BGP SR Policy下发给PE转发器,实现智能流量调度的目的。

一开始可以采用基于SRv6 Policy维度的简单调度策略,具体如下:

SRv6技术研究和组网设计

PE分为AB平面,同平面PE之间两两建立STORAGE、INTRANET、EXTRANET三类Policy,每个Policy初始包含1条严格路径。
以北京节点PE-A为例,控制器初始下发的路径如上图实线所示。PE-A根据VPN路由的<color, nexthop>,将业务流量映射至对应SRv6 Policy上转发。
转发器通过Telemetry实时上报接口流量信息,控制器会定期运行全局调优算法,综合线路利用率、SPF路径、SRv6 Policy优先级等多个因素,更新部分SRv6 Policy的Segment列表,并通过BGP SR Policy下发给PE-A,将相关SRv6 Policy上的流量迁移至其他低利用率线路上,路径如上图虚线所示。
如果某个节点或者链路故障,首先会触发SRv6 FRR,保证SRv6 Policy流量基本不中断,然后由BGP-LS上报链路状态变化,控制器收到后触发局部故障调优,为受影响的SRv6 Policy选择其他正常路径,最后等到全局调优周期,站在全网角度优化SRv6 Policy路径。
之后在控制器支持的情况下,可以升级为基于Segment List维度的复杂调度策略,具体如下:

SRv6技术研究和组网设计

PE分为AB平面,同平面PE之间两两建立STORAGE、INTRANET、EXTRANET三类Policy,每个Policy初始包含4条等价SL(部分SL路径可能重复)。
以北京节点PE-A的INTRANET SRv6 Policy为例,控制器初始下发的路径如上图实线所示。PE-A根据VPN路由的<color, nexthop>,将业务流量映射至对应SRv6 Policy的4条SL上负载均衡转发。
全局调优和故障调优基本思路与上一种策略类似,区别在于转发器要上报Segment List颗粒度的流量信息,控制器要基于SRv6 Policy和Segment List两个维度算路,根据计算结果更新SRv6 Policy内部某些Segment List,并通过BGP SR Policy下发给PE-A,将这些Segment List上的流量迁移至其他低利用率线路上,路径如上图虚线所示。

(五)多域组网升级

前面采用了单域SRv6 Policy组网设计,由单个ISIS提供骨干网链路状态数据,经BGP-LS上报控制器,控制器进行域内算路并下发至转发器。单域组网对网络规模、线路类型都有一定的限制,还涉及骨干网与接入网Option A跨域互联的问题,导致大量VPN和路由策略重复配置,另外将SRv6局限于骨干网,无法发挥SRv6 Policy端到端的价值,因此有必要从单域升级为多域组网,具体规划如下:

SRv6技术研究和组网设计

骨干网收缩为三个核心节点,仅由P和RR角色组成,P不感知业务和VPN,仅根据IPv6 DA路由转发,RR除了承担BGP-LS、BGP SR Policy基本功能之外,还要负责骨干网P设备Underlay和接入网PE设备Overlay路由的分发和策略控制,相当于二级控制器。
接入网为总分行各自辖内通道互联网络,核心由原骨干网的2台PE组成,与骨干网RR之间建立EBGP Peer,交换EVPN、BGP-LS、BGP SR Policy等地址簇路由,并保持Nexthop不变。
骨干网和接入网之间Underlay跨域互联,通过EBGP交换Underlay IPv4/v6路由,其中包括SRv6 Locator路由。同时双方还要使能BGP EPE,将Underlay邻居连接通过BGP-LS上报给控制器。
控制器通过BGP-LS收集骨干网、接入网的链路状态数据,结合BGP EPE的邻接信息,拼接出骨干网+接入网完整的网络拓扑,其他算路和SRv6 Policy下发过程同单域组网。

七、总结

目前业界和用户对于SRv6的研究和应用还处于价值探索的初始阶段,受益于国内IPv6规模部署行动的成果,用SRv6取代SR-MPLS已成为大家的共识,也是水到渠成的事情。风物长宜放眼量,SRv6 Policy组网和智能流量调度只是SRv6的基础应用,后续我们还要将SRv6拓展到VTN切片网络、分支机构SDWAN、应用驱动APN6、Service Chaining等更多更广的领域,可谓路漫漫其修远兮,还需要大家一起求索。