一种基于心跳检测的网络时间同步方法

2017-03-15 02:56马继伟何佳洲丁春山
指挥控制与仿真 2017年1期
关键词:报文偏差监控

马继伟,何佳洲,丁春山

(江苏自动化研究所,江苏 连云港 222061)

一种基于心跳检测的网络时间同步方法

马继伟,何佳洲,丁春山

(江苏自动化研究所,江苏 连云港 222061)

针对基于NTP的网络时间同步方法缺乏必要机制对各节点的状态进行监控的问题,提出了一种基于心跳检测的网络时间同步方法,实现了源节点对从节点的状态监控。使用Winpcap开源库在驱动层获取时间戳,能够实现微秒级的时间同步。利用心跳检测机制,从节点可以监测源节点的状态。另外提供了一种备用机制,当源节点故障时,可以实现源节点的动态切换。最后实验验证了方法的可行性。

时间同步;心跳检测;源节点切换;状态监控

目前常用的网络时间同步主要包括基于广播的网络时间同步、基于NTP的网络时间同步和基于PTP的网络时间同步。基于广播的网络时间同步是从节点根据源节点广播的参考时间修正本地时钟,是一种单向的时间同步,误差主要来源于网络传输的延迟,同步精度不高,并且传输延迟不易测量和估计,能达到毫秒级的同步精度。NTP是一种标准的互联网时间同步协议,使用了一种纯软件的方式来实现网络时间同步,其同步精度能达到毫秒量级[1]。为了满足网络实时通信、金融结算、测量仪器和工业控制等分布式网络测控系统中定时同步的需要,IEEE1588定义了PTP(精确时钟同步)协议,在现有网络的基础上增加了硬件支持,使用软硬件结合的方式实现了网络时间同步[2-3],大幅提高了时间同步精度,能够达到微秒量级。

NTP已经成为了目前应用最广泛的网络时间协议,能够实现毫秒级的时间同步,但却缺乏必要机制对各节点的状态进行动态监控。在实际应用中我们不仅要关注如何实现主从节点的时间同步、如何提高时间同步的精确度以及如何降低时间同步所需的成本,同时还需要掌握各节点的工作状态以及同步情况,所以就需要对各个节点进行状态监控[4]。NTP协议是分层主从结构运行的,当源节点故障时会影响下层节点的授时精度,在局域网中这个问题更加明显。由于传统NTP的局限性以及当前网络时间同步的需要,本文在NTP的基础上提出了一种纯软件的网络时间同步新方法,利用状态监控机制实现了源节点对其他网络节点的状态监控;利用心跳检测机制[5]和源节点切换机制,当源节点故障时可以实现源节点的动态切换。

本文首先对NTP进行分析,然后给出了一种基于心跳检测的网络时间同步方法,由心跳检测、源节点切换、时间偏差估计与修正以及状态监控四部分组成。最后实验验证了方法的可行性,对于局域网的时间同步具有重要意义。

1 NTP分析

NTP最早于1985年由美国David L. Mills教授提出,是用于互联网上时间同步的标准互联网协议。通过该协议可以估算出NTP报文在互联网上的传输延迟和时钟偏差,从而实现网络上计算机之间可靠和精确的时间同步。

30多年来,NTP不断发展完善,从NTPv0到NTPv4演变过程如表1所示。

表1 NTP演变过程

此外,1992年RFC1361提出了NTP的简化版本SNTP,去除了过滤和错误管理功能,精度只能达到秒级;1995年提出的RFC1769,时间精度提高到数百毫秒;1996年提出的RFC2030给出了SNTP的最新规范SNTPv4,精度能达到更高。SNTP能用单播方式和广播方式操作,也能在IP 多播方式下操作。SNTP实质是简化了NTP服务器和客户端策略,在协议实现上没有什么更改, 适用于使用个人计算机的 UDP/TIME 客户。

NTP使用分层网络拓扑,按照离时间源的远近将各NTP时间服务器分成16个层级,实现了下层节点对上层节点的时间请求。从图1可知,在NTP网络中,NTP主机主要分布在2-4层,且在第3层的NTP主机最多,在5层以上的NTP主机数可以忽略不计。另外从文献[11-15]可知,随着互联网基础设施质量的提升,NTP网络的计时性能也在不断提升。同时越来越多的系统正在试图与NTP网络保持同步并搜索更多更可靠的时钟源。

图1 不同时期NTP网络各层级服务器分布图

随着NTP协议的广泛应用,对NTP网络的研究也在不断进行,文献[11-15]研究并分析了不同时期的NTP网络,使用网络爬虫程序寻找NTP主机并发送同步请求,在一周时间内探测到的NTP网络大小以及响应的主机数如表2所示。从表2可知NTP网络不断增大,在16年里增大了150倍以上。近几年来互联网发展迅速,SNTP服务以及NTP协议运用得更加普遍。从表2也可以看到:相比于1999的报告2005年搜索到的NTP网络更大但响应的主机数却更少,主要是因为随时间的推移,服务器更加安全,由于防火墙的阻挡或服务器的配置等因素,服务器仅允许基本的时间查询,而不会有其他的响应。近年来几乎没有最新的文献去继续Murta等人的工作,但是显然NTP网络更加庞大。目前互联网上客户机主要使用NTP池来获得时间,总共含有大约4000个服务器。所以说对这些服务器的搜索与研究也是有非常有必要的。

2 基于心跳检测的网络时间同步

考虑到局域网中对时间同步以及对各节点状态监控的需求,本文提出了基于心跳检测的网络时间同步方法,由心跳检测、源节点切换、时间偏差估计与修正以及状态监控四部分组成,实现了微秒级的时间同步以及对各节点的状态监控。另外提供了一种备用机制,在源节点故障时可以实现源节点自动切换,从而继续保持网内时间同步。源节点和从节点的工作流程如图2所示。

表2 不同时期NTP网络大小对比

图2 各节点工作流程

2.1 心跳检测

心跳检测是一种从节点对源节点工作状态判定的机制,通过接收源节点广播的心跳信息,判断源节点的状态(正常/异常/故障)。从节点定时检测在规定的时间内是否收到源节点的心跳信息,收到则认为源节点正常,否则认为源节点异常,如果连续3次源节点异常,则认为源节点故障。心跳检测的具体过程如下:

1)源节点周期性地广播心跳信息,广播周期为theartbeatBroadcast;

2)从节点记录并更新每次接收到心跳报文的时间theartbeatRecv,首次接收到心跳报文的时间记t0。从t0+0.5theartbeatBroadcast开始,每隔theartbeatBroadcast检测一次是否收到心跳信息,检测时间记为tcheck;

a) 如果tcheck-theartbeatRecv

b) 如果连续三次判定源节点异常,则认为源节点故障。

2.2 源节点切换

当源节点故障时,为了保证整个局域网内时间的相对同步,需要重新选取一个源节点,进行源节点切换。图3给出了源节点故障前后各节点的工作情况。当源节点故障时,各从节点会广播平均时间偏差如图3(c)所示,这个平均偏差是从节点相对于故障源节点的各个同步周期时间偏差的平均值,同步时间越长,这个均值越稳定。均值越小表示该节点的性能越好,选择均值最小的节点作为新的源节点。

图3 源节点切换前后各节点工作情况

源节点切换的具体过程如下:

1)各节点通过心跳检测判定源节点是否正常工作,若源节点正常,则所有节点工作状态不变。

2.3 时间偏差估计与修正

我们知道网络时间同步的精确度在很大程度上取决于获取时间戳的精确度。传统的NTP在应用层获取时间戳,通过调用操作系统的函数实现时间戳获取和本地时间修正的功能。但是在应用层获取时间戳只能达到毫秒级,并不能满足某些实时测控系统的需要。本文使用文献[16]中介绍的方法,利用Winpcap开源库,绕过TCP/IP协议栈,在内核空间NPF设备驱动程序中获取时间戳,相比传统NTP时间戳获取更靠近底层,能够获得微秒级的时间。

WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库,它包括了一个内核级的数据包过滤器NetgroupPacketFilter(NPF),一个低层动态链接库(Packet.dll),一个高层的、依赖于系统的库(wpcap.dll)。Packet.dll库提供了低层的API,它可以直接访问驱动的函数,并且依赖于微软操作系统的可编程接口;wpcap.dll提供了更多强大的,高层次的,和libpcap(一个知名的Unix捕获库)兼容的捕获原语。

基于winpcap的网络时间同步原理图如图4。

图4 基于winpcap的网络时间同步原理图

2.4 状态监控

这里的状态监控分为两部分,即从节点对源节点的状态监控以及源节点对从节点的状态监控。通过前面的心跳检测从节点可以判断出源节点的状态(正常/异常/故障)。源节点对从节点的状态监控是通过判断指定时间内接收到的同步报文数量以及主从节点时间偏差来确定从节点的状态(正常且同步/正常不同步/故障)的一种机制。下面介绍源节点对从节点的状态监控方法(K步检查法):

1)从节点周期性地向源节点发送同步报文,包含上一时间同步周期的时间偏差θi,i表示从节点编号;

2)源节点收到同步报文,分别统计收到各节点的累积同步报文数目nSync(i),并更新θi。

3)当θi<=λSync时,则认为从节点i与源节点时间同步,否则从节点i与源节点时间不同步。

4)当出现某一个i1使得nSync(i1)=K时做以下判断:

a) 如果nSync(i)>0,则认为从节点i正常工作;

b) 如果nSync(i)=0,则认为从节点i故障;

c) 判断完毕,将nSync(i)归零,进入到下一个监控周期。

其中nSync(i)表示该监控周期内接收到的来自节点i的同步报文个数,λSync表示时间同步门限,K表示步数上限。

3 仿真结果及分析

在局域网环境下使用5台计算机进行实验。时间同步周期为2s,心跳消息广播周期为5s,时间同步门限λSync取1ms,进行仿真实验验证方法的可行性。

为模拟源节点故障时间的随机性,引入随机数,随机选取某一心跳检测周期自动断开源节点进行实验。表3为取500以内随机数的情况,“√”表示当前的源节点,“—”表示故障节点。从表3可知选取节点1作为初始源节点,在439个心跳检测周期后节点1发生故障,然后其余各节点广播本节点相对于节点1的平均时间偏差,进行自组织选取平均偏差最小的节点5作为新的源节,以此类推。这样网内节点不断减少,最后将断开的节点重新手动选取源节点,重新入网进行验证。

表3 源节点切换情况表

节点1作为源节点时,各节点相对节点1的时间偏差的均值分别为56.63us、143.62us、95.49us、48.05us。时间同步偏差曲线如图5所示。

图5 节点1作为源节点时间同步偏差曲线

以上实验结果表明,在2s时间同步周期情况下,本文提供的方法能够实现同步精度在200us以内。在任意时刻源节点故障,通过心跳检测机制从节点能够监测到源节点故障信息并且实现源节点动态切换,切换到平均时间偏差相对较小的节点,将其作为新的源节点,然后保持网内的相对时间同步。另外当故障节点修复后手动选取源节点能够快速入网同步。在整个实验过程中,源节点都能够通过从节点反馈的偏差信息以及接收到的同步请求报文数量监控到从节点的状态。

4 结束语

本文提出了一种纯软件实现的网络时间同步新方法。该方法包括心跳检测、源节点切换、时间偏差估计与修正以及状态监控四部分,可以实现微秒级的时间同步以及对各节点的状态监控。通过心跳检测和源节点切换机制,从节点可以监测到源节点的工作状态,并且当源节点故障时可以实现源节点动态切换,具有很好的容错性与扩展性,适用于对时间同步精度有一定要求并且需要监控各节点状态的局域网络。最后通过实验验证了方法的可行性。但需要注意的是,该方法对网络环境有一定的依赖性,因此网络的稳定性以及网络安全等问题是下一步需要进行研究的。

