CN101714991A - 心跳机制的实现方法 - Google Patents

心跳机制的实现方法 Download PDF

Info

Publication number
CN101714991A
CN101714991A CN200910236819A CN200910236819A CN101714991A CN 101714991 A CN101714991 A CN 101714991A CN 200910236819 A CN200910236819 A CN 200910236819A CN 200910236819 A CN200910236819 A CN 200910236819A CN 101714991 A CN101714991 A CN 101714991A
Authority
CN
China
Prior art keywords
heartbeat
packet
client
data packet
clients
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910236819A
Other languages
English (en)
Other versions
CN101714991B (zh
Inventor
王凯
薛一波
李军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CERTUSNET CORP.
Original Assignee
Tsinghua University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN2009102368197A priority Critical patent/CN101714991B/zh
Publication of CN101714991A publication Critical patent/CN101714991A/zh
Application granted granted Critical
Publication of CN101714991B publication Critical patent/CN101714991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明涉及一种心跳机制的实现方法,该方法包括步骤:服务器端向所有客户端发送心跳请求数据包;在设定时间后,所述服务器端以非阻塞的方式接收数据包,若未收到数据包则判定所有客户端均未正常工作,并返回初始步骤;若接收到数据包,则解析接收到的数据包,若所述数据包为心跳应答数据包,则判定发送该心跳应答数据包的客户端工作正常,未发送任何数据包的客户端未正常工作,并返回初始步骤,否则判定发送该数据包的客户端以及未发送任何数据包的客户端均未正常工作,并返回初始步骤。本发明方法独立性、可靠性强,不受带宽限制,简单易行,通用性强。

Description

心跳机制的实现方法
技术领域
本发明涉及网络测试或监控技术领域,尤其涉及一种心跳机制的实现方法。
背景技术
心跳机制一般是用来判断对方(设备、进程等网络实体或应用)是否正常运行。
服务器端不能有效的判断客户端是否在线,也就是说,服务器端无法区分客户端是长时间在空闲,还是已经掉线的情况,这样就需要心跳机制来实现客户端定时发送简单的信息给服务器端,以告诉服务器端该客户端还在线。心跳机制通常采用定时发送简单的通讯包的方式,如果在指定时间段内未收到对方响应,则判断对方已经当掉。
TCP(Transmission Control Protocol,传输控制协议)中已实现了一个心跳机制。如图1所示,即如果在指定的时间内(一般为2个小时)没有数据传送,客户端会给服务器端发送一个Keep-Alive数据报文,使用的序列号是曾发出的最后一个报文的最后一个字节的序列号,服务器端如果收到这个数据,则回送一个TCP的ACK报文(ACKnowledge Caracter,确认字符),确认该字节已收到,这样就知道此连接没有断开。如果一段时间没有收到服务器端的响应,客户端会进行重试,重试几次后,认为TCP连接异常断开,再向服务器端发一个RST(Reset the connection,复位连接)报文,然后将连接关闭。
如果需要在服务器端采用该心跳机制来实现检测多个客户端在线与否,服务器端与每个客户端之间需要维护一条专门的TCP数据连接。当某客户端当机时,服务器端会检测到客户端当机,并关闭与该客户端的连接;而当该客户端再次恢复正常工作时,服务器端则需要重建与该客户端的TCP数据连接才能开始实时检测该客户端的状态。因此,该心跳机制应用范围有限,且可靠性差,效率低。另外,利用TCP报文实现的心跳机制因为发送的TCP报文较长,不符合心跳数据包信息应相对简短的要求。
发明内容
本发明的目的是提供一种心跳机制的实现方法,该方法独立性、可靠性强,效率高,且简单易行,通用性强,可克服现有技术的不足。
为实现上述目的,本发明采用如下技术方案。
本发明提出的一种心跳机制的实现方法,该方法包括步骤:
S1.服务器端向所有客户端发送心跳请求数据包;
S2.在设定时间后,所述服务器端以非阻塞的方式接收数据包,若接收到数据包,则执行步骤S3,否则判定所有客户端均未正常工作,并返回步骤S1;
S3.解析接收到的数据包,若所述数据包为心跳应答数据包,则判定发送该心跳应答数据包的客户端工作正常,未发送任何数据包的客户端未正常工作,并返回步骤S1,否则判定发送该数据包的客户端以及未发送任何数据包的客户端均未正常工作,并返回步骤S1。
其中,步骤S1中,所述服务器端以广播的方式发送所述心跳请求数据包。
其中,在所述设定时间内,所述客户端返回的数据包均存储于接收缓冲区内。
其中,步骤S2中,所述设定时间为心跳机制的周期。
其中,所述服务器端以及客户端均为统一威胁管理系统中的处理器。
其中,该方法中的数据包包括:用于表示数据包为心跳数据包或非心跳数据包的字节,用于辅助进行心跳请求数据包与心跳应答数据包的匹配的字节,以及用于表示心跳数据包的类型为心跳请求数据包或心跳应答数据包的字节。
本发明的方法基于UDP,用户可自定义该心跳机制的通信格式,这样就能够很方便地将心跳接收与其他远程配置的消息格式兼容;本发明方法实现的心跳机制不需要socket绑定接收端口,不需要去维护一条专门的连接,所以独立性和可靠性很强。另外,该心跳机制所基于的系统相当于是在一个设备不同板卡之间,或者说该心跳机制是多处理器之间通过控制总线实现的,因为不在数据总线上,所以不存在带宽问题。最后,该心跳机制简单易行,通用性强。
附图说明
图1为传统心跳机制流程图;
图2为依照本发明一种实施方式的心跳机制的实现方法流程图;
图3为依照本发明一种实施方式的心跳机制的实现方法实现的心跳机制的协议流程图;
图4为实施例中应用本发明方法的UTM系统架构图;
图5为实施例中的UTM系统应用本发明方法的流程图;
图6为实施例中心跳机制的数据包结构图。
具体实施方式
本发明提出的心跳机制的实现方法,结合附图和实施例详细说明如下。
如图2所示,依照本发明一种实施方式的心跳机制的实现方法,该方法包括步骤:
S1.服务器端向所有客户端广播发送心跳请求数据包;
S2.在设定时间后,服务器端以非阻塞的方式接收数据包,若接收到数据包,则执行步骤S3,否则判定所有客户端均未正常工作,并返回步骤S1;
S3.解析接收到的数据包,若该数据包为心跳应答数据包,则判定发送该心跳应答数据包的客户端工作正常,未发送任何数据包的客户端未正常工作,并返回步骤S1,否则判定发送该数据包的客户端以及未发送任何数据包的客户端均未正常工作,并返回步骤S1。
其中,在设定时间内,客户端返回的数据包均存储于socket的接收缓冲区(Receive Buffer)内,设定时间为心跳机制的周期。
优选地,服务器端以及客户端可均为统一威胁管理系统中的处理器。本发明的方法所实现的心跳机制是基于一个设备不同板卡之间,或由多处理器之间通过控制总线实现的。
优选地,本发明方法所实现的心跳机制中的数据包包括:用于表示数据包为心跳数据包或非心跳数据包的字节,用于辅助进行心跳请求数据包与心跳应答数据包的匹配的字节,以及用于表示心跳数据包的类型为心跳请求数据包或心跳应答数据包的字节。这样,服务器端可根据上述通信格式准确判定接收的数据包的类型,用户也可自定义该心跳机制数据包通信格式,以方便地将心跳接收与其它远程配置的消息格式兼容。
图3为依照本发明一种实施方式的方法实现的心跳机制的协议流程示意图。
实施例
本实施例的心跳机制的实现方法应用于UTM(Unified ThreatManagement,统一威胁管理)系统中,该系统如图4所示,包括CP(控制处理器),为用于配置和控制NP(网络处理器)及AP(应用处理器)的主机;NP为起防火墙、流量管理等作用的主机;AP是起IDP(入侵检测保护)及杀毒等作用的主机。通过本发明的方法,让CP端实施了解NP端及AP端等多个网络实体是否正常运行,并将不同的网络实体存活状况报告给NP,以采取相应的流量控制手段以维持各AP之间的负载均衡。如图5所示,该方法包括步骤:
D1.初始化CP上的心跳程序,包括设置socket、心跳请求数据包的通信格式等;
D2.CP向所有AN/NP广播发送心跳请求数据包;
D3.在规定时间t(一般是以真正意义上的心跳频率)之后,CP会以非阻塞方式接收数据包,若接收到数据包,则执行步骤D4,否则,标记所有AP/NP的状态为当机,并返回D2;
D4.解析接收到的数据包,若接收到的数据包为心跳应答数据包,则判定发送该心跳应答数据包的AP/NP正常工作,标记其状态为正常,未发送任何数据包的AP/NP未正常工作,标记其状态为当机,并将记录的信息汇报给正常工作的NP,返回步骤D2;否则判定发送该数据包的AP/NP及未发送任何数据包的AP/NP均未正常工作,标记其状态为当机,并将记录的信息汇报给正常工作的NP,返回步骤D2。
CP定时向所有AP/NP广播发送心跳请求数据包,某个AP/NP如果正常工作的话,其daemon AP/NP就会对CP主动发来的心跳请求数据包进行解析和回复,在规定时间t(一般是以真正意义上的心跳频率)之后,CP会以非阻塞方式接收从AP/NP的daemon程序返回的心跳应答数据包(如果AP/NP已经做了回复的话,心跳应答数据包应该早于t时间就会到达,此时CP相当于从socket的Receive Buffer中读取所有已收到的回复数据)。如果CP此时能够收到来自某个AP/NP的心跳应答数据包,则CP认为该AP/NP还在正常工作;如果没有能够收到来自某个AP/NP的心跳应答数据包,则CP认为该AP/NP工作不正常,记录日志,将所有AP/NP的目前状态汇报给尚在正常工作的NP,NP则会根据正常工作的AP数来重新分配去往各AP的处理流量,以到达负载均衡的目的,维持整个UTM系统的稳定工作。
如图6所示,为本实施方式中的心跳机制数据包的格式,其中:
Code域为一个字节,表明此数据包为心跳数据包,其值规定为0(HeartBeat);如果code为其他值,则代表其他通信数据包。
Identifier域为一个字节,辅助进行心跳请求数据包与心跳应答数据包的匹配——每一个心跳请求数据包都与一个心跳应答数据包相对应。这样的一个Identifier域就建立了这样的一个对应关系——相同的Identifier相匹配。
Type域为一个字节,表明此心跳数据包的类型,心跳数据包Type域的取值和意义如下:
Type=0:心跳请求数据包(Heartbeat Request)。由CP主动广播发出,由daemon AP/NP接收并解析。
Type=1:心跳应答数据包(Heartbeat Response)。由daemon AP/NP返回给CP,由CP确认心跳正常。
本实施例具体实现程序如下:
心跳请求数据包设置——
message_conf msgs;
memset(&msgs,0,sizeof(message_conf));
msgs.code=MSG_HEARTBEAT_CODE;
msgs.identifier=1;
msgs.type=MSG_HEARTBEAT_TYPE_REQUEST;
广播发送心跳请求数据包——
server_addr.sin_addr.s_addr=htonl(INADDR_BROADCAST);
if((bytes                                                        =sendto(server_sockfd,&msgs,sizeof(message_conf),0,(struct  sockaddr*)&server_addr,sizeof(server_addr)))<0)
debugline(″Send Heartbeat Request Error!″);
非阻塞接收数据包——
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
if((bytes                                                        =recvfrom(server_sockfd,buf,sizeof(buf),MSG_DONTWAIT,(structsockaddr*)&server_addr,&sin_size))>0)
     {
     strcpy(unknow_addr,inet_ntoa(server_addr.sin_addr));
     logdebug(″unknow host′s ip is%s\n″,unknow_addr);
     ......
     }
     解析数据包——
     void msg_resolve(message_conf*msg,char*hb_dev)
     {
       switch(msg->code)
       {
       case MSG_HEARTBEAT_CODE:
       switch(msg->type)
       {
       case MSG_HEARTBEAT_TYPE_RESPONSE:
       logdebug(″Heartbeat response message is received!%s is OK!\n″,
 hb_dev);
       break;
       default:
          logdebug(″Error heartbeat response message is received!
 Although,%s is still OK!\n″,hb_dev);
          break;
          }
          return;
          ......
               }
     }
 上述心跳机制的效果显示如下:
 unknow host’s ip is 192.168.16.51
 Heartbeat response message is received!NP0 is OK!
 unknow host’s ip is 192.168.16.52
 Heartbeat response message is received!NP1 is OK!
 No heartbeat response message is received!AP0 is down!
 No heartbeat response message is received!AP1 is down!
 No heartbeat response message is received!AP2 is down!
 No heartbeat response message is received!AP3 is down!
 No heartbeat response message is received!AP4 is down!
 No heartbeat response message is received!AP5 is down!
 No heartbeat response message is received!AP6 is down!
 No heartbeat response message is received!AP7 is down!
 No heartbeat response message is received!AP8 is down!
 No heartbeat response message is received!AP9 is down!
该心跳机制实时高效,独立性和鲁棒性很强,能够很确切地检测出各网络实体的运行状态,并及时汇报处理,以维持整个系统的正常运行,可见达到了很好的效果。另外,由于该心跳机制的鲁棒性很强,所以在多次运行过程中从未出现心跳不正常或不工作的情况,而很好的独立性也使得在各个daemon不工作的时候,心跳仍然可以正常工作。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (6)

1.一种心跳机制的实现方法,该方法包括步骤:
S1.服务器端向所有客户端发送心跳请求数据包;
S2.在设定时间后,所述服务器端以非阻塞的方式接收数据包,若接收到数据包,则执行步骤S3,否则判定所有客户端均未正常工作,并返回步骤S1;
S3.解析接收到的数据包,若所述数据包为心跳应答数据包,则判定发送该心跳应答数据包的客户端工作正常,未发送任何数据包的客户端未正常工作,并返回步骤S1,否则判定发送该数据包的客户端以及未发送任何数据包的客户端均未正常工作,并返回步骤S1。
2.如权利要求1所述的心跳机制的实现方法,其特征在于,步骤S1中,所述服务器端以广播的方式发送所述心跳请求数据包。
3.如权利要求1所述的心跳机制的实现方法,其特征在于,在所述设定时间内,所述客户端返回的数据包均存储于接收缓冲区内。
4.如权利要求3所述的心跳机制的实现方法,其特征在于,步骤S2中,所述设定时间为心跳机制的周期。
5.如权利要求1所述的心跳机制的实现方法,其特征在于,所述服务器端以及客户端均为统一威胁管理系统中的处理器。
6.如权利要求1-5任一项所述的心跳机制的实现方法,其特征在于,该方法中的数据包包括:用于表示数据包为心跳数据包或非心跳数据包的字节,用于辅助进行心跳请求数据包与心跳应答数据包的匹配的字节,以及用于表示心跳数据包的类型为心跳请求数据包或心跳应答数据包的字节。
CN2009102368197A 2009-10-30 2009-10-30 心跳机制的实现方法 Active CN101714991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102368197A CN101714991B (zh) 2009-10-30 2009-10-30 心跳机制的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102368197A CN101714991B (zh) 2009-10-30 2009-10-30 心跳机制的实现方法

Publications (2)

Publication Number Publication Date
CN101714991A true CN101714991A (zh) 2010-05-26
CN101714991B CN101714991B (zh) 2012-06-20

Family

ID=42418267

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102368197A Active CN101714991B (zh) 2009-10-30 2009-10-30 心跳机制的实现方法

Country Status (1)

Country Link
CN (1) CN101714991B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102413191A (zh) * 2011-12-30 2012-04-11 深圳市旗瀚软件有限公司 一种基于浏览器的web即时通讯方法
CN102647314A (zh) * 2012-05-16 2012-08-22 深圳市乐唯科技开发有限公司 一种客户端在线状态判定方法及其系统
CN102984029A (zh) * 2012-11-30 2013-03-20 福建星网锐捷网络有限公司 应用于分布式系统的心跳检测装置和方法、网络设备
CN103731758A (zh) * 2013-12-20 2014-04-16 北京欧迈特数字技术有限责任公司 一种视频流传输方法和装置
CN104468265A (zh) * 2014-11-19 2015-03-25 北京国双科技有限公司 局域网终端在线状态的检测方法和装置
CN105453659A (zh) * 2014-07-24 2016-03-30 华为技术有限公司 数据收发方法、调制解调器及终端设备
CN105575203A (zh) * 2016-03-16 2016-05-11 深圳市京华科讯科技有限公司 一种实现云教学的方法、系统及云服务器
CN105933199A (zh) * 2016-04-08 2016-09-07 武汉斗鱼网络科技有限公司 一种保持心跳连接的方法与网关及聊天服务器
CN106210158A (zh) * 2015-05-04 2016-12-07 阿里巴巴集团控股有限公司 一种域名解析的同步方法和设备
CN108446250A (zh) * 2018-03-12 2018-08-24 上海燊星机器人科技有限公司 一种多cpu之间通讯的方法
CN115004622A (zh) * 2020-12-18 2022-09-02 西安诺瓦星云科技股份有限公司 数据处理方法及装置、板卡的数据处理系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100417104C (zh) * 2001-10-26 2008-09-03 中兴通讯股份有限公司 数据处理单板之间的以太网通信装置及方法
CN1327724C (zh) * 2004-06-28 2007-07-18 华为技术有限公司 一种用tcp发送sabp消息的方法
CN101192997A (zh) * 2006-11-24 2008-06-04 中国科学院沈阳自动化研究所 分布式设备远程状态监测与故障诊断系统
CN101227341A (zh) * 2007-12-18 2008-07-23 浪潮电子信息产业股份有限公司 Linux系统上以太网卡快速捕包的方法
CN101282300B (zh) * 2008-03-03 2010-12-08 北京航空航天大学 一种基于非阻塞机制的http报文处理方法

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102413191B (zh) * 2011-12-30 2014-09-24 广东华邦技术软件有限公司 一种基于浏览器的web即时通讯方法
CN102413191A (zh) * 2011-12-30 2012-04-11 深圳市旗瀚软件有限公司 一种基于浏览器的web即时通讯方法
CN102647314A (zh) * 2012-05-16 2012-08-22 深圳市乐唯科技开发有限公司 一种客户端在线状态判定方法及其系统
CN102984029A (zh) * 2012-11-30 2013-03-20 福建星网锐捷网络有限公司 应用于分布式系统的心跳检测装置和方法、网络设备
CN102984029B (zh) * 2012-11-30 2015-07-22 福建星网锐捷网络有限公司 应用于分布式系统的心跳检测装置和方法、网络设备
CN103731758B (zh) * 2013-12-20 2017-03-15 北京欧迈特科技股份有限公司 一种视频流传输方法和装置
CN103731758A (zh) * 2013-12-20 2014-04-16 北京欧迈特数字技术有限责任公司 一种视频流传输方法和装置
CN105453659A (zh) * 2014-07-24 2016-03-30 华为技术有限公司 数据收发方法、调制解调器及终端设备
CN105453659B (zh) * 2014-07-24 2019-06-21 华为技术有限公司 数据收发方法、调制解调器及终端设备
CN104468265A (zh) * 2014-11-19 2015-03-25 北京国双科技有限公司 局域网终端在线状态的检测方法和装置
CN106210158A (zh) * 2015-05-04 2016-12-07 阿里巴巴集团控股有限公司 一种域名解析的同步方法和设备
CN105575203A (zh) * 2016-03-16 2016-05-11 深圳市京华科讯科技有限公司 一种实现云教学的方法、系统及云服务器
CN105933199A (zh) * 2016-04-08 2016-09-07 武汉斗鱼网络科技有限公司 一种保持心跳连接的方法与网关及聊天服务器
CN105933199B (zh) * 2016-04-08 2019-07-09 武汉斗鱼网络科技有限公司 一种保持心跳连接的方法与网关及聊天服务器
CN108446250A (zh) * 2018-03-12 2018-08-24 上海燊星机器人科技有限公司 一种多cpu之间通讯的方法
CN115004622A (zh) * 2020-12-18 2022-09-02 西安诺瓦星云科技股份有限公司 数据处理方法及装置、板卡的数据处理系统

Also Published As

Publication number Publication date
CN101714991B (zh) 2012-06-20

Similar Documents

Publication Publication Date Title
CN101714991B (zh) 心跳机制的实现方法
US8312134B2 (en) Reporting link layer status information using heterogeneous network handover module in mobile communication system
KR100990415B1 (ko) 데이터 통신에서의 접속 상태를 동기화하는 방법 및 이를 사용하는 통신 노드
US8031617B2 (en) Fast detection of path failure for TCP
US7532577B2 (en) Managing transmission control protocol (TCP) connections
EP3522417A1 (en) Method and device for sending messages, chip and terminal
US20070240209A1 (en) Session persistence on a wireless network
WO2018120966A1 (zh) 一种多通道网络切换方法和系统
US7971099B2 (en) Method for enabling faster recovery of client applications in the event of server failure
US10594844B2 (en) Method and system for wireless network bilateral accelerated transmission
EP3890261A1 (en) Connection establishment method and related device
CN102769520B (zh) 基于sctp协议的无线网络拥塞控制方法
US9979510B2 (en) Application timeout aware TCP loss recovery
WO2017157318A1 (zh) 链路发现方法及装置
KR20120134466A (ko) 메쉬 네트워크 노드 및 그의 데이터 전송 방법
CN107104919B (zh) 防火墙设备、流控制传输协议sctp报文的处理方法
JP2006229399A (ja) 通信システム、中継ノード及びそれらに用いる通信方法並びにそのプログラム
EP2475199A1 (en) Handover method and device for an access service network
CN101848165B (zh) 控制通信链路中断后恢复的方法和接口板
EP2536067A1 (en) Apparatus and method for implementing point to point protocol data service link-disconnect
CN103391636B (zh) 一种加强capwap通信隧道保活的方法
WO2022007861A1 (zh) 通知故障的方法和电子设备
KR100780359B1 (ko) 유엠에이 네트워크에서 연결 오류 처리 장치 및 방법
Cisco Cisco Mainframe Channel Connection Commands
Cisco Commands: debug arap through debug clns events

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20171228

Address after: 210042 Xuanwu District, Xuanwu District, Jiangsu, Nanjing, No. 699-22, building 18

Patentee after: CERTUSNET CORP.

Address before: 100084 Beijing Haidian District Tsinghua Yuan 100084-82 mailbox

Patentee before: Tsinghua University