【发布时间】:2026-01-13 23:05:02
【问题描述】:
我尝试阅读 NTPv4 RFC 4905。我似乎无法理解它在计算下一个轮询间隔以向其对等方发送 NTP 请求数据包的基础。 ppoll 和 hpoll 在查找轮询时间中的作用是什么?另外,MINPOLL 和 MAXPOLL 之间的轮询间隔如何变化?
【问题讨论】:
标签: ntp
我尝试阅读 NTPv4 RFC 4905。我似乎无法理解它在计算下一个轮询间隔以向其对等方发送 NTP 请求数据包的基础。 ppoll 和 hpoll 在查找轮询时间中的作用是什么?另外,MINPOLL 和 MAXPOLL 之间的轮询间隔如何变化?
【问题讨论】:
标签: ntp
关于轮询间隔的很好的解释可以在here找到,下面是摘录。
NTP 使用复杂的启发式算法来自动控制轮询间隔,以实现与最小网络开销一致的最大准确性。该算法测量偶然偏移和抖动以确定最佳轮询间隔。当 ntpd 启动时,间隔是默认的最小 64 秒。在时钟规则稳定的正常情况下,间隔逐步增加到默认最大值 1024 秒。此外,如果某个服务器在一段时间后变得无法访问,则间隔会逐步增加到最大,以减少网络开销。有关该算法的更多信息,请参见 Poll Program 页面。
默认轮询间隔范围适用于大多数情况,但可以使用服务器命令和选项以及杂项选项页面上的选项进行更改。但是,当使用比默认值大得多的最大间隔时,剩余时钟频率误差必须足够小,以便规则循环能够捕获和纠正。捕获范围为 500 PPM,间隔 64 秒,每增加一倍,则减少两倍。例如,以 36 小时为间隔,捕获范围仅为 0.24 PPM。
在 NTPv4 规范和参考实现中,轮询间隔以 log2 为单位表示,正确地称为轮询指数。它受服务器命令的下限 minpoll 和上限 maxpoll 选项的约束。默认限制分别为 6(64 秒)和 10(1024 秒),适用于绝大多数情况。
hpoll :这是当前用于主机的轮询间隔。每次服务器无法访问时,该值都会增加。
【讨论】: