[ntp:questions] Leap second functional question

Martin Burnicki martin.burnicki at meinberg.de
Tue Feb 19 10:52:49 UTC 2008


Unruh wrote:
> "David J Taylor"
> <david-taylor at blueyonder.neither-this-bit.nor-this-bit.co.uk> writes:
> 
>>Unruh wrote:
>>> "David J Taylor"
>>[]
>>>> No.  At least on Windows.  IIRC, it doubles the clock speed for one
>>>> second to move forward, and halves the clock speed for two seconds
>>>> to move backwards.  Something like that.  No step is used.  My
>>>> recollection is at best vague about this, but searching the
>>>> newsgroup archives may help you.
>>>
>>> Is this a windows OS dependent procedure? This of course means that
>>> the
>>> time is wrong for at least two seconds, plus errors due to
>>> overshoots, etc.
> 
>>You would need to check with the implementors, or back in this newsgroup
>>archives.  It means that any step is avoided which, IMHO, is far more
>>important.  I haven't seen any "errors due to overshoots".

The Windows-specific implementation of the leap second handling in ntpd has
been implemented by me.

At the time I did that ntpd did not handle the leap second by itself. It
just passed the leap second announcement to the kernel, so how the leap
second was handled depended on the implementation of the kernel of a
specific OS.

If the host OS did not provide a kernel PLL then ntpd just did nothing
during the leap second, so when a NTP server had inserted a leap second
properly then ntpd running on a client without kernel PLL just observed a 1
second time offset after UTC midnight and then stepped the system time
about 15 minutes later. See NTP bug #508:
See http://bugs.ntp.org/508

I wrote a piece of code which handles the leap second under Windows and we
at Meinberg made that version of ntpd available shortly before the leap
second occurred. It still took some time until the patch made its way into
the NTP code base, and when that happened I documented this in bug #686:
http://bugs.ntp.org/686

As already mentioned earlier there is also leap second info page which
contains some information on leap seconds:
http://www.meinberg.de/english/info/leap-second.htm

This also contains a log of the last leap second under Windows, where the
time is measured against a Meinberg GPS PCI card:
http://www.meinberg.de/english/info/leap-second.htm#log-ntp

Recently Dave Mills has made some changes to the NTP development code base
which shall handle leap seconds on any OS which does not provide a kernel
PLL. I'll still have to check how this code works on Windows, and whether
Dave and my leap second code would now insert 2 leap seconds instead of 1
(I'm afraid this would be the case).

Martin
-- 
Martin Burnicki

Meinberg Funkuhren
Bad Pyrmont
Germany




More information about the questions mailing list