一种网络故障检测方法及装置与流程

文档序号:17158160发布日期:2019-03-20 00:16阅读:172来源:国知局
一种网络故障检测方法及装置与流程

本发明涉及通信技术领域,尤指一种网络故障检测方法及装置。



背景技术:

网络故障一直是数据中心网络需要解决的问题,随着网络环境愈加复杂,越难以及时准确地发现哪里发生了故障。tcp协议会通过报文重传的方式处理少量的报文丢包,但如果网络出现故障则会出现大量的重传报文。因此,少量的tcp重传并不一定说明网络发生故障,而网络故障必然会导致大量的报文重传,因此可以通过一定时间内的重传数量大小来粗略判断网络是否发生故障。

现有检测网络故障主要是在网络外部进行探测,当通信主机的tcp报文大量重传,得知网络出现故障时,在网络外部通过traceroute等手段来探测网络的连通性。但这种方法无法精确感知网络内部情况,还有多径等多种因素影响,准确性不高。因此,现有网络故障的检测方案准确率不高,效率太低。



技术实现要素:

本发明实施例提供一种网络故障检测方法及装置,用以解决现有技术中网络故障检测准确率不高、效率低下的问题。

一种网络故障检测方法,应用于交换设备的可编程交换芯片中,所述方法包括:

所述可编程交换芯片对接收到的传输控制协议tcp报文进行数据流检测,获取所述tcp报文的五元组信息以及tcp序列号;

当根据所述tcp报文的五元组信息找到对应的记录序列号时,判断所述tcp序列号是否大于所述记录序列号;

若所述tcp序列号不大于所述记录序列号,则将所述五元组信息对应的重传次数加一,并将所述记录序列号更新为所述tcp序列号;

判断所述重传次数是否大于预设重传次数阈值;

若所述重传次数大于所述预设重传次数阈值,则将所述tcp报文确定为故障报文并发送给故障处理设备以进行故障处理。

进一步地,当根据所述tcp报文的五元组信息未找到对应的记录序列号时,所述方法,还包括:

将所述tcp报文的tcp序列号记录为所述五元组信息对应的记录序列号,并设置所述五元组信息对应的重传次数为0;所述五元组信息包括源ip、目的ip、协议号、目的端口号、源端口号。

其中,所述将所述tcp报文的tcp序列号记录为所述五元组信息对应的记录序列号,并设置所述五元组信息对应的重传次数为0,具体为:

将所述五元组信息进行哈希算法,得到五元组哈希值;

分别将所述tcp序列号和初始化为0的重传次数存入以所述五元组哈希值为索引的两个缓存中。

进一步地,在将所述tcp报文确定为故障报文并发送给故障处理设备以进行故障处理之后,所述方法,还包括:

将所述五元组信息对应的重传次数清零。

其中,所述将所述tcp报文确定为故障报文并发送给故障处理设备以进行故障处理,包括:

将所述tcp报文确定为故障报文并复制给所述交换设备的cpu进行故障处理;或者

将所述tcp报文确定为故障报文并镜像所述tcp报文至监控设备进行故障处理。

一种网络故障检测装置,所述装置应用于交换设备的可编程交换芯片,包括:检测单元、第一判断单元、处理单元、第二判断单元、故障报文发送单元;其中,

所述检测单元,用于对接收到的传输控制协议tcp报文进行数据流检测,获取所述tcp报文的五元组信息以及tcp序列号;

所述第一判断单元,用于当根据所述tcp报文的五元组信息找到对应的记录序列号时,判断所述tcp序列号是否大于所述记录序列号;

所述处理单元,用于若所述tcp序列号不大于所述记录序列号,则将所述五元组信息对应的重传次数加一,并将所述记录序列号更新为所述tcp序列号;

所述第二判断单元,用于判断所述重传次数是否大于预设重传次数阈值;

所述故障报文发送单元,用于若所述重传次数大于所述预设重传次数阈值,则将所述tcp报文确定为故障报文并发送给故障处理设备以进行故障处理。

进一步地,所述装置,还包括:记录单元;用于当根据所述tcp报文的五元组信息未找到对应的记录序列号时,将所述tcp报文tcp序列号记录为所述五元组信息对应的记录序列号,并设置所述五元组信息对应的重传次数为0;所述五元组信息包括源ip、目的ip、协议号、目的端口号、源端口号。

其中,所述记录单元,具体用于将所述五元组信息进行哈希算法,得到五元组哈希值;分别将所述tcp序列号和初始化为0的重传次数存入以所述五元组哈希值为索引的两个缓存中。

进一步地,所述装置,还包括:清零单元,用于在故障报文发送单元将所述tcp报文确定为故障报文并发送给故障处理设备以进行故障处理之后,将所述五元组信息对应的重传次数清零。

