我正在通过蜂窝连接运行的嵌入式机器上设置 Ubuntu,我们按字节付费。该机器也没有 RTC 电池,因此每次开机都会随机启动。
我想确保在蜂窝连接可用时时间同步,以便日志消息等具有实时性,但我也不想为 NTP 流量付出代价。
我可以自定义 NTP 更新时间的速率吗?我目前正在使用 openntpd,但我并不喜欢它。
互联网不一定在启动时启动,因此启动时 ntupdate 和相关的将不起作用。通过 cron 调度意味着等待计划任务启动,而我想要一个时间守护进程尽快获得时间同步。
我的经验是使用 ntp 而不是 openntpd。
您应该知道 NTP 协议通常从每分钟(64 秒)发送数据包开始,但通常通过为您的 /etc/ntp.conf 文件中的每个服务器每 17 分钟发送和接收一个数据包来解决。但是,网络中断或设备中的时钟不稳定可能会增加这种情况。每个数据包的有效载荷约为 68 字节,因此每次轮询单向可能略多于 100 字节。
网络启动时的 rdate 和 ntpdate 是设置时间的好主意。如果这就是您所需要的一切,那么应该很适合您。
但是,如果您需要长时间保持时间同步,则 ntp 协议旨在做到这一点。您设备中的时钟会根据它变得多热或多冷而运行得有点快或慢,即使它可能有一个晶体控制的时钟——并且持续的计时是为了对此进行调整。
如果您需要持续计时并希望减少使用的带宽,这里有一些建议。它们指的是 ntp.conf 中的项目。
不要使用 iburst。(但最初设置时间需要更多时间)。
将 minpoll 从 6 向上增加(2^6 秒是 64 秒)。这会减少网络启动后协议启动时的流量。
将 maxpoll 从 10 向上增加(2^10 秒是 1024 秒或大约每 17 分钟一次。您可以达到 17,大约每 36 小时轮询一次。我自己还没有尝试过。
只使用最少数量的服务器,如果您有一个可以从嵌入式设备可靠地访问的服务器,那就太好了。服务器越多,计时就越可靠,但流量会增加,所以这是一个权衡。
其中一些答案可能会赢得混淆 ntp 配置竞赛。
使用 ntp 参考实现并使用 iburst 在启动时快速设置时间。之后,您可以使用 minpoll 指令来限制 ntpd 查询远程时间服务器的频率。这将允许您利用 ntpd 的时钟纪律并降低带宽。
minpoll minpoll
maxpoll maxpoll
These options specify the minimum and maximum poll intervals for NTP
messages, in seconds as a power of two. The maximum poll interval
defaults to 10 (1024 s), but can be increased by the maxpoll option to
an upper limit of 17 (36 h). The minimum poll interval defaults to 6 (64 s),
but can be decreased by the minpoll option to a lower limit of 3 (8 s).
Run Code Online (Sandbox Code Playgroud)
Chrony是 ntp 参考实现的一个很好的替代方案。Openntpd 不是。
| 归档时间: |
|
| 查看次数: |
33453 次 |
| 最近记录: |