掌桥专利:专业的专利平台
掌桥专利
首页

一种基于P4的链路失效检测方法

文献发布时间:2023-06-19 19:23:34


一种基于P4的链路失效检测方法

技术领域

本发明属于交换机网络链路检测技术领域,尤其涉及一种基于P4的链路失效检测方法。

背景技术

随着网络逐渐向超大规模、高密度方向发展,网络可靠性在网络中变得越来越重要,而链路故障是网络拓扑中的一个主要威胁,其包括直接或间接故障。在直接故障的情况下,交换机可以立即检测到故障并快速恢复;而对于间接故障,可能是链路的静默数据包丢失、网络设备配置错误、网络协议设计缺陷或是软件设计缺陷等,这种网络故障会悄无声息地发生,在对网络造成巨大破坏之前,数据包会被丢弃而不会产生任何显式的通知。因此,建立一种快速检测和定位链路的机制,以便快速地发现和定位这种链路失效以减少它们对网络造成的巨大的损害是十分必要的。

传统的网络链路失效检测方案有两种方式:基于网络设备的检测以及基于端主机的检测,其中基于网络设备又可以分为基于底层链路检测和基于上层协议检测的方式。

基于网络设备的底层链路检测主要是通过底层硬件信号来判断物理链路的状态,以确定是否产生链路故障。例如同步数字体系(Synchronous Digital Hierarchy,SDH)根据光接口状态报警接收线路侧信号丢失(Receive Loss of Singal,R_LOS)或接收线路侧帧丢失(Receive Loss of Frame,R_LOF)等信息。而对于以太网传输链路,物理层芯片可以根据物理介质链接状态指示“link down”或“link up”信息。这些方法都能快速、精确的发现具体的链路故障,然而其局限性也十分明显,即只能发现物理链路上的失效,对于交换机逻辑层面所导致的链路失效错误无法发现。

基于网络设备的上层协议检测本质就是交互Hello消息以确定链路的正常收发状况。例如传统路由设备中常见的OSPF路由协议会交互Hello信息以检测邻居链路,并以此更新邻居集,进一步更新路由表,不过OSPF发送Hello消息的速度较慢,一般为秒级别,因此OSPF可以配合使用双向转发检测(Bidirectional Forwarding Detection,BFD),以在其底层实现更加频繁的链路信息交互,这种方式需要交换机硬件进行支持。但是BFD一般运用于传统路由器,对于SDN中的设备,路由协议由控制器运行,怎么在数据平面整合BFD逻辑并在BFD上报链路失效时进一步上报给控制器是一个难点。

在SDN中仍可以采用集中式的链路失效检测机制。ONOS控制器基于上层协议实现了链路探测机制,监控应用程序通过交换机发送探测消息,以发现数据平面链路并维护网络拓扑,这些探测消息的格式符合链路层发现协议(Link Layer Discovery Protocol,LLDP)。虽然这种机制适用于在亚秒时间粒度内检测链路或节点故障,但它不适用于监控链路或端到端隧道的健康状况以进行保护。基于集中式LLDP的监控模型具有严重的可扩展性限制,因为控制器必须参与所有探测消息的处理。

基于端主机的探测包是目前最为常用的方式,其本质就通过探针向网络边缘交换机发送数据包,并通过网络到达路径另一端的探针,当探针一段时间没有收到数据包更新时则认为路径中断,此时控制器根据全网中所有被中断的路径集,结合网络拓扑即可推断处失效链路。现有的方法主要根据连接建立时间,使用终端主机之间的TCP或HTTP pings来推断路径上的链路是否断开,收集系统可以以此来统计网络中的路径状态。但这种方式往往需要对多个失效路径整合后进行查找,或者依次traceroute路径以查找失效链路。

总的来说,大部分的方案基本都是使用探测包进行链路失效发现。这种方案简便且易于实施,但是弊端却十分明显:

1、带宽与失效性不易平衡。如果想要更快的发现链路失效,也就需要更加频繁地发送网络探测包,而这会显著占用网络带宽;

2、不易处理拥塞和丢包。只要网络中偶尔出现拥塞,那么网络探测包就可能湮没在交换机队列甚至直接丢失,造成误判;

3、不能直接定位链路失效。除了控制器直接使用路径探测方法能够直接探测链路中断外,绝大部分探测方案都需要收集器对于路径收集情况聚合后交给上层由网络拓扑进行推断。

发明内容