其中,所述故障报文发送单元,具体用于将所述tcp报文确定为故障报文并复制给所述交换设备的cpu进行故障处理;或者将所述tcp报文确定为故障报文并镜像所述tcp报文至监控设备进行故障处理。

本发明有益效果如下:

本发明实施例提供的网络故障检测方法及装置,交换设备的可编程交换芯片对接收到的tcp报文进行故障报文的检测,由于可编程交换芯片可在数据平面即可完成对报文的检测,因此所有的检测、判断逻辑都可在报文线速转发的过程中同时完成,既不会产生大量的额外带宽消耗,也不会对转发性能有任何影响。通过可编程交换芯片来进行故障报文的筛选,性能远远超过监控服务器使用cpu来进行故障报文判断,并且可编程交换芯片位于数据中心网络内部,不仅能感知到网络故障,并且准确率较高。

附图说明

图1为本发明实施例中网络故障检测方法的流程图;

图2为本发明实施例中tcp报文的五元组信息、tcp序列号及重传次数的存储示意图;

图3为本发明实施例中网络故障检测装置的结构示意图。

具体实施方式

对于数据中心网络内部,服务器只能通过重传tcp报文来尝试恢复连接,无法定位故障位置,因此亟需一种网络故障检测方法,能够及时发现tcp流的故障并进行定位。

针对现有技术中存在的网络故障检测准确率低、效率不高的问题,本发明实施例提供的一种网络故障检测方法,该方法应用于交换设备的可编程交换芯片中先。本发明方法的流程如图1所示,执行步骤如下:

步骤101,所述可编程交换芯片对接收到的传输控制协议tcp报文进行数据流检测,获取所述tcp报文的五元组信息以及tcp序列号;

这里,所述可编程交换芯片具体可以为用于数据平面可编程的交换芯片,如p4(programmingprotocol-independentpacketprocessors)可编程交换芯片。

具体地,所述可编程交换芯片对tcp报文进行数据流检测,获得该tcp报文的五元组信息,并查询自身是否存有该五元组信息对应的记录序列号,若是,则执行步骤102,否则,所述方法,还包括:将所述tcp报文的tcp序列号记录为所述五元组信息对应的记录序列号,并设置所述五元组信息对应的重传次数为0;所述五元组信息包括源ip、目的ip、协议号、目的端口号、源端口号,这里,记录下的tcp序列号与五元组信息一一对应,即为前述五元组信息对应的记录序列号。

进一步地,将所述tcp报文的tcp序列号记录为所述五元组信息对应的记录序列号,并设置所述五元组信息对应的重传次数为0,具体可以为:将所述五元组信息进行哈希算法,得到五元组哈希值;这里,对五元组信息进行处理的算法也可以不限于哈希算法,能实现同样功能的算法均可实现,本发明实施例并不对此进行限定。分别将所述tcp序列号和初始化为0的重传次数存入以所述五元组哈希值为索引的两个缓存(register)中。例如,参考图2,新的数据流报文packet进入,首先对该数据报文进行计算得到五元组hash值h,然后分别在存储tcp序列号的register1和存储重传次数register2中进行地址偏移h后,将tcp序列号存入register1,将重传次数=0存入register2中。

步骤102,当根据所述tcp报文的五元组信息找到对应的记录序列号时,判断所述tcp序列号是否大于所述记录序列号;

步骤103,若所述tcp序列号不大于所述记录序列号,则将所述五元组信息对应的重传次数加一,并将所述记录序列号更新为所述tcp序列号;

这里,所述tcp序列号若不大于所述记录序列号,表示该tcp报文并不是第一次接收到,即该tcp报文是重传报文,因此,将该tcp报文的五元组信息对应的重传次数加一,并将所述记录序列号更新为所述tcp序列号;优选地,这里无论所述记录序列号与所述tcp序列号是否一样,为保证准确性,可以将所述记录序列号均进行更新操作,更新为所述tcp序列号。

步骤104,判断所述重传次数是否大于预设重传次数阈值;

这里,所述预设重传次数阈值可以根据需求和经验进行预先设置,也可以根据环境和需求的变更,进行更改。

步骤105,若所述重传次数大于所述预设重传次数阈值,则将所述tcp报文确定为故障报文并发送给故障处理设备以进行故障处理。

具体地,可将所述tcp报文确定为故障报文并复制给所述交换设备的cpu进行故障处理;这里,前述已经对报文进行了筛选确定出了故障报文,因此发送给交换设备的cpu的报文不会爆发性增多,如此,交换设备在保证报文流量线速转发的同时,即可进行故障报文的处理,提高了故障检测的处理效率,并且准确度较高;

或者,

