您好,欢迎进入北京泰福特电子科技有限公司官网

咨询服务热线

400-015-1230

NTP如何构建和维护网络时间同步(一)

发布时间:2022-04-11 13:46:09

一、时间参考

什么是参考时间

  参考时钟是一些对外发出当前时间的设备,它必须在一段时间内相当准确;典型的参考时钟是非常昂贵的铯钟,最常使用的是在一段时间内能接受到国家标准机构时间信号的接收器。一个示例示例是GPS接收器从卫星获取时间。铯钟的准确性是由卫星定期修正提供的。比较便宜和准确的参考时钟可以使用地面广播如DCF77,MSF,WWV,即HJ210-CDMA设备。

卫星授时时间参考源

  一般说现在时钟服务器高精度的是铯钟,单铯钟价格在十多万。一般常用的是铷钟的HJ210-BDRBP,价格相对便宜,守时精度大约在3ms左右。在相对便宜的是时时连接天线的HJ210,也可以采购相对便宜的HJ210-CDMA设备,采用移动基站时间,但精度相对差点。            

  在NTP中这个参考时间被称为0层时钟源,往往它是NTP中质量最好的。

  NTP如何利用参考时间

  参考时钟将提供当前时间。NTP将计算一些额外的统计值以描述时间的质量。这些值包括: offset 偏差(or phase), jitter抖动 (or dispersion), frequency error频率偏差, 和 stability稳定度。每一个NTP时间源将维持参考时钟和本身的质量估值。

NTP如何知道时间源

  有以下方法NTP客户端将知道NTP服务器如何使用:服务器可以被手动配置,服务器可以直接发送时间给对等体;服务器可能使用多播或广播地址发送时间,无论采取何种方式,在NTP使用前都将对NTP进行配置,以确定时间源。

如果参考时间源改变会怎样?

  理想情况下在世界各地的参考时间都是相同的。一旦同步在操作系统和参考时钟的时钟之间不应当有任何意想不到的变化。因此NTP没有专门的方法来处理这种情况。ntpd的反应取决于本地时钟之间的偏移量和参考时间。对于微小的偏差ntpd将照常调整本地时钟;对于稍大的偏移量,ntpd将维持最后一个有效修正值,拒绝引用上级时间源一段时间。当认为上级源可信后,小偏移量将突然转向缓慢调整;更大的偏差将导致时钟重新设置,对于太大的偏差(一般为1000s),ntpd将终止本身。

这些算法也应用ntpd首次启动或系统重启。

什么是一级时间服务器?

  工作在层次1的服务器属于最好的NTP服务器可用类,因为它有一个参考时钟。作为准确的参考时钟是昂贵的,只有很少的这些服务器可以公开可用。一级服务器不但有一个精确的和维护良好的参考时钟,还应该有可以给他系统可能依赖于时间的服务。这也许就是为什么不是每个NTP与参考时钟服务器都可以公开使用。

二、时间同步

  什么是时间同步?时间可以从一个时间源到另一个来源,典型的从一个参考时钟到一级时钟服务器,从一级时钟服务器到二级时钟服务器。通常一个时钟服务器相对参考时间源有不止各个层次。

  客户端网络同步服务器由几种分组数据包,每个数据包是一对请求和应答。客户端先将自己的时间戳(T1)写到数据包被发送。服务器接收到这样一个包时,它将存储自己的时间戳(T2)接收到数据包,数据包将被返回后将发送包的发送时间戳(T3)。当收到回复时,客户端将再次将自己时间放到收到时间包中(T4)。假设在延迟对称情况下,时间延迟估计是 “总延迟-远程处理时间” 的一半,即((T4- T3)-(T3- T2))/2。

  那些时间差异可以用来估计两台机器之间的时间偏移和最大偏移误差。更短更对称的往返时间,导致更准确的对当前时间的估计。服务的时间是不被信任的直到发生了数据包交换和算法检查。只有从服务器回复满足协议规范中定义的条件,服务器才被认为是有效的。一些必要的值放入多级过滤器用于改进和估计样本每个服务器的质量统计。所有使用的服务器都采用一个一致的评估时间。在分歧的情况下,最大的一组同意服务器相结合(truechimers)用于生产参考时间,从而宣布其他服务器无效(falsetickers)。

  通常需要大约5分钟,直到NTP服务器被接受为同步源。有趣的是,这也是对本地参考时钟,没有延迟的定义。初始同步后, 通常客户端的质量随着时间的推移改善。随着客户越来越准确,一个或多个潜在的服务器可能在一段时间后被认为是无效的。

  网络协议如何使用NTP为快速连接设置和响应时间NTP使用UDP数据包进行数据传输。官方的NTP端口号是123(ntpd,ntpdate监听和交流)。

NTP如何对时间进行编码

  有一个不错的答案由Don Payette innews://comp.protocols.time.ntp, 我们进行轻微的调整:NTP的时间戳是一个64位的二进制值与一个隐含分数点两个32位之间的部分。如果你把所有的64位无符号整数位,把它在一个浮点变量至少有64位尾数(通常两倍)和做一个浮点数除以2 ^ 32,你会得到正确的答案。

例如64位二进制值:

  00000000000000000000000000000001  10000000000000000000000000000000为一个小数1.5。点的右边的乘数是1/2,1/4,1/8,1/16,等等。

  200秒,1除以2 ^ 32(4294967296),得到0.00000000023283064365386962890625或233 e-12秒。1 e-12秒微微秒;除了每个人都应该知道,1900年NTP开始的时代而UNIX的时代开始于1970年。因此以下值都对应于2000 - 08 - 31 - _18:52:30.735861

UNIX: 39aea96e.000b3a75

00111001 10101110 10101001 01101110.

00000000 00001011 00111010 01110101

NTP: bd5927ee.bc616000

10111101 01011001 00100111 11101110.

10111100 01100001 01100000 00000000

查询时间服务器间隔

  轮询服务器基本上抖动(白噪声)不应超过随机漫步噪声频率。轮询间隔试图接近的最小噪声(Allan拦截),且间隔永远是2的幂。可以使用minpoll和maxpoll指定最小和最大允许指数。如果选择较低的频率查询时钟同步服务器,可能比没有更频繁地查询时钟服务器更及时发现参考时钟的错误。


  • 联系方式
  • 传 真:86-10-82782026
  • 电 话:400-015-1230
  • 地 址:北京市海淀区北清路68号院用友软件园北区17号楼三层
在线咨询

咨询电话:

400-015-1230

  • 微信扫码 关注我们

Copyright © 2002-2035 北京泰福特电子科技有限公司 版权所有 备案号:京ICP备12028220号-1
京公网安备 11010802025976号

扫一扫咨询微信客服

18519396506
Powered by RRZCMS