NTP-NTP服务器如何精确


52

我注意到,在我的服务器和其他计算机上,时钟总是在漂移,因此必须同步以保持准确。

NTP服务器时钟如何不漂移并且始终保持正确状态?


3
我将首先对一个有关NTP协议如何使两台计算机通过不可靠的网络同步时间的摘要特别感兴趣……
Xavier Nodet 2014年

@XavierNodet虽然我确定你会的,但这不是这个问题要问的。我建议您提出一个自己的问题(假设尚未提出该问题;请确保先进行搜索)。这个问题问的是,NTP服务器的时钟如何不漂移,而当代的硬件时钟却在漂移。
CVn 2014年

@XavierNodet这里也是。我喜欢学习事物如何以及为什么以它们的方式工作!:)
Jason

Answers:


58

NTP服务器依靠高度精确的时钟进行精确计时。中央NTP服务器的常见时间源是原子钟或GPS接收器(请记住,GPS卫星具有板载原子钟)。这些时钟被定义为准确的,因为它们提供了高度精确的时间参考。GPS或原子钟并没有什么神奇的,可以使它们准确地告诉您现在几点了。由于原子钟的工作原理,它们非常擅长,一旦被告知现在是什么时间,就一直说出准确的时间(因为秒数是根据原子效应来定义的)。实际上,值得注意的是,GPS时间不同于我们更习惯看到的UTC。这些原子钟又与国际原子时或TAI为了不仅准确说出时间的推移,也时间。

一旦在与Internet等网络相连的系统上有了准确的时间,就可以通过协议工程解决问题,从而可以通过不可靠的网络在主机之间传输准确的时间。在这方面,第2层(或距离实际时间源更远的地方)的NTP服务器与针对一组NTP服务器进行同步的桌面系统没有什么不同。

等到您有几个准确的时间(从NTP服务器或其他地方获取)并知道本地时钟的提升速率(这很容易确定)时,您就可以计算本地时钟相对于“准确的”的漂移速率“ 时间流逝。锁定后,即使本地实时时钟本身非常不准确,该值也可用于连续调整本地时钟,使其报告的值非常接近准确的时间流逝。只要您的本地时钟不是很不稳定,即使您的上游时间源由于任何原因而无法使用这也应允许将准确时间保持一段时间。一些NTP客户端实现(可能是大多数ntpd守护程序或系统服务实现)可以执行此操作,而其他一些客户端实现(例如ntpd的同伴)ntpdate只需设置一次时钟)就不会。这通常被称为漂移文件,因为它永久存储时钟漂移的量度,但严格来说,它不必作为特定文件存储在磁盘上。

在NTP中,根据定义,第0层是准确的时间源。层1是使用第0层时间源作为其时间源的系统(因此,其准确性低于第0层时间源)。同样,第2层的准确度略低于第1层,因为它正在将其时间与第1层源同步。等等。实际上,这种精度损失很小,以至于在最极端的情况下几乎可以忽略不计。


1
尊敬的“高阶层”并不意味着低阶层数,应将其从答案中删除。S2高于S1。作为证据,请看Mills教授(又称NTP教授)的解释:“ NTP子网按级别层次结构运行,其中每个级别都分配有一个称为层的数字。最低级别的Stratum 1(主)服务器直接同步。到国家时间服务... 更高级别的2层(辅助)服务器已同步到1层服务器,依此类推。” eecis.udel.edu/~mills/ntp/html/warp.html
dfc

2
更好,但我不认为第0层“根据定义是准确的时间源”。层0仅表示它是某种参考时钟。仅仅因为它是一个S0时钟并不意味着它可以正常工作。层级大约是与参考时钟的距离,不能保证精度。
dfc 2014年

@dfc我感谢您的输入,因为它可以使我的答案更好。就是说,我不同意您的说法,即S0并不代表它是准确的。也许从严格意义上讲是如此,但是如果S0时钟给出的时间不准确,那么该时钟实际上就无法用作S0源。因此,S0时钟是准确的。换句话说,如果您有一组隔离的主机,其中一个主机连接到S0时间源,而所有其他主机都与之同步,则S0源给出的时间就这些主机而言正确的时间。那就不用担心TAI了。
CVn 2014年

10

在网络计时中,告诉您服务器如何获取其时间源的规范称为“层级”。级别越低,该服务器的时间保持越好。