针对现有技术中的上述不足,本发明提供的一种基于P4的链路失效检测方法,检测业务流路径上的链路是否发生链路失效,而对于承载了大量业务流的交换机网络,其中的每条业务路径上的流量其实都可以视为我们往网络中发送的探测,解决了业务流量争夺网络带宽、链路拥塞和链路失效的问题。

为了达到上述发明目的,本发明采用的技术方案为:

本发明提供一种基于P4的链路失效检测方法,包括监控路径生成阶段,及监控路径跟踪阶段;

所述监控路径生成阶段包括如下步骤:

A1、初始化各链路e的业务路径集P

A2、根据用于监控的业务路径选择情况,剔除未被业务路径覆盖的链路e′;

A3、根据各链路的业务流数和各业务路径经过的链路总数,查找所有未被监控路径覆盖的链路中业务路径集P

A4、基于最小业务流数链路e

A5、基于目标探测路径,得到告警码为mask的告警码表项;

A6、基于告警码组表项,分别对告警码为mask的链路的两端的交换机添加一条spec端口--mask表项;

所述监控路径跟踪阶段包括如下步骤:

B1、设置测量间隔Δt,针对检测边缘交换机每次从主机侧接收到数据包与上一次发送携带路径元信息的报文的时间间隔超过测量间隔Δt时,则对接收到的数据包添加tb_path表项中与spec端口--mask表项对应的告警码mask,并将告警码mask附加至数据包;

B2、针对利用交换机接收附加有告警码mask的数据包时,则删除数据包的告警码mask相关字段,且或更新寄存器;

B3、针对利用交换机查询到待发送数据包的tb_path表项中与输出端口对应的告警码mask时,则将告警码mask与寄存器数据相与,得到相与结果;

B4、针对相与结果为0时,则不将相与结果附加至待发送数据包;

B5、针对相与结果不为0时,则将相与结果附加至待发送数据包,并异或更新寄存器;

B6、基于步骤B1至B5的监控路径跟踪方法,利用交换机将附加有路径标识信息的数据包在网络中逐跳转发,直至到达边缘交换机,得到携带有路径标识信息的数据包经过的路径path;

B7、将路径path传输至INT Monitor,并针对利用INT Monitor检测到当前路径path接收到数据包的时间距上一次接收时间超过路径老化时间t

进一步地,所述步骤A1包括如下步骤:

A11、初始化各链路e的业务路径集P

A12、将各业务路径经过的链路数T

进一步地,所述步骤A4包括如下步骤:

A41、计算得到经过最小业务流数链路e

A42、判断第一目标业务路径中的所有链路是否均被监控路径覆盖,若是则进入步骤A43,否则返回步骤A41;

A43、计算所有未被选取为监控路径的剩余业务路径的业务路径权重W

A44、判断除第二目标业务路径外的所有未被选取为监控路径的剩余业务路径的业务路径权重W

A45、将第二目标业务路径中属于同一个告警码LS的链路的权重w设置为∞,并将不属于同一个告警码的链路的权重w减小,得到一条链路的权重w之和最小的第三目标业务路径p;

A46、计算第三目标业务路径p两端到边缘交换机的最短距离,得到探测路径;

A47、判断探测路径中的所有告警码LS是否均为1,若是则得到目标探测路径,并进入步骤A5,否则返回步骤A45。

进一步地,所述步骤A41中的业务路径权重W

W

其中,N

进一步地,所述步骤A5包括如下步骤:

A51、基于目标探测路径,遍历所有监控路径,并对各监控路径从0到N依次编号;

A52、查看所有编号后的监控路径所经过的所有链路,并将各监控路径经过的链路的告警码更改为1,得到告警码为mask的告警码表项。

进一步地,所述步骤B2中或更新寄存器的计算表达式如下:

register=register|mask

其中,register表示寄存器数据,|表示或,mask表示mask相关字段。

进一步地,所述步骤B3中相与结果的计算表达式如下:

result=mask®ister

其中,result表示相与结果,&表示与。

进一步地,所述步骤B5中异或更新寄存器的计算表达式如下:

register=register⊕result

其中,⊕表示异或。

本发明的有益效果为:本发明提供的一种基于P4的链路失效检测方法,对传统的网络链路失效检测方案进行了改进,从而能平衡网络带宽与检测效率,不再对拥塞与丢包敏感,而且能直接定位失效链路,具体体现在:

