ntpd
是NTP的参考实现。当前版本是4.1.2。
手册页似乎也就是说,当iburst
使用 时,重试无响应的 NTP 服务器的时间间隔是 16 秒。
http://doc.ntp.org/4.1.2/confopt.htm
iburst
当服务器无法访问时,在每个轮询间隔,突发发送八个数据包,而不是通常的数据包。只要服务器无法访问,数据包之间的间隔约为 16 秒,以允许调制解调器呼叫完成。一旦服务器可达,数据包之间的间隔约为 2 秒。这是为了加快服务器命令和地址以及使用该选项启动 ntpd 时的初始同步获取速度
-q
。
但官方 NTP“手册”称重试间隔将提高到 64 秒(假设默认设置):
https://www.eecis.udel.edu/~mills/ntp/html/poll.html
对于该
iburst
选项,突发中的数据包数量为 6,这是同步时钟通常需要的数量;对于该burst
选项,突发中的数据包数量由当前轮询指数与最小轮询指数之间的差(2 的幂)决定。例如,默认最小轮询指数 6(64 秒),每次轮询仅发送一个数据包,而在轮询指数为 9(512 秒)或更大时发送全部 8 个数据包。这确保了平均车头时距永远不会超过最小车头时距。如果设计不仔细,突发选项可能会导致网络负载增加。这两个选项均受到费率管理和死亡之吻数据包页面中描述的规定的影响。此外,当启用
iburst
或burst
时,将发送突发的第一个数据包,但仅在收到对第一个数据包的回复时才发送其余数据包。如果在该选项设置的超时后仍未收到回复minpoll
,则将再次发送第一个数据包。这意味着,即使服务器无法访问,网络负载也不会超过最小轮询间隔。
我是否应该理解使用 时重试之间的间隔实际上是 64 秒iburst
,除非该minpoll
选项也进行了调整?
答案1
该iburst
设置会更改server
设置,以便在可以访问服务器之前,在每个轮询间隔发送八个数据包而不是一个。 (八个数据包之间的间隔为 16 秒或 2 秒,具体取决于是否收到任何响应。)
为了具体回答您的问题,无论是否iburst
使用,轮询重试之间的间隔至少为 64 秒。
- 不使用时
iburst
,每个服务器轮询重试将发送一个数据包。 - 使用时
iburst
,每次轮询重试将以 16 秒或 2 秒的间隔发送最多 8 个数据包。 - 一旦服务器被认为是可访问的(因此是同步的候选者),该
iburst
标志就不再有作用。 iburst
要在服务器成为同步候选者后使用语义,请添加该burst
标志。- 允许(但不一定推荐)将
iburst
和burst
用于同一服务器。
经过一些实验,这就是我实际发生的情况:
- 当
iburst
指定且服务器未回复时,每个轮询间隔发送一个数据包。 - 当
iburst
指定并且服务器确实回复时,将发送六个数据包的初始序列,每两秒一个。这不会在后续轮询间隔中重复,并且iburst
不会产生进一步的影响。这个六个数据包的序列足以将服务器标记为同步的潜在候选者(*
在 的左侧列中ntpq -np
)。 - 一旦
iburst
没有进一步的影响,每个轮询间隔都会发送一个数据包。 - 每个成功的轮询间隔都会将可达性增加 1(实际上将其视为按位移位寄存器,其中 1 被推入作为 LSB);一旦达到 777(八进制),对应于九个连续成功的轮询间隔,服务器就成为可能的同步源。
其中很少与当前文档相符!