APP下载

无缝双向转发检测在分段路由中的应用

2021-01-14唐寅张进江逸茗

现代信息科技 2021年12期

唐寅 张进 江逸茗

摘  要:新业务的发展对网络服务提出了更高的要求,其中网络的可靠性是服务的基础,分段路由为网络服务提供了重要的技术支撑,通过规划多条候选路径来提供可靠性的提升。在分段路由策略技术的基础上,对无缝双向转发检测技术进行研究。对主候选路径进行网络故障检测,提升了网络故障的快速感知能力;通过开源软件平台实现功能,更好地满足了业务对网络的可靠性提升要求。

关键词:无缝双向转发检测;分段路由策略;FRRouting

中图分类号:TP393  文献标识码:A 文章编号:2096-4706(2021)12-0155-04

Abstract: The development of new business puts forward higher requirements for network services, in which network's reliability is the basis of services. Segment routing provides important technical support for network services, and it provides reliability improvement by planning multiple candidate paths. Based on the segment routing policy technology, the seamless bidirectional forwarding detection technology is studied. Network fault detection is carried out for the primary candidate path, which improves the fast perception ability of network fault; through the development work in an open source software platform to realize the functional solution, which better meets the requirements of business for network reliability improvement.

Keywords: seamless bidirectional forwarding detection; segment routing policy; FRRouting

0  引  言

分段路由(Segment Routing, SR)是基于源路由的技術,如文献[1]所述,通过在源数据包中指定数据包通过网络的路径转发。多协议标签交换技术(Multiprotocol Label Switching, MPLS)流量工程是源路由广泛采用的形式之一,当分段路由网络的入口节点,MPLS标签栈会附加在数据包之前,从而确定数据包通过网络的路径。SR体系结构将策略状态放在数据包报头中,而中间传输节点和出口节点不需要任何策略状态。SR体系结构的目标不是取代现有的源路由和流量工程机制,而是对其进行补充并简化网络中的信令,提升网络的灵活性。

SR域是网络中参与SR功能的节点的集合。在SR域内,节点包括了入口节点,中间传输节点和出口节点等不同的类型。SR路径是一个SR入口节点到SR出口节点的网络段的有序列表。SR路径可以根据业务的需求生成,例如可以遵循从入口到出口的最低成本路径,也可以遵循其他路径以用于流量工程和网络服务管理。SR路径可以由多个段标识符(Segment ID, SID)表示的序列组成。SR段类型包括邻接SID、前缀SID、任播SID;其中邻接段和前缀段是最常见的类型,SR路径可以由这些段类型中的一种或多种组成。

网络的可靠性要求,当网络中的节点或链路出现故障时,网络需要尽快从故障状态恢复到正常状态。SR需要能够提供端到端的路径保护能力,在主路径发生故障时能够快速地恢复数据流的传输。SR通过预先的规划来提高路径的可靠性,对网络进行规划时,预先设定好用于保护的备份路径,用于实现对重要路径的流量保护;为了能让保护路径起到更好的保护作用,需要让保护路径尽量不经过主隧道经过的节点和链路。在主路径的节点或链路出现故障时,流量需要及时被切换到备份路径上;而当主路径恢复后再将流量切换回来,以实现对主路径的备份保护。

SR网络可靠性提升的目的是业务的快速恢复,对网络故障的快速感知,是其中的重要环节。当SR网络主路径上的节点或链路发生故障时,需要能够尽快地探测和感知,然后才能通知业务处理切换到备份路径。为了实现网络故障的快速检测,通常使用双向转发检测(Bidirectional Forwarding Detection, BFD)技术,如文献[2]描述,BFD基于IP进行尽力而为的转发,导致无法按照SR指定的路径进行检测。SR网络场景下,需要基于源路由的技术,在入口节点指定检测报文按照严格的路径检测,需要对BFD功能做补充。另外,当配置大量BFD会话进行链路检测时,BFD现有状态机的协商时间会变长,成为整个系统的一个瓶颈。

无缝双向转发检测(Seamless Bidirectional Forwarding Detection, SBFD)是BFD的一种简化机制,本文方案通过和SR技术的结合,可以在入口节点指定检测报文按照严格的路径进行转发检测;简化了BFD的状态机,缩短了协商时间,提高了整个网络的灵活性,能够支撑SR隧道的快速检测。

