rfc9581-lastcall.txt   rfc9581.txt 
skipping to change at line 67 skipping to change at line 67
Table of Contents Table of Contents
1. Introduction 1. Introduction
1.1. Terminology 1.1. Terminology
2. Objectives 2. Objectives
3. Time Format 3. Time Format
3.1. Key 1 3.1. Key 1
3.2. Keys 4 and 5 3.2. Keys 4 and 5
3.3. Keys -3, -6, -9, -12, -15, and -18 3.3. Keys -3, -6, -9, -12, -15, and -18
3.4. Keys -1: Timescale 3.4. Keys -1, -13, and 13: Timescale
3.5. Clock Quality 3.5. Clock Quality
3.5.1. ClockClass (Key -2) 3.5.1. ClockClass (Key -2)
3.5.2. ClockAccuracy (Key -4) 3.5.2. ClockAccuracy (Key -4)
3.5.3. OffsetScaledLogVariance (Key -5) 3.5.3. OffsetScaledLogVariance (Key -5)
3.5.4. Uncertainty (Key -7) 3.5.4. Uncertainty (Key -7)
3.5.5. Guarantee (Key -8) 3.5.5. Guarantee (Key -8)
3.6. Keys -10, 10: Time Zone Hint 3.6. Keys -10, 10: Time Zone Hint
3.7. Keys -11, 11: IXDTF Suffix Information 3.7. Keys -11, 11: IXDTF Suffix Information
4. Duration Format 4. Duration Format
5. Period Format 5. Period Format
skipping to change at line 310 skipping to change at line 310
Note that these keys have been provided to facilitate representing Note that these keys have been provided to facilitate representing
pairs of the form second/decimal fraction of a second, as found for pairs of the form second/decimal fraction of a second, as found for
instance in C timespec (Section 7.27.1 of [C]). When ingesting a instance in C timespec (Section 7.27.1 of [C]). When ingesting a
timestamp with one of these keys into a type provided by the target timestamp with one of these keys into a type provided by the target
platform, care has to be taken to meet its invariants. For example, platform, care has to be taken to meet its invariants. For example,
for C timespec, the fractional part tv_nsec needs to be between 0 for C timespec, the fractional part tv_nsec needs to be between 0
inclusive and 10^9 exclusive, which can be achieved by also adjusting inclusive and 10^9 exclusive, which can be achieved by also adjusting
the base time appropriately. the base time appropriately.
3.4. Keys -1: Timescale 3.4. Keys -1, -13, and 13: Timescale
Key -1 is used to indicate a timescale. The value 0 indicates UTC, Keys -1, -13, and 13 are used to indicate a timescale, where key 13
with the POSIX epoch [TIME_T]; the value 1 indicates TAI, with the is critical. Keys -1 and -13 have identical semantics (they are both
Precision Time Protocol (PTP) epoch (1 January 1970 00:00:00 TAI, see assigned because key -1 was chosen first and then, when key 13 was
[IEEE1588-2019] or [IEEE1588-2008]). added, it appeared desirable to have a negative equivalent). Each
extended time data item MUST NOT contain more than one of these keys.
The value 0 indicates UTC, with the POSIX epoch [TIME_T]; the value 1
indicates TAI, with the Precision Time Protocol (PTP) epoch (1
January 1970 00:00:00 TAI, see [IEEE1588-2019] or [IEEE1588-2008]).
$$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE) $$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE)
$$ETIME-ELECTIVE //= (-13 => $ETIME-TIMESCALE)
$$ETIME-CRITICAL //= (13 => $ETIME-TIMESCALE)
$ETIME-TIMESCALE /= &(etime-utc: 0) $ETIME-TIMESCALE /= &(etime-utc: 0)
$ETIME-TIMESCALE /= &(etime-tai: 1) $ETIME-TIMESCALE /= &(etime-tai: 1)
If key -1 is not present, the default timescale value 0 is implied. If none of the keys are present, the default timescale value 0 is
implied.
Timescale values MUST be unsigned integers or text strings; text Timescale values MUST be unsigned integers or text strings; text
strings are provided for experimentation and MUST NOT be used between strings are provided for experimentation and MUST NOT be used between
parties that are not both part of the experiment. Additional parties that are not both part of the experiment. Additional
unsigned integer values can be registered in the "Timescales" unsigned integer values can be registered in the "Timescales"
registry (Section 7.2). (Note that there should be no timescales registry (Section 7.2). (Note that there should be no timescales
"GPS" or "NTP" [RFC5905] -- instead, the time should be converted to "GPS" or "NTP" [RFC5905] -- instead, the time should be converted to
TAI or UTC using a single addition or subtraction.) TAI or UTC using a single addition or subtraction.)
t = t - 2208988800 t = t - 2208988800
skipping to change at line 692 skipping to change at line 700
"Specification Required" (Section 4.6 of RFC 8126 [BCP26]). "Specification Required" (Section 4.6 of RFC 8126 [BCP26]).
The designated expert is requested to assign the key values with the The designated expert is requested to assign the key values with the
shortest encodings (1+0 and 1+1 encoding) to registrations that are shortest encodings (1+0 and 1+1 encoding) to registrations that are
likely to enjoy wide use and can benefit from short encodings. likely to enjoy wide use and can benefit from short encodings.
Each entry needs to provide a map key value (CBOR integer, int, Each entry needs to provide a map key value (CBOR integer, int,
-18446744073709551616..18446744073709551615), a brief description of -18446744073709551616..18446744073709551615), a brief description of
the semantics, and a specification reference. Note that negative the semantics, and a specification reference. Note that negative
integers indicate an elective key, while unsigned integers indicate a integers indicate an elective key, while unsigned integers indicate a
key that either provides a base time or is critical. For the key that either provides a base time or is critical. The designated
unsigned integers as keys, the choice of base time or critical needs expert is requested to discuss with the registrant whether or not it
to be indicated in the brief semantics description. (Elective map is desirable to register a pair of an elective and a critical key for
keys may be explicitly marked as such in the description, e.g., to the same information, where the elective key value is the negative of
distinguish them from critical keys.) the critical key (similar to how for example -11 and 11 have been
assigned in Table 4). For the unsigned integers as keys, the choice
of base time or critical needs to be indicated in the brief semantics
description. (Elective map keys may be explicitly marked as such in
the description, e.g., to distinguish them from critical keys.)
The initial contents are shown in Table 4. The initial contents are shown in Table 4.
+=======+=====================================+============+ +=======+=====================================+============+
| Value | Semantics | Reference | | Value | Semantics | Reference |
+=======+=====================================+============+ +=======+=====================================+============+
| -18 | attoseconds | [RFC9581] | | -18 | attoseconds | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -15 | femtoseconds | [RFC9581] | | -15 | femtoseconds | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -13 | timescale (elective) | [RFC9581] |
+-------+-------------------------------------+------------+
| -12 | picoseconds | [RFC9581] | | -12 | picoseconds | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -11 | IXDTF Suffix Information (elective) | [RFC9581], | | -11 | IXDTF Suffix Information (elective) | [RFC9581], |
| | | [RFC9557] | | | | [RFC9557] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -10 | IXDTF Time Zone Hint (elective) | [RFC9581], | | -10 | IXDTF Time Zone Hint (elective) | [RFC9581], |
| | | [RFC9557] | | | | [RFC9557] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -9 | nanoseconds | [RFC9581] | | -9 | nanoseconds | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
skipping to change at line 731 skipping to change at line 745
| -6 | microseconds | [RFC9581] | | -6 | microseconds | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -5 | Offset-Scaled Log Variance | [RFC9581] | | -5 | Offset-Scaled Log Variance | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -4 | Clock Accuracy | [RFC9581] | | -4 | Clock Accuracy | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -3 | milliseconds | [RFC9581] | | -3 | milliseconds | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -2 | Clock Class | [RFC9581] | | -2 | Clock Class | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| -1 | timescale (elective) legacy | [RFC9581] |
+-------+-------------------------------------+------------+
| 1 | base time value as in CBOR tag 1 | [RFC8949], | | 1 | base time value as in CBOR tag 1 | [RFC8949], |
| | | [RFC9581] | | | | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| 4 | base time value as in CBOR tag 4 | [RFC8949], | | 4 | base time value as in CBOR tag 4 | [RFC8949], |
| | | [RFC9581] | | | | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| 5 | base time value as in CBOR tag 5 | [RFC8949], | | 5 | base time value as in CBOR tag 5 | [RFC8949], |
| | | [RFC9581] | | | | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| 10 | IXDTF Time Zone Hint (critical) | [RFC9557], | | 10 | IXDTF Time Zone Hint (critical) | [RFC9557], |
| | | [RFC9581] | | | | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| 11 | IXDTF Suffix Information (critical) | [RFC9557], | | 11 | IXDTF Suffix Information (critical) | [RFC9557], |
| | | [RFC9581] | | | | [RFC9581] |
+-------+-------------------------------------+------------+ +-------+-------------------------------------+------------+
| 13 | timescale (critical) | [RFC9581] |
+-------+-------------------------------------+------------+
Table 4: Initial Content of Time Tag Map Keys Registry Table 4: Initial Content of Time Tag Map Keys Registry
8. Security Considerations 8. Security Considerations
The security considerations of [RFC8949] apply; the tags introduced The security considerations of [RFC8949] apply; the tags introduced
here are not expected to raise security considerations beyond those. here are not expected to raise security considerations beyond those.
Time, of course, has significant security considerations; these Time, of course, has significant security considerations; these
include the exploitation of ambiguities where time is security include the exploitation of ambiguities where time is security
skipping to change at line 921 skipping to change at line 939
$$ETIME-BASETIME //= (5: ~bigfloat) $$ETIME-BASETIME //= (5: ~bigfloat)
$$ETIME-ELECTIVE //= (-3: uint) $$ETIME-ELECTIVE //= (-3: uint)
$$ETIME-ELECTIVE //= (-6: uint) $$ETIME-ELECTIVE //= (-6: uint)
$$ETIME-ELECTIVE //= (-9: uint) $$ETIME-ELECTIVE //= (-9: uint)
$$ETIME-ELECTIVE //= (-12: uint) $$ETIME-ELECTIVE //= (-12: uint)
$$ETIME-ELECTIVE //= (-15: uint) $$ETIME-ELECTIVE //= (-15: uint)
$$ETIME-ELECTIVE //= (-18: uint) $$ETIME-ELECTIVE //= (-18: uint)
$$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE) $$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE)
$$ETIME-ELECTIVE //= (-13 => $ETIME-TIMESCALE)
$$ETIME-CRITICAL //= (13 => $ETIME-TIMESCALE)
$ETIME-TIMESCALE /= &(etime-utc: 0) $ETIME-TIMESCALE /= &(etime-utc: 0)
$ETIME-TIMESCALE /= &(etime-tai: 1) $ETIME-TIMESCALE /= &(etime-tai: 1)
ClockQuality-group = ( ClockQuality-group = (
? &(ClockClass: -2) => uint .size 1 ; PTP/RFC8575 ? &(ClockClass: -2) => uint .size 1 ; PTP/RFC8575
? &(ClockAccuracy: -4) => uint .size 1 ; PTP/RFC8575 ? &(ClockAccuracy: -4) => uint .size 1 ; PTP/RFC8575
? &(OffsetScaledLogVariance: -5) => uint .size 2 ; PTP/RFC8575 ? &(OffsetScaledLogVariance: -5) => uint .size 2 ; PTP/RFC8575
? &(Uncertainty: -7) => ~time/~duration ? &(Uncertainty: -7) => ~time/~duration
? &(Guarantee: -8) => ~time/~duration ? &(Guarantee: -8) => ~time/~duration
skipping to change at line 945 skipping to change at line 965
time-zone-info = tstr .abnf time-zone-info = tstr .abnf
("time-zone-name / time-numoffset" .det IXDTFtz) ("time-zone-name / time-numoffset" .det IXDTFtz)
IXDTFtz = ' IXDTFtz = '
time-hour = 2DIGIT ; 00-23 time-hour = 2DIGIT ; 00-23
time-minute = 2DIGIT ; 00-59 time-minute = 2DIGIT ; 00-59
time-numoffset = ("+" / "-") time-hour ":" time-minute time-numoffset = ("+" / "-") time-hour ":" time-minute
time-zone-initial = ALPHA / "." / "_" time-zone-initial = ALPHA / "." / "_"
time-zone-char = time-zone-initial / DIGIT / "-" / "+" time-zone-char = time-zone-initial / DIGIT / "-" / "+"
time-zone-part = time-zone-initial *13(time-zone-char) time-zone-part = time-zone-initial *time-zone-char
; but not "." or ".." ; but not "." or ".."
time-zone-name = time-zone-part *("/" time-zone-part) time-zone-name = time-zone-part *("/" time-zone-part)
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9 DIGIT = %x30-39 ; 0-9
' ; extracted from [RFC9557] and [RFC3339]; update as needed ' ; extracted from [RFC9557] and [RFC3339]
$$ETIME-ELECTIVE //= (-11: suffix-info-map) $$ETIME-ELECTIVE //= (-11: suffix-info-map)
$$ETIME-CRITICAL //= (11: suffix-info-map) $$ETIME-CRITICAL //= (11: suffix-info-map)
suffix-info-map = { * suffix-key => suffix-values } suffix-info-map = { * suffix-key => suffix-values }
suffix-key = tstr .abnf ("suffix-key" .det IXDTF) suffix-key = tstr .abnf ("suffix-key" .det IXDTF)
suffix-values = one-or-more<suffix-value> suffix-values = one-or-more<suffix-value>
one-or-more<T> = T / [ 2* T ] one-or-more<T> = T / [ 2* T ]
suffix-value = tstr .abnf ("suffix-value" .det IXDTF) suffix-value = tstr .abnf ("suffix-value" .det IXDTF)
IXDTF = ' IXDTF = '
key-initial = lcalpha / "_" key-initial = lcalpha / "_"
key-char = key-initial / DIGIT / "-" key-char = key-initial / DIGIT / "-"
suffix-key = key-initial *key-char suffix-key = key-initial *key-char
suffix-value = 1*alphanum suffix-value = 1*alphanum
alphanum = ALPHA / DIGIT alphanum = ALPHA / DIGIT
lcalpha = %x61-7A lcalpha = %x61-7A
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9 DIGIT = %x30-39 ; 0-9
' ; extracted from [RFC9557]; update as needed! ' ; extracted from [RFC9557]
Duration = #6.1002(etime-detailed) Duration = #6.1002(etime-detailed)
Period = #6.1003([ simple-Period = #6.1003([
start: ~Etime / null start: ~Etime / null
end: ~Etime / null end: ~Etime / null
? duration: ~Duration / null ? duration: ~Duration
]) ])
clumsy-Period = #6.1003([ Period = #6.1003([
(start: ~Etime, (start: ~Etime,
((end: ~Etime, ((end: ~Etime) //
? duration: null) //
(end: null, (end: null,
duration: ~Duration))) // duration: ~Duration))) //
(start: null, (start: null,
end: ~Etime, end: ~Etime,
duration: ~Duration) duration: ~Duration)
]) ])
etime = #6.1001({* (int/tstr) => any}) etime = #6.1001({* (int/tstr) => any})
duration = #6.1002({* (int/tstr) => any}) duration = #6.1002({* (int/tstr) => any})
period = #6.1003([~etime/null, ~etime/null, ~duration/null]) period = #6.1003([~etime/null, ~etime/null, ?~duration])
Figure 6: Collected CDDL Rules from This Specification Figure 6: Collected CDDL Rules from This Specification
Acknowledgements Acknowledgements
The authors would like to acknowledge the many comments from members The authors would like to acknowledge the many comments from members
of the CBOR WG, Francesca Palombini for her AD review, and Thomas of the CBOR WG, Francesca Palombini for her AD review, Thomas Fossati
Fossati and Qin Wu for their directorate reviews. and Qin Wu for their directorate reviews, and Rohan Mahy for one more
review late in the process.
Authors' Addresses Authors' Addresses
Carsten Bormann Carsten Bormann
Universität Bremen TZI Universität Bremen TZI
Postfach 330440 Postfach 330440
D-28359 Bremen D-28359 Bremen
Germany Germany
Phone: +49-421-218-63921 Phone: +49-421-218-63921
Email: cabo@tzi.org Email: cabo@tzi.org
 End of changes. 19 change blocks. 
23 lines changed or deleted 43 lines changed or added

This html diff was produced by rfcdiff 1.48.