将所述tcp报文确定为故障报文并镜像所述tcp报文至监控设备进行故障处理。这里,所述将故障报文镜像至监控设备,具体可以通过在所述故障报文中添加私有头部,通过该私有头部携带有附加信息以告知所述监控设备该报文为故障报文,以使监控设备对故障报文进行处理,如此,经过交换设备对报文筛选后,只将故障报文镜像给监控设备,大大减少了涌入监控设备的流量,能够大大提高处理效率。

基于同一发明构思,本发明实施例提供一种网络故障检测装置,该装置可以设置在交换设备的可编程交换芯片中,这里,所述可编程交换芯片具体可以为用于数据平面可编程的交换芯片,如p4(programmingprotocol-independentpacketprocessors)可编程交换芯片。结构如图3所示,包括:检测单元31、第一判断单元32、处理单元33、第二判断单元34、故障报文发送单元35;其中,

所述检测单元31,用于对接收到的传输控制协议tcp报文进行数据流检测,获取所述tcp报文的五元组信息以及tcp序列号;

所述第一判断单元32,用于当根据所述tcp报文的五元组信息找到对应的记录序列号时,判断所述tcp序列号是否大于所述记录序列号;

所述处理单元33,用于若所述tcp序列号不大于所述记录序列号,则将所述五元组信息对应的重传次数加一,并将所述记录序列号更新为所述tcp序列号;这里,所述tcp序列号若不大于所述记录序列号,表示该tcp报文并不是第一次接收到,即该tcp报文是重传报文,因此,将该tcp报文的五元组信息对应的重传次数加一,并将所述记录序列号更新为所述tcp序列号;优选地,这里无论所述记录序列号与所述tcp序列号是否一样,为保证准确性,可以将所述记录序列号均进行更新操作,更新为所述tcp序列号。

所述第二判断单元34,用于判断所述重传次数是否大于预设重传次数阈值;这里,所述预设重传次数阈值可以根据需求和经验进行预先设置,也可以根据环境和需求的变更,进行更改。

所述故障报文发送单元35,用于若所述重传次数大于所述预设重传次数阈值,则将所述tcp报文确定为故障报文并发送给故障处理设备以进行故障处理。

进一步地,所述装置,还包括:记录单元36;用于当根据所述tcp报文的五元组信息未找到对应的记录序列号时,将所述tcp报文tcp序列号记录为所述五元组信息对应的记录序列号,并设置所述五元组信息对应的重传次数为0;所述五元组信息包括源ip、目的ip、协议号、目的端口号、源端口号。这里,记录下的tcp序列号与五元组信息一一对应,即为前述五元组信息对应的记录序列号。

其中,所述记录单元36,具体用于将所述五元组信息进行哈希算法,得到五元组哈希值;分别将所述tcp序列号和初始化为0的重传次数存入以所述五元组哈希值为索引的两个缓存中。这里,对五元组信息进行处理的算法也可以不限于哈希算法,能实现同样功能的算法均可实现,本发明实施例并不对此进行限定。

进一步地,所述装置,还包括:清零单元37,用于在故障报文发送单元35将所述tcp报文确定为故障报文并发送给故障处理设备以进行故障处理之后,将所述五元组信息对应的重传次数清零。

其中,所述故障报文发送单元35,具体用于将所述tcp报文确定为故障报文并复制给所述交换设备的cpu进行故障处理;这里,前述已经对报文进行了筛选确定出了故障报文,因此发送给交换设备的cpu的报文不会爆发性增多,如此,交换设备在保证报文流量线速转发的同时,即可进行故障报文的处理,提高了故障检测的处理效率,并且准确度较高;

或者,将所述tcp报文确定为故障报文并镜像所述tcp报文至监控设备进行故障处理。这里,所述将故障报文镜像至监控设备,具体可以通过在所述故障报文中添加私有头部,通过该私有头部携带有附加信息以告知所述监控设备该报文为故障报文,以使监控设备对故障报文进行处理,如此,经过交换设备对报文筛选后,只将故障报文镜像给监控设备,大大减少了涌入监控设备的流量,能够大大提高处理效率。

应当理解,本发明实施例提供的网络故障检测装置实现原理及过程与上述图1及所示的实施例类似,在此不再赘述。

本发明实施例提供的网络故障检测方法及装置,交换设备的可编程交换芯片对接收到的tcp报文进行故障报文的检测,由于可编程逻辑芯片可在数据平面即可完成对报文的检测,因此所有的检测、判断逻辑都可在报文线速转发的过程中同时完成,既不会产生大量的额外带宽消耗,也不会对转发性能有任何影响。通过可编程交换芯片来进行故障报文的筛选,性能远远超过监控服务器使用cpu来进行故障报文判断,并且可编程交换芯片位于数据中心网络内部,不仅能感知到网络故障,并且准确率较高。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1