我注意到我的服务器和其他机器上的时钟总是漂移,因此必须同步才能保持准确。
NTP 服务器时钟如何不漂移并始终保持正确?
答案1
NTP 服务器依靠高精度时钟进行精确计时。中央 NTP 服务器的常见时间源是原子钟或 GPS 接收器(请记住,GPS 卫星上装有原子钟)。这些时钟被定义为精确的,因为它们提供了高度精确的时间参考。GPS 或原子钟并没有什么神奇之处,它们可以准确地告诉你现在几点;由于原子钟的工作原理,它们非常擅长,一旦被告知现在几点,保持报出准确的时间(因为第二个是根据原子效应来定义的)事实上,值得注意的是GPS 时间与 UTC 不同我们更习惯于看到这些原子钟。这些原子钟反过来与国际原子时或 TAI为了不仅准确地告诉时间的流逝,而且这时间。
一旦在连接到互联网等网络的系统上获得了准确的时间,就可以进行协议工程,以便在不可靠的网络上在主机之间传输精确的时间。在这方面,第 2 层(或距离实际时间源更远)NTP 服务器与与一组 NTP 服务器同步的桌面系统没有什么不同。
当你获得一些准确的时间(从 NTP 服务器或其他地方获得)并知道本地时钟的前进速度(很容易确定)时,你可以计算本地时钟相对于“认为准确”的时间流逝的漂移率。一旦锁定,就可以使用该值不断调整本地时钟,使其报告的值非常接近准确的时间流逝,即使本地实时时钟本身非常不准确;只要你的本地时钟不是非常不准确不稳定的,即使上游时间源因任何原因不可用,这也应该允许在一段时间内保持准确的时间。一些 NTP 客户端实现(可能是大多数ntpd
守护进程或系统服务实现)会这样做,而其他客户端实现(如 ntpd 的配套客户端ntpdate
,它只设置一次时钟)则不会这样做。这通常被称为漂移文件因为它持久存储了时钟漂移的测量值,但严格来说,它不必作为特定文件存储于磁盘上。
在 NTP 中,层 0 按定义是准确的时间源。层 1 是使用层 0 时间源作为其时间源的系统(因此比层 0 时间源的准确度略低)。层 2 的准确度也比层 1 的准确度略低,因为它将其时间与层 1 源同步。依此类推。实际上,这种准确性损失非常小,除了最极端的情况外,在其他所有情况下都可以完全忽略不计。
答案2
在网络计时中,告诉您服务器如何获取其时间源的规范称为层级。层级越低,服务器的计时效果越好。
层级 0 的设备不直接连接到网络。它们本身就是实际的计时设备,必须连接到计算机才能获取实际时间。然后这台计算机将成为层级 1 的 NTP 服务器。
连接到层级 1 的计算机也可以成为时间服务器,但它将是层级 2。当计算机连接到时间服务器时,层级越低,计时就越准确。
0 级设备包括参与TAI(国际原子时)或与其同步,以及接收此类时钟发送的时间信号的接收器。最常见的是带有适当接口的 GPS 计时接收器,其中包括 GPS PPS 信号。当 GPS 正确锁定几颗卫星时,PPS 信号每秒发送一个脉冲,该脉冲的前沿在该秒实际开始时间的纳秒内。根据 GPS 接收器的规格,PPS 信号的准确性可能或多或少。这是因为每个 GPS 卫星都有一个原子钟。一旦 GPS 接收器找到了自己的位置和它正在监听的 GPS 卫星的位置,它就可以校正射频传播,并为您提供几乎与 GPS 接收器上的原子钟一样准确的时间。
因此,第 1 层服务器连接到原子钟或 GPS 接收器,NTP 服务器连接到它们。即使连接到经常调整的第 2 层或第 3 层服务器,也会为您的计算机提供以纳秒为单位的计时精度。但如果您需要更好的计时,请连接到第 1 层服务器,或购买合适的计时 GPS 接收器,自己成为第 1 层源。
答案3
所有时钟都会出现一定程度的漂移,这取决于计时信号的来源以及跟踪效果。在 PC 中,目前这是 HPET,但如果超载,PC 可能会忘记已经过去了多少个刻度。
您的机器与之通信的 NTP 服务器很可能也会丢失时间,但它们会将其时间调回到更好的源。
最终,更好的来源是高精度时钟,例如原子钟。你可以将 NTP 视为一个机器网络,每个机器都会有多个依赖的来源来获取时间,并将自己的时间调整到被认为更准确的时间。
这是由声明其层次的源控制的。原子钟或 GPS 时钟是第 0 层,也是时间的权威。从那以后的每一层都是下一个层次 - 第 1 层,并将检查许多第 0 层源以及同一级别的对等源,以检查时间源的完整性。
您可能正在与 2 层或 3 层时间源交谈。
答案4
其他人写的内容是正确的:Stratum 1 服务器从 Stratum 0 设备获取时间。我不知道这种情况发生在哪个时间间隔,但我认为它们在那里相当准确。
层 n 服务器(n > 1)通过 NTP 从层 n-1 服务器获取时间。这意味着它会定期与其同步。启动 NTP 服务后,同步间隔非常短,随着时间的推移,间隔开始增加。最终,间隔长达 1024 秒,大约 17 分钟。
尚未解决的问题是,这段时间之间会发生什么?嗯,有一个设施叫漂移文件。它帮助 NTP 监控本地时钟和参考时钟之间的任何漂移。然后根据检测到的漂移调整本地时钟的频率,以便在服务器轮询之间时间也准确。
其他 NTP 实现可能使用其他设施,但有一件事是共同的:需要并能够调整时钟频率。