NTP实时偏移误差

时间:2014-02-12 15:23:27

标签: synchronization offset ntp

我正在开展一个项目,我需要找出NTP同步时钟可以来自UTC的最大偏移量。

如果我运行ntpdc -c loopinfo,它输出一个偏移量,这是实际时间的偏移误差吗?

如果我运行ntpq -p,它会显示每个对等点的偏移量是什么偏移量?

我可以使用哪一项来实时查找最大偏移误差?

谢谢。

3 个答案:

答案 0 :(得分:1)

我认为您正在寻找ntpq -c kerninfontptime

的输出
$ ntpq -c kerninfo
associd=0 status=0615 leap_none, sync_ntp, 1 event, clock_sync,
pll offset:            0.336481
pll frequency:         -32.762
maximum error:         0.136773
estimated error:       0.000231
kernel status:         pll nano
pll time constant:     10
precision:             1e-06
frequency tolerance:   500
pps frequency:         0
pps stability:         0
pps jitter:            0.000
calibration interval   4
calibration cycles:    0
jitter exceeded:       0
stability exceeded:    0
calibration errors:    0

或者使用ntptime:

S ntptime
ntp_gettime() returns code 0 (OK)
time d6a66a56.372c300c  Wed, Feb 12 2014 16:47:02.215, (.215518749),
maximum error 141773 us, estimated error 231 us, TAI offset 35
ntp_adjtime() returns code 0 (OK)
modes 0x0 (),
offset 335.660 us, frequency -32.762 ppm, interval 4 s,
maximum error 141773 us, estimated error 231 us,
status 0x2001 (PLL,NANO),
time constant 10, precision 0.001 us, tolerance 500 ppm,
pps frequency 0.000 ppm, stability 0.000 ppm, jitter 0.000 us,
intervals 0, jitter exceeded 0, stability exceeded 0, errors 0.

答案 1 :(得分:0)

  

ntpq -p 将以毫秒为单位显示每个可访问服务器的偏移量(ntpdc -p使用秒代替)。

     

ntpdc -c loopinfo 将以秒为单位显示组合偏移量,如上次轮询所示。如果支持,ntpdc -c kerninfo将显示当前剩余的更正,就像ntptime一样。

https://www.eecis.udel.edu/~ntp/ntpfaq/NTP-s-trouble.htm#Q-TRB-MON-TIME-DIF

答案 2 :(得分:0)

以上答案对于从NTP服务获取指定的变量是正确的,即error,maxerror。但是,尽管Google搜索NTP网站并阅读NTP手册页,但对他们的定义始终对我还是不清楚的。因此,我深入研究代码,发现这两行https://github.com/ntp-project/ntp/blob/stable/ntpd/ntp_loopfilter.c#L780

ntv.esterror = (u_int32)(clock_jitter * 1e6);
ntv.maxerror = (u_int32)((sys_rootdelay / 2 + sys_rootdisp) * 1e6);

在源中发现了其他一些搜索https://github.com/ntp-project/ntp/blob/stable/include/ntpd.h#L473

extern double    sys_rootdelay;          /* roundtrip delay to primary source */
extern double    sys_rootdisp;           /* dispersion to primary source */

其中一些可能也定义在NTP规范中,但是与阅读源代码相比,我发现阅读RFC颇具挑战性。