网络时间同步算法中时钟精度优化设计与实现_赵斌

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第30卷 第2期2008年4月三峡大学学报(自然科学版)
J of C hina T hree Gorg es Univ.(Natural S cien ces)Vol.30N o.2Apr.2008
收稿日期:2007 09 04
通讯作者:贺 鹏(1965-),男,教授,硕士生导师,主要研究方向为计算机网络和分布式计算机系统.
网络时间同步算法中时钟精度优化设计与实现
赵 斌1 贺 鹏1,2
(1.三峡大学电气信息学院,湖北宜昌 443002;2.三峡大学信息技术中心,湖北宜昌 443002)摘要:针对基于NTP 时间同步算法中,客户端时钟提供的时钟精度难以满足算法的精度要求,根据API 函数描述了一个时间同步算法中高精度时间源的设计和实现过程.实验表明,在网络时间同步算法中采用这种高精度时间源的方法来完成本地时间调整过程,NT P 时间同步算法的精度可以提高到微秒级.
关键词:NTP; 同步算法; 时钟精度
中图分类号:TP393.2:T P301.6 文献标识码:A
文章编号:1672 948X(2008)02 0073 04
Design and Implementation of Clock Precision Synchronization
Zhao Bin 1 He Peng 1,2
(1.Co llege of Electrical Engineering &Information Science,China T hree Gorg es Univ.,Yichang 443002,China; r mation Technolog y Center,China T hr ee Gorg es U niv.,Yichang 443002,China)
Abstract In order to satisfy time coherence betw een serv er clock and client clock of the NT P time synchroni zation algo rithm,high pr ecision tim e source is developed w ith A PI function.Simulatio n r esults show that the method im prov es the precision o f tim e synchro nization algo rithm.Keywords NT P; synchronization alg orithm; clock accur acy 随着计算机网络的普及,基于NT P 的时间同步技术在各个领域都有着广泛的应用,这些应用很多都
集中在各种网络中各个节点之间的时间同步.如果计算机时钟需要精确的时间同步,计算机时钟就必须要能提供一个标准精确的时钟精度.但是一般的客户端PC 机的时钟所提供的时钟精度受到主机的操作系统的限制,在可靠性和精确度上都是有限的.因此,客户端时钟提供的校正时间往往就成了限制时间同步精度的瓶颈.针对这种情况,利用API 函数对本地时钟精度提出了优化方案,并详细描述了方案的实现.
1 网络时间协议NTP
[1]
网络时间协议NT P 是用于互联网中时间同步的标准协议,适用于LAN(局域网)和WAN(广域网)中
计算机的时钟同步.NTP 的用途是把计算机的时间
同步到某些时间标准(目前采用的时间标准是世界协调时UT C).目前,在通常的环境下,NTP 提供的时间精确度在WAN 上为数几十m s,在LAN 上则为几ms [2].NT P 的基本结构如图1所示
.
图1 NT P 结构图
当NT P 获得时间同步信息后,时间滤波器从时间样本中选取最佳的样本,和本地时间进行比较.选择和聚类算法的功能是对往返延迟、离差和偏移等参数进行分析,在有效参考源选取若干名列前茅者.合成算法对名列前茅者的信号进行综合,获取比任何单
一信号更为优秀的时间参考.环路滤波器和可变频率振荡器是一个自适应的混合锁相/锁频环路,它在时钟校正算法的控制下,调节本地时钟,提供本地时间[3]
.
2 NTP 对操作系统的依赖性
计算机的时钟模型一般包括硬件时钟和由硬件时钟维持的软件时钟[4].软件时钟或者是内核时钟是由硬件时钟上的定时器产生的周期性中断维持的,这些周期性中断称为ticks.时间同步方法应考虑计算机系统的时钟模型和操作系统中与时间操作相关的服务.
同步进程、OS 、硬件时钟3者之间的操作关系不同,会形成不同的同步特点.尤其是同步进程和操作系统之间的关系对于时间同步而言是非常关键的.3种时间同步层次结构如图2所示:(a)容易实现且更具有移植性,但不易优化.另外,同步的特点也依赖于操作系统内部,如时间操作模块和实时性等.如果一个操作系统有强大时间操作模块功能,那么(a)就是一个比较理想的同步方法.(b)和(c)的同步进程可以通过直接与硬件打交道来使其优化,但它们并不易实现,可移植性也不强.在(b)和(c)中,同步进程可以在效果和可移植性之间找到一个理想的折衷点,那些对时间同步起关键作用的部分则采用直接操作硬件的方式来实现.NT P 和操作系统的关系如图2(a)所示.NTP 算法计算精确的时间偏差值.通过操作系统的系统API 函数调整本地时钟,实现时间同步.而从操作系统里获得的时间,根据系统硬件的不同,会有10~15ms 的读取误差,这是由操作系统内核的计时模式决定的.NT P 具有微秒级的时间戳格式.操作系统提供较低的时间分辨率.打上时间戳的误差范围最大为十几m s.就难以将本地时钟以高精度分辨率调整.因此本地时钟提供的校正时间精度往往就成了限制时间同步精度的瓶颈
.
图2 时间同步进程、OS 、硬件时钟关系
3 客户端高精度时间源的设计
据以上所述可知,从操作系统直接获得时间,对
于精度要求为m s 级的同步算法来说,10~15m s 的读取误差显然相当巨大.第3节描述了一个时间同步算法中高精度时间源的设计和实现.实验中针对现在普通配置的商业用机(机器配置:英特尔奔腾处理器820(2.8GH z);内存256M;DDR 硬盘80G;显示卡集成;INT EL 高性能显示卡).图3是用Window s API 函数GetSystemT im e(LPSYST EM TIMElpSys tem Time)在相同的时间间隔内连续从系统读取时间.显然这种客户端PC 机的时间分辨率只有20~25ms,如果在时间同步算法中使用系统时钟,不管时间同步算法是多少的精确,计算机之间的时间同步精度都不可能超过其时间分辨率.因此,要做到高精度的时间同步必须为PC 机构建新的高性能的时钟[5 7].
图3 连续从系统读取时间
硬件性能计数器是现代CPU 广泛支持的一类内置的高精度的性能计数器,它所具有的简单而充分的性能分析能力,可以提供微秒级的计数.它能高精确、低开销地计量一个短周期时间,利用性能计数器和系统时间去计算更小的时间增量,可以获得一个高精度时间基准.做法是通过在一个紧凑循环内不断重复把性能计数器值和对应的系统时间进行同步,等待系统时间变化,当系统时间发生变化,就保存计数器的值及系统时间.使用这两个值作为参考,就能够计算出
一个高精度的当前系统时间.图4是基于性能计数器的新时钟的时间算法的主要流程.
步骤如下:(1)首先调用QueryPerform anceFre
quency 函数取得高精度运行计数器的频率f ,单位为次每秒(n/s).(2)在需要定时的代码的两端分别调用
74
三峡大学学报(自然科学版) 2008年4月
图4 高精度时间算法流程图
Query Perfo rmanceCo unter以取得高精度运行计数器的数值n1,n2.两次数值的差值通过f换算成时间间隔,t=(n2-n1)/f.(3)通过计算,得到一个精度很高(根据需要可以达到微秒级)的时间基准点,然后通过性能计数器中count值的变化计算出当前时间,提供给系统.
在程序中,API函数Query Perfo manceCounter 用来获取性能计数器中count值,计算当前系统时间.然而事实上,性能计数器精度并没有想象的好,大约每100s就会偏差1ms.所以为了保证时间基准的精度达到1m s,每隔60s需要重新同步一次时间基准点.时间基准点的同步是在一个单独的线程中运行.得到高精度时间源后,用自己编写的函数CT im ePro v ider::GetT ime(FILETIM E&curr ent_tim e)从高精度时间源读取时间信息.CtimeProvider是创建的一个类,高精度时间源的启动、维持和读取都封装在里面.下面是GetTime函数代码:
void get_time(FILETIM E&curr ent_tim e)
{
LARGE_IN TEGER li,frequency;
::Quer yPerform anceCounter(&li);//获取性能计数器当前计数值,计算当前系统时间
::Query PerformanceFr equency(&frequency); //获取性能计数器当前计数频率
LARGE_IN TEGER ticks_elapsed;
ticks_elapsed.QuadPar t=li.QuadPar t-ref erence.co unter.QuadPart;
//获得100ns的时差、refer ence FILET IME得出curr ent FILET IM E
ULARGE_INT EGER filetim e_ticks,filetime_ ref_as_ul;
filetime_ticks.QuadPart=(ULONGLONG) ((((do uble)ticks_elapsed.QuadPart/(double)fre quency.QuadPart)*10000000.0)+0.5);
filetime_ref_as_ul.H ighPart=reference.file_ time.dw H ighDateTime;
filetime_ref_as_ul.Low Part=r eference.file_ time.dw Low DateT ime;
filetime_ref_as_ul.QuadPart+=filetim e_ ticks.Q uadPar t;
current_tim e.dw H ighDateT ime=filetime_ref_ as_ul.H ig hPart;
current_tim e.dw Low DateT ime=filetime_ref_ as_ul.Low Par t;
//通过均值处理,得出当前精确的系统时间
}
此时,图5为再一次用Window s A PI函数GetSystemT ime(LPSYST EM TIME lpSystem Time)在相同的时间间隔内连续从系统读取时间,时钟精度有了很大的优化.显然通过这种方法,解决了系统时间戳20~25m s(和操作系统及硬件有关)的读取误差,它和系统时钟相比该时钟的时间分辨率为0.3 s,系统时钟时间分辨率为16ms;该时钟的时间飘移率为1ms/h,系统时钟为60ms/h.
图5 连续从高精度时间源读取时
75
第30卷 第2期 赵 斌等 网络时间同步算法中时钟精度优化设计与实现
4 实验结果分析
图6是在文献[8]所述的时间同步算法中测量得到的本机时间与NTP 服务器的网络时间延迟,纵轴代表延迟(s),横轴为时间间隔(m in).当时间直接来自系统时,测量得到的网络延迟值的最小可分辨精度为大约15m s,这显然是不符合实际情况的;改用从高精度时间源读取时间后,网络延迟值的最小分辨精度得到很大提高.使同步算法取得了最大偏差小于20ms,平均绝对偏差小于5m s,偏差的标准方差均值小于5ms 的同步精度.相对与传统时间同步算法,在算法稳定度方面,采用高精度时间源后,使时钟曲线相对更加平滑,不会造成时间值大的抖动,这些都使得以时间为基础的其他应用程序更加稳定
.
图6 在时间同步算法中时间源应用效果图
5 结 语
分析了时间同步协议N TP 对操作系统的依赖
性,针对客户端时钟提供的校正时间限制时间同步精度的瓶颈问题,提出了高精度时间源的设计和实现方法,并运用于时间同步算法,取得了较好的效果.对于时钟同步的各种研究基本针对高精度的时钟偏差展开,设计和研究更加稳定和高精度的时间同步算法必将成为同步算法中一个重要的研究方向.参考文献:
[1] M IL L S D L.A Br ief H isto ry of N T P T ime:M emor ies
of an Internet T ime keeper [J].A CM SIG COM M Com puter Co mmunicatio n R eview ,2003,33(2):9 21.[2] 贺 鹏,李 菁,吴海涛.网络时间同步算法研究与实现
[J].计算机应用,2003,23(2):15 17.
[3] L EO NO V G A,SEL ED ZHI S M.P rog rammable Phase
L ocked L oo ps for Digital Sig nal P ro cessor s[J].P hysics and Contr ol,2003.
Pro ceedings.
2003International
Conference[C].2003,2:548 554.
[4] 贺 鹏,周久艳.分布式控制系统得时间同步装置设计
与应用[J].计算机工程,2003(7):41 43.
[5] 贺 鹏,吴海涛.分布式系统的时间同步算法研究及应
用[J].计算机应用,2001,21(12):20 24.
[6] 贺 鹏,曾维鲁.分布式控制系统的时间同步装置设计
与应用[J].计算机工程,2000(7):47 50.
[7] 戴 辉,贺 鹏,李 菁.基于频率调节的网络时间同步
算法研究[J].三峡大学学报:自然科学版,2005,27(4):364 367.
[8] 赵 斌,贺 鹏,易 娜.基于频率调节的分布式系统时
间同步算法设计与实现[J].计算机应用,2007,27(4):814 817.
[责任编辑 张 莉]
76
三峡大学学报(自然科学版) 2008年4月。

相关文档
最新文档