1  无缝双向转发检测

1.1  概念和原理

为了减小网络中节点或链路故障对业务的影响,提高网络的可靠性,需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。BFD技术是通用的、标准化的且协议无关的快速故障检测机制,用于快速检测网络中的节点和链路故障而导致的通信问题。在两个系统之间建立BFD会话,并通过BFD报文中携带的参数进行会话协商。BFD会话协商采用三次握手机制,协商成功后,以协商的报文收发时间在彼此的路径上周期性发送BFD报文。

SBFD简化了BFD会话协商机制,文献[3]描述了基本概念。SBFD按照承担的功能角色分为发起端和反射端,在进行链路检测之前,发起端和反射端互相发送SBFD控制报文进行SBFD描述符等信息的协商。协商成功后,发起端主动发送SBFD Echo报文进行链路检测,反射端根据本端的校验情况将报文环回,发起端收到反射报文后进行校验判断从而进行本端的状态更新。由于反射端仅环回发起端发送的SBFD报文,不进行有状态的会话维护和处理,因此提升了SBFD检测的效率,为网络路径检测提供灵活性。

SBFD发起端维护的状态只有Up或Down,发出的报文中携带的状态信息中也只有Up和Down状态。反射端不会主动发送SBFD报文,仅校验SBFD报文的参数,校验参数成功的话会构造环回SBFD报文,返回的报文状态只有Up或Admin Down状态。

SBFD会话状态协商和检测过程如图1所示。发起端和反射端通过发送SBFD报文进行会话协商。

发起端的状态过程包括:(1)初始状态:SBFD报文由发起端首先向反射端发送,发起端初始状态为Down。(2)状态迁移:如果发起端收到反射端返回Up报文,则将SBFD状态置为Up;如果发起端收到反射端返回Admin Down报文,则将SBFD状态置为Down;如果发起端在指定的时间超时前没有收到返回报文,则将状态置为Down。(3)状态保持:发起端在处于Up状态的情况下,收到反射端返回Up报文,则SBFD状态继续保持在Up状态;如果发起端在处于Down状态的情况下,收到反射端返回的Admin Down报文,或者在指定的时间超时前没有收到返回报文,则SBFD状态继续保持在Down状态。

发起端的无状态过程为:反射端不保存SBFD的状态,也没有检测机制,因此不会主动发送SBFD报文,仅根据从发起端收到的报文来构造环回SBFD报文。反射端从发起端接收到SBFD报文后,校验报文中的SBFD描述符与反射端的本地SBFD描述符是否匹配,如果不匹配的话丢弃,如果匹配的话,反射端构造环回SBFD报文反射回发起端。

1.2  分段路径的场景的应用

SBFD检测在分段路由的场景如图2所示,节点A、B、C、D、E、F之间使能了SR MPLS能力。在SR域内,节点A为入口节点,节点B、C、D、E为中间传输节点,节点F为出口节点。A和B之间的邻接标签为1002,B和C之间的邻接标签为1003,C和F之间的邻接标签为1004。节点A作为SR网络的入口节点,部署了SR的主备路径,主路径为A->B->C->F,备路径为A->D->E->F。主路径使用邻接标签来表示,初始标签栈为{1002,1003,1004},业务数据转发时,逐跳弹出MPLS标签进行转发。

为了在SR的主路径发生故障时快速的感知,需要部署SBFD来进行快速检测,由于SR MPLS的业务基于主路径的MPLS标签栈进行转发,因此SBFD对SR MPLS的主路径进行检测时,检测报文的路径需要与SR的主路径完全一致。SBFD发起端到反射端使用与主路径一致的MPLS标签栈,如图2所示,节点A作为SBFD的发起端,向节点B发送检测报文时,根据标签1002找到对应的出接口,并封装标签栈{1003,1004}转发;节点B向C发送时,根据标签1003找到对应的出接口并弹出标签,封装标签{1004}转发;节点C向F转发时,根据标签1004找到对应的出接口并弹出标签,将报文转发给F;节点F作为SBFD的反射端,解析校验SBFD报文并提取IP报头中的源IP字段,反射端向发起端回程路径使用IP转发,IP报文中的目的IP使用接收到的SBFD报文IP报头中的源IP字段值,以此方式将报文环回发送到发起端。发起端接收到SBFD报文后,根据SBFD报文中的字段来对判定SBFD的检测结果,由此可以知道SR主路径是否存在故障;如果发起端没有接收到SBFD的环回报文,则可以判定SR的主路径发生了故障,从而通知业务模块将SR的转发路径切换到备份路径。

