Re: [Ntp] Leap second draft

Kurt Roeckx <kurt@roeckx.be> Tue, 02 April 2019 17:04 UTC

Return-Path: <kurt@roeckx.be>
X-Original-To: ntp@ietfa.amsl.com
Delivered-To: ntp@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5B7651201EF for <ntp@ietfa.amsl.com>; Tue, 2 Apr 2019 10:04:18 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kIKkV3lydDmk for <ntp@ietfa.amsl.com>; Tue, 2 Apr 2019 10:04:15 -0700 (PDT)
Received: from excelsior.roeckx.be (excelsior.roeckx.be [195.234.45.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 3028E12022D for <ntp@ietf.org>; Tue, 2 Apr 2019 10:04:15 -0700 (PDT)
Received: from intrepid.roeckx.be (localhost [127.0.0.1]) by excelsior.roeckx.be (Postfix) with ESMTP id 86EDCA8A012A; Tue, 2 Apr 2019 17:04:12 +0000 (UTC)
Received: by intrepid.roeckx.be (Postfix, from userid 1000) id 3613A1FE0B44; Tue, 2 Apr 2019 19:04:11 +0200 (CEST)
Date: Tue, 02 Apr 2019 19:04:11 +0200
From: Kurt Roeckx <kurt@roeckx.be>
To: Martin Burnicki <martin.burnicki@meinberg.de>
Cc: Daniel Franke <dfoxfranke@gmail.com>, ntp@ietf.org
Message-ID: <20190402170411.GQ7706@roeckx.be>
References: <CAJm83bD5Ozkpg5TpkogOW6xeeNQL3ZziLO9URM7haqN8Wrp=Wg@mail.gmail.com> <CAJm83bCbVzO3NNCbjTy+O_16T7DBeA7O6018WWGu_-GyuN-8UA@mail.gmail.com> <20190401161816.GN7706@roeckx.be> <5590de79-de9e-a576-eee8-10a7df6d0ffb@meinberg.de>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <5590de79-de9e-a576-eee8-10a7df6d0ffb@meinberg.de>
User-Agent: Mutt/1.10.1 (2018-07-13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/ntp/dzSOefPVzY2ELu5-yH0nHm0TL0U>
Subject: Re: [Ntp] Leap second draft
X-BeenThere: ntp@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: <ntp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ntp>, <mailto:ntp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ntp/>
List-Post: <mailto:ntp@ietf.org>
List-Help: <mailto:ntp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ntp>, <mailto:ntp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 02 Apr 2019 17:04:26 -0000

On Tue, Apr 02, 2019 at 09:40:58AM +0200, Martin Burnicki wrote:
> Kurt Roeckx wrote:
> > One question I have that I can't seem to find the answer for is
> > which second do you announce during the leap second in NTP.
> > 
> > There was a leap second at 3692217600. Do you send:
> > 3692217599
> > 3692217599 (leap second)
> > 3692217600
> > 
> > Or:
> > 
> > 3692217599
> > 3692217600 (leap second)
> > 3692217600
> > 
> > I can see arguments for both ways, and if it's not specified
> > somewhere yet, I think we need to specify it.
> 
> NTP implementations I've seen just pick up the current system time, so
> which timestamps are returned during a leap second depends on the way
> the particular operating system handles the leap second, and e.g. ntpd
> running on one type of operating system can behave differently than ntpd
> running on a different type of operating system.
> 
> So the discussion which way is the "better" one had to be done with the
> maintainers of the OS kernel clock implementation. ;-)
> 
> Letting an NTP daemon decide what kind of timestamp to return would
> require that it
> 
> 1.) uses the adjtimex()/ntp_adjtime() API calls to retrieve a timestamp
> including some status information, and then modifies the time stamp in a
> preferred way
> 
> 2.) maintains its own clock beside the system clock so it could handle
> the leap second in a different way than the kernel clock
> 
> Solution 1.) is normally not used because adjtimex()/ntp_adjtime() take
> longer to execute than a simple clock_gettime()
> 
> Solution 2.) can cause additional problems if the daemon's internal leap
> second handling differs from the leap second handling observed by
> applications running on the particular system.

One option would be the allow both the cases, but I still think
that should get documented.

But to be compliant with the current draft, you would need to know
that a timestamp is within the leap second.

It can be that with the current kernel APIs, this is very hard to
properly do, but I don't see that as a problem of the draft.

Assuming it's not possible to properly implement the bits
indicating that a timestamp is within the leap second, maybe the
draft should mention that in that case you should either not reply
around the leap second or return that you're not synchronized.


Kurt