![当延迟变化很大时,ntpd 的工作效果如何?](https://linux22.com/image/581574/%E5%BD%93%E5%BB%B6%E8%BF%9F%E5%8F%98%E5%8C%96%E5%BE%88%E5%A4%A7%E6%97%B6%EF%BC%8Cntpd%20%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%95%88%E6%9E%9C%E5%A6%82%E4%BD%95%EF%BC%9F.png)
我有一个应用程序,其中我们使用了一些非标准网络设备(无法更改),这些设备在流量爆发之间进入休眠状态。网络延迟是非常第一个数据包的延迟较高,因为它本质上是唤醒系统,等待系统重新连接,然后进行第一次往返。后续消息(假设它们在下一分钟左右)要快得多,但延迟仍然很高。一组典型的 ping 看起来像 2500ms、900ms、880ms、885ms、900ms、890ms 等。
鉴于 NTP 在计算偏移量之前使用了多次往返,我可以期望 ntpd 在这种链接上工作得如何?最初缓慢的第一次往返是否会因为后续往返 ntp 服务器的消息差异很大(且速度更快)而被忽略?
答案1
简短的回答是肯定的,NTP 会优先选择低往返时间戳而不是高往返时间戳。以前有一个calldelay
选项可以告知 NTP 此问题,通常是由使用按需拨号技术的网络创建的,这些技术会造成呼叫延迟。但是,现在 NTP 会自动执行此操作。
如果您想加快初始时间同步的速度,您可能希望iburst
在server
/peer
行上使用关键字。这告诉 NTP 使用 8 个间隔开的数据包而不是 1 个来测量时间。它将忽略任何往返时间更长的数据包。如果您有带宽,您可以使用burst
它让它每次测量时间时使用 8 个数据包。