(1)、本发明利用基于P4的网络遥测系统,无需网络中主机的参与,直接由可编程数据平面和控制面完成全部的功能;

(2)、本发明将业务路径选取为监控路径,以减少网络探测包的发送,降低数据平面负载需求;

(3)、本发明利用INT Monitor收集到的信息与各链路告警码组结合,可以快速定位网络中的失效链路。

附图说明

图1为本发明实施例中告警码组设置示意图。

图2为本发明实施例中基于P4的链路失效检测方法的步骤流程图。

图3为本发明实施例中通过告警码为mask的告警码表项添加spec端口--mask表项的示意图。

图4为本发明实施例中运用监控路径跟踪方法的示意图。

图5为本发明实施例中一个完整的链路失效检测的时间线示意图。

具体实施方式

下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

P4是一门编程语言,用于控制网络设备中的数据包转发平面。

基于网络探测包的链路检测方法本质就是检测业务流路径上的链路是否发生链路失效,而对于承载了大量业务流的交换机网络,其中的每条业务路径上的流量其实都可以视为我们往网络中发送的探测包,网络只需要监测这些路径上是否存在流量,就可以判断这些路径上的链路是否可能失效。采用这种方式,既可以减少和业务流量争夺网络带宽,同时也能避免对于链路拥塞和链路失效的误判。

如图1所示,网络当中存在三条业务流,其转发路径分别为path1(P1)、path2(P2)和path3(P3),对于每一条链路,按照这条链路上是否存在路径path,存在则将路径path对应序列处置1,不存在则置0,因此可以为每一条链路生成一个告警码,多条链路即构成了一个告警码组,只需要监测path1、path2和path3的路径流量是否中断,如果中断则相应路径path对应序号位置1,否则为0,可得到一个二进制告警码,再到对应的告警码组中查找,即可找到失效链路。

因此,通过分析现有的链路失效检测方案存在的问题,本发明提出了基于P4的增量探测流部署(Incremental Probe Flow Deployment,IPFD)的链路失效检测方法,其设计目标是:

(1)、透明:无需网络中主机的参与,直接由可编程数据平面和控制面完成全部的功能;

(2)、低侵入:尽量减少数据的插入,降低数据平面的负载要求;

(3)、高效:当网络中发生链路失效时,能够立刻进行反应;

(4)、通用:考虑通用化的方案,只在网络边缘进行部署,以尽可能适用于如DCN网络等更多拓扑场景。

监控路径由业务路径和探测路径组成,其中业务路径是网络中原先就有的路径,而探测路径是后生成的路径。尽可能的选择业务路径作为监控路径,只有业务流量无法完全区分网络中的链路时候,才会考虑添加探测路径。之所以要优先选择业务流路径,这是因为对于大流量的业务,发送的数据包属于链路中的主要带宽,而相比于业务流数据包,探测路径的数据包受到拥塞的影响更大。因为探测数据包是每间隔一段时间发送一次,即这段时间内不会有其他的走相同的探测路径的数据包到达。例如探测周期为100ms时,一旦数据包在网络中拥塞或丢失,则可能会对于链路失效产生误判。

如图2所示,在本发明的一个实施例中,本发明提供一种基于P4的链路失效检测方法,包括监控路径生成阶段,及监控路径跟踪阶段;

监控路径生成阶段:INT Monitor会定期收集网络中不同业务流路径的信息,并选择发包频率较高的业务流上报给控制器;控制器过滤冗余业务流路径以生成告警码组,如果告警码组不足以区分全网链路,则会生成探测流路径,最后将业务流路径和探测流路径合并为监控路径,下发到交换机;

所述监控路径生成阶段包括如下步骤:

A1、初始化各链路e的业务路径集P

所述步骤A1包括如下步骤:

A11、初始化各链路e的业务路径集P

A12、将各业务路径经过的链路数T

A2、根据用于监控的业务路径选择情况,剔除未被业务路径覆盖的链路e′;

A3、根据各链路的业务流数和各业务路径经过的链路总数,查找所有未被监控路径覆盖的链路中业务路径集P

A4、基于最小业务流数链路e

所述步骤A4包括如下步骤:

A41、计算得到经过最小业务流数链路e

所述步骤A41中的业务路径权重W

W

其中,N

A42、判断第一目标业务路径中的所有链路是否均被监控路径覆盖,若是则进入步骤A43,否则返回步骤A41;

A43、计算所有未被选取为监控路径的剩余业务路径的业务路径权重W