2  无缝双向转发检测与分段路由结合方案

分段路由策略(Segment Routing Policy, SR Policy)使用SR的源路由机制,是分段路由网络中的一种策略[4],该策略包含了一个业务流量的承载诉求,以及转发路径可以实现业务的端到端需求。SR Policy的实施可以实现控制面和转发面的分离,更方便实现控制器的集中控制以及业务转发路径的编程。SR Policy设计的初衷是为了更好地提升特定业务的体验,例如满足特定业务的带宽、时延等需求,对业务的最终体验负责。

SR Policy由头端节点、颜色、尾端节点三元组描述决定。一个SR Policy内可以有多个候选路径,不同的候选路径设定不同的优先级值来表征不同的优先级。SR Policy通过生成不同的候选路径来实现主备路径,高优先级的为主用路径,低优先级的为备用路径。候选路径可以配置多条,因此SR Policy可以实现一主一备,也可以是一主多备。所有的主备路径都在一个SR Policy里实现,简化管理并提升了效率。控制器根据特定业务的承载需求计算出特定的转发路径,也可以由用户手工静态指定的方式,在头端节点根据尾端节点和颜色作为关键值去生成SR Policy,此后头端节点可以将特定业务流量自动引流到对应的SR Policy的候选路径进行转发。

SBFD结合SR Policy来检测主候选路径的网络,头端节点作为SBFD的发起端,尾端节点作为SBFD的反射端,为了在特定SR Policy啟用SBFD,头端节点需要知道尾端节点的描述符,文献[5,6]描述了通过动态路由协议的SBFD扩展来实现,尾端节点通过动态路由协议给头端节点发布其SBFD描述符。由于SR Policy中配置的尾端节点使用IP地址表示,本文设计方案为:当尾端节点开启SBFD反射端功能时,选用尾端节点的IP地址作为SBFD反射端的描述符,并在此基础上结合SR Policy进行关联。

SBFD发起端封装SBFD报文时,IP报头中会填充源IP字段,该源IP用于SBFD反射端环回报文的返程路径。SBFD的反射端接收SBFD报文后,提取IP报头中的源IP字段构造SBFD的返程报文,将该源IP值填充在IP报头中的目的IP字段,将报文环回发送到发起端。因此SBFD探测报文的环回路径取决于IP路由查找的结果,在路径上逐跳IP转发,SBFD报文的探测路径和返程路径不一定相同。在某些情况下,如果SBFD发起端的源IP填充不正确,会导致反射端环回报文进行IP转发时,找不到IP路由表导致环回报文发送失败,最终导致SBFD检测的误报。为了解决这个问题,本方案在头端节点手动配置指定本地IP,确保尾端节点存在对应该IP的路由,保证环回返程的SBFD报文可达。

如图3所示,头端节点SR Policy A指定的尾端節点IP为2.2.2.2,尾端节点作为SBFD反射端配置指定描述符为2.2.2.2;同时头端节点A作为SBFD发起端,SBFD关联SR Policy A,配置指定本地IP为1.1.1.1,并配置指定反射端SBFD描述符为2.2.2.2。此后SBFD检测报文通过SR Policy A的主候选路径A->B->C->F发送到反射端,反射端根据1.1.1.1查找路径进行环回,图3中的环回路径为F->E->D->A,最终完成检测流程。

3  平台软件的实现方案

本文使用开源的路由协议平台软件FRRouting(FRR)为基础进行开发和实现,该软件平台原本实现了BGP、OSPF、RIP、IS-IS等动态路由协议,并支持基础的BFD功能。在此功能基础上,进行了SBFD功能的开发升级,并对SR Policy的功能与SBFD进行关联,以支持对使用的SR Policy的业务的快速联动。

