rfc9581.original.xml   rfc9581.xml 
<?xml version='1.0' encoding='utf-8'?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [ <!DOCTYPE rfc [
<!ENTITY nbsp "&#160;"> <!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;"> <!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;"> <!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;"> <!ENTITY wj "&#8288;">
]> ]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.2 (Ruby 3.2.2 ) --> <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.2 (Ruby 3.2.2 ) -->
<?rfc compact="yes"?>
<?rfc comments="yes"?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category="
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" consensus="true" std" consensus="true" docName="draft-ietf-cbor-time-tag-12" number="9581" ipr="t
docName="draft-ietf-cbor-time-tag-12" ipr="trust200902" sortRefs="true" submissi rust200902" sortRefs="true" symRefs="true" tocInclude="true" updates="" obsolete
onType="IETF" symRefs="true" tocInclude="true" version="3"> s="" xml:lang="en" version="3">
<!-- xml2rfc v2v3 conversion 3.18.1 --> <!-- xml2rfc v2v3 conversion 3.18.1 -->
<front> <front>
<title abbrev="CBOR tag for extended time">Concise Binary Object Representat <title abbrev="CBOR Tag for Extended Time">Concise Binary Object Representat
ion (CBOR) Tags for Time, Duration, and Period</title> ion (CBOR) Tags for Time, Duration, and Period</title>
<seriesInfo name="Internet-Draft" value="draft-ietf-cbor-time-tag-12"/> <seriesInfo name="RFC" value="9581"/>
<author fullname="Carsten Bormann" initials="C." surname="Bormann"> <author fullname="Carsten Bormann" initials="C." surname="Bormann">
<organization>Universität Bremen TZI</organization> <organization>Universität Bremen TZI</organization>
<address> <address>
<postal> <postal>
<street>Postfach 330440</street> <street>Postfach 330440</street>
<city>Bremen</city> <city>Bremen</city>
<code>D-28359</code> <code>D-28359</code>
<country>Germany</country> <country>Germany</country>
</postal> </postal>
<phone>+49-421-218-63921</phone> <phone>+49-421-218-63921</phone>
skipping to change at line 38 skipping to change at line 38
</address> </address>
</author> </author>
<author fullname="Ben Gamari" initials="B." surname="Gamari"> <author fullname="Ben Gamari" initials="B." surname="Gamari">
<organization>Well-Typed</organization> <organization>Well-Typed</organization>
<address> <address>
<postal> <postal>
<street>117 Middle Rd.</street> <street>117 Middle Rd.</street>
<city>Portsmouth</city> <city>Portsmouth</city>
<region>NH</region> <region>NH</region>
<code>03801</code> <code>03801</code>
<country>United States</country> <country>United States of America</country>
</postal> </postal>
<email>ben@well-typed.com</email> <email>ben@well-typed.com</email>
</address> </address>
</author> </author>
<author fullname="Henk Birkholz" initials="H." surname="Birkholz"> <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
<organization abbrev="Fraunhofer SIT">Fraunhofer Institute for Secure Info rmation Technology</organization> <organization abbrev="Fraunhofer SIT">Fraunhofer Institute for Secure Info rmation Technology</organization>
<address> <address>
<postal> <postal>
<street>Rheinstrasse 75</street> <street>Rheinstrasse 75</street>
<city>Darmstadt</city> <city>Darmstadt</city>
<code>64295</code> <code>64295</code>
<country>Germany</country> <country>Germany</country>
</postal> </postal>
<email>henk.birkholz@sit.fraunhofer.de</email> <email>henk.birkholz@ietf.contact</email>
</address> </address>
</author> </author>
<date year="2023"/> <date year="2024" month="August"/>
<keyword>Internet-Draft</keyword> <area>art</area>
<workgroup>cbor</workgroup>
<keyword>Point in time</keyword>
<keyword>Duration</keyword>
<keyword>Period in time</keyword>
<keyword>Clock accuracy</keyword>
<keyword>Timescale</keyword>
<keyword>TAI</keyword>
<keyword>UTC</keyword>
<keyword>NTP</keyword>
<keyword>Network Time Protocol</keyword>
<keyword>PTP</keyword>
<keyword>Precision Time Protocol</keyword>
<abstract> <abstract>
<?line 167?> <?line 167?>
<t>The Concise Binary Object Representation (CBOR, RFC 8949) is a data <t>The Concise Binary Object Representation (CBOR, RFC 8949) is a data
format whose design goals include the possibility of extremely small format whose design goals include the possibility of extremely small
code size, fairly small message size, and extensibility without the code size, fairly small message size, and extensibility without the
need for version negotiation.</t> need for version negotiation.</t>
<t>In CBOR, one point of extensibility is the definition of CBOR tags. <t>In CBOR, one point of extensibility is the definition of CBOR tags.
RFC 8949 defines two tags for time: CBOR tag 0 (RFC3339 time as a string) and ta g RFC 8949 defines two tags for time: CBOR tag 0 (RFC 3339 time as a string) and t ag
1 (POSIX time as int or float). Since then, additional requirements have 1 (POSIX time as int or float). Since then, additional requirements have
become known. The present document defines a CBOR tag for time that become known. The present document defines a CBOR tag for time that
allows a more elaborate representation of time, as well as related allows a more elaborate representation of time, as well as related
CBOR tags for duration and time period. This document is CBOR tags for duration and time period. This document is
intended as the reference document for the IANA registration of the intended as the reference document for the IANA registration of the
CBOR tags defined.</t> CBOR tags defined.</t>
<t><cref anchor="status">(This cref will be removed by the RFC editor:)<br
/>
The present revision (–12) addresses the IESG reviews.</cref></t>
</abstract> </abstract>
<note removeInRFC="true">
<name>About This Document</name>
<t>
Status information for this document may be found at <eref target="https
://datatracker.ietf.org/doc/draft-ietf-cbor-time-tag/"/>.
</t>
<t>
Discussion of this document takes place on the
CBOR Working Group mailing list (<eref target="mailto:cbor@ietf.org"/>),
which is archived at <eref target="https://mailarchive.ietf.org/arch/bro
wse/cbor/"/>.
Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/cbor/"/
>.
</t>
<t>Source for this draft and an issue tracker can be found at
<eref target="https://github.com/cbor-wg/time-tag"/>.</t>
</note>
</front> </front>
<middle> <middle>
<?line 191?> <?line 191?>
<section anchor="intro"> <section anchor="intro">
<name>Introduction</name> <name>Introduction</name>
<t>The Concise Binary Object Representation (CBOR, <xref target="RFC8949"/ >) provides <t>The Concise Binary Object Representation (CBOR) <xref target="RFC8949"/ > provides
for the interchange of structured data without a requirement for a for the interchange of structured data without a requirement for a
pre-agreed schema. pre-agreed schema.
RFC 8949 defines a basic set of data types, as well as a tagging RFC 8949 defines a basic set of data types, as well as a tagging
mechanism that enables extending the set of data types supported via mechanism that enables extending the set of data types supported via
an IANA registry for CBOR tags (<xref section="9.2" sectionFormat="of" target="R an IANA registry for CBOR tags (see <xref target="IANA.cbor-tags"/> and <xref se
FC8949"/>, <xref target="IANA.cbor-tags"/>).</t> ction="9.2" sectionFormat="of" target="RFC8949"/>).</t>
<t>RFC 8949 defines two tags for time: CBOR tag 0 (RFC3339 time as a strin <t>RFC 8949 defines two tags for time: CBOR tag 0 (<xref target="RFC3339"/
g) and tag > time as a string) and tag
1 (POSIX time as int or float). Since then, additional requirements have 1 (POSIX time as int or float). Since then, additional requirements have
become known. The present document defines a CBOR tag for time that become known. The present document defines a CBOR tag for time that
allows a more elaborate representation of time, as well as related allows a more elaborate representation of time, as well as related
CBOR tags for duration and time period. This document is CBOR tags for durations and time periods. This document is
intended as the reference document for the IANA registration of the intended as the reference document for the IANA registration of the
CBOR tags defined.</t> CBOR tags defined.</t>
<section anchor="terms"> <section anchor="terms">
<name>Terminology</name> <name>Terminology</name>
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp <t>
14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECO "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>
MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", ",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
nterpreted as "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to
only when, they be
appear in all capitals, as shown here.</t> interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/> <xref
target="RFC8174"/> when, and only when, they appear in all capitals, as
shown here.
</t>
<?line -18?> <?line -18?>
<t>The term "byte" is used in its now customary sense as a synonym for <t>The term "byte" is used in its now customary sense as a synonym for
"octet".</t> "octet".</t>
<t>Superscript notation denotes exponentiation. For example, 2 to the <t>Superscript notation denotes exponentiation. For example, 2 to the
power of 64 is notated: 2<sup>64</sup>. In the plain-text rendition power of 64 is notated: 2<sup>64</sup>. In the plain-text rendition
of this specification, superscript notation is not available and of this specification, superscript notation is not available and
exponentiation therefore is rendered by the surrogate notation seen exponentiation is therefore rendered by the surrogate notation seen
here in the plain-text rendition.</t> here in the plain-text rendition.</t>
<t>CBOR diagnostic notation is defined in <xref section="8" sectionForma t="of" target="RFC8949"/> and <t>CBOR diagnostic notation is defined in <xref section="8" sectionForma t="of" target="RFC8949"/> and
<xref section="G" sectionFormat="of" target="RFC8610"/>. <xref section="G" sectionFormat="of" target="RFC8610"/>.
A machine-processable model of the data structures defined in this A machine-processable model of the data structures defined in this
specification is provided throughout the text using the Concise Data specification is provided throughout the text using the Concise Data
Definition Language, CDDL <xref target="RFC8610"/>; <xref target="collected-cddl "/> provides the Definition Language (CDDL) <xref target="RFC8610"/>; <xref target="collected-cdd l"/> provides the
collected model information.</t> collected model information.</t>
<t>Several time-related terms such as UTC and TAI are discussed in <t>Several time-related terms, such as UTC and International Atomic Time
<xref target="IXDTF"/>, which may be a useful companion document beyond its dire (TAI), are discussed in
ct <xref target="RFC9557"/>, which may be a useful companion document beyond its di
rect
use in Sections <xref format="counter" target="tzh"/> and <xref format="counter" target="suff"/>.</t> use in Sections <xref format="counter" target="tzh"/> and <xref format="counter" target="suff"/>.</t>
</section> </section>
</section> </section>
<section anchor="objectives"> <section anchor="objectives">
<name>Objectives</name> <name>Objectives</name>
<t>For the time tag, <t>For the time tag,
the present specification addresses the following objectives that go the present specification addresses the following objectives that go
beyond the original tags 0 and 1 (defined in Sections <xref section="3.4.1" sect ionFormat="bare" target="RFC8949"/> and <xref section="3.4.2" sectionFormat="bar e" target="RFC8949"/> of <xref target="RFC8949"/>):</t> beyond the original tags 0 and 1 (defined in Sections <xref section="3.4.1" sect ionFormat="bare" target="RFC8949"/> and <xref section="3.4.2" sectionFormat="bar e" target="RFC8949"/> of <xref target="RFC8949"/>):</t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>Additional resolution for epoch-based time (as in tag 1). CBOR tag <t>Additional resolution for epoch-based time (as in tag 1). CBOR tag
1 only provides for integer and up to binary64 floating point 1 only provides for representation of time as an integer and as up to a binary64
representation of times, limiting resolution to approximately floating-point value <xref target="IEEE754"/>, which limits the resolution to a
microseconds at the time of writing (and progressively becoming pproximately
microseconds at the time of writing (progressively becoming
worse over time).</t> worse over time).</t>
</li> </li>
<li> <li>
<t>Indication of timescale. Tags 0 and 1 are defined for UTC; however , some <t>Indication of timescale. Tags 0 and 1 are defined for UTC; however , some
interchanges are better performed on TAI. Other timescales may be interchanges are better performed on TAI. Other timescales may be
registered once they become relevant (e.g., one of the proposed registered once they become relevant (e.g., one of the proposed
successors to UTC that might no longer use leap seconds, or a successors to UTC that might no longer use leap seconds or a
scale based on smeared leap seconds).</t> scale based on smeared leap seconds).</t>
</li> </li>
</ul> </ul>
<t>By incorporating a way to transport <xref target="IXDTF"/> suffix infor
mation (<xref target="tzh"/>, <t>By incorporating a way to transport <xref target="RFC9557"/> suffix inf
<xref target="suff"/>), additional indications can be provided of intents about ormation (see Sections <xref target="tzh" format="counter"/> and
the <xref target="suff" format="counter"/>), additional indications of intents about
interpretation of the time given, in particular also for instances of the
interpretation of the time given can be provided; in particular, for instances o
f
time that, at the time they are being described, are in the future. time that, at the time they are being described, are in the future.
Intents might include information about time zones, daylight savings Intents might include information about time zones, daylight saving
times, preferred calendar representations, etc.</t> times, preferred calendar representations, etc.</t>
<t>Semantics not covered by this document can be added by registering <t>Semantics not covered by this document can be added by registering
additional map keys for the map that is the content of the tag (see additional map keys for the map that is the content of the tag (see
<tt>etime-detailed</tt> in <xref target="tag-1001"/>), <tt>etime-detailed</tt> in <xref target="tag-1001"/>),
the specification for the specification for
which is referenced by the registry entry (see <xref target="time-format"/>).</t > which is referenced by the registry entry (see <xref target="time-format"/>).</t >
<t>For example, map keys could be registered for direct representations <t>For example, map keys could be registered for direct representations
of natural platform time formats. Some platforms use epoch-based of natural platform time formats. Some platforms use epoch-based
time formats that require some computation to convert them into the time formats that require some computation to convert them into the
representations allowed by tag 1; these computations can also lose representations allowed by tag 1; these computations can also lose
precision and cause ambiguities. (The present specification does precision and cause ambiguities. (The present specification does
not take a position on whether tag 1 can be "fixed" to include, not take a position on whether tag 1 can be "fixed" to include,
e.g., Decimal or BigFloat representations. It does define how to e.g., Decimal or Bigfloat representations. It does define how to
use these representations with the extended time format.)</t> use these representations with the extended time format.)</t>
<t>Additional tags are defined for durations and periods.</t> <t>Additional tags are defined for durations and periods.</t>
</section> </section>
<section anchor="time-format"> <section anchor="time-format">
<name>Time Format</name> <name>Time Format</name>
<t>An extended time is indicated by CBOR tag 1001, the content of which is a map data <t>An extended time is indicated by CBOR tag 1001, the content of which is a map data
item (CBOR major type 5). The map may contain integer (major types 0 item (CBOR major type 5). The map may contain integer (major types 0
and 1) or text string (major type 3) keys, with the value type and 1) or text string (major type 3) keys, with the value type
determined by each specific key. determined by each specific key.
For negative integer keys and text string values of the key, For negative integer keys and text string values of the key,
implementations <bcp14>MUST</bcp14> ignore key/value pairs they do not understan d; implementations <bcp14>MUST</bcp14> ignore key/value pairs they do not understan d;
these keys are "elective", as the extended time as a whole is still these keys are "elective", as the extended time as a whole is still
usable without the information they carry if an implementation elects not to imp usable without the information they carry if an implementation elects not to imp
lement them. lement them. Conversely, implementations <bcp14>MUST</bcp14> signal an error
Conversely, for unsigned integer keys, implementations <bcp14>MUST</bcp14> signa when encountering key/value pairs that use unsigned integer keys they do not und
l as erstand or implement (these
an error key/value pairs they do not understand or implement are either "base time" or "critical", see below).</t>
(these are either "base time" or "critical", see below).</t>
<t>The map <bcp14>MUST</bcp14> contain exactly one unsigned integer key th at specifies <t>The map <bcp14>MUST</bcp14> contain exactly one unsigned integer key th at specifies
the "base time", and <bcp14>MAY</bcp14> also contain one or more negative intege r or the "base time" and <bcp14>MAY</bcp14> also contain one or more negative integer or
text-string keys, which may encode supplementary information.</t> text-string keys, which may encode supplementary information.</t>
<t>Supplementary information <bcp14>MAY</bcp14> also be provided by additi onal unsigned <t>Supplementary information <bcp14>MAY</bcp14> also be provided by additi onal unsigned
integer keys that are explicitly defined to provide supplementary integer keys that are explicitly defined to provide supplementary
information (we say these keys are defined to be "critical"); as these information (we say these keys are defined to be "critical"); as these
are required to be understood, there can be no confusion with base are required to be understood, there can be no confusion with base
time keys.</t> time keys.</t>
<t>Negative integer and text string keys always supply supplementary <t>Negative integer and text string keys always supply supplementary
information (they are "elective", and this will not be explicitly stated information (they are "elective", and this will not be explicitly stated
below).</t> below).</t>
<t>Supplementary information may include:</t> <t>Supplementary information may include:</t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>a higher precision time offset to be added to the base time,</t> <t>a higher precision time offset to be added to the base time,</t>
</li> </li>
<li> <li>
<t>a reference timescale and epoch different from the default UTC and 1970-01-01</t> <t>a reference timescale and epoch different from the default UTC and 1970-01-01, and</t>
</li> </li>
<li> <li>
<t>information about clock quality parameters, such as source, <t>information about clock quality parameters, such as source,
accuracy, and uncertainty</t> accuracy, and uncertainty.</t>
</li> </li>
</ul> </ul>
<t>Additional keys can be defined by registering them in the Map Key <t>Additional keys can be defined by registering them in the "Time Tag Map
Registry (<xref target="map-key-registry"/>). Keys"
Registered keys may, for instance, add intent information such as timezone and d registry (<xref target="map-key-registry"/>).
aylight savings time, Registered keys may, for instance, add intent information such as time zone, day
and/or possibly positioning coordinates, to express information that would indic light saving time,
ate a local time.</t> and/or possibly positioning coordinates to express information that would indica
te a local time.</t>
<t>This document does not define supplementary text keys. <t>This document does not define supplementary text keys.
A number of both unsigned and negative-integer keys are defined in A number of both unsigned and negative-integer keys are defined in
the following subsections.</t> the following subsections.</t>
<t><xref target="tag-1001"/> provides a formal definition of Tag 1001 in C DDL.</t> <t><xref target="tag-1001"/> provides a formal definition of tag 1001 in C DDL.</t>
<figure anchor="tag-1001"> <figure anchor="tag-1001">
<name>CDDL definition of Tag 1001</name> <name>CDDL Definition of Tag 1001</name>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
Etime = #6.1001(etime-detailed) Etime = #6.1001(etime-detailed)
etime-framework = { etime-framework = {
uint => any ; at least one base time uint => any ; at least one base time
* (nint/text) => any ; elective supplementary information * (nint/text) => any ; elective supplementary information
* uint => any ; critical supplementary information * uint => any ; critical supplementary information
} }
etime-detailed = ({ etime-detailed = ({
skipping to change at line 267 skipping to change at line 268
defined for CBOR tag 4 or 5, respectively. defined for CBOR tag 4 or 5, respectively.
This can be used to include a Decimal or Bigfloat epoch-based float This can be used to include a Decimal or Bigfloat epoch-based float
<xref target="TIME_T"/> in an extended time, e.g., to achieve higher resolution or to <xref target="TIME_T"/> in an extended time, e.g., to achieve higher resolution or to
avoid rounding errors.</t> avoid rounding errors.</t>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
$$ETIME-BASETIME //= (4: ~decfrac) $$ETIME-BASETIME //= (4: ~decfrac)
$$ETIME-BASETIME //= (5: ~bigfloat) $$ETIME-BASETIME //= (5: ~bigfloat)
]]></sourcecode> ]]></sourcecode>
</section> </section>
<section anchor="keys-3-6-9-12-15-18"> <section anchor="keys-3-6-9-12-15-18">
<name>Keys -3, -6, -9, -12, -15, -18</name> <name>Keys -3, -6, -9, -12, -15, and -18</name>
<t>The keys -3, -6, -9, -12, -15 and -18 indicate additional decimal fra <t>The keys -3, -6, -9, -12, -15, and -18 indicate additional decimal fr
ctions by actions by
giving an unsigned integer (major type 0) and scaling this with the giving an unsigned integer (major type 0) and scaling this with the
scale factor 1e-3, 1e-6, 1e-9, 1e-12, 1e-15, and 1e-18, respectively scale factor 1e-3, 1e-6, 1e-9, 1e-12, 1e-15, and 1e-18, respectively
(see <xref target="decfract"/>). (see <xref target="decfract"/>).
Each extended time data item <bcp14>MUST NOT</bcp14> contain more than one Each extended time data item <bcp14>MUST NOT</bcp14> contain more than one
of these keys. of these keys.
These additional fractions are added to a base time in seconds <xref target="SI- SECOND"/> These additional fractions are added to a base time in seconds <xref target="SI- SECOND"/>
indicated by a Key 1, which then <bcp14>MUST</bcp14> also be present and <bcp14> MUST</bcp14> have an indicated by key 1, which then <bcp14>MUST</bcp14> also be present and <bcp14>MU ST</bcp14> have an
integer value.</t> integer value.</t>
<table anchor="decfract"> <table anchor="decfract">
<name>Key for decimally scaled Fractions</name> <name>Keys for Decimally Scaled Fractions</name>
<thead> <thead>
<tr> <tr>
<th align="left">Key</th> <th align="left">Key</th>
<th align="left">meaning</th> <th align="left">Meaning</th>
<th align="left">example usage</th> <th align="left">Example Usage</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td align="left">-3</td> <td align="left">-3</td>
<td align="left">milliseconds</td> <td align="left">milliseconds</td>
<td align="left">Java time</td> <td align="left">Java time</td>
</tr> </tr>
<tr> <tr>
<td align="left">-6</td> <td align="left">-6</td>
skipping to change at line 332 skipping to change at line 333
$$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)
]]></sourcecode> ]]></sourcecode>
<t>Note that these keys have been provided to facilitate representing <t>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 <tt>timespec</tt> (Section 7.27.1 of <xref target="C"/>). instance in C <tt>timespec</tt> (Section 7.27.1 of <xref target="C"/>).
When ingesting a timestamp with one of these keys into a type provided When ingesting a timestamp with one of these keys into a type provided
by the target platform, care has to be taken to meet its invariants. by the target platform, care has to be taken to meet its invariants.
E.g., for C <tt>timespec</tt>, the fractional part <tt>tv_nsec</tt> needs to be For example, for C <tt>timespec</tt>, the fractional part <tt>tv_nsec</tt> needs to be
between 0 inclusive and 10<sup>9</sup> exclusive, which can be between 0 inclusive and 10<sup>9</sup> exclusive, which can be
achieved by also adjusting the base time appropriately.</t> achieved by also adjusting the base time appropriately.</t>
</section> </section>
<section anchor="key-timescale"> <section anchor="key-timescale">
<name>Key -1: Timescale</name> <name>Keys -1, -13, and 13: Timescale</name>
<t>Key -1 is used to indicate a timescale. The value 0 indicates UTC, <t>Keys -1, -13, and 13 are used to indicate a timescale, where key 13 i
s critical. Keys -1 and -13 have identical semantics (both are assigned because
key -1 was chosen first and then, when key 13 was added, it appeared desirable
to have a
negative equivalent).
Each extended time data item <bcp14>MUST NOT</bcp14>
contain more than one of these keys.</t>
<t>The value 0 indicates UTC,
with the POSIX epoch <xref target="TIME_T"/>; the value 1 indicates TAI, with th e with the POSIX epoch <xref target="TIME_T"/>; the value 1 indicates TAI, with th e
PTP (Precision Time Protocol) epoch (1 January 1970 00:00:00 TAI, see Precision Time Protocol (PTP) epoch (1 January 1970 00:00:00 TAI, see
<xref target="IEEE1588-2019"/> or <xref target="IEEE1588-2008"/>).</t> <xref target="IEEE1588-2019"/> or <xref target="IEEE1588-2008"/>).</t>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
$$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)
]]></sourcecode> ]]></sourcecode>
<t>If key -1 is not present, the default timescale value 0 is implied.</ t> <t>If none of the keys are present, the default timescale value 0 is imp lied.</t>
<t>Timescale values <bcp14>MUST</bcp14> be unsigned integers or text str ings; text strings are <t>Timescale values <bcp14>MUST</bcp14> be unsigned integers or text str ings; text strings are
provided for experimentation and <bcp14>MUST NOT</bcp14> be used between parties provided for experimentation and <bcp14>MUST NOT</bcp14> be used between parties
which are not both part of the experiment. that are not both part of the experiment.
Additional unsigned integer values can be registered in the Timescale Registry Additional unsigned integer values can be registered in the "Timescales" registr
y
(<xref target="timescale-registry"/>). (<xref target="timescale-registry"/>).
(Note that there should be no timescales "GPS" or "NTP" <xref target="RFC5905"/> instead, (Note that there should be no timescales "GPS" or "NTP" <xref target="RFC5905"/> -- instead,
the time should be converted to TAI or UTC using a single addition or subtractio n.)</t> the time should be converted to TAI or UTC using a single addition or subtractio n.)</t>
<figure anchor="offset"> <figure anchor="offset">
<name>Converting Common Offset Timescales</name> <name>Converting Common Offset Timescales</name>
<artset> <artset>
<artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="6.009ex" role="img" viewBox="0 -791.3 43055.4 2587.3" width="100ex"> <artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" height="6.009ex" role="img" viewBox="0 -791.3 43055.4 2587.3" width="100ex">
<defs> <defs>
<path d="M283 438l-10 -38h-70l-78 -320c-1 -3 -2 -8 -2 -11c0 -6 3 -12 16 -12c0 0 23 2 60 52l13 -11c-24 -31 -74 -107 -133 -107c-31 0 -39 25 -39 52c0 13 2 26 5 37l81 320h-77l5 29c75 14 136 51 177 138h13l-31 -129h70Z" id="E1-S TIXWEBNORMALI-1D461-gensym001" stroke-width="1"/> <path d="M283 438l-10 -38h-70l-78 -320c-1 -3 -2 -8 -2 -11c0 -6 3 -12 16 -12c0 0 23 2 60 52l13 -11c-24 -31 -74 -107 -133 -107c-31 0 -39 25 -39 52c0 13 2 26 5 37l81 320h-77l5 29c75 14 136 51 177 138h13l-31 -129h70Z" id="E1-S TIXWEBNORMALI-1D461-gensym001" stroke-width="1"/>
<path d="M444 428l-89 -348c-1 -4 -1 -6 -1 -9c0 -8 4 -14 14 -14 c21 0 40 26 57 46l5 6l13 -11c-23 -33 -74 -107 -132 -107c-29 0 -40 19 -40 52c0 9 1 25 4 37l26 95h-1c-7 -5 -97 -126 -137 -156c-23 -17 -49 -28 -72 -28c-47 0 -61 36 -61 74c0 21 3 40 8 59l59 231 c4 15 6 21 6 25c0 12 -11 23 -33 23c-7 0 -19 -1 -26 -3l-3 15l157 26l-84 -326c-2 -9 -3 -16 -3 -24c0 -21 8 -34 26 -34c25 0 65 31 100 77c43 57 89 146 109 219l21 75h77Z" id="E1-STIXWEBNORMALI-1D462-gensym001" stroke -width="1"/> <path d="M444 428l-89 -348c-1 -4 -1 -6 -1 -9c0 -8 4 -14 14 -14 c21 0 40 26 57 46l5 6l13 -11c-23 -33 -74 -107 -132 -107c-29 0 -40 19 -40 52c0 9 1 25 4 37l26 95h-1c-7 -5 -97 -126 -137 -156c-23 -17 -49 -28 -72 -28c-47 0 -61 36 -61 74c0 21 3 40 8 59l59 231 c4 15 6 21 6 25c0 12 -11 23 -33 23c-7 0 -19 -1 -26 -3l-3 15l157 26l-84 -326c-2 -9 -3 -16 -3 -24c0 -21 8 -34 26 -34c25 0 65 31 100 77c43 57 89 146 109 219l21 75h77Z" id="E1-STIXWEBNORMALI-1D462-gensym001" stroke -width="1"/>
<path d="M363 111l12 -13c-51 -60 -113 -109 -198 -109c-97 0 -13 7 78 -137 155c0 140 121 297 263 297c50 0 97 -27 97 -76c0 -38 -16 -70 -54 -70c-26 0 -38 21 -38 38c0 24 29 36 29 58c0 12 -10 21 -34 21c-119 0 -176 -179 -176 -259c 0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450-gensym00 1" stroke-width="1"/> <path d="M363 111l12 -13c-51 -60 -113 -109 -198 -109c-97 0 -13 7 78 -137 155c0 140 121 297 263 297c50 0 97 -27 97 -76c0 -38 -16 -70 -54 -70c-26 0 -38 21 -38 38c0 24 29 36 29 58c0 12 -10 21 -34 21c-119 0 -176 -179 -176 -259c 0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450-gensym00 1" stroke-width="1"/>
<path d="M637 320h-589v66h589v-66zM637 120h-589v66h589v-66Z" i d="E1-STIXWEBMAIN-3D-gensym001" stroke-width="1"/> <path d="M637 320h-589v66h589v-66zM637 120h-589v66h589v-66Z" i d="E1-STIXWEBMAIN-3D-gensym001" stroke-width="1"/>
skipping to change at line 461 skipping to change at line 469
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
<aside> <aside>
<t>Editor's note: <t>Editor's note:
This initial set of timescales was deliberately chosen to be frugal, as This initial set of timescales was deliberately chosen to be frugal, as
the specification of the tag provides an extension point where the specification of the tag provides an extension point where
additional timescales can be registered at any time. additional timescales can be registered at any time.
Registrations are clearly needed for earth-referenced timescales (such Registrations are clearly needed for earth-referenced timescales (such
as UT1 and TT), as well as possibly for specific realizations of as UT1 and TT), as well as possibly for specific realizations of
abstract time scales (such as TAI(USNO) which is more accurate as a abstract timescales (such as TAI(USNO), the specific realization obtained at the United States Naval Observatory, which is more accurate as a
constant offset basis for GPS times). constant offset basis for GPS times).
While the registration process itself is trivial, these registrations While the registration process itself is trivial, these registrations
need to be made based on a solid specification of their actual need to be made based on a solid specification of their actual
definition.</t> definition.</t>
</aside> </aside>
</section> </section>
<section anchor="clock-quality"> <section anchor="clock-quality">
<name>Clock Quality</name> <name>Clock Quality</name>
<t>A number of keys are defined to indicate the quality of clock that wa s <t>A number of keys are defined to indicate the quality of the clock tha t was
used to determine the point in time.</t> used to determine the point in time.</t>
<t>The first three are analogous to <tt>clock-quality-grouping</tt> in <t>The first three are analogous to <tt>clock-quality-grouping</tt> in
<xref target="RFC8575"/>, which is in turn based on the definitions in <xref target="RFC8575"/>, which is in turn based on the definitions in
<xref target="IEEE1588-2008"/>; the last two are specific to this document.</t> <xref target="IEEE1588-2008"/>; the last two are specific to this document.</t>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
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
) )
]]></sourcecode> ]]></sourcecode>
<section anchor="clockclass-key-2"> <section anchor="clockclass-key-2">
<name>ClockClass (Key -2)</name> <name>ClockClass (Key -2)</name>
<t>Key -2 (ClockClass) can be used to indicate the clock class as per <t>Key -2 (ClockClass) can be used to indicate the clock class as per
<xref target="RFC8575"/> (which is based on Table 5 in Section 7.6.2.4 of <xref target="RFC8575"/> (which is based on Table 5 in Section 7.6.2.4 of <xref
<xref target="IEEE1588-2008"/>; Table 4 in Section 7.6.2.5 of <xref target="IEEE target="IEEE1588-2008"/>; Table 4 in Section 7.6.2.5 of <xref target="IEEE1588-2
1588-2019"/> has updated language). 019"/> has updated language).
It is defined as a one-byte unsigned integer as that is the range It is defined as a one-byte unsigned integer as that is the range
defined in IEEE 1588.</t> defined in IEEE 1588.</t>
</section> </section>
<section anchor="clockaccuracy-key-4"> <section anchor="clockaccuracy-key-4">
<name>ClockAccuracy (Key -4)</name> <name>ClockAccuracy (Key -4)</name>
<t>Key -4 (ClockAccuracy) can be used to indicate the clock accuracy a s <t>Key -4 (ClockAccuracy) can be used to indicate the clock accuracy a s
per <xref target="RFC8575"/> (which is based on Table 6 in Section 7.6.2.5 of per <xref target="RFC8575"/> (which is based on Table 6 in Section 7.6.2.5 of <x
<xref target="IEEE1588-2008"/>; additional values have been defined in Table 5 i ref target="IEEE1588-2008"/>; additional values have been defined in Table 5 in
n
Section 7.6.2.6 of <xref target="IEEE1588-2019"/>). Section 7.6.2.6 of <xref target="IEEE1588-2019"/>).
It is defined as a one-byte unsigned integer as that is the range defined there. It is defined as a one-byte unsigned integer as that is the range defined there.
The range between 23 and 47 is a slightly distorted logarithmic scale The range between 23 and 47 is a slightly distorted logarithmic scale
from 1 ps to 1 s in <xref target="IEEE1588-2019"/> (in <xref target="IEEE1588-20 from 1 ps to 1 s in <xref target="IEEE1588-2019"/> (in <xref target="IEEE1588-20
08"/> the range was 08"/>, the range was
a subset of that, 32 to 47 for 25 ns to 1 s) — see a subset of that, 32 to 47 for 25 ns to 1 s) -- see
<xref target="formula-accuracy-enum"/>; the number 254 is the <xref target="formula-accuracy-enum"/>; the number 254 is the
value to be used if an unknown accuracy needs to be expressed.</t> value to be used if an unknown accuracy needs to be expressed.</t>
<!-- Note that the double space after the \approx is actually needed -
->
<!-- by utftex -->
<figure anchor="formula-accuracy-enum"> <figure anchor="formula-accuracy-enum">
<name>Approximate conversion from accuracy to accuracy enumeration v alue</name> <name>Approximate Conversion from Accuracy to Accuracy Enumeration V alue</name>
<artset> <artset>
<artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink " xmlns="http://www.w3.org/2000/svg" height="4.676ex" role="img" viewBox="0 -122 1.9 14098.6 2013.3" width="32.745ex"> <artwork type="svg"><svg xmlns:xlink="http://www.w3.org/1999/xlink " xmlns="http://www.w3.org/2000/svg" height="4.676ex" role="img" viewBox="0 -122 1.9 14098.6 2013.3" width="32.745ex">
<defs> <defs>
<path d="M363 112l14 -13c-70 -86 -138 -110 -200 -110c-98 0 - 137 84 -137 156c0 23 1 37 6 60c25 111 135 236 262 236c42 0 102 -14 102 -76c0 -12 7 -167 -176 -286 -182v-28c0 -64 52 -107 113 -107c42 0 90 18 126 64zM124 211h9c10 4 0 198 69 198 157c0 25 -19 43 -44 43 c-74 0 -134 -115 -163 -200Z" id="E1-STIXWE BNORMALI-1D452-gensym002" stroke-width="1"/> <path d="M363 112l14 -13c-70 -86 -138 -110 -200 -110c-98 0 - 137 84 -137 156c0 23 1 37 6 60c25 111 135 236 262 236c42 0 102 -14 102 -76c0 -12 7 -167 -176 -286 -182v-28c0 -64 52 -107 113 -107c42 0 90 18 126 64zM124 211h9c10 4 0 198 69 198 157c0 25 -19 43 -44 43 c-74 0 -134 -115 -163 -200Z" id="E1-STIXWE BNORMALI-1D452-gensym002" stroke-width="1"/>
<path d="M467 96l-5 -6c-28 -34 -76 -98 -128 -98c-32 0 -41 23 -41 46c0 13 4 29 7 40l57 221c2 8 7 28 7 42c0 19 -6 38 -24 38c-38 0 -101 -86 -13 2 -133c-36 -54 -62 -101 -68 -122l-33 -124h-77l95 374c0 18 -3 32 -30 32c-10 0 -21 -2 -28 -3l-2 15l159 23l-51 -189h3 c5 0 54 70 56 73c40 50 100 116 160 116c44 0 5 6 -29 56 -62c0 -25 -6 -50 -11 -70l-59 -231c-1 -2 -1 -5 -1 -10c1 -6 4 -14 15 -14c 24 0 48 36 62 53Z" id="E1-STIXWEBNORMALI-1D45B-gensym002" stroke-width="1"/> <path d="M467 96l-5 -6c-28 -34 -76 -98 -128 -98c-32 0 -41 23 -41 46c0 13 4 29 7 40l57 221c2 8 7 28 7 42c0 19 -6 38 -24 38c-38 0 -101 -86 -13 2 -133c-36 -54 -62 -101 -68 -122l-33 -124h-77l95 374c0 18 -3 32 -30 32c-10 0 -21 -2 -28 -3l-2 15l159 23l-51 -189h3 c5 0 54 70 56 73c40 50 100 116 160 116c44 0 5 6 -29 56 -62c0 -25 -6 -50 -11 -70l-59 -231c-1 -2 -1 -5 -1 -10c1 -6 4 -14 15 -14c 24 0 48 36 62 53Z" id="E1-STIXWEBNORMALI-1D45B-gensym002" stroke-width="1"/>
<path d="M444 428l-89 -348c-1 -4 -1 -6 -1 -9c0 -8 4 -14 14 - 14c21 0 40 26 57 46l5 6l13 -11c-23 -33 -74 -107 -132 -107c-29 0 -40 19 -40 52c0 9 1 25 4 37l26 95h-1c-7 -5 -97 -126 -137 -156c-23 -17 -49 -28 -72 -28c-47 0 -61 36 -61 74c0 21 3 40 8 59l59 231 c4 15 6 21 6 25c0 12 -11 23 -33 23c-7 0 -19 -1 - 26 -3l-3 15l157 26l-84 -326c-2 -9 -3 -16 -3 -24c0 -21 8 -34 26 -34c25 0 65 31 10 0 77c43 57 89 146 109 219l21 75h77Z" id="E1-STIXWEBNORMALI-1D462-gensym002" stro ke-width="1"/> <path d="M444 428l-89 -348c-1 -4 -1 -6 -1 -9c0 -8 4 -14 14 - 14c21 0 40 26 57 46l5 6l13 -11c-23 -33 -74 -107 -132 -107c-29 0 -40 19 -40 52c0 9 1 25 4 37l26 95h-1c-7 -5 -97 -126 -137 -156c-23 -17 -49 -28 -72 -28c-47 0 -61 36 -61 74c0 21 3 40 8 59l59 231 c4 15 6 21 6 25c0 12 -11 23 -33 23c-7 0 -19 -1 - 26 -3l-3 15l157 26l-84 -326c-2 -9 -3 -16 -3 -24c0 -21 8 -34 26 -34c25 0 65 31 10 0 77c43 57 89 146 109 219l21 75h77Z" id="E1-STIXWEBNORMALI-1D462-gensym002" stro ke-width="1"/>
<path d="M667 107l13 -11c-32 -54 -84 -104 -131 -104c-22 0 -3 9 10 -39 49c0 7 1 17 6 37l56 221c4 14 6 23 6 40c0 20 -6 38 -24 38c-54 0 -164 -18 1 -179 -242l-34 -135h-79l77 299c2 9 5 25 5 40c0 20 -5 38 -23 38c-52 0 -162 -181 -178 -242l-35 -135h-78l95 374 c0 18 -6 31 -33 31c-8 0 -19 -1 -27 -2l-2 14l157 24 l-44 -169h6c94 143 154 169 192 169c37 0 55 -37 55 -81c0 -17 -3 -32 -9 -52l-10 -3 6h5c29 52 81 114 130 147c22 15 41 22 61 22c36 0 54 -26 54 -71c0 -18 -1 -37 -7 -6 1l-61 -231c-1 -3 -2 -9 -2 -12 c0 -8 6 -12 15 -12c17 0 43 16 62 53Z" id="E1-STIXW EBNORMALI-1D45A-gensym002" stroke-width="1"/> <path d="M667 107l13 -11c-32 -54 -84 -104 -131 -104c-22 0 -3 9 10 -39 49c0 7 1 17 6 37l56 221c4 14 6 23 6 40c0 20 -6 38 -24 38c-54 0 -164 -18 1 -179 -242l-34 -135h-79l77 299c2 9 5 25 5 40c0 20 -5 38 -23 38c-52 0 -162 -181 -178 -242l-35 -135h-78l95 374 c0 18 -6 31 -33 31c-8 0 -19 -1 -27 -2l-2 14l157 24 l-44 -169h6c94 143 154 169 192 169c37 0 55 -37 55 -81c0 -17 -3 -32 -9 -52l-10 -3 6h5c29 52 81 114 130 147c22 15 41 22 61 22c36 0 54 -26 54 -71c0 -18 -1 -37 -7 -6 1l-61 -231c-1 -3 -2 -9 -2 -12 c0 -8 6 -12 15 -12c17 0 43 16 62 53Z" id="E1-STIXW EBNORMALI-1D45A-gensym002" stroke-width="1"/>
<path d="M472 428l-91 -345s-1 -2 -1 -11c0 -11 6 -17 14 -17c1 0 0 25 2 64 54l12 -12c-31 -47 -85 -107 -133 -107c-33 0 -42 23 -42 55c0 13 6 34 1 1 50h-4c-72 -92 -134 -105 -173 -105c-63 0 -89 55 -89 119c0 132 132 332 276 332c4 3 0 64 -24 66 -46h1l9 33h80zM367 341 c0 41 -12 71 -50 71c-68 0 -128 -87 -162 -17 1c-18 -45 -28 -89 -28 -124c0 -53 31 -66 58 -66c69 0 139 95 167 190c8 26 15 66 15 100Z" id="E1-STIXWEBNORMALI-1D44E-gensym002" stroke-width="1"/> <path d="M472 428l-91 -345s-1 -2 -1 -11c0 -11 6 -17 14 -17c1 0 0 25 2 64 54l12 -12c-31 -47 -85 -107 -133 -107c-33 0 -42 23 -42 55c0 13 6 34 1 1 50h-4c-72 -92 -134 -105 -173 -105c-63 0 -89 55 -89 119c0 132 132 332 276 332c4 3 0 64 -24 66 -46h1l9 33h80zM367 341 c0 41 -12 71 -50 71c-68 0 -128 -87 -162 -17 1c-18 -45 -28 -89 -28 -124c0 -53 31 -66 58 -66c69 0 139 95 167 190c8 26 15 66 15 100Z" id="E1-STIXWEBNORMALI-1D44E-gensym002" stroke-width="1"/>
<path d="M363 111l12 -13c-51 -60 -113 -109 -198 -109c-97 0 - 137 78 -137 155c0 140 121 297 263 297c50 0 97 -27 97 -76c0 -38 -16 -70 -54 -70c- 26 0 -38 21 -38 38c0 24 29 36 29 58c0 12 -10 21 -34 21c-119 0 -176 -179 -176 -25 9c0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450-gensym 002" stroke-width="1"/> <path d="M363 111l12 -13c-51 -60 -113 -109 -198 -109c-97 0 - 137 78 -137 155c0 140 121 297 263 297c50 0 97 -27 97 -76c0 -38 -16 -70 -54 -70c- 26 0 -38 21 -38 38c0 24 29 36 29 58c0 12 -10 21 -34 21c-119 0 -176 -179 -176 -25 9c0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450-gensym 002" stroke-width="1"/>
<path d="M604 475h33c-6 -85 -60 -204 -158 -204c-96 0 -203 12 8 -275 128c-70 0 -107 -67 -123 -138h-33c5 100 65 204 163 204c96 0 203 -128 276 - 128c69 0 102 67 117 138zM604 239h33c-6 -85 -60 -204 -158 -204c-96 0 -203 128 -27 5 128c-70 0 -107 -67 -123 -138h-33 c5 100 65 204 163 204c96 0 203 -128 276 -128c 69 0 102 67 117 138Z" id="E1-STIXWEBMAIN-2248-gensym002" stroke-width="1"/> <path d="M604 475h33c-6 -85 -60 -204 -158 -204c-96 0 -203 12 8 -275 128c-70 0 -107 -67 -123 -138h-33c5 100 65 204 163 204c96 0 203 -128 276 - 128c69 0 102 67 117 138zM604 239h33c-6 -85 -60 -204 -158 -204c-96 0 -203 128 -27 5 128c-70 0 -107 -67 -123 -138h-33 c5 100 65 204 163 204c96 0 203 -128 276 -128c 69 0 102 67 117 138Z" id="E1-STIXWEBMAIN-2248-gensym002" stroke-width="1"/>
skipping to change at line 599 skipping to change at line 602
<section anchor="offsetscaledlogvariance-key-5"> <section anchor="offsetscaledlogvariance-key-5">
<name>OffsetScaledLogVariance (Key -5)</name> <name>OffsetScaledLogVariance (Key -5)</name>
<t>Key -5 (OffsetScaledLogVariance) can be used to represent the varia nce <t>Key -5 (OffsetScaledLogVariance) can be used to represent the varia nce
exhibited by the clock when it has lost its synchronization with an exhibited by the clock when it has lost its synchronization with an
external reference clock. The details for the computation of this external reference clock. The details for the computation of this
characteristic are defined in Section 7.6.3 of <xref target="IEEE1588-2019"/> an d the characteristic are defined in Section 7.6.3 of <xref target="IEEE1588-2019"/> an d the
same section in <xref target="IEEE1588-2008"/>.</t> same section in <xref target="IEEE1588-2008"/>.</t>
</section> </section>
<section anchor="uncertainty-key-7"> <section anchor="uncertainty-key-7">
<name>Uncertainty (Key -7)</name> <name>Uncertainty (Key -7)</name>
<t>Key -7 (Uncertainty) can be used to represent a known measurement
uncertainty for the clock, as a numeric value in seconds or as a <t>Key -7 (Uncertainty) can be used to represent a known uncertainty o
duration (<xref target="duration"/>).</t> f measurement for the clock as a numeric value in seconds or as a
<t>For this document, uncertainty is defined as in Section 2.2.3 of duration (<xref target="duration"/>).</t>
<xref target="GUM"/>: "parameter, associated with the result of a measurement, t <t>For this document, uncertainty is defined as in Section 2.2.3 of <x
hat ref target="GUM"/>: "parameter, associated with the result of a measurement, tha
t
characterizes the dispersion of the values that could reasonably be characterizes the dispersion of the values that could reasonably be
attributed to the measurand". More specifically, the value for this attributed to the measurand". More specifically, the value for this
key represents the expanded uncertainty for k = 2 (Section 6.2.1 of <xref target ="GUM"/>), in seconds.</t> key represents the expanded uncertainty for k = 2 (Section 6.2.1 of <xref target ="GUM"/>) in seconds.</t>
<t>Note that the additional information that can be meaningfully provi ded <t>Note that the additional information that can be meaningfully provi ded
with the duration that represents an uncertainty is limited, e.g., it with the duration that represents an uncertainty is limited, e.g., it
is not customary to provide an uncertainty for a duration representing is not customary to provide an uncertainty for a duration representing
an uncertainty. an uncertainty.
Implementations are free to reduce the information contained in an Implementations are free to reduce the information contained in an
uncertainty (which is already elective) to the information they can uncertainty (which is already elective) to the information they can
process.</t> process.</t>
<t>For example, a timestamp that is given to a resolution of <t>For example, a timestamp that is given to a resolution of
10<sup>-6</sup> seconds (microseconds) but only has an uncertainty of 10<sup>-6</sup> seconds (microseconds) but only has an uncertainty of
10<sup>-3</sup> seconds (milliseconds) could be expressed by one of 10<sup>-3</sup> seconds (milliseconds) could be expressed by one of
skipping to change at line 632 skipping to change at line 634
<sourcecode type="cbor-diag"><![CDATA[ <sourcecode type="cbor-diag"><![CDATA[
1001({1: 1697724754, -6: 873294, -7: {1: 0, -6: 1000}}), 1001({1: 1697724754, -6: 873294, -7: {1: 0, -6: 1000}}),
1001({1: 1697724754, -6: 873294, -7: {1: 0, -3: 1}}), 1001({1: 1697724754, -6: 873294, -7: {1: 0, -3: 1}}),
1001({1: 1697724754, -6: 873294, -7: {1: 0.001}}) 1001({1: 1697724754, -6: 873294, -7: {1: 0.001}})
]]></sourcecode> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="guarantee-key-8"> <section anchor="guarantee-key-8">
<name>Guarantee (Key -8)</name> <name>Guarantee (Key -8)</name>
<t>Key -8 (Guarantee) can be used to represent a stated guarantee for the <t>Key -8 (Guarantee) can be used to represent a stated guarantee for the
accuracy of the point in time, as a numeric value in seconds or as a accuracy of the point in time as a numeric value in seconds or as a
duration (<xref target="duration"/>) duration (<xref target="duration"/>)
representing the maximum allowed deviation from the true value.</t> representing the maximum allowed deviation from the true value.</t>
<t>While such a guarantee is unattainable in theory, existing standard s <t>While such a guarantee is unattainable in theory, existing standard s
such as <xref target="RFC3161"/> stipulate the representation of such guarantees , such as <xref target="RFC3161"/> stipulate the representation of such guarantees ,
and therefore this format provides a way to represent them as well; and therefore this format provides a way to represent them as well;
the time value given is nominally guaranteed to not deviate from the the time value given is nominally guaranteed to not deviate from the
actual time by more than the value of the guarantee, in seconds.</t> actual time by more than the value of the guarantee in seconds.</t>
<t>Note that the additional information that can be meaningfully provi ded <t>Note that the additional information that can be meaningfully provi ded
with the duration that represents a guarantee is limited, e.g., it is with the duration that represents a guarantee is limited, e.g., it is
not meaningful to provide a guarantee of accuracy for the duration not meaningful to provide a guarantee of accuracy for the duration
representing a guarantee of accuracy. representing a guarantee of accuracy.
Implementations are free to reduce a guarantee (which is already Implementations are free to reduce a guarantee (which is already
elective) to the information they can process.</t> elective) to the information they can process.</t>
</section> </section>
</section> </section>
<section anchor="tzh"> <section anchor="tzh">
<name>Keys -10, 10: Time Zone Hint</name> <name>Keys -10, 10: Time Zone Hint</name>
<t>Keys -10 and 10 supply supplementary information, where key 10 is cri tical.</t> <t>Keys -10 and 10 supply supplementary information, where key 10 is cri tical.</t>
<t>They can be used to provide a hint about the time zone that <t>They can be used to provide a hint about the time zone that
would best fit for displaying the time given to humans, using a text would best fit for displaying the time given to humans, using a text
string in the format defined for <tt>time-zone-name</tt> or <tt>time-numoffset</ tt> string in the format defined for <tt>time-zone-name</tt> or <tt>time-numoffset</ tt>
in <xref target="IXDTF"/>. in <xref target="RFC9557"/>.
Key -10 is equivalent to providing this information as an elective Key -10 is equivalent to providing this information as an elective
hint, while key 10 provides this information as critical (i.e., it hint, while key 10 provides this information as critical (i.e., it
<bcp14>MUST</bcp14> be used when interpreting the entry with this key).</t> <bcp14>MUST</bcp14> be used when interpreting the entry with this key).</t>
<t>Keys -10 and 10 <bcp14>MUST NOT</bcp14> both be present.</t> <t>Keys -10 and 10 <bcp14>MUST NOT</bcp14> both be present.</t>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
$$ETIME-ELECTIVE //= (-10: time-zone-info) $$ETIME-ELECTIVE //= (-10: time-zone-info)
$$ETIME-CRITICAL //= (10: time-zone-info) $$ETIME-CRITICAL //= (10: time-zone-info)
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 [IXDTF] and [RFC3339]; update as needed ' ; extracted from [RFC9557] and [RFC3339]
]]></sourcecode> ]]></sourcecode>
</section> </section>
<section anchor="suff"> <section anchor="suff">
<name>Keys -11, 11: IXDTF Suffix Information</name> <name>Keys -11, 11: IXDTF Suffix Information</name>
<t>Keys -11 and 11 supply supplementary information, where key 11 is cri tical.</t> <t>Keys -11 and 11 supply supplementary information, where key 11 is cri tical.</t>
<t>Similar to keys -10 and 10, keys -11 (elective) and 11 (critical) can <t>Similar to keys -10 and 10, keys -11 (elective) and 11 (critical) can
be used to provide additional information in the style of IXDTF be used to provide additional information in the style of Internet Extended Date /Time Format (IXDTF)
suffixes, such as the calendar that would best fit for displaying the suffixes, such as the calendar that would best fit for displaying the
time given to humans. time given to humans.
The key's value is a map that has IXDTF <tt>suffix-key</tt> names as keys and The key's value is a map that has IXDTF <tt>suffix-key</tt> names as keys and
corresponding suffix values as values, specifically:</t> corresponding suffix values as values, specifically:</t>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
$$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 [IXDTF]; update as needed! ' ; extracted from [RFC9557]
]]></sourcecode> ]]></sourcecode>
<t>When keys -11 and 11 both are present, the two maps <bcp14>MUST NOT</ bcp14> have <t>When keys -11 and 11 are both present, the two maps <bcp14>MUST NOT</ bcp14> have
entries with the same map keys.</t> entries with the same map keys.</t>
<t>Figure 4 of <xref target="IXDTF"/> gives an example for an extended d <t>Figure 4 of <xref target="RFC9557"/> gives an example for an extended
ate-time with both time zone date-time with both time zone
and suffix information:</t> and suffix information:</t>
<artwork><![CDATA[ <artwork><![CDATA[
1996-12-19T16:39:57-08:00[America/Los_Angeles][u-ca=hebrew] 1996-12-19T16:39:57-08:00[America/Los_Angeles][u-ca=hebrew]
]]></artwork> ]]></artwork>
<t>A time tag that is approximating this example, in CBOR diagnostic <t>A time tag that is approximating this example, in CBOR diagnostic
notation, would be:</t> notation, would be:</t>
<sourcecode type="cbor-diag"><![CDATA[ <sourcecode type="cbor-diag"><![CDATA[
/ 1996-12-19T16:39:57-08:00[America//Los_Angeles][u-ca=hebrew] / / 1996-12-19T16:39:57-08:00[America//Los_Angeles][u-ca=hebrew] /
1001({ 1: 851042397, 1001({ 1: 851042397,
-10: "America/Los_Angeles", -10: "America/Los_Angeles",
-11: { "u-ca": "hebrew" } -11: { "u-ca": "hebrew" }
}) })
]]></sourcecode> ]]></sourcecode>
<t>Note that both -10 and -11 are using negative keys and therefore <t>Note that both -10 and -11 are using negative keys and therefore
provide elective information, as in the IXDTF form given in the comment. provide elective information, as in the IXDTF form given in the comment.
Note also that in this example the time numeric offset (<tt>-08:00</tt>) is Also note that, in this example, the time numeric offset (<tt>-08:00</tt>) is
lost in translating from the <xref target="RFC3339"/> information in the IXDTF i nto a lost in translating from the <xref target="RFC3339"/> information in the IXDTF i nto a
POSIX time that can be included under Key 1 in a time tag.</t> POSIX time that can be included under key 1 in a time tag.</t>
</section> </section>
</section> </section>
<section anchor="duration"> <section anchor="duration">
<name>Duration Format</name> <name>Duration Format</name>
<t>A duration is the length of an interval of time. <t>A duration is the length of an interval of time.
Durations in this format are given in SI seconds, possibly adjusted Durations in this format are given in International System of Units (SI) seconds , possibly adjusted
for conventional corrections of the timescale given (e.g., leap for conventional corrections of the timescale given (e.g., leap
seconds).</t> seconds).</t>
<t>Except for using Tag 1002 instead of 1001, <t>Except for using tag 1002 instead of 1001,
durations are structurally identical to time values.</t> durations are structurally identical to time values.</t>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
Duration = #6.1002(etime-detailed) Duration = #6.1002(etime-detailed)
]]></sourcecode> ]]></sourcecode>
<t>Semantically, they do not measure the time elapsed from a given epoch, <t>Semantically, they do not measure the time elapsed from a given epoch
but from the start to the end of (an otherwise unspecified) interval but from the start to the end of an (otherwise unspecified) interval
of time.</t> of time.</t>
<t>In combination with an epoch identified in the context, a duration can <t>In combination with an epoch identified in the context, a duration can
also be used to express an absolute time.</t> also be used to express an absolute time.</t>
<t>Without such context, durations are subject to some uncertainties <t>Without such context, durations are subject to some uncertainties
underlying the timescale used. underlying the timescale used.
E.g., for durations intended as a determinant of future time periods, For example, for durations intended as a determinant of future time periods,
there is some uncertainty of what irregularities (such as leap there is some uncertainty of what irregularities (such as leap
seconds, timescale corrections) will be exhibited by the timescale in seconds and timescale corrections) will be exhibited by the timescale in
that period. that period.
For durations as measurements of past periods, abstracting the period For durations as measurements of past periods, abstracting the period
to a duration loses some detail about timescale irregularities. to a duration loses some detail about timescale irregularities.
For many applications, these uncertainties are acceptable and thus For many applications, these uncertainties are acceptable and thus
the use of durations is appropriate.</t> the use of durations is appropriate.</t>
<aside> <aside>
<t>Note that the durations defined in <xref target="ISO8601"/> and <xref target="ISO8601-2019"/> are rather different from the ones defined <t>Note that the durations defined in <xref target="ISO8601"/> and <xref target="ISO8601-2019"/> are rather different from the ones defined
in the present specification; there is no intention to support ISO 8601 in the present specification; there is no intention to support ISO 8601
durations here.</t> durations here.</t>
</aside> </aside>
</section> </section>
<section anchor="period"> <section anchor="period">
<name>Period Format</name> <name>Period Format</name>
<t>A period is a specific interval of time, specified as either two <t>A period is a specific interval of time, specified as either two
extended times giving the start and the end of that interval, or as extended times giving the start and the end of that interval or as
one of these two plus a duration.</t> one of these two plus a duration.</t>
<t>This is represented as an array of unwrapped time and duration elements , <t>This is represented as an array of unwrapped time and duration elements ,
tagged with Tag 1003, one of:</t> tagged with tag 1003, one of:</t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>a start and end time, in which case the <t>a start and end time, in which case the
tag content is an array of two unwrapped extended time elements;</t> tag content is an array of two unwrapped extended time elements, or</t>
</li> </li>
<li> <li>
<t>a start time with duration or an end time with duration. <t>a start time with duration or an end time with duration.
The tag content is an array of 3 elements: the first two as The tag content is an array of 3 elements: the first two as
above but either the start or end time <bcp14>MUST</bcp14> be set to null; the above but either the start or end time <bcp14>MUST</bcp14> be set to null and th e
third one then is an unwrapped duration.</t> third one then is an unwrapped duration.</t>
</li> </li>
</ul> </ul>
<t>A simple CDDL definition that does not capture all the constraints is:< /t> <t>A simple CDDL definition that does not capture all the constraints is:< /t>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
simple-Period = #6.1003([ simple-Period = #6.1003([
start: ~Etime / null start: ~Etime / null
end: ~Etime / null end: ~Etime / null
? duration: ~Duration ? duration: ~Duration
]) ])
skipping to change at line 808 skipping to change at line 812
((end: ~Etime) // ((end: ~Etime) //
(end: null, (end: null,
duration: ~Duration))) // duration: ~Duration))) //
(start: null, (start: null,
end: ~Etime, end: ~Etime,
duration: ~Duration) duration: ~Duration)
]) ])
]]></sourcecode> ]]></sourcecode>
</section> </section>
<section anchor="cddl-typenames"> <section anchor="cddl-typenames">
<name>CDDL typenames</name> <name>CDDL Type Names</name>
<t>When detailed validation is not needed, the <t>When detailed validation is not needed, the
type names defined in <xref target="tag-cddl"/> are recommended:</t> type names defined in <xref target="tag-cddl"/> are recommended:</t>
<figure anchor="tag-cddl"> <figure anchor="tag-cddl">
<name>Recommended type names for CDDL</name> <name>Recommended Type Names for CDDL</name>
<sourcecode type="cddl"><![CDATA[ <sourcecode type="cddl"><![CDATA[
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])
]]></sourcecode> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="iana-considerations"> <section anchor="iana-considerations">
<name>IANA Considerations</name> <name>IANA Considerations</name>
<t><cref anchor="to-be-removed">RFC Editor: please replace RFCthis with th
e RFC
number of this RFC, and remove this note.</cref></t>
<section anchor="cbor-tags"> <section anchor="cbor-tags">
<name>CBOR tags</name> <name>CBOR Tags</name>
<t>In the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, <t>In the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>,
IANA has allocated the tags in <xref target="tab-tag-values"/> from what was at IANA has allocated the tags in <xref target="tab-tag-values"/>.</t>
the
time the
FCFS space, with the present document as the specification reference.</t>
<table anchor="tab-tag-values"> <table anchor="tab-tag-values">
<name>Values for Tags</name> <name>Values for Tags</name>
<thead> <thead>
<tr> <tr>
<th align="right">Tag</th> <th align="right">Tag</th>
<th align="left">Data Item</th> <th align="left">Data Item</th>
<th align="left">Semantics</th> <th align="left">Semantics</th>
<th align="left">Reference</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td align="right">1001</td> <td align="right">1001</td>
<td align="left">map</td> <td align="left">map</td>
<td align="left">[RFCthis] extended time</td> <td align="left">extended time</td>
<td align="left">[RFC9581, <xref target="time-format"/>]</td>
</tr> </tr>
<tr> <tr>
<td align="right">1002</td> <td align="right">1002</td>
<td align="left">map</td> <td align="left">map</td>
<td align="left">[RFCthis] duration</td> <td align="left">duration</td>
<td align="left">[RFC9581, <xref target="duration"/>]</td>
</tr> </tr>
<tr> <tr>
<td align="right">1003</td> <td align="right">1003</td>
<td align="left">array</td> <td align="left">array</td>
<td align="left">[RFCthis] period</td> <td align="left">period</td>
<td align="left">[RFC9581, <xref target="period"/>]</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<t>IANA is requested to change the "Data Item" column for Tag 1003 from <t>IANA has updated the "Data Item" column for tag 1003 from
"map" to "array".</t> "map" to "array".</t>
</section> </section>
<section anchor="timescale-registry"> <section anchor="timescale-registry">
<name>Timescale Registry</name> <name>Timescales Registry</name>
<t>This specification defines a new registry titled "Timescales" in the <t>Per this specification, IANA has created a new "Timescales" registry
"CBOR Tags" registry group <xref target="IANA.cbor-tags"/>, with a Registration within the
Procedure "Concise Binary Object Representation (CBOR) Tags" registry group <xref target="
requiring both "Expert Review" and "RFC Required" (Sections <xref section="4.5" IANA.cbor-tags"/>. The registration procedure requires both
sectionFormat="bare" target="BCP26"/> and <xref section="4.7" sectionFormat="bar "Expert Review" and "RFC Required" (Sections <xref section="4.5" sectionFormat="
e" target="BCP26"/> of <xref target="BCP26"/>).</t> bare" target="RFC8126"/> and
<xref section="4.7" sectionFormat="bare" target="RFC8126"/> of RFC 8126 <xref ta
rget="BCP26"/>, respectively).</t>
<t>Each entry needs to provide a timescale name (a sequence of uppercase <t>Each entry needs to provide a timescale name (a sequence of uppercase
ASCII characters and digits, where a digit may not occur at the start: ASCII characters and digits, where a digit may not occur at the start:
<tt>[A-Z][A-Z0-9]*</tt>), a value (CBOR unsigned integer, uint, <tt>[A-Z][A-Z0-9]*</tt>), a value (CBOR unsigned integer, uint,
0..18446744073709551615), a brief description 0..18446744073709551615), a brief description
of the semantics, and a specification reference (RFC). of the semantics, and a specification reference (RFC).
The initial contents are shown in <xref target="tab-timescales"/>.</t> The initial contents are shown in <xref target="tab-timescales"/>.</t>
<table anchor="tab-timescales"> <table anchor="tab-timescales">
<name>Initial Content of Timescale Registry</name> <name>Initial Content of Timescale Registry</name>
<thead> <thead>
<tr> <tr>
skipping to change at line 886 skipping to change at line 891
<th align="right">Value</th> <th align="right">Value</th>
<th align="left">Semantics</th> <th align="left">Semantics</th>
<th align="left">Reference</th> <th align="left">Reference</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td align="left">UTC</td> <td align="left">UTC</td>
<td align="right">0</td> <td align="right">0</td>
<td align="left">UTC with POSIX Epoch</td> <td align="left">UTC with POSIX Epoch</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="left">TAI</td> <td align="left">TAI</td>
<td align="right">1</td> <td align="right">1</td>
<td align="left">TAI with PTP Epoch</td> <td align="left">TAI with PTP Epoch</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</section> </section>
<section anchor="map-key-registry"> <section anchor="map-key-registry">
<name>Time Tag Map Key Registry</name> <name>Time Tag Map Keys Registry</name>
<t>This specification defines a new registry titled "Time Tag Map Keys" <t>Per this specification, IANA has created a new "Time Tag Map Keys" re
in the "CBOR Tags" registry group <xref target="IANA.cbor-tags"/>, with "Specifi gistry within the "Concise Binary Object Representation (CBOR) Tags" registry gr
cation oup <xref target="IANA.cbor-tags"/>. The registration procedure is "Specificat
Required" as the Registration Procedure (<xref section="4.6" sectionFormat="of" ion
target="BCP26"/>).</t> Required" (Section <xref section="4.6" sectionFormat="bare" target="RFC8126"/> o
f RFC 8126 <xref target="BCP26"/>).</t>
<t>The designated expert is requested to assign the key values with the <t>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.</t> likely to enjoy wide use and can benefit from short encodings.</t>
<t>Each entry needs to provide a map key value (CBOR integer, int, <t>Each entry needs to provide a map key value (CBOR integer, int,
-18446744073709551616..18446744073709551615), a brief description -18446744073709551616..18446744073709551615), a brief description
of the semantics, and a specification reference. of the semantics, and a specification reference.
Note that negative integers indicate an elective key, while unsigned Note that negative integers indicate an elective key, while unsigned
integers indicate a key that either provides a base time or is integers indicate a key that either provides a base time or is
critical. critical. The designated expert is requested to discuss with the registrant
whether or not it is desirable to register a pair of an elective and a
critical key for the same information, where the elective key value
is the negative of the critical key (similar to how for example -11
and 11 have been assigned in <xref target="tab-mapkeys"/>).
For the unsigned integers as keys, the choice of base time or critical For the unsigned integers as keys, the choice of base time or critical
needs to be indicated in the brief semantics description. needs to be indicated in the brief semantics description.
(Elective map keys may be explicitly marked as such in the (Elective map keys may be explicitly marked as such in the
description, e.g., to distinguish them from critical keys.)</t> description, e.g., to distinguish them from critical keys.)</t>
<t>The initial contents are shown in <xref target="tab-mapkeys"/>.</t> <t>The initial contents are shown in <xref target="tab-mapkeys"/>.</t>
<table anchor="tab-mapkeys"> <table anchor="tab-mapkeys">
<name>Initial Content of Time Tag Map Keys Registry</name> <name>Initial Content of Time Tag Map Keys Registry</name>
<thead> <thead>
<tr> <tr>
<th align="right">Value</th> <th align="right">Value</th>
<th align="left">Semantics</th> <th align="left">Semantics</th>
<th align="left">Reference</th> <th align="left">Reference</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td align="right">-18</td> <td align="right">-18</td>
<td align="left">attoseconds</td> <td align="left">attoseconds</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-15</td> <td align="right">-15</td>
<td align="left">femtoseconds</td> <td align="left">femtoseconds</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr>
<td align="right">-13</td>
<td align="left">timescale (elective)</td>
<td align="left">[RFC9581]</td>
</tr>
<tr> <tr>
<td align="right">-12</td> <td align="right">-12</td>
<td align="left">picoseconds</td> <td align="left">picoseconds</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-11</td> <td align="right">-11</td>
<td align="left">IXDTF Suffix Information (elective)</td> <td align="left">IXDTF Suffix Information (elective)</td>
<td align="left">[RFCthis], <xref target="IXDTF"/></td> <td align="left">[RFC9581], <xref target="RFC9557"/></td>
</tr> </tr>
<tr> <tr>
<td align="right">-10</td> <td align="right">-10</td>
<td align="left">IXDTF Time Zone Hint (elective)</td> <td align="left">IXDTF Time Zone Hint (elective)</td>
<td align="left">[RFCthis], <xref target="IXDTF"/></td> <td align="left">[RFC9581], <xref target="RFC9557"/></td>
</tr> </tr>
<tr> <tr>
<td align="right">-9</td> <td align="right">-9</td>
<td align="left">nanoseconds</td> <td align="left">nanoseconds</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-8</td> <td align="right">-8</td>
<td align="left">Guarantee</td> <td align="left">Guarantee</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-7</td> <td align="right">-7</td>
<td align="left">Uncertainty</td> <td align="left">Uncertainty</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-6</td> <td align="right">-6</td>
<td align="left">microseconds</td> <td align="left">microseconds</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-5</td> <td align="right">-5</td>
<td align="left">Offset-Scaled Log Variance</td> <td align="left">Offset-Scaled Log Variance</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-4</td> <td align="right">-4</td>
<td align="left">Clock Accuracy</td> <td align="left">Clock Accuracy</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-3</td> <td align="right">-3</td>
<td align="left">milliseconds</td> <td align="left">milliseconds</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">-2</td> <td align="right">-2</td>
<td align="left">Clock Class</td> <td align="left">Clock Class</td>
<td align="left">[RFCthis]</td> <td align="left">[RFC9581]</td>
</tr> </tr>
<tr>
<td align="right">-1</td>
<td align="left">timescale (elective) legacy</td>
<td align="left">[RFC9581]</td>
</tr>
<tr> <tr>
<td align="right">1</td> <td align="right">1</td>
<td align="left">base time value as in CBOR Tag 1</td> <td align="left">base time value as in CBOR tag 1</td>
<td align="left"> <td align="left">
<xref target="RFC8949"/> [RFCthis]</td> <xref target="RFC8949"/>, [RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">4</td> <td align="right">4</td>
<td align="left">base time value as in CBOR Tag 4</td> <td align="left">base time value as in CBOR tag 4</td>
<td align="left"> <td align="left">
<xref target="RFC8949"/> [RFCthis]</td> <xref target="RFC8949"/>, [RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">5</td> <td align="right">5</td>
<td align="left">base time value as in CBOR Tag 5</td> <td align="left">base time value as in CBOR tag 5</td>
<td align="left"> <td align="left">
<xref target="RFC8949"/> [RFCthis]</td> <xref target="RFC8949"/>, [RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">10</td> <td align="right">10</td>
<td align="left">IXDTF Time Zone Hint (critical)</td> <td align="left">IXDTF Time Zone Hint (critical)</td>
<td align="left">[RFCthis], <xref target="IXDTF"/></td> <td align="left"><xref target="RFC9557"/>, [RFC9581]</td>
</tr> </tr>
<tr> <tr>
<td align="right">11</td> <td align="right">11</td>
<td align="left">IXDTF Suffix Information (critical)</td> <td align="left">IXDTF Suffix Information (critical)</td>
<td align="left">[RFCthis], <xref target="IXDTF"/></td> <td align="left"><xref target="RFC9557"/>, [RFC9581]</td>
</tr> </tr>
<tr>
<td align="right">13</td>
<td align="left">timescale (critical)</td>
<td align="left">[RFC9581]</td>
</tr>
</tbody> </tbody>
</table> </table>
</section> </section>
</section> </section>
<section anchor="security-considerations"> <section anchor="security-considerations">
<name>Security Considerations</name> <name>Security Considerations</name>
<t>The security considerations of <xref target="RFC8949"/> apply; the tags introduced <t>The security considerations of <xref target="RFC8949"/> apply; the tags introduced
here are not expected to raise security considerations beyond those.</t> here are not expected to raise security considerations beyond those.</t>
<t>Time, of course, has significant security considerations; these <t>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
relevant (e.g., for freshness or in a validity span) or the disclosure relevant (e.g., for freshness or in a validity span) or the disclosure
of characteristics of the emitting system (e.g., time zone, or clock of characteristics of the emitting system (e.g., time zone or clock
resolution and wall clock offset).</t> resolution and wall clock offset).</t>
<t>A more detailed discussion of security considerations emanating from <t>A more detailed discussion of security considerations emanating from
using a representation of time that allows the inclusion of complex, using a representation of time that allows the inclusion of complex and
possibly inconsistent information is available in possibly inconsistent information is available in "Security Considerations"
Section <xref section="7" sectionFormat="bare" target="IXDTF">Security Considera (<xref section="7" sectionFormat="of" target="RFC9557"></xref>).</t>
tions</xref> of <xref target="IXDTF"/>.</t>
</section> </section>
</middle> </middle>
<back> <back>
<displayreference target="ISO8601" to="ISO8601:1988"/> <displayreference target="ISO8601" to="ISO8601:1988"/>
<displayreference target="ISO8601-2019" to="ISO8601-1:2019"/> <displayreference target="ISO8601-2019" to="ISO8601-1:2019"/>
<references> <references>
<name>References</name> <name>References</name>
<references anchor="sec-normative-references"> <references anchor="sec-normative-references">
<name>Normative References</name> <name>Normative References</name>
<reference anchor="RFC8949">
<front> <xi:include
<title>Concise Binary Object Representation (CBOR)</title> href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml"/
<author fullname="C. Bormann" initials="C." surname="Bormann"/> >
<author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
<date month="December" year="2020"/> <referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/bc
<abstract> p26">
<t>The Concise Binary Object Representation (CBOR) is a data forma <xi:include
t whose design goals include the possibility of extremely small code size, fairl href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/
y small message size, and extensibility without the need for version negotiation >
. These design goals make it different from earlier binary serializations such a </referencegroup>
s ASN.1 and MessagePack.</t>
<t>This document obsoletes RFC 7049, providing editorial improveme
nts, new details, and errata fixes while keeping full compatibility with the int
erchange format of RFC 7049. It does not create a new version of the format.</t>
</abstract>
</front>
<seriesInfo name="STD" value="94"/>
<seriesInfo name="RFC" value="8949"/>
<seriesInfo name="DOI" value="10.17487/RFC8949"/>
</reference>
<reference anchor="BCP26">
<front>
<title>Guidelines for Writing an IANA Considerations Section in RFCs
</title>
<author fullname="M. Cotton" initials="M." surname="Cotton"/>
<author fullname="B. Leiba" initials="B." surname="Leiba"/>
<author fullname="T. Narten" initials="T." surname="Narten"/>
<date month="June" year="2017"/>
<abstract>
<t>Many protocols make use of points of extensibility that use con
stants to identify various protocol parameters. To ensure that the values in the
se fields do not have conflicting uses and to promote interoperability, their al
locations are often coordinated by a central record keeper. For IETF protocols,
that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
<t>To make assignments in a given registry prudently, guidance des
cribing the conditions under which new values should be assigned, as well as whe
n and how modifications to existing values can be made, is needed. This document
defines a framework for the documentation of these guidelines by specification
authors, in order to assure that the provided guidance for the IANA Consideratio
ns is clear and addresses the various issues that are likely in the operation of
a registry.</t>
<t>This is the third edition of this document; it obsoletes RFC 52
26.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="26"/>
<seriesInfo name="RFC" value="8126"/>
<seriesInfo name="DOI" value="10.17487/RFC8126"/>
</reference>
<reference anchor="TIME_T" target="http://pubs.opengroup.org/onlinepubs/ 9699919799/basedefs/V1_chap04.html#tag_04_16"> <reference anchor="TIME_T" target="http://pubs.opengroup.org/onlinepubs/ 9699919799/basedefs/V1_chap04.html#tag_04_16">
<front> <front>
<title>Vol. 1: Base Definitions, Issue 7</title> <title>The Open Group Base Specifications Issue 7</title>
<author> <author>
<organization>The Open Group Base Specifications</organization> <organization>IEEE</organization>
</author> </author>
<date year="2018"/> <date year="2018"/>
</front> </front>
<seriesInfo name="Section 4.16" value="'Seconds Since the Epoch'"/>
<seriesInfo name="IEEE Std" value="1003.1-2017"/> <seriesInfo name="IEEE Std" value="1003.1-2017"/>
<seriesInfo name="2018" value="Edition"/> <refcontent>Section 4.16 Seconds Since the Epoch</refcontent>
</reference> </reference>
<reference anchor="SI-SECOND">
<reference anchor="SI-SECOND" target="https://www.iso.org/standard/64974
.html">
<front> <front>
<title>Quantities and units Part 3: Space and time</title> <title>Quantities and units -- Part 3: Space and time</title>
<author> <author>
<organization>International Organization for Standardization (ISO) </organization> <organization>ISO</organization>
</author> </author>
<date day="01" month="March" year="2006"/> <date month="October" year="2019"/>
</front>
<seriesInfo name="ISO" value="80000-3"/>
</reference>
<reference anchor="RFC8575">
<front>
<title>YANG Data Model for the Precision Time Protocol (PTP)</title>
<author fullname="Y. Jiang" initials="Y." role="editor" surname="Jia
ng"/>
<author fullname="X. Liu" initials="X." surname="Liu"/>
<author fullname="J. Xu" initials="J." surname="Xu"/>
<author fullname="R. Cummings" initials="R." role="editor" surname="
Cummings"/>
<date month="May" year="2019"/>
<abstract>
<t>This document defines a YANG data model for the configuration o
f devices and clocks using the Precision Time Protocol (PTP) as specified in IEE
E Std 1588-2008. It also defines the retrieval of the configuration information,
the data sets and the running states of PTP clocks. The YANG module in this doc
ument conforms to the Network Management Datastore Architecture (NMDA).</t>
</abstract>
</front> </front>
<seriesInfo name="RFC" value="8575"/> <seriesInfo name="ISO" value="80000-3:2019"/>
<seriesInfo name="DOI" value="10.17487/RFC8575"/>
</reference> </reference>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8575.xml"
/>
<reference anchor="IEEE1588-2008" target="https://standards.ieee.org/iee e/1588/4355/"> <reference anchor="IEEE1588-2008" target="https://standards.ieee.org/iee e/1588/4355/">
<front> <front>
<title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title> <title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title>
<author> <author>
<organization>IEEE</organization> <organization>IEEE</organization>
</author> </author>
<date month="July" year="2008"/> <date month="July" year="2008"/>
</front> </front>
<seriesInfo name="IEEE" value="1588-2008"/> <seriesInfo name="IEEE" value="1588-2008"/>
<annotation>Often called PTP v2, as it replaced the earlier 2002 versi on of this standard by a non-backwards compatible protocol.</annotation> <annotation>Often called PTP v2, as it replaced the earlier 2002 versi on of this standard by a non-backwards compatible protocol.</annotation>
skipping to change at line 1136 skipping to change at line 1126
<front> <front>
<title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title> <title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title>
<author> <author>
<organization>IEEE</organization> <organization>IEEE</organization>
</author> </author>
<date month="June" year="2020"/> <date month="June" year="2020"/>
</front> </front>
<seriesInfo name="IEEE" value="1588-2019"/> <seriesInfo name="IEEE" value="1588-2019"/>
<annotation>Often called PTP v2.1, as it has been designed so it can b e used in a way that is fully backwards compatible to IEEE1588-2008.</annotation > <annotation>Often called PTP v2.1, as it has been designed so it can b e used in a way that is fully backwards compatible to IEEE1588-2008.</annotation >
</reference> </reference>
<reference anchor="GUM" target="https://www.bipm.org/en/publications/gui des/gum.html"> <reference anchor="GUM" target="https://www.bipm.org/en/publications/gui des/gum.html">
<front> <front>
<title>Evaluation of measurement data — Guide to the expression of u ncertainty in measurement</title> <title>Evaluation of measurement data -- Guide to the expression of uncertainty in measurement</title>
<author> <author>
<organization>Joint Committee for Guides in Metrology</organizatio n> <organization>Joint Committee for Guides in Metrology</organizatio n>
</author> </author>
<date month="September" year="2008"/> <date month="September" year="2008"/>
</front> </front>
<seriesInfo name="JCGM" value="100:2008"/> <seriesInfo name="JCGM" value="100:2008"/>
</reference> </reference>
<reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignme nts/cbor-tags"> <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignme nts/cbor-tags">
<front> <front>
<title>Concise Binary Object Representation (CBOR) Tags</title> <title>Concise Binary Object Representation (CBOR) Tags</title>
<author> <author>
<organization>IANA</organization> <organization>IANA</organization>
</author> </author>
</front> </front>
</reference> </reference>
<reference anchor="RFC8610">
<front>
<title>Concise Data Definition Language (CDDL): A Notational Convent
ion to Express Concise Binary Object Representation (CBOR) and JSON Data Structu
res</title>
<author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
<author fullname="C. Vigano" initials="C." surname="Vigano"/>
<author fullname="C. Bormann" initials="C." surname="Bormann"/>
<date month="June" year="2019"/>
<abstract>
<t>This document proposes a notational convention to express Conci
se Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal
is to provide an easy and unambiguous way to express structures for protocol me
ssages and data formats that use CBOR or JSON.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8610"/>
<seriesInfo name="DOI" value="10.17487/RFC8610"/>
</reference>
<reference anchor="IXDTF">
<front>
<title>Date and Time on the Internet: Timestamps with additional inf
ormation</title>
<author fullname="Ujjwal Sharma" initials="U." surname="Sharma">
<organization>Igalia, S.L.</organization>
</author>
<author fullname="Carsten Bormann" initials="C." surname="Bormann">
<organization>Universität Bremen TZI</organization>
</author>
<date day="23" month="October" year="2023"/>
<abstract>
<t> This document defines an extension to the timestamp format d
efined in
RFC3339 for representing additional information including a time
zone.
It updates RFC3339 in the specific interpretation of the local offset <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml"
Z, which is no longer understood to "imply that UTC is the preferred />
reference point for the specified time"; see Section 2. <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9557.xml"
/>
// (This "cref" paragraph will be removed by the RFC editor:) The <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"
// present version (-11) addresses comments received during IESG />
// review. <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"
/>
</t>
</abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-sedate-datetime-ex
tended-11"/>
</reference>
<reference anchor="RFC2119">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</tit
le>
<author fullname="S. Bradner" initials="S." surname="Bradner"/>
<date month="March" year="1997"/>
<abstract>
<t>In many standards track documents several words are used to sig
nify the requirements in the specification. These words are often capitalized. T
his document defines these words as they should be interpreted in IETF documents
. This document specifies an Internet Best Current Practices for the Internet Co
mmunity, and requests discussion and suggestions for improvements.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti
tle>
<author fullname="B. Leiba" initials="B." surname="Leiba"/>
<date month="May" year="2017"/>
<abstract>
<t>RFC 2119 specifies common key words that may be used in protoco
l specifications. This document aims to reduce the ambiguity by clarifying that
only UPPERCASE usage of the key words have the defined special meanings.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="8174"/>
<seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
</references> </references>
<references anchor="sec-informative-references">
<references anchor="sec-informative-references">
<name>Informative References</name> <name>Informative References</name>
<reference anchor="RFC3161">
<front> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3161.xml"
<title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol />
(TSP)</title> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml"
<author fullname="C. Adams" initials="C." surname="Adams"/> />
<author fullname="P. Cain" initials="P." surname="Cain"/>
<author fullname="D. Pinkas" initials="D." surname="Pinkas"/>
<author fullname="R. Zuccherato" initials="R." surname="Zuccherato"/
>
<date month="August" year="2001"/>
<abstract>
<t>This document describes the format of a request sent to a Time
Stamping Authority (TSA) and of the response that is returned. It also establish
es several security-relevant requirements for TSA operation, with regards to pro
cessing requests to generate responses. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="3161"/>
<seriesInfo name="DOI" value="10.17487/RFC3161"/>
</reference>
<reference anchor="RFC3339">
<front>
<title>Date and Time on the Internet: Timestamps</title>
<author fullname="G. Klyne" initials="G." surname="Klyne"/>
<author fullname="C. Newman" initials="C." surname="Newman"/>
<date month="July" year="2002"/>
<abstract>
<t>This document defines a date and time format for use in Interne
t protocols that is a profile of the ISO 8601 standard for representation of dat
es and times using the Gregorian calendar.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="3339"/>
<seriesInfo name="DOI" value="10.17487/RFC3339"/>
</reference>
<reference anchor="ISO8601" target="https://www.iso.org/standard/15903.h tml"> <reference anchor="ISO8601" target="https://www.iso.org/standard/15903.h tml">
<front> <front>
<title>Data elements and interchange formats — Information interchan ge — Representation of dates and times</title> <title>Data elements and interchange formats -- Information intercha nge -- Representation of dates and times</title>
<author> <author>
<organization abbrev="ISO">International Organization for Standard ization</organization> <organization>ISO</organization>
</author> </author>
<date month="June" year="1988"/> <date month="June" year="1988"/>
</front> </front>
<seriesInfo name="ISO" value="8601:1988"/> <seriesInfo name="ISO" value="8601:1988"/>
<annotation>Also available from &lt;⁠<eref target="https://nvlpubs.nis t.gov/nistpubs/Legacy/FIPS/fipspub4-1-1991.pdf">https://nvlpubs.nist.gov/nistpub s/Legacy/FIPS/fipspub4-1-1991.pdf</eref>&gt;.</annotation> <annotation>Also available from &lt;<eref target="https://nvlpubs.nist .gov/nistpubs/Legacy/FIPS/fipspub4-1-1991.pdf">https://nvlpubs.nist.gov/nistpubs /Legacy/FIPS/fipspub4-1-1991.pdf</eref>&gt;.</annotation>
</reference> </reference>
<reference anchor="ISO8601-2019" target="https://www.iso.org/standard/70 907.html"> <reference anchor="ISO8601-2019" target="https://www.iso.org/standard/70 907.html">
<front> <front>
<title>Date and time — Representations for information interchange — Part 1: Basic rules</title> <title>Date and time -- Representations for information interchange -- Part 1: Basic rules</title>
<author> <author>
<organization abbrev="ISO">International Organization for Standard ization</organization> <organization>ISO</organization>
</author> </author>
<date month="February" year="2019"/> <date month="February" year="2019"/>
</front> </front>
<seriesInfo name="ISO" value="8601-1:2019"/> <seriesInfo name="ISO" value="8601-1:2019"/>
</reference> </reference>
<reference anchor="C" target="https://www.iso.org/standard/74528.html"> <reference anchor="C" target="https://www.iso.org/standard/74528.html">
<front> <front>
<title>Information technology — Programming languages — C</title> <title>Information technology -- Programming languages -- C</title>
<author> <author>
<organization>International Organization for Standardization</orga nization> <organization>ISO</organization>
</author> </author>
<date month="June" year="2018"/> <date month="June" year="2018"/>
</front> </front>
<seriesInfo name="ISO/IEC" value="9899:2018"/> <seriesInfo name="ISO/IEC" value="9899:2018"/>
<annotation>Contents available via &lt;⁠<eref target="https://www.open -std.org/jtc1/sc22/wg14/www/docs/n2310.pdf">https://www.open-std.org/jtc1/sc22/w g14/www/docs/n2310.pdf</eref>&gt;</annotation> <annotation>Contents available via &lt;<eref target="https://www.open- std.org/jtc1/sc22/wg14/www/docs/n2310.pdf"/>&gt;</annotation>
<refcontent>Fourth Edition</refcontent> <refcontent>Fourth Edition</refcontent>
</reference> </reference>
<reference anchor="RFC5905">
<front> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5905.xml"
<title>Network Time Protocol Version 4: Protocol and Algorithms Spec />
ification</title>
<author fullname="D. Mills" initials="D." surname="Mills"/> <reference anchor="IEEE754" target="https://ieeexplore.ieee.org/document/8766229
<author fullname="J. Martin" initials="J." role="editor" surname="Ma ">
rtin"/> <front>
<author fullname="J. Burbank" initials="J." surname="Burbank"/> <title>IEEE Standard for Floating-Point Arithmetic</title>
<author fullname="W. Kasch" initials="W." surname="Kasch"/> <author>
<date month="June" year="2010"/> <organization>IEEE</organization>
<abstract> </author>
<t>The Network Time Protocol (NTP) is widely used to synchronize c <date month="July" year="2019"/>
omputer clocks in the Internet. This document describes NTP version 4 (NTPv4), w </front>
hich is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, <seriesInfo name="IEEE" value="754-2019"/>
as well as previous versions of the protocol. NTPv4 includes a modified protocol <seriesInfo name="DOI" value="10.1109/IEEESTD.2019.8766229"/>
header to accommodate the Internet Protocol version 6 address family. NTPv4 inc </reference>
ludes fundamental improvements in the mitigation and discipline algorithms that
extend the potential accuracy to the tens of microseconds with modern workstatio </references>
ns and fast LANs. It includes a dynamic server discovery scheme, so that in many
cases, specific server configuration is not required. It corrects certain error
s in the NTPv3 design and implementation and includes an optional extension mech
anism. [STANDARDS-TRACK]</t>
</abstract>
</front>
<seriesInfo name="RFC" value="5905"/>
<seriesInfo name="DOI" value="10.17487/RFC5905"/>
</reference>
</references>
</references> </references>
<?line 895?> <?line 895?>
<section anchor="collected-cddl"> <section anchor="collected-cddl">
<name>Collected CDDL</name> <name>Collected CDDL</name>
<t>This appendix collects the CDDL rules spread over the document into <t>This appendix collects the CDDL rules spread over the document into
one convenient place.</t> one convenient place.</t>
<figure anchor="fig-collected-cddl"> <figure anchor="fig-collected-cddl">
<name>Collected CDDL rules from this specification</name> <name>Collected CDDL Rules from This Specification</name>
<sourcecode name="time-tag-collected-cddl.cddl" type="cddl"><![CDATA[ <sourcecode name="time-tag-collected-cddl.cddl" type="cddl"><![CDATA[
Etime = #6.1001(etime-detailed) Etime = #6.1001(etime-detailed)
etime-framework = { etime-framework = {
uint => any ; at least one base time uint => any ; at least one base time
* (nint/text) => any ; elective supplementary information * (nint/text) => any ; elective supplementary information
* uint => any ; critical supplementary information * uint => any ; critical supplementary information
} }
etime-detailed = ({ etime-detailed = ({
skipping to change at line 1342 skipping to change at line 1251
$$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 1366 skipping to change at line 1277
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 [IXDTF] 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 [IXDTF]; 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])
]]></sourcecode> ]]></sourcecode>
</figure> </figure>
</section> </section>
<section anchor="acknowledgements" numbered="false"> <section anchor="acknowledgements" numbered="false">
<name>Acknowledgements</name> <name>Acknowledgements</name>
<t>The authors would like to acknowledge the many comments from members <t>The authors would like to acknowledge the many comments from members
of the CBOR WG, of the CBOR WG,
<contact fullname="Francesca Palombini"/> for her AD review, and <contact fullname="Francesca Palombini"/> for her AD review,
<contact fullname="Thomas Fossati"/> and <contact fullname="Thomas Fossati"/> and
<contact fullname="Qin Wu"/> for their directorate reviews.</t> <contact fullname="Qin Wu"/> for their directorate reviews, and <contact fullnam
<!-- LocalWords: CBOR extensibility IANA uint sint IEEE endian TAI e="Rohan Mahy"/> for one more review late in the process.</t>
--> </section>
<!-- LocalWords: signedness endianness NTP IXDTF
-->
</section>
</back> </back>
<!-- ##markdown-source:
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
+Gz2y9nZbGATlbLFLTkWa32C4NhRqKBRQQH07mwonyXi1Mb+EHq2hc4fPqga
l4f6n4RPxGpHQYKsrTK9JdbAzgFuoCqB/nI2N7Me0dt7nuk9ig3ZXOCf9za4
Q3yCQhC6QgMJ+xhI9mZsl/he/za8CGXl5lEeuMsDvUDye93MknFLf/vESj0Z
eEB30jB14zAwjS5XBxIy6c4iHvkDvwmLt8hW27fLwB26M4nmpf9qCRe2tLdG
EOx70thl7dVrA6FPLHlYfQKAcVxDaBvGNohxjDMigl6olTVGtqpUuDTYHrJi
b910f/cT9w8+cb/X/9SAnU8N2LcDWIg8ycrICWTrYTFZcelulQnLwJYo7anV
qCDqKU62CVpwvE+Av7UqJjAmNDc59DCBoOTgpTWc2YrTb9jDII5+o5s267fX
6e91epji+vqIefo78EeMdIEJoPNTJZG4CJQqvm/3xeFBKWVwO1NGvUpdnQtL
thHNiLiGWXwjBPI44DiPaBjyYXF6EeZxmJYkFI5ZQ7C68lYvSt1uHxFRFBu+
KS9epwU2hzIrMz/ZFOUlIN4V7YUEjEi4LueDDyQdDBUqN62UMNXURjOJHOFq
z/EflwKYmjMnmaEFrbtk9cm2UUD6/8w5dde34PA4J89WW9ihLnXOitbp/1ry
x5krXc/qIj+wrVwETUwlcR4r/XvHM3V8i+3s8KSKvilUmjerqnkOOdoi+ZaZ
s9kjKZYuYUXD8dTd7pD/k6kQab++rlX5k/In9NUudvclMP4pru/BjjW38OuU
zOhjci9WL2ka/b+MF7IsR0NShh8dQ8poqHuGU08mbEYJAuClGRZs15ztyjd3
CCg4zBVzTdZZ/baJoZ2vB6mKlXhocaf2F1SdcsJBjpYiBlxF/JyOgmK1tpkl
ck4jRYXJWYDRONYBV5JZxAiTas6O79av2RdmL8YK9PIUxrGvdm1de9WU/Adf
rTv3zZpIRNZhZjMgaeYnHRsPn51KaPDJ2bMG0vxpuSAqQtUs5FkUjiVXw3xX
zWIyFsJBSNRLRtQUFpCApH+SysLAbfKPSyNFEJsHPZJXOAvCYhSTCfNOla+v
iaA+kEtIn7AMHeh+v7t/sL+/TzT/8iVGEDmZEdNF8UF/qbd7Owe7g/3egfOy
bDjI+FiyUiwL5wxoLU/lvgMoK8XrYVgQHXxQ99Qx1+zdZgKNhmKcs4cG11aq
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
aP745OyZOebDz/0/NeYLXtSLAAA=
</rfc> </rfc>
 End of changes. 157 change blocks. 
723 lines changed or deleted 321 lines changed or added

This html diff was produced by rfcdiff 1.48.