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. |