[1] D. Mills, U. Delaware,J. Martin.RFC 5905:Network Time Protocol Version 4: Protocol and Algorithms Specification[R],2010.

[2] 宋亚辉,李在铭. 局域网时钟同步技术综述[J]. 仪器仪表学报,2005,26(22):550-552.

[3] 王勇,李智军. 网络化测控设备间的时间同步[J].仪器仪表学报,2006,27(9):1085-1087.

[4] 董甲东,郑春香. 分布式系统的时间同步容错机制研究[J]. 计算机技术与发展,2008,18(3):99-101.

[5] (美)拉姆(Lam, C.).Hadoop实战[M].韩冀中,译. 北京:人民邮电出版社,2011.

[6] David L. Mills. RFC 958:Network Time Protocol(NTP). September, 1985.

[7] David L. Mills. RFC 1059: Network Time Protocol (Version 1) Specification and Implementation. July, 1988.

[8] David L. Mills. RFC 1119: Network Time Protocol (Version 2) Specification and Implementation. September, 1989.

[9] David L. Mills. RFC 1305:Network Time Protocol(Version 3)Specification,Implementation and Analysis. March, 1992.

[10]D. Mills,W. Kasch,J. Martin,J. Burbank,W. Kasch. RFC 5905:Network Time Protocol Version 4: Protocol and Algorithms Specification. June 2010.

[11]Mills, D. L, On the Accuracy and Stability of Clocks Synchronized by the Network Time Protocol in the Internet System[J].ACM Computer Communication Review,1989,20(1):65-75.

[12]Guyton, J. D., Schwartz, M.F, Experience with a Survey Tool for Discovering Network Time Protocol Servers[C]. Proc. Usenix Summer Tech. Conf.(1994),2001.

[13]Mills, D.L., Thyagarajan, A. Huffmann, B.C, Internet Timekeeping around the Globe[J]. Proc. Precision Time and Time Interval Applications and Planning Meeting,1997,9(8):38-43.

[14]Minar, N. A Survey of NTP Network[EB/OL]. http:∥www.media.mit.edu/nelson/research/ntp-survey99.

[15]CD. Murta, PR Torres, P Mohapatra. Chractering Quality of Time and Topology in a Time Synchronization Network[J].International Journal of Hybrid information Technology,2006,8(5):1145-6.

[16]谌华金,何佳洲.一种基于数据链路层的局域网时间同步新机制[J].计算机应用,2010,30(5):1183-1187.

A Network Time Synchronization Method Based on Heartbeat Detection

MA Ji-wei, HE Jia-zhou, DING Chun-shan

(Jiangsu Automation Research Institute, Lianyungang 222061, China)

A new network time synchronization method based heartbeat detection is proposed to solve the problem of NTP-based network time synchronization, which lacks the necessary mechanism to monitor the state of each node. Using the Winpcap open-source library to obtain the time stamp in the driver layer, which can achieve the microsecond time synchronization. With the heartbeat detection mechanism, the slave node can monitor the state of the source. In addition, this paper provides a backup mechanism to achieve the dynamic switching of the source node when the source node fails. Finally, the feasibility of the method is verified by the experiments.

time synchronization; heartbeat detection; source node switching; state monitoring

2016-12-06

马继伟(1992-),男,重庆大渡口人,研究方向为时间同步。 何佳洲(1966-),男,博士,研究员,博士生导师。 丁春山(1981-),男,硕士,高级工程师。

1673-3819(2017)01-0116-06

TP317;E917

A

10.3969/j.issn.1673-3819.2017.01.025

修回日期: 2016-12-20

猜你喜欢
报文偏差监控
基于J1939 协议多包报文的时序研究及应用
50种认知性偏差
The Great Barrier Reef shows coral comeback
基于无人机的监控系统设计
低轨星座短报文通信中的扩频信号二维快捕优化与实现
如何走出文章立意偏差的误区
浅析反驳类报文要点
真相
科学训练监控新趋势——适时监控
机械装配偏差源及其偏差传递机理研究