系统逻辑结构如图4所示,SR Policy功能模块作为独立的进程,负责SR Policy的管理;Zebra是软件架构中的重要核心模块,负责各类业务表项的管理以及进程间通信;新增SBFD功能模块作为独立的进程,除了新增需要与Zebra进程的交互接口,与其他模块解耦。配置的SR policy信息会同步到Zebra,当开启SBFD检测某个特定SR Policy时,SBFD向Zebra查询获取到该SR Policy的详细信息,包括尾端节点地址以及主路径的标签栈信息;SBFD获取到这些信息后,根据尾端节点地址查表并封装SBFD报文发送。

FRR实现SBFD与SR联动的时序如图5所示。

具体时序为:(1)SR Policy生成,可以通过用户配置或通过控制器下发生成,其中包括了颜色,尾端节点信息,以及候选路径的标签栈信息。(2)SR Policy进程将所有信息,包括颜色、尾端节点、以及所有候选路径的标签栈信息,同步到Zebra进程。(3)Zebra接收到同步的信息后保存,以颜色和尾端节点作为关键字索引,候选路径的标签栈信息作为属性保存。(4)SBFD检测功能开启,并通过配置颜色和尾端节点信息与SR Policy关联,其中的尾端节点同时作为SBFD的远端描述符使用。(5)SBFD向Zebra请求SR Policy信息,携带颜色和尾端节点。(6)Zebra根据颜色和尾端节点查找到对应的SR Policy后,向SBFD同步该SR Policy的所有候选路径的标签栈信息和出接口信息。(7)SBFD根据获取到的出接口信息,向Linux内核查询数据链路层表项。(8)SBFD封装SBFD报文,远端描述符字段使用SR Policy的尾端节点。(9)通过Linux内核发送SBFD报文。

4  结  论

在分段路由网络中使用SBFD技术,可以极大地提升主路径故障的检测速率;同时,SBFD技术与SR Policy的结合,提升了SR Policy在多条候选路径情况下的可靠性,最终实现业务体验的提升。通过在FRRouting的软件平台的优化升级,对SBFD和SR Policy功能的模块化解耦,实现了SBFD在分段路由场景下的应用。

参考文献:

[1] FILSFILS C,PREVIDI S,GINSBERG L,et al. Segment Routing Architecture:RFC8402 [S/OL].[2021-04-10].https://www.rfc-editor.org/info/rfc8402.

[2] KATZ D,WARD D. Bidirectional Forwarding Detection (BFD):RFC5880 [S/OL].[2021-04-20].https://www.rfc-editor.org/info/rfc5880.

[3] Pignataro C,Ward D,Akiya N,et al. Seamless Bidirectional Forwarding Detection (S-BFD):RFC7880 [EB/OL].[2021-04-12].https://www.rfc-editor.org/info/rfc7880.

[4] FILSFILS C,TALAULIKAR K,VOYER D,et al. Segment Routing Policy Architecture draft-ietf-spring-segment-routing-policy-13 [EB/OL].[2021-04-12].https://datatracker.ietf.org/doc/draft-ietf-spring-segment-routing-policy/.

[5] GINSBERG L,AKIYA N,CHEN M. Advertising Seamless Bidirectional Forwarding Detection (S-BFD)Discriminators in IS-IS:RFC7883 [S/OL].[2021-04-13].https://www.rfc-editor.org/info/rfc7883.

[6] PIGNATARO C,BHATIA M,ALDRIN S,et al. OSPF Extensions to Advertise Seamless Bidirectional Forwarding Detection(S-BFD) Target Discriminators:RFC7884 [S/OL].[2021-04-22].https://www.rfc-editor.org/info/rfc7884.

作者简介:唐寅(1982—),男,汉族,江苏江阴人,工程师,硕士,研究方向:新型网络体系结构,网络安全;张进(1979—),男,汉族,江苏镇江人,工程师,博士,研究方向:宽带信息网络、网络安全;江逸茗(1984—),男,汉族,江苏南通人,助理研究员,博士,研究方向:新型网络体系结构,网络虚拟化。