TLDR: I am getting "Leap 11", which means the server is unsynchronized. How to I fix this?
Some background for the problem I am trying to solve. I have a payload that will be on a spacecraft. The spacecraft provides NTP, but only one server. I will have a sub-payload installed in our payload. This sub-payload is being developed by a different organization. The sub-payload requires access to NTP. We have a dedicated network interface to communicate with the sub-payload. We can not bridge or route traffic between the spacecraft network and the sub-payload network. Thus our payload needs to be a client of the spacecraft NTP, and be a server for our sub-payload. Our payload is running Windows 7 SP1.
I spent considerable time trying to get Microsoft's w32tm time service to synchronize with NTP and act as an NTP server. I have given up on this.
I am now trying to use Meinberg NTP. This seems to be much better, but I still have problems. The server keeps reporting "leap not in sync" and "leap_alarm" and "leap 11". I've been digging for days and haven't figured out what is wrong. How can I get this to work?
Examples below are a virtual machine running Windows 7 so I can easily experiment and get a reliable setup before installing this on our payload.
NTP on the Windows 7 system is synchronized to a remote server.
C:\Program Files (x86)\NTP\etc>ntpq -pn
remote refid st t when poll reach delay offset jitter
==============================================================================
127.127.1.0 .LOCL. 6 l 65 64 2 0.000 +0.000 0.977
*128.138.XXX.XXX 128.138.YYY.YYY 2 u 6 8 377 0.977 +912.07 579.941
Info on the NTP installed on Windows 7:
C:\Program Files (x86)\NTP\etc>ntpq -crv
associd=0 status=c613 leap_alarm, sync_ntp, 1 event, spike_detect,
version="ntpd 4.2.8p15-o Jun 25 14:45:34 (UTC+02:00) 2020 (2)",
processor="x86", system="Windows", leap=11, stratum=3, precision=-10,
rootdelay=2.380, rootdisp=2952.787, refid=128.138.XXX.XXX,
reftime=e313d90f.d74bc8e2 Tue, Sep 22 2020 1:59:43.841,
clock=e313d911.12cbcb26 Tue, Sep 22 2020 1:59:45.073, peer=59255, tc=3,
mintc=3, offset=+0.000000, frequency=+0.000, sys_jitter=494.744833,
clk_jitter=0.977, clk_wander=0.000
When I use ntpdate to query the NTP server running on my Windows 7 system, it fails:
C:\Program Files (x86)\NTP\etc>ntpdate -d -v 127.0.0.1
22 Sep 02:00:32 ntpdate[1512]: ntpdate 4.2.8p15-o Jun 25 14:48:06 (UTC+02:00) 2020 (2)
22 Sep 02:00:32 ntpdate[1512]: Raised to realtime priority class
transmit(127.0.0.1)
receive(127.0.0.1)
transmit(127.0.0.1)
receive(127.0.0.1)
transmit(127.0.0.1)
receive(127.0.0.1)
transmit(127.0.0.1)
receive(127.0.0.1)
127.0.0.1: Server dropped: leap not in sync
server 127.0.0.1, port 123
stratum 3, precision -10, leap 11, trust 000
refid [128.138.XXX.XXX], root delay 0.002380, root dispersion 3.470093
reference time: e313d93f.d74bc6bf Tue, Sep 22 2020 2:00:31.841
originate timestamp: e313d946.7acbce26 Tue, Sep 22 2020 2:00:38.479
transmit timestamp: e313d94622 Sep 02:00:38 ntpdate[1512]: no server suitable for synchronization found
.7acbc713 Tue, Sep 22 2020 2:00:38.479
filter delay: 0.02658 0.02658 0.02658 0.02658
---- ---- ---- ----
filter offset: +0.000000 +0.000000 +0.000000 +0.000000
---- ---- ---- ----
delay 0.02658, dispersion 0.00000, offset +0.000000
And config file with comments removed. The sub-payload must have a working NTP server - a slightly incorrect server is better than no server. So I have configured the local clock as a source.
C:\Program Files (x86)\NTP\etc>type ntp.conf
restrict default noquery nopeer nomodify notrap
restrict -6 default noquery nopeer nomodify notrap
restrict 127.0.0.1
restrict -6 ::1
restrict 172.22.11.0
driftfile "C:\Program Files (x86)\NTP\etc\ntp.drift"
server 127.127.1.0
fudge 127.127.1.0 stratum 6
server 128.138.XXX.XXX iburst minpoll 3 maxpoll 7 prefer
EDIT: adding info for the ntpq readvar command.
C:\Program Files (x86)\NTP\etc>ntpq
ntpq> readvar
associd=0 status=c613 leap_alarm, sync_ntp, 1 event, spike_detect,
version="ntpd 4.2.8p15-o Jun 25 14:45:34 (UTC+02:00) 2020 (2)",
processor="x86", system="Windows", leap=11, stratum=3, precision=-10,
rootdelay=2.289, rootdisp=4553.250, refid=128.138.XXX.XXX,
reftime=e3152168.e15ea3de Wed, Sep 23 2020 1:20:40.880,
clock=e315216d.520c0641 Wed, Sep 23 2020 1:20:45.320, peer=59255, tc=3,
mintc=3, offset=+0.000000, frequency=+6.278, sys_jitter=798.325045,
clk_jitter=0.977, clk_wander=0.000
ntpq> assoc
ind assid status conf reach auth condition last_event cnt
===========================================================
1 59254 90f4 yes yes none reject reachable 15
2 59255 961a yes yes none sys.peer sys_peer 1
ntpq> readvar 59254
associd=59254 status=90f4 conf, reach, sel_reject, 15 events, reachable,
srcadr=LOCAL(0), srcport=123, dstadr=127.0.0.1, dstport=123, leap=00,
stratum=6, precision=-10, rootdelay=0.000, rootdisp=10.000, refid=LOCL,
reftime=(no time), rec=e31520b1.e3d46a48 Wed, Sep 23 2020 1:17:37.889,
reach=010, unreach=0, hmode=3, pmode=4, hpoll=6, ppoll=6, headway=0,
flash=00 ok, keyid=0, ttl=0, offset=+0.000, delay=0.000,
dispersion=7937.988, jitter=0.977,
filtdelay= 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00,
filtoffset= +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00 +0.00,
filtdisp= 0.98 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0 16000.0
ntpq> readvar 59255
associd=59255 status=961a conf, reach, sel_sys.peer, 1 event, sys_peer,
srcadr=128.138.XXX.XXX, srcport=123, dstadr=172.22.11.179,
dstport=123, leap=00, stratum=2, precision=-18, rootdelay=1.312,
rootdisp=24.643, refid=128.138.YYY.YYY,
reftime=e3151e59.4db14951 Wed, Sep 23 2020 1:07:37.303,
rec=e3152180.e100aeac Wed, Sep 23 2020 1:21:04.878, reach=377,
unreach=0, hmode=3, pmode=4, hpoll=3, ppoll=3, headway=1, flash=00 ok,
keyid=0, offset=+4208.463, delay=0.977, dispersion=1.094, jitter=714.431,
xleave=0.001,
filtdelay= 0.98 0.98 0.98 0.98 29.29 0.98 118.15 197.25,
filtoffset= +4208.4 +4036.9 +3901.7 +3729.3 +3516.3 +3337.0 +3256.6 +3171.4,
filtdisp= 0.98 1.10 1.22 1.34 1.46 1.58 1.70 1.82
EDIT2: Removing the local clock as a source. Changed config and rebooted.
Config file with comments removed.
C:\Program Files (x86)\NTP\etc>type ntp.conf
restrict default noquery nopeer nomodify notrap
restrict -6 default noquery nopeer nomodify notrap
restrict 127.0.0.1
restrict -6 ::1
restrict 172.22.11.0
driftfile "C:\Program Files (x86)\NTP\etc\ntp.drift"
server time.colorado.edu iburst minpoll 3 maxpoll 7 prefer
C:\Program Files (x86)\NTP\etc>ntpq
ntpq> readvar
associd=0 status=c613 leap_alarm, sync_ntp, 1 event, spike_detect,
version="ntpd 4.2.8p15-o Jun 25 14:45:34 (UTC+02:00) 2020 (2)",
processor="x86", system="Windows", leap=11, stratum=3, precision=-10,
rootdelay=2.319, rootdisp=899.108, refid=128.138.XXX.XXX,
reftime=e3153daa.b2084280 Wed, Sep 23 2020 3:21:14.695,
clock=e3153db1.9672107e Wed, Sep 23 2020 3:21:21.587, peer=35575, tc=3,
mintc=3, offset=+0.000000, frequency=+16.909, sys_jitter=337.424222,
clk_jitter=0.977, clk_wander=0.000
ntpq> peer
remote refid st t when poll reach delay offset jitter
==============================================================================
*128.138.XXX.XXX 128.138.YYY.YYY 2 u 5 8 377 0.977 +5100.9 810.260
ntpq> assoc
ind assid status conf reach auth condition last_event cnt
===========================================================
1 35575 961a yes yes none sys.peer sys_peer 1
ntpq> readvar 35575
associd=35575 status=961a conf, reach, sel_sys.peer, 1 event, sys_peer,
srcadr=128.138.XXX.XXX, srcport=123, dstadr=172.22.11.179,
dstport=123, leap=00, stratum=2, precision=-18, rootdelay=1.343,
rootdisp=38.300, refid=128.138.YYY.YYY,
reftime=e3153bd3.adb315a2 Wed, Sep 23 2020 3:13:23.678,
rec=e3153e8e.af79f93e Wed, Sep 23 2020 3:25:02.685, reach=377,
unreach=0, hmode=3, pmode=4, hpoll=3, ppoll=3, headway=0, flash=00 ok,
keyid=0, offset=+4486.303, delay=0.977, dispersion=1.092, jitter=606.007,
xleave=0.000,
filtdelay= 0.98 0.98 0.98 0.98 0.98 97.64 0.98 0.98,
filtoffset= +4486.3 +4378.9 +4227.2 +4084.3 +3943.5 +3853.0 +3658.4 +3511.8,
filtdisp= 0.98 1.10 1.22 1.34 1.46 1.58 1.70 1.82
EDIT3: I built a fresh Windows 7 Enterprise SP1 system. Installed a simple configuration of Meinberg NTP using two time servers here on campus. Win7 refuses to synchronize with those servers. I wrote a simple script to try and force it to synchronize, but no success.
@echo off
echo NTP PEERS >> ntp-query.log 2>&1
ntpq -p >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo NTP ASSOCIATIONS >> ntp-query.log 2>&1
ntpq -c as >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo NTP READVARS >> ntp-query.log 2>&1
ntpq -c rv >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo STOP NTP SERVICE >> ntp-query.log 2>&1
net stop ntp >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo SYNC CLOCK >> ntp-query.log 2>&1
ntpdate -b -v time.colorado.edu >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo START NTP SERVICE >> ntp-query.log 2>&1
net start ntp >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo NTP PEERS >> ntp-query.log 2>&1
ntpq -p >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo NTP ASSOCIATIONS >> ntp-query.log 2>&1
ntpq -c as >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo. >> ntp-query.log 2>&1
echo NTP READVARS >> ntp-query.log 2>&1
ntpq -c rv >> ntp-query.log 2>&1
NTP PEERS
remote refid st t when poll reach delay offset jitter
==============================================================================
tcom-gw-loop.co 128.138.140.44 2 u 65 64 3 3.897 +2854.1 1695.66
utcnist2.colora .NIST. 1 u 59 64 3 19.527 +2981.0 1708.88
NTP ASSOCIATIONS
ind assid status conf reach auth condition last_event cnt
===========================================================
1 48693 901a yes yes none reject sys_peer 1
2 48694 901a yes yes none reject sys_peer 1
NTP READVARS
associd=0 status=c018 leap_alarm, sync_unspec, 1 event, no_sys_peer,
version="ntpd 4.2.8p15-o Jun 25 14:45:34 (UTC+02:00) 2020 (2)",
processor="x86", system="Windows", leap=11, stratum=2, precision=-10,
rootdelay=19.771, rootdisp=1645.581, refid=128.138.141.172,
reftime=e323864f.c85581a0 Sat, Oct 3 2020 23:22:55.782,
clock=e32386e0.89558364 Sat, Oct 3 2020 23:25:20.536, peer=0, tc=6,
mintc=3, offset=+0.000000, frequency=+0.000, sys_jitter=0.000000,
clk_jitter=0.977, clk_wander=0.000
STOP NTP SERVICE
The Network Time Protocol Daemon service is stopping.
The Network Time Protocol Daemon service was stopped successfully.
SYNC CLOCK
3 Oct 23:25:23 ntpdate[1688]: ntpdate 4.2.8p15-o Jun 25 14:48:06 (UTC+02:00) 2020 (2)
3 Oct 23:25:23 ntpdate[1688]: Raised to realtime priority class
3 Oct 23:25:33 ntpdate[1688]: step time server 128.138.82.156 offset +4.142855 sec
START NTP SERVICE
The Network Time Protocol Daemon service is starting.
The Network Time Protocol Daemon service was started successfully.
NTP PEERS
remote refid st t when poll reach delay offset jitter
==============================================================================
tcom-gw-loop.co 128.138.140.44 2 u 1 64 1 35.147 +68.050 0.977
utcnist2.colora .NIST. 1 u 1 64 1 16.598 +56.055 0.977
NTP ASSOCIATIONS
ind assid status conf reach auth condition last_event cnt
===========================================================
1 49563 9014 yes yes none reject reachable 1
2 49564 9014 yes yes none reject reachable 1
NTP READVARS
associd=0 status=c016 leap_alarm, sync_unspec, 1 event, restart,
version="ntpd 4.2.8p15-o Jun 25 14:45:34 (UTC+02:00) 2020 (2)",
processor="x86", system="Windows", leap=11, stratum=16, precision=-10,
rootdelay=0.000, rootdisp=0.045, refid=INIT, reftime=(no time),
clock=e32386f0.0b989634 Sat, Oct 3 2020 23:25:36.045, peer=0, tc=3,
mintc=3, offset=+0.000000, frequency=+0.000, sys_jitter=0.000000,
clk_jitter=0.977, clk_wander=0.000