Answers:
其中一些答案可能会赢得混淆的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).
Chrony是ntp参考实现的一个很好的选择。Openntpd不是。
我的经验是使用ntp而不是openntpd。
您应该知道NTP协议通常以每分钟(64秒)发送一个数据包开始,但是通常以每17分钟为/etc/ntp.conf文件中的每个服务器发送和接收一个数据包来解决。但是,网络中断或设备中的时钟不稳定可能会增加这种情况。每个数据包的有效载荷约为68字节,因此每次轮询单向可能大约超过100字节。
网络启动时的rdate和ntpdate是设置时间的好方法。如果这是您所需要的,那么它应该会很好地为您服务。
但是,如果您需要长时间保持时间同步,则可以使用ntp协议来做到这一点。即使设备中的时钟可能是晶体控制的,但设备中的时钟仍会根据运行时的温度而有所不同,尽管它可能具有晶体控制时钟,并且持续进行计时是为了对此进行调整。
如果您需要持续的计时并希望减少使用的带宽,请参考以下建议。它们引用ntp.conf中的项目。
不要使用iburst。(但是初始设置时间会花费更多时间)。
将minpoll从6向上增加(2 ^ 6秒为64秒)。这样可以减少网络启动后协议启动时的通信量。
将maxpoll从10(2 ^ 10秒为1024秒或大约每17分钟)向上增加。大约每36小时您最多可以进行17次轮询。我自己没有尝试过。
仅使用最少数量的服务器,如果您可以从嵌入式设备可靠地访问一台服务器,那就太好了。服务器越多,计时就越可靠,但是流量会增加,因此这是一个折衷方案。
当单元界面出现时,您可以做一些涉及运行ntpdate的黑客活动。但是,如果可以的话,安装chrony将是更好的选择,因为它是在考虑间歇性网络访问的情况下创建的。
您可能已经阅读过openntpd手册页。
http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd.conf
您可能已经注意到缺乏时间轮询选项。
我提出以下这些可能的技巧:
如果要允许,请使用cron和/或您的蜂窝连接脚本切换iptables规则以丢弃或允许123端口通信。这可能很简单
0 12 * * * iptables -D OUTPUT -j DROP -p udp --dport 123 # at noon start allowing ntp
0 13 * * * iptables -A OUTPUT -j DROP -p udp --dport 123 # at 1pm stop allowing ntp
将无线电时钟接收器嵌入到嵌入式计算机中。我对此一无所知,但产品如下:
让我认为如果可以接收无线电信号并不难。
如果我没记错的话,ntp轮询间隔可以设置为最大1024秒。也许最简单的解决方案是在每次启动时运行ntpdate,然后不时从crontab中运行。
如果您的时钟在每次启动时都以随机时间开始,那么您可能始终无法运行ntpd,则必须先使用ntpdate。如果您的时钟与服务器时钟之间的差异太大,则Ntpd拒绝同步时间。
为了使minpool
/ maxpool
被考虑进去,你必须再添加每台服务器在你的ntp.conf
。
不建议您将NTP守护进程弄乱(它具有内置的mathod以优化频率),但您需要添加以下这些选项:
server time.google.com iburst minpoll 12 maxppol 17
server ntp.ubuntu.com iburst minpoll 12 maxppol 17
server europe.pool.ntp.org iburst minpoll 12 maxppol 17
在这里,如果将最小频率设置为2 ^ 12秒,将最大频率设置为2 ^ 17秒。
默认情况下,我发现NTP将每分钟左右发出一个请求。太过分了。在这里,我将频率从每小时一次减少到每天一次(合理地)。