Re: Predictable Internet Time

Joe Touch <touch@isi.edu> Tue, 03 January 2017 22:49 UTC

Return-Path: <touch@isi.edu>
X-Original-To: ietf@ietfa.amsl.com
Delivered-To: ietf@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 37B4A12987C for <ietf@ietfa.amsl.com>; Tue, 3 Jan 2017 14:49:08 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10
X-Spam-Level:
X-Spam-Status: No, score=-10 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-3.1] 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 UrIKXwikSxcV for <ietf@ietfa.amsl.com>; Tue, 3 Jan 2017 14:49:06 -0800 (PST)
Received: from boreas.isi.edu (boreas.isi.edu [128.9.160.161]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C1F9712987A for <ietf@ietf.org>; Tue, 3 Jan 2017 14:49:06 -0800 (PST)
Received: from [128.9.160.211] (mul.isi.edu [128.9.160.211]) (authenticated bits=0) by boreas.isi.edu (8.13.8/8.13.8) with ESMTP id v03MmMU7001381 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Tue, 3 Jan 2017 14:48:23 -0800 (PST)
Subject: Re: Predictable Internet Time
To: Tony Finch <dot@dotat.at>
References: <CAMm+LwgfQJ8aG5wB=d3fRbbeje3J9o7Z4_DCuP8DL88ouDeKzw@mail.gmail.com> <504e2cea0d1668c31486b05fec0a967a4446aefe@webmail.weijax.net> <CAMm+Lwi_jU6gjdtdM6a2n_9_89tUvWBNXxnMtSjTEA++h1D4Ew@mail.gmail.com> <e0a43370-751f-808c-3719-9716f9cd57d1@isi.edu> <alpine.DEB.2.11.1701031348430.7102@grey.csi.cam.ac.uk> <f94415b6-d9f7-0a03-cf5b-ce39c109aa71@isi.edu> <1483475689.1348946.836323865.09305276@webmail.messagingengine.com> <94226b19-4690-ee8e-526e-04cc54e97b8e@isi.edu> <1483482794.1375510.836410009.6D0F7910@webmail.messagingengine.com>
From: Joe Touch <touch@isi.edu>
Message-ID: <fef56705-3037-eb92-b804-4aa43326a654@isi.edu>
Date: Tue, 03 Jan 2017 14:48:22 -0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1
MIME-Version: 1.0
In-Reply-To: <1483482794.1375510.836410009.6D0F7910@webmail.messagingengine.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-ISI-4-43-8-MailScanner: Found to be clean
X-MailScanner-From: touch@isi.edu
Archived-At: <https://mailarchive.ietf.org/arch/msg/ietf/nnUsBG3uaD38ghT6GQYtcfIz_4c>
Cc: Phillip Hallam-Baker <phill@hallambaker.com>, IETF Discussion Mailing List <ietf@ietf.org>
X-BeenThere: ietf@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: IETF-Discussion <ietf.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ietf>, <mailto:ietf-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ietf/>
List-Post: <mailto:ietf@ietf.org>
List-Help: <mailto:ietf-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ietf>, <mailto:ietf-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 03 Jan 2017 22:49:08 -0000


On 1/3/2017 2:33 PM, Tony Finch wrote:
> Joe Touch <touch@isi.edu> wrote:
> > On 1/3/2017 12:34 PM, Tony Finch wrote:
> > >
> > > Well, the problem is that "seconds since the epoch" is not a count of
> > > UTC seconds,
> >
> > Correct; it's UTC-(leap seconds since epoch start).
> >
> > > it is a mapping from broken-down time to a linear time,
> >
> > Seconds since epoch is as linear as it gets.
>
> Except that that the number of leap seconds isn't constant, so it is
> only superficially linear: there is a wrinkle at every leap second.

Leap seconds are still seconds, which are counted in "seconds since epoch".

> > The conversion of epoch seconds to larger units is where the leap
> > seconds is counted.
> >
> > A "day" as a unit of time is not exactly 86400 seconds (if it were, we
> > wouldn't need leap seconds).
>
> POSIX disagrees with you (and it is in denial about its agreement with
> UTC).
>
> > >
> http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16
>
> :: tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400
>
> There's no allowance for the number of leaps since the epoch in that
> specification.

Denial is not just a river in Egypt ;-)

>
> Try the following (and sorry about the perl, but the date command
> isn't portable enough). Note that the difference between the POSIX
> time_t seconds since the epoch is 1s (...8800 - ...8799 == 1) but the
> elapsed time was 2s.
>
> $ perl -MPOSIX -e 'print strftime "%F %T\n", gmtime 1483228799'
> 2016-12-31 23:59:59
> $ perl -MPOSIX -e 'print strftime "%F %T\n", gmtime 1483228800'
> 2017-01-01 00:00:00
>
> There is no distinct time_t value for 2015-12-31 23:59:60.

In would presume that the same code would generate a time that is one
second behind UTC right now.

I.e., the Posix code is incorrect in claiming it reports UTC.

>
> To make this message slightly more on-topic for this list, anyone who
> cares about this subject should be aware that NTP timestamps work
> exactly the same way as POSIX timestamps, except for a constant offset
> between NTP time and POSIX time due to the different choice of epoch.
> The relevant difference is that POSIX does not specify how leap
> seconds are handled, whereas NTP has a couple of extra bits which
> allow the next leap second to be transferred (in theory but often not
> in practice). NTP also has no distinct timestamp value for the leap
> second, except if you include the leap indicator bits.

NTP reports seconds since epoch; it is in the conversion of that value
to display time that the issue of leap seconds comes into play. In that
case, some systems report 59-59-00 and others 59-00-00, i.e, repeating a
UTC value to account for the leap second in the human-readble output.
Internally, the number of seconds which have passed is correct and
include the leap second.

Joe