A44、判断除第二目标业务路径外的所有未被选取为监控路径的剩余业务路径的业务路径权重W

A45、将第二目标业务路径中属于同一个告警码LS的链路的权重w设置为∞,并将不属于同一个告警码的链路的权重w减小,得到一条链路的权重w之和最小的第三目标业务路径p;

A46、计算第三目标业务路径p两端到边缘交换机的最短距离,得到探测路径;

A47、判断探测路径中的所有告警码LS是否均为1,若是则得到目标探测路径,并进入步骤A5,否则返回步骤A45;

A5、基于目标探测路径,得到告警码为mask的告警码表项;

如图3所示,ABCDEFG节点表示网络中的交换节点,每个节点都保存有各自的spec端口--mask表项,所述步骤A5包括如下步骤:

A51、基于目标探测路径,遍历所有监控路径,并对各监控路径从0到N依次编号;

A52、查看所有编号后的监控路径所经过的所有链路,并将各监控路径经过的链路的告警码更改为1,得到告警码为mask的告警码表项;

A6、基于告警码组表项,分别对告警码为mask的链路的两端的交换机添加一条spec端口--mask表项;

监控路径跟踪阶段:交换机定期上报监控路径的保活信息给INT Monitor,INTMonitor会在发现有路径失效时得到链路失效码,查找到失效链路,并上报给控制器;

所述监控路径跟踪阶段包括如下步骤:

B1、设置测量间隔Δt,针对检测边缘交换机每次从主机侧接收到数据包与上一次发送携带路径元信息的报文的时间间隔超过测量间隔Δt时,则对接收到的数据包添加tb_path表项中与spec端口--mask表项对应的告警码mask,并将告警码mask附加至数据包;

网络中的所有交换机都存储一个寄存器register,用于标识当时需要转发哪些路径的数据包;

B2、针对利用交换机接收附加有告警码mask的数据包时,则删除数据包的告警码mask相关字段,且或更新寄存器;

所述步骤B2中或更新寄存器的计算表达式如下:

register=register|mask

其中,register表示寄存器数据,|表示或,mask表示mask相关字段;

B3、针对利用交换机查询到待发送数据包的tb_path表项中与输出端口对应的告警码mask时,则将告警码mask与寄存器数据相与,得到相与结果;

所述步骤B3中相与结果的计算表达式如下:

result=mask®ister

其中,result表示相与结果,&表示与;

B4、针对相与结果为0时,则不将相与结果附加至待发送数据包;

B5、针对相与结果不为0时,则将相与结果附加至待发送数据包,并异或更新寄存器;

所述步骤B5中异或更新寄存器的计算表达式如下:

register=register⊕result

其中,⊕表示异或;

B6、基于步骤B1至B5的监控路径跟踪方法,利用交换机将附加有路径标识信息的数据包在网络中逐跳转发,直至到达边缘交换机,得到携带有路径标识信息的数据包经过的路径path;

B7、将路径path传输至INT Monitor,并针对利用INT Monitor检测到当前路径path接收到数据包的时间距上一次接收时间超过路径老化时间t

如图4所示,初始时刻,交换机A连接的主机发送一个数据包,交换机转发该数包时,查询自己的tb_path表项,得知出端口1对应的mask值为0b0111,因此在转发的时候将原数据包携带上了mask数值0b0111;当数据包到达交换机C后,C会移除mask值,更新自己的register为0b0111,在有数据包准备从3端口转发时候,计算得需要添加的mask值为result=mask®ister=0b0100,因此从3端口转发的数据报会携带上mask值0b0100,转发完后更新register为0b0111⊕0b0100=0b0011;

在INT Monitor中会为每条路径维护它的上次达到时间last_time,发送携带路径path信息的数据包的间隔为Δt′,路径的老化时间设置为t

最终数据包经过path到达了边缘交换机,并上报路径path保活信息给了INTMonitor,当检测到当前时间距离包的上一次到达时间相差超过t

如图5所示,一个完整的链路失效检测的时间线可以如下表示,在T1时刻INTMonitor收到携带有路径信息的数据包后会立即更新last_time,在T2时刻发生链路失效后,后续的携带有路径信息的数据包无法再被INT Monitor收集到,因此当T3时刻发现该路径老化时间已到时,认为该路径已经中断,待本轮探测信息包已不存在在网络中时即T4时刻便可配合其他路径的中断信息构成告警码以定位失效链路。

技术分类

06120115890252