一种心跳检测方法和装置
技术领域
本发明涉及通信技术领域,尤其涉及一种心跳检测方法和装置。
背景技术
目前的通信系统中,通常采用心跳检测机制实时检测对方的运行状态。以目前使用的OAA(Open Application Architecture,开放应用架构)架构为例,OAA的典型硬件架构如图1所示,由路由器(Router)和OAP(Open ApplicationPlatform,开放应用平台)单板两部分组成,属于多处理器多操作系统范畴,路由器和OAP单板通过对连的串口和以太网接口进行通信,对连的串口一般将输入/输出重定向到Console口,用于命令行的回显和控制,对连以太网口一般用于数据交互。路由器的CPU完成网络路由功能,OAP单板的CPU运行Linux,第三方基于Linux开发的软件,很容易就可以集成到OAP单板上,与路由器配合,将路由器的流量重定向/镜像到OAP单板,完成杀毒、流量分析等功能。
由于路由器和OAP单板需要进行交互,二者就必须检测对方所处的状态,一般使用心跳检测机制。心跳检测一般通过对连的以太网口或串口向对方定时发送心跳报文实现。只有心跳检测的结果为正常时,二者才能进行交互。当心跳检测的结果出现异常时,可能是由于出现死机等异常情况所造成,需要进行自动重启或提示用户等操作。
现有技术中的心跳检测是利用心跳报文统计实现的。假设作为通信双方的路由器和OAP分别为A和B。对A而言,B会定时向A发送心跳报文。A会对接收到的心跳报文进行计数,当在预定时间内(如30秒)心跳报文的计数没有增加,则认为心跳检测结果异常;否则,认为心跳检测结果正常。
现有技术方案的缺点在于:
检测的可靠度不高。这是因为:当网络流量很大时,由于系统性能的限制,心跳报文可能会被丢弃,导致心跳异常,而实际上对方的软件运行正常,只是网络流量暂时比较大而已。此时,若提示用户或进行自动重启,会误报警并影响业务的处理。
发明内容
本发明提供一种心跳检测方法和装置,用于解决现有的心跳检测机制在网络流量较大时可靠度不高的问题
为达到上述目的,本发明提供一种心跳检测方法,应用于包括多个设备的开放应用架构中,包括以下步骤:
本端设备检测到自远端设备发送的心跳报文数量无变化时,获取特定时间内与所述远端设备间的网络流量,并判断所述网络流量是否超过本端设备预先保存的关于特定时间接收所述远端设备网络流量的门限值;
超过所述门限值时,所述本端设备判断为与所述远端设备的心跳检测正常,否则判断为与所述远端设备的心跳检测异常。
其中,所述检测到自远端设备发送的心跳报文数量无变化具体为:
统计接收到的自所述远端设备发送的心跳报文数量,根据所述统计检测自所述远端设备发送的心跳报文数量是否变化。
其中,所述获取特定时间内与所述远端设备的网络流量具体为:
统计特定时间内从所述远端设备接收到的所有报文的数量,作为特定时间内与所述远端设备的网络流量。
其中,所述特定时间与定时检测所述自远端设备发送的心跳报文数量是否发生变化的时间周期相对应。
本发明还提供一种心跳检测装置,应用于开放应用架构中的设备,包括:
门限值设置单元,用于设置关于特定时间接收远端设备网络流量的门限值;
心跳报文检测单元,用于检测自远端设备发送的心跳报文数量是否变化,并在检测到心跳报文数量无变化时通知网络流量检测单元;
网络流量检测单元,用于当所述心跳报文检测单元检测到心跳报文数量无变化时,获取特定时间内与所述远端设备间的网络流量,判断所述网络流量是否超过所述门限值设置单元设置的门限值并将判断结果通知处理单元;
处理单元,用于当所述网络流量检测单元的判断结果为所述网络流量超过所述门限值时,判断为与所述远端设备的心跳检测正常,否则判断为与所述远端设备的心跳检测异常。
其中,还包括:心跳报文接收统计单元,用于定时统计接收到的自远端设备发送的心跳报文,并将统计的心跳报文的接收数量上报给所述心跳报文检测单元。
其中,还包括:报文接收统计单元,用于统计特定时间内从所述远端设备接收到的所有报文,并将接收的所有报文的数量作为与所述远端设备的网络流量上报给所述网络流量检测单元。
其中,所述特定时间与所述心跳报文检测单元定时检测所述自远端设备发送的心跳报文数量是否发生变化的时间周期相对应。
与现有技术相比,本发明具有以下优点:
通过使用本发明,对接口接收的报文和心跳报文分别进行统计,结合对网络流量进行的估计,提高了在网络流量较大时利用心跳报文进行检测的可靠度。
附图说明
图1是现有技术中OAA架构的典型硬件架构示意图;
图2是本发明中心跳检测方法的流程图;
图3是本发明中心跳检测装置的结构示意图。
具体实施方式
以下结合附图和实施例,对本发明的实施方式作进一步说明。
本发明的核心思想在于:本地设备检测到自远端设备发送的心跳报文数量无变化时,进一步判断当前与该远端设备间的网络流量是否超过预设的门限值;超过门限值时可以认为当前网络流量过大,从而认为接收到的心跳报文的数量无变化是由于网络流量过大引起的,因此可以判断与该远端设备的心跳检测正常。
本发明的实施例中提供一种心跳检测方法,假设通信双方为A和B,A和B互相通过以太网口向对方发送心跳报文。以A为例进行说明本发明的心跳检测方法,在A上设置门限值N,用于判断一段特定时间内与B之间的网络流量是否过大,A根据接收到的心跳报文和该门限值N,定时对与B的心跳检测是否正常进行判断。
如图2所示,该心跳检测方法包括以下步骤:
步骤s101、A检测从B接收的心跳报文数,判断接收的心跳报文数和上次记录的心跳报文数相比是否有变化,有变化则进行步骤s102;否则,进行步骤s103。
步骤s102、A检测到从B接收的心跳报文数有变化,判断心跳检测结果为正常、与B的通信正常,返回步骤s101继续进行检测。
步骤s103、A检测到从B接收的心跳报文数无变化时,进一步检测特定时间内从与B连接的以太网接口接收到的报文数量,判断从B已接收到的报文数量比上次记录的从B已接收报文数量的增加数量是否大于N,N为与特定时间相关的判断是否为网络流量过大的经验值,若是则进行步骤s104,否则进行步骤s105。
步骤s104、A判断网络流量过大,心跳报文可能会丢失,判断心跳检测结果为正常,返回步骤s101继续进行检测。
步骤s105、A判断网络流量并未过大,心跳报文仍发生丢失,判断心跳检测结果为异常。
上述步骤s101~s105中,A检测从B接收的心跳报文数可以是定时检测,对于该定时检测所采用的周期以T表示。而A在心跳报文数量无变化时,检测特定时间内从与B连接的以太网接口接收到的报文数量作为与B的网络流量,该特定时间可以是心跳报文的检测周期T。如假设心跳报文的检测周期T=1分钟,则可以设置一关于1分钟内接收到的报文数量的门限,在心跳报文丢失时将本心跳检测周期检测点之前1分钟内从B接收到的报文数量与该设置的门限进行比较,判断1分钟内的网络流量是否过大。当然该特定时间也可以是不同于心跳报文检测周期的其它时间。
通过上述步骤,A通过定时对接收到的心跳报文进行检测,实现了对与B之间通信的监控。具体的,通过设置门限值N,对与B连接的以太网接口上一段时间内网络流量的状况进行了估计,当网络流量大时,A的以太网接口可能会出现B发送的心跳报文丢包的情况,对于该情况导致的心跳报文计数不变可以认为心跳检测结果为正常,避免因网络流量大导致的心跳异常误判。另外,考虑到B会定时向A发送心跳报文,所以正常情况下,A的以太网接口不会出现接收到的心跳报文数增加、而接收报文数不增加的情况。
本发明的实施例还提供一种心跳检测装置,安装在本地设备上用于远端设备进行心跳检测,判断与远端设备的通信是否正常。该心跳检测装置的示意图如图3所示,包括:
门限值设置单元10,用于设置关于特定时间接收远端设备网络流量的相关门限值;
心跳报文检测单元20,用于检测自远端设备发送的心跳报文数量是否变化,并在检测到心跳报文数量无变化时通知网络流量检测单元30;
网络流量检测单元30,用于当心跳报文检测单元20检测到心跳报文数量无变化时,获取特定时间内与远端设备间的网络流量,判断该网络流量是否超过门限值设置单元10设置的门限值并将判断结果通知处理单元40;
处理单元40,用于当网络流量检测单元30的判断结果为网络流量超过门限值时,判断为与远端设备的心跳检测正常,否则判断为与所述远端设备的心跳检测异常。
该心跳检测装置还包括:
心跳报文接收统计单元50,用于统计接收到的自远端设备发送的心跳报文,并将统计的心跳报文的接收数量上报给心跳报文检测单元20用于判断心跳报文数量是否变化。
报文接收统计单元60,用于统计特定时间内从远端设备接收到的所有报文,并将接收的所有报文的数量作为与远端设备的网络流量上报给网络流量检测单元30。
上述各单元中涉及的特定时间与心跳报文检测单元20定时检测自远端设备发送的心跳报文数量是否发生变化的时间周期相对应。
通过使用本发明实施例提供的上述方法和装置,对接口接收的报文和心跳报文分别进行统计,结合对网络流量进行的估计,提高了在网络流量较大时利用心跳报文检测的可靠度。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。