Stratum级别0设备未直接连接到网络。它们是实际的计时设备,必须连接到计算机才能得出实际的时间。然后,该计算机将成为Stratum 1级NTP服务器。

连接到Stratum级别1的计算机也可以成为时间服务器,但是它将成为层级2。当计算机连接到时间服务器时,层级别越低,您的计时就越精确。

层0级别的设备包括参与TAI(国际原子时间)的原子钟或与其同步,以及由该时钟发送的时间信号的接收器。最常见的是具有适当接口的GPS计时接收器,其中包括GPS PPS信号。当GPS在几颗卫星上锁定良好时,PPS信号每秒发送一个脉冲,并且该脉冲的上升沿在该秒实际开始的纳秒内。根据GPS接收器的规格,PPS信号可能或多或少准确。这是因为每个GPS卫星都有一个原子钟。一旦GPS接收器找到了自己的位置以及正在收听的GPS卫星的位置,它就可以校正RF传播并为您提供几乎与在GPS接收器上拥有原子钟一样精确的时间。

因此,Stratum 1级服务器连接到原子钟或GPS接收器,而NTP服务器连接到它们。即使频繁调整连接到第2层或第3层服务器,也将为您的计算机提供以纳秒为单位的计时精度。但是,如果您需要更好的计时,请连接到第一层服务器或购买合适的计时GPS接收器,然后自己成为第一层服务器。


4
增加廉价的GPS接收器,将Raspberry PI计算机变成Stratum 1 NTP服务器的人很多。您可以在网络上以低于$ 80的价格拥有完整的Stratum 1级服务器:google.com/search?
Adam Davis

2
因此,从理论上讲,具有GPS接收器的智能手机(现在几乎所有这些都可以)是第0/1层设备吗?
鲍勃

1
如果电话使用GPS接收器的pps输出,则可以。请注意,CDMA电话也必须使用精确的时序,因此CDMA芯片组也可能是电话处理器的第0层数据源。oem gps模块和树莓派会更便宜。
亚当·戴维斯

2
但是,Raspberry Pi不能使用出色的NTP服务器,因为它使用的是片状,低质量的网络适配器(LAN9512芯片)。
duskwuff 2014年

1
@duskwuff是的,但是它比许多Internet上的Stratum 2级服务器要好,并且通过在服务器和客户端上正确配置NTP设置,可以克服基于低质量USB的LAN芯片带来的抖动和偏移。对于成本,这是很难克服的,但要花更多一点,您可以解决此小问题。
亚当·戴维斯

3

所有时钟都有一定程度的漂移,这取决于定时信号的来源以及对其的跟踪程度。在PC中,这就是最近的HPET,但是如果过载,PC可能无法跟踪经过了多少滴答声。

您的计算机与之交谈的NTP服务器也可能会浪费时间,但是,它们会将时间重新分配给更好的资源。

归根结底,更好的信号源是原子钟之类的高度精确的时钟。您可以将NTP视为一个机器网络,每个NTP都会有大量时间依赖它,并且会将自己的时间浪费在更精确的时间上。

这由声明其阶层的消息源控制。原子钟或GPS时钟是第0层,是时间的权威。每一层都是下一个层-层1,并将检查多个0层源以及同一级别的对等方,以理清时间源。

您可能正在谈论第2层或第3层时间源。


1

其他人写的是真的:Stratum 1服务器从Stratum 0设备获取时间。我不知道在哪个时间间隔发生,但是我认为它们在那里非常准确。

n> 1的Stratum n服务器通过NTP从Stratum n-1服务器获取时间。这意味着它会定期与之同步。启动NTP服务后,同步会在很短的间隔内发生,并且随着时间的流逝,间隔开始增加。最终,该间隔最大为1024 s,大约为17分钟。

没有解决的问题是那段时间之间发生了什么?好吧,这里有一个叫做drift file的工具。它有助于NTP监视本地时钟和参考时钟之间的任何漂移。然后,根据检测到的漂移来调整本地时钟的频率,以便两次服务器轮询之间的时间也准确。

其他NTP实现可能会使用其他功能,但有一个共同点:调整时钟频率的需求和能力。


但是,我认为漂移文件是特定软件实现的实现细节,与NTP服务器的硬件时钟的精确度无关。
CVn 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.