【发布时间】:2017-07-04 04:14:45
【问题描述】:
我正在尝试基于 NMEA GPS 接收器实现 NTP 服务器。我不确定用什么填充根延迟字段。
我已经阅读了NTPv4 specification,它写道根延迟是参考时钟的总往返延迟。
如果我使用的是辅助服务器,根延迟可以通过与参考服务器发出数据包请求时的时间戳之间的时间差来计算(我正确吗?)。
但是如果我使用 GPS 接收器作为参考时钟,我不确定要填写什么,我应该用 0 代替吗?
【问题讨论】:
我正在尝试基于 NMEA GPS 接收器实现 NTP 服务器。我不确定用什么填充根延迟字段。
我已经阅读了NTPv4 specification,它写道根延迟是参考时钟的总往返延迟。
如果我使用的是辅助服务器,根延迟可以通过与参考服务器发出数据包请求时的时间戳之间的时间差来计算(我正确吗?)。
但是如果我使用 GPS 接收器作为参考时钟,我不确定要填写什么,我应该用 0 代替吗?
【问题讨论】:
这在很大程度上取决于您如何通过 GPS 在服务器中设置时间。如果您正在阅读 NMEA 句子,对其进行解释并设置时钟,则根本延迟将是执行此操作所花费的时间。但这不是一个很好的时钟。读取 RS232 涉及到很多不确定的延迟(抖动)(假设这是您连接到 GPS 的方式)。
您可以使用 GPS 接收器每秒 1 个脉冲的输出来解决此问题。它通常位于数据载体检测引脚上。使用适当的 RS232 端口(不是 USB 端口),您可以使服务器时钟与之同步(DCD 可用于引发中断),因此现在您可以很好地与 GPS 时间对齐。这当然可以在 Solaris(内核的本机部分)和 Linux(http://support.ntp.org/bin/view/Support/ConfiguringNMEARefclocks)中完成。如果您这样做,那么我认为根延迟会很小,但是操作系统和硬件对中断的响应时间是一个问题。
编辑
根延迟
这是到主要参考源的总往返延迟 同步子网的根,以秒为单位。请注意,这 变量可以取正值和负值,具体取决于 时钟精度和偏差。
因此,使用 1PPS 会非常低。据我所知,这是一个辅助 NTP 服务器用来告诉其客户端它对参考时钟的延迟是多少的字段。所以如果你有一个 1PPS 锁定的 GPS 时间源,你就是一个参考时钟。在这种情况下,也许零就足够正确了;我不认为 NTP 可以比计算机的 IRQ 响应时间更好地实现跨网络时间同步精度(最多 1 毫秒)(希望
【讨论】: