[LEAPSECS] My FOSDEM slides

Brooks Harris brooks at edlmax.com
Thu Mar 5 12:23:26 EST 2015


On 2015-03-05 08:39 AM, Martin Burnicki wrote:
> Tony Finch wrote:
>> Martin Burnicki <martin.burnicki at meinberg.de> wrote:
>>>
>>> I agree, but as I've tried to point out above I think a better 
>>> project design
>>> would have been to use TAI instead of GPS time. PTP works natively 
>>> with TAI,
>>> and you can easily convert between he two scales.
>>
>> I don't understand this paragraph. The three timescales you mention have
>> totally different formats:
>>
>> TAI: YYYY-MM-DD T HH:MM:SS
>> PTP: SSSSSSSSSS
>> GPS: WWWW SSSSSS
>>
>> They have different epochs:
>>
>> TAI: 1958-01-01 T 00:00:00 Z
>> PTP: 1970-01-01 T 00:00:00 Z
>> GPS: 1980-01-06 T 00:00:00 Z
>>
>> So I don't see how it makes sense to argue that PTP is more like TAI 
>> than
>> GPS time.
>
> In the strict scientific sense I agree.
>
> However, in practice, and for "current" dates, you can convert each of 
> them to a number of seconds since the epoch, and for practical 
> purposes the difference is just an integral number of seconds.
I agree.

We have seen the casual term "TAI-like", meaning an "uninterrupted 
incrementing count of seconds" from some epoch. PTP and GPS are 
"TAI-like" in that sense.
>
> For example, the IEEE Std 1588-2008 says:
>
> "The PTP epoch is 1 January 1970 00:00:00 TAI, which is 31 December 
> 1969 23:59:51.999918 UTC"
>
> However, the time stamps used in the PTP packets are just binary 
> numbers of seconds, and you have to apply an integral number of 
> seconds to convert this to UTC.

Yes, that's how it must be treated.

I urge caution interpreting the meaning of the PTP Epoch as stated in 
the spec.

The first part of that sentence is correct "The PTP epoch is 1 January 
1970 00:00:00 TAI". But the  second part, "which is 31 December 1969 
23:59:51.999918 UTC", is not, or, is at least very misleading.

This of course begs the all questions regarding a "proleptic UTC" 
timescale. What, exactly, is that? Did it exist before 
1972-01-01T00:00:00Z (UTC)? Does it include the "rubber-band era" 
between approximately 1961 and 1972?

The spec goes through long explanations of the relation of its epoch to 
the "POSIX algorithm". It wanders through explanation of the 
"rubber-band" era, and how the "broken down time" results are obtained 
from gmtime(). This is all wicked confusing. Apparently the IEEE PTP 
committee took "UTC" to include the "rubber-band era", and so attempted 
to reconcile the PTP epoch to it.

In an *informative* Annex B - Timescales and epochs in PTP, there is 
further (confusing) explanation, but then comes Table B.1?Relationships 
between timescales. There we find -

Table B.1?Relationships between timescales
>From                  | To          |  Formula
NTP Seconds           | PTP Seconds | PTP Seconds = NTP Seconds ? 2 208 
988 800 + currentUtcOffset
PTP Seconds           | NTP Seconds | NTP Seconds = PTP Seconds + 2 208 
988 800 ? currentUtcOffset
GPS Seconds =         |             |
(GPS Weeks            |             |
× 7 × 86 400)         |             |
+ GPSSecondsInLastWeek|             |
(GPS week number must |             |
include 1024 × number |             |
of rollovers)         | PTP Seconds | PTP Seconds = GPS Seconds + 315 
964 819
PTP Seconds           | GPS Seconds | GPS Seconds = PTP Seconds ? 315 
964 819

All the values in this table are *integral seconds* and they are correct 
with respect to the definitions other timescale Epochs. (They neglect to 
say the values for NTP are to NTP's "prime epoch of era 0", a subtle but 
important point)

