基于基于NTP的高精度时钟同步系统实现的高精度时钟同步系统实现
Windows操作系统内置的NTP授时精度不高,分辨率最高只有10 ms。给出一个基于Windows操作系统的计算机
网络同步时钟实现方案,该方案可以有效提高计算机时钟同步精度,在LAN中时钟同步精度达250 μs。同时采
用了校正时钟频率误差算法,校正后的时钟长期计时误差能达到10天少于1 s。
摘摘 要要: Windows操作系统内置的NTP授时精度不高,分辨率最高只有10 ms。给出一个基于Windows操作系统的计算机网
络同步时钟实现方案,该方案可以有效提高计算机时钟同步精度,在LAN中时钟同步精度达250 μs。同时采用了校正时钟频率
误差算法,校正后的时钟长期计时误差能达到10天少于1 s。
关键词关键词: NTP 局域网;
一般的计算机和嵌入式设备在时钟度方面没有明确的指标要求, 时钟精度只有10
-4
~10
-5
,每天可能误差达十几秒或更
多,如果不及时校正,其累积时间误差不可忽视。许多工业控制过程需要高准确度时间,如:电力系统内众多的计算机监控系
统、保护装置、故障录波器等时间同步要在ms级以内。
联网计算机同步时钟最简便的方法是网络授时。网络授时分为广域网授时和局域网授时。广域网授时精度通常能达50 ms级,
但有时超过500 ms,这是因为每次经过的路由器路径可能不相同。现在还没有更好的办法将这种不同路径延迟的时间误差完
全消除。局域网授时不存在路由器路径延迟问题,因而授时精度理论上可以提到亚毫秒级。Windows内置NTP服务,在局域
网内其最高授时精度也只能达10 ms级。因此,提高局域网NTP授时精度成为一个迫切需要解决的问题。
1 网络时间协议简介网络时间协议简介
网络时间协议NTP(Network Time Protocol)的主要开发者是美国特拉华大学的MILLS David L.
[1]
教授设计实现的,由时间协
议、ICMP时间戳消息及IP时间戳选项发展而来。NTP用于将计算机客户或服务器的时间与另一服务器同步,使用层次式时间
分布模型。在配置时,NTP可以利用冗余服务器和多条网络路径来获得时间的高准确性和高可靠性。即使客户机在长时间无法
与某一时间服务器相联系的情况下,仍可提供高准确度时间。
实际应用中,还有确保秒级精度的简单的网络时间协议SNTP(Simple Network Time Protocol)。SNTP是NTP的一个子集,主要
用于那些不需要NTP的精度以较高实现复杂性的网络时间同步客户机。SNTP协议已减少了网络延时对校对准确的影响,但没
有冗余服务器和校正时钟频率误差功能。
除了认证符字段在SNTP中一般被忽略外,SNTP的报文格式与RFC-1305中所描述的NTP格式是一致的。NTP/SNTP服务端使
用固定的UDP端口号是123。表1是NTP/SNTP报文格式的描述。
2 NTP授时原理授时原理
NTP最典型的授时方式是Client/Server方式。如图1所示,客户机首先向服务器发送一个NTP 包,其中包含了该包离开客
户机的时间戳T1,当服务器接收到该包时,依次填入包到达的时间戳T2、包离开的时间戳T3,然后立即把包返回给客户机。
客户机在接收到响应包时,记录包返回的时间戳T4。客户机用上述4个时间参数就能够计算出2个关键参数:NTP包的往返延
迟d和客户机与服务器之间的时钟偏差t。客户机使用时钟偏差来调整本地时钟,以使其时间与服务器时间一致
[1]
。图1中:
T1为客户发送NTP请求时间戳(以客户时间为参照);T2为服务器收到NTP请求时间戳(以服务器时间为参照);T3为服务器回复
NTP请求时间戳(以服务器时间为参照);T4为客户收到NTP回复包时间戳(以客户时间为参照);d1为NTP请求包传送延时,d2
为NTP回复包传送延时;t为服务器和客户端之间的时间偏差,d为NTP包的往返时间。
评论5