These are the values you must use for a practical implementation of PTP, 
and that is the convention adopted by the PTP community. These values 
*contradict* the second part of the epoch specification sentence 
("...which is 31 December 1969 23:59:51.999918 UTC") and all the rest of 
the PTP epoch explanations throughout the document.

The "rubber-band era", while historically important, is just not 
relevant to practical timekeeping applications concerned with modern UTC 
and "civil time". The scattered nature of the UTC specifications lead 
from UTU-R Rec 460 to BIPM Annual Report on Time Activities Tables 1 and 
2 that list the historical values of the "rubber-band era". This leads 
to attempting to figure out what the historical values of UTC were 
during this period. Its interesting, but its a huge distraction until 
you realize it doesn't matter for most purposes. Like many of us, the 
IEEE PTP committee fell into this trap.

You can construct a Gregorian calendar timescale that is proleptic to 
1972-01-01T00:00:00Z (UTC) = 1972-01-01T00:00:10Z (TAI) (note the 10s 
TAI/UTC offset) and treats the measurement unit as integral seconds. 
This is, I believe, is the timescale most often used to calculate 
offsets between timescales, but is never explicitly acknowledged or 
named. Here I'll name it "Gregorian proleptic to UTC1972".

With that you can reconcile the offsets between the epochs of NTP, TAI, 
PTP, POSIX, UTC, and GPS in integral seconds.

-----------------------------------------------------------------------------------------
Origin      |  UTC1972    | Coincides   |          UTC |Leap|        TAI
Name        |  Seconds    | with        | |Secs|
             |  Offset     | Origin of   |                   ( Earth  )
             |             |             | (Correction)
             |             |             | |    |
-----------------------------------------------------------------------------------------
UTC1900     | -2272060800 | NTP         | 1900-01-01T00:00:00Z | 10 | 
1900-01-01 00:00:10
TAI1958     |  -441763210 | TAI         | 1957-12-31T23:59:50Z | 10 | 
1958-01-01 00:00:00
TAI1970     |   -63072010 | 1588/PTP    | 1969-12-31T23:59:50Z | 10 | 
1970-01-01 00:00:00
UTC1970     |   -63072000 | POSIX       | 1970-01-01T00:00:00Z | 10 | 
1970-01-01 00:00:10
TAI1972     |         -10 | UTC + 10s   | 1971-12-31T23:59:50Z | 10 | 
1972-01-01 00:00:00
UTC1972     |           0 | UTC         | 1972-01-01T00:00:00Z | 10 | 
1972-01-01 00:00:10
UTC1972_7_1 |   +15724800 | First Leap  | 1972-07-01T00:00:00Z | 11 | 
1972-07-01 00:00:11
UTC1980_1_6 |  +252892800 | GPS Epoch   | 1980-01-06T00:00:00Z | 19 | 
1980-01-06 00:00:19


On this timescale, for practical implementations, the PTP Epoch, 
1970-01-01T00:00:00 (TAI) aligns with 1969-12-31T23:59:50 (Gregorian 
proleptic to UTC1972), *not* 31 December 1969 23:59:51.999918 UTC.

-Brooks



>
> Similarly, the comments in the NIST leap second file say:
>
> #    The second column shows the number of seconds that
> #    must be added to UTC to compute TAI for any timestamp
> #    at or after that epoch.
>
> Even though the number of seconds between TAI and GPS timestamps is 
> constant, if you use all the scales TAI/GPS/UTC in an application you 
> have to do more different conversions than if you had only TAI and UTC.
>
> Just imagine a PTP grandmaster, controlled by a GPS receiver which 
> outputs raw GPS time.
>
> Tony, I'm sure you know all of the above, but I just wrote this to 
> make clear what I meant.
>
> Martin

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist6.pair.net/pipermail/leapsecs/attachments/20150305/c31f9770/attachment.html>


More information about the LEAPSECS mailing list