<?xmlversion='1.0' encoding='utf-8'?>version="1.0" encoding="UTF-8"?> <!DOCTYPE rfc [ <!ENTITY nbsp " "> <!ENTITY zwsp "​"> <!ENTITY nbhy "‑"> <!ENTITY wj "⁠"> ]><?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?><!-- 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="std" consensus="true" docName="draft-ietf-cbor-time-tag-12" number="9581" ipr="trust200902" sortRefs="true"submissionType="IETF"symRefs="true" tocInclude="true" updates="" obsoletes="" xml:lang="en" version="3"> <!-- xml2rfc v2v3 conversion 3.18.1 --> <front> <title abbrev="CBORtagTag forextended time">ConciseExtended Time">Concise Binary Object Representation (CBOR) Tags for Time, Duration, and Period</title> <seriesInfoname="Internet-Draft" value="draft-ietf-cbor-time-tag-12"/>name="RFC" value="9581"/> <author fullname="Carsten Bormann" initials="C." surname="Bormann"> <organization>Universität Bremen TZI</organization> <address> <postal> <street>Postfach 330440</street> <city>Bremen</city> <code>D-28359</code> <country>Germany</country> </postal> <phone>+49-421-218-63921</phone> <email>cabo@tzi.org</email> </address> </author> <author fullname="Ben Gamari" initials="B." surname="Gamari"> <organization>Well-Typed</organization> <address> <postal> <street>117 Middle Rd.</street> <city>Portsmouth</city> <region>NH</region> <code>03801</code> <country>UnitedStates</country>States of America</country> </postal> <email>ben@well-typed.com</email> </address> </author> <author fullname="Henk Birkholz" initials="H." surname="Birkholz"> <organization abbrev="Fraunhofer SIT">Fraunhofer Institute for Secure Information Technology</organization> <address> <postal> <street>Rheinstrasse 75</street> <city>Darmstadt</city> <code>64295</code> <country>Germany</country> </postal><email>henk.birkholz@sit.fraunhofer.de</email><email>henk.birkholz@ietf.contact</email> </address> </author> <dateyear="2023"/> <keyword>Internet-Draft</keyword>year="2024" month="August"/> <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> <?line 167?> <t>The Concise Binary Object Representation (CBOR, RFC 8949) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation.</t> <t>In CBOR, one point of extensibility is the definition of CBOR tags. RFC 8949 defines two tags for time: CBOR tag 0(RFC3339(RFC 3339 time as a string) and tag 1 (POSIX time as int or float). Since then, additional requirements have become known. The present document defines a CBOR tag for time that allows a more elaborate representation of time, as well as related CBOR tags for duration and time period. This document is intended as the reference document for the IANA registration of the 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><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/browse/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> <middle> <?line 191?> <section anchor="intro"> <name>Introduction</name> <t>The Concise Binary Object Representation(CBOR,(CBOR) <xreftarget="RFC8949"/>)target="RFC8949"/> provides for the interchange of structured data without a requirement for a pre-agreed schema. 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 an IANA registry for CBOR tags(<xref(see <xref target="IANA.cbor-tags"/> and <xref section="9.2" sectionFormat="of"target="RFC8949"/>, <xref target="IANA.cbor-tags"/>).</t>target="RFC8949"/>).</t> <t>RFC 8949 defines two tags for time: CBOR tag 0(RFC3339(<xref target="RFC3339"/> time as a string) and tag 1 (POSIX time as int or float). Since then, additional requirements have become known. The present document defines a CBOR tag for time that allows a more elaborate representation of time, as well as related CBOR tags fordurationdurations and timeperiod.periods. This document is intended as the reference document for the IANA registration of the CBOR tags defined.</t> <section anchor="terms"> <name>Terminology</name><t>The<t> The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> <?line -18?> <t>The term "byte" is used in its now customary sense as a synonym for "octet".</t> <t>Superscript notation denotes exponentiation. For example, 2 to the power of 64 is notated: 2<sup>64</sup>. In the plain-text rendition of this specification, superscript notation is not available and exponentiationthereforeis therefore rendered by the surrogate notation seen here in the plain-text rendition.</t> <t>CBOR diagnostic notation is defined in <xref section="8" sectionFormat="of" target="RFC8949"/> and <xref section="G" sectionFormat="of" target="RFC8610"/>. A machine-processable model of the data structures defined in this specification is provided throughout the text using the Concise Data DefinitionLanguage, CDDLLanguage (CDDL) <xref target="RFC8610"/>; <xref target="collected-cddl"/> provides the collected model information.</t> <t>Several time-relatedtermsterms, such as UTC andTAIInternational Atomic Time (TAI), are discussed in <xreftarget="IXDTF"/>,target="RFC9557"/>, which may be a useful companion document beyond its direct use in Sections <xref format="counter" target="tzh"/> and <xref format="counter" target="suff"/>.</t> </section> </section> <section anchor="objectives"> <name>Objectives</name> <t>For the time tag, the present specification addresses the following objectives that go beyond the original tags 0 and 1 (defined in Sections <xref section="3.4.1" sectionFormat="bare" target="RFC8949"/> and <xref section="3.4.2" sectionFormat="bare" target="RFC8949"/> of <xref target="RFC8949"/>):</t> <ul spacing="normal"> <li> <t>Additional resolution for epoch-based time (as in tag 1). CBOR tag 1 only provides for representation of time as an integer and as up to a binary64floating point representation of times, limitingfloating-point value <xref target="IEEE754"/>, which limits the resolution to approximately microseconds at the time of writing(and progressively(progressively becoming worse over time).</t> </li> <li> <t>Indication of timescale. Tags 0 and 1 are defined for UTC; however, some interchanges are better performed on TAI. Other timescales may be registered once they become relevant (e.g., one of the proposed successors to UTC that might no longer use leapseconds,seconds or a scale based on smeared leap seconds).</t> </li> </ul> <t>By incorporating a way to transport <xreftarget="IXDTF"/>target="RFC9557"/> suffix information(<xref target="tzh"/>,(see Sections <xreftarget="suff"/>),target="tzh" format="counter"/> and <xref target="suff" format="counter"/>), additional indicationscan be providedof intents about the interpretation of the timegiven,given can be provided; inparticular alsoparticular, for instances of time that, at the time they are being described, are in the future. Intents might include information about time zones, daylightsavingssaving times, preferred calendar representations, etc.</t> <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 <tt>etime-detailed</tt> in <xref target="tag-1001"/>), the specification for which is referenced by the registry entry (see <xref target="time-format"/>).</t> <t>For example, map keys could be registered for direct representations of natural platform time formats. Some platforms use epoch-based time formats that require some computation to convert them into the representations allowed by tag 1; these computations can also lose precision and cause ambiguities. (The present specification does not take a position on whether tag 1 can be "fixed" to include, e.g., Decimal orBigFloatBigfloat representations. It does define how to use these representations with the extended time format.)</t> <t>Additional tags are defined for durations and periods.</t> </section> <section anchor="time-format"> <name>Time Format</name> <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 and 1) or text string (major type 3) keys, with the value type determined by each specific key. For negative integer keys and text string values of the key, implementations <bcp14>MUST</bcp14> ignore key/value pairs they do not understand; 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 implement them. Conversely,for unsigned integer keys,implementations <bcp14>MUST</bcp14> signalasan error when encountering key/value pairs that use unsigned integer keys they do not understand or implement (these are either "base time" or "critical", see below).</t> <t>The map <bcp14>MUST</bcp14> contain exactly one unsigned integer key that specifies the "basetime",time" and <bcp14>MAY</bcp14> also contain one or more negative integer or text-string keys, which may encode supplementary information.</t> <t>Supplementary information <bcp14>MAY</bcp14> also be provided by additional unsigned integer keys that are explicitly defined to provide supplementary information (we say these keys are defined to be "critical"); as these are required to be understood, there can be no confusion with base time keys.</t> <t>Negative integer and text string keys always supply supplementary information (they are "elective", and this will not be explicitly stated below).</t> <t>Supplementary information may include:</t> <ul spacing="normal"> <li> <t>a higher precision time offset to be added to the base time,</t> </li> <li> <t>a reference timescale and epoch different from the default UTC and1970-01-01</t>1970-01-01, and</t> </li> <li> <t>information about clock quality parameters, such as source, accuracy, anduncertainty</t>uncertainty.</t> </li> </ul> <t>Additional keys can be defined by registering them in the "Time Tag MapKey RegistryKeys" registry (<xref target="map-key-registry"/>). Registered keys may, for instance, add intent information such astimezone andtime zone, daylightsavingssaving time, and/or possibly positioningcoordinates,coordinates to express information that would indicate a local time.</t> <t>This document does not define supplementary text keys. A number of both unsigned and negative-integer keys are defined in the following subsections.</t> <t><xref target="tag-1001"/> provides a formal definition ofTagtag 1001 in CDDL.</t> <figure anchor="tag-1001"> <name>CDDLdefinitionDefinition of Tag 1001</name> <sourcecode type="cddl"><![CDATA[ Etime = #6.1001(etime-detailed) etime-framework = { uint => any ; at least one base time * (nint/text) => any ; elective supplementary information * uint => any ; critical supplementary information } etime-detailed = ({ $$ETIME-BASETIME ClockQuality-group * $$ETIME-ELECTIVE * $$ETIME-CRITICAL * ((nint/text) .feature "etime-elective-extension") => any * (uint .feature "etime-critical-extension") => any }) .within etime-framework ]]></sourcecode> </figure> <section anchor="key-1"> <name>Key 1</name> <t>Key 1 indicates a base time value that is exactly like the data item that would be tagged by CBOR tag 1 (POSIX time <xref target="TIME_T"/> as int or float). As described above, the time value indicated by the value under this key can be further modified by other keys.</t> <sourcecode type="cddl"><![CDATA[ $$ETIME-BASETIME //= (1: ~time) ]]></sourcecode> </section> <section anchor="keys-4-and-5"> <name>Keys 4 and 5</name> <t>Keys 4 and 5 indicate a base time value and are like key 1, except that the data item is an array as defined for CBOR tag 4 or 5, respectively. 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 avoid rounding errors.</t> <sourcecode type="cddl"><![CDATA[ $$ETIME-BASETIME //= (4: ~decfrac) $$ETIME-BASETIME //= (5: ~bigfloat) ]]></sourcecode> </section> <section anchor="keys-3-6-9-12-15-18"> <name>Keys -3, -6, -9, -12, -15, and -18</name> <t>The keys -3, -6, -9, -12,-15-15, and -18 indicate additional decimal fractions by 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 (see <xref target="decfract"/>). Each extended time data item <bcp14>MUST NOT</bcp14> contain more than one of these keys. These additional fractions are added to a base time in seconds <xref target="SI-SECOND"/> indicated bya Keykey 1, which then <bcp14>MUST</bcp14> also be present and <bcp14>MUST</bcp14> have an integer value.</t> <table anchor="decfract"><name>Key<name>Keys fordecimally scaledDecimally Scaled Fractions</name> <thead> <tr> <th align="left">Key</th> <thalign="left">meaning</th>align="left">Meaning</th> <thalign="left">example usage</th>align="left">Example Usage</th> </tr> </thead> <tbody> <tr> <td align="left">-3</td> <td align="left">milliseconds</td> <td align="left">Java time</td> </tr> <tr> <td align="left">-6</td> <td align="left">microseconds</td> <td align="left">(old) UNIX time</td> </tr> <tr> <td align="left">-9</td> <td align="left">nanoseconds</td> <td align="left">(new) UNIX time</td> </tr> <tr> <td align="left">-12</td> <td align="left">picoseconds</td> <td align="left">Haskell time</td> </tr> <tr> <td align="left">-15</td> <td align="left">femtoseconds</td> <td align="left">(future)</td> </tr> <tr> <td align="left">-18</td> <td align="left">attoseconds</td> <td align="left">(future)</td> </tr> </tbody> </table> <sourcecode type="cddl"><![CDATA[ $$ETIME-ELECTIVE //= (-3: uint) $$ETIME-ELECTIVE //= (-6: uint) $$ETIME-ELECTIVE //= (-9: uint) $$ETIME-ELECTIVE //= (-12: uint) $$ETIME-ELECTIVE //= (-15: uint) $$ETIME-ELECTIVE //= (-18: uint) ]]></sourcecode> <t>Note that these keys have been provided to facilitate representing 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"/>). 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.E.g.,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 achieved by also adjusting the base time appropriately.</t> </section> <section anchor="key-timescale"><name>Key -1:<name>Keys -1, -13, and 13: Timescale</name><t>Key -1 is<t>Keys -1, -13, and 13 are used to indicate atimescale. Thetimescale, where key 13 is 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 thePTP (PrecisionPrecision TimeProtocol)Protocol (PTP) epoch (1 January 1970 00:00:00 TAI, see <xref target="IEEE1588-2019"/> or <xref target="IEEE1588-2008"/>).</t> <sourcecode type="cddl"><![CDATA[ $$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE) $$ETIME-ELECTIVE //= (-13 => $ETIME-TIMESCALE) $$ETIME-CRITICAL //= (13 => $ETIME-TIMESCALE) $ETIME-TIMESCALE /= &(etime-utc: 0) $ETIME-TIMESCALE /= &(etime-tai: 1) ]]></sourcecode> <t>Ifkey -1 is notnone of the keys are present, the default timescale value 0 is implied.</t> <t>Timescale values <bcp14>MUST</bcp14> be unsigned integers or text strings; text strings are provided for experimentation and <bcp14>MUST NOT</bcp14> be used between partieswhichthat are not both part of the experiment. Additional unsigned integer values can be registered in theTimescale Registry"Timescales" registry (<xref target="timescale-registry"/>). (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 subtraction.)</t> <figure anchor="offset"> <name>Converting Common Offset Timescales</name> <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"> <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-STIXWEBNORMALI-1D461-gensym001" 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 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 -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 -259c0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450-gensym001" stroke-width="1"/> <path d="M637 320h-589v66h589v-66zM637 120h-589v66h589v-66Z" id="E1-STIXWEBMAIN-3D-gensym001" 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 -132 -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 56 -29 56 -62c0 -25 -6 -50 -11 -70l-59 -231c-1 -2 -1 -5 -1 -10c1 -6 4 -14 15 -14c24 0 48 36 62 53Z" id="E1-STIXWEBNORMALI-1D45B-gensym001" stroke-width="1"/> <path d="M253 370l14 13c39 37 78 58 113 58c61 0 94 -54 94 -155c0 -129 -110 -298 -254 -298c-24 0 -42 4 -61 19l-24 -100c-3 -13 -5 -24 -5 -35c0 -22 11 -43 61 -43h16l-3 -12h-234l3 12c62 3 69 33 81 79l117 464c0 19 -1 33 -31 33c-8 0 -20 -2 -28 -4l-2 16l158 24 l-18 -69zM214 238l-46 -200c14 -16 34 -21 46 -21c101 0 176 173 176 285c0 63 -28 83 -51 83c-53 0 -105 -61 -125 -147Z" id="E1-STIXWEBNORMALI-1D45D-gensym001" stroke-width="1"/> <path d="M621 220h-557v66h557v-66Z" id="E1-STIXWEBMAIN-2212-gensym001" stroke-width="1"/> <path d="M474 137l-54 -137h-391v12l178 189c94 99 130 175 130 260c0 91 -54 141 -139 141c-72 0 -107 -32 -147 -130l-21 5c21 117 85 199 208 199c113 0 185 -77 185 -176c0 -79 -39 -154 -128 -248l-165 -176h234c42 0 63 11 96 67Z" id="E1-STIXWEBMAIN-32-gensym001" stroke-width="1"/> <path d="M476 330c0 -172 -63 -344 -226 -344c-171 0 -226 186 -226 350c0 177 69 340 230 340c131 0 222 -141 222 -346zM380 325c0 208 -44 325 -132 325c-83 0 -128 -118 -128 -321s44 -317 130 -317c85 0 130 115 130 313Z" id="E1-STIXWEBMAIN-30-gensym001" stroke-width="1"/> <path d="M445 155c0 -103 -77 -169 -197 -169c-113 0 -192 69 -192 163c0 69 23 108 130 183c-103 85 -124 123 -124 188c0 96 83 156 194 156c99 0 168 -65 168 -143c0 -75 -35 -109 -134 -162c123 -82 155 -136 155 -216zM355 533c0 69 -41 115 -109 115 c-67 0 -110 -37 -110 -99s37 -108 125 -160c68 40 94 82 94 144zM271 272l-59 40c-59 -48 -80 -89 -80 -154c0 -92 51 -144 127 -144c65 0 110 45 110 110c0 62 -30 102 -98 148Z" id="E1-STIXWEBMAIN-38-gensym001" stroke-width="1"/> <path d="M59 -22l-3 20c152 27 264 132 304 296c-43 -42 -91 -57 -150 -57c-108 0 -180 81 -180 203c0 135 89 236 208 236c64 0 118 -28 157 -76c40 -50 64 -122 64 -206c0 -115 -40 -224 -120 -297c-85 -77 -150 -101 -280 -119zM362 355v39c0 168 -45 254 -132 254 c-30 0 -56 -12 -73 -34c-20 -27 -35 -86 -35 -140c0 -119 48 -194 123 -194c44 0 117 22 117 75Z" id="E1-STIXWEBMAIN-39-gensym001" stroke-width="1"/> <path d="M472 428l-91 -345s-1 -2 -1 -11c0 -11 6 -17 14 -17c10 0 25 2 64 54l12 -12c-31 -47 -85 -107 -133 -107c-33 0 -42 23 -42 55c0 13 6 34 11 50h-4c-72 -92 -134 -105 -173 -105c-63 0 -89 55 -89 119c0 132 132 332 276 332c43 0 64 -24 66 -46h1l9 33h80zM367 341 c0 41 -12 71 -50 71c-68 0 -128 -87 -162 -171c-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-gensym001" stroke-width="1"/> <path d="M257 566c0 -26 -22 -46 -48 -46c-29 0 -48 20 -48 46c0 25 19 50 48 50c26 0 48 -25 48 -50zM227 441l-92 -364c-1 -6 -1 -10 -1 -14c0 -7 6 -10 13 -10c22 0 28 12 64 51l13 -10c-35 -45 -85 -105 -134 -105c-28 0 -40 19 -40 46c0 12 0 31 79 338c1 2 2 9 2 12 c0 17 -8 22 -31 22c-9 0 -21 -2 -28 -4l-3 16Z" id="E1-STIXWEBNORMALI-1D456-gensym001" stroke-width="1"/> <path d="M492 413l-13 -45h-81c13 -15 17 -28 17 -50c0 -75 -53 -137 -141 -148c-59 -8 -88 -33 -88 -58c0 -63 233 -23 233 -148c0 -71 -66 -151 -215 -151c-134 0 -184 57 -184 115s55 88 117 108c-17 11 -24 30 -24 47c0 38 37 87 85 87v4c-67 15 -94 62 -94 109 c0 79 68 158 174 158c42 0 73 -13 88 -28h126zM336 349c0 37 -10 62 -54 62c-54 0 -98 -71 -98 -139c0 -46 12 -81 56 -81c71 0 96 102 96 158zM349 -69c0 78 -132 73 -192 95c-8 -5 -18 -10 -26 -16c-26 -19 -48 -45 -48 -72c0 -47 44 -97 139 -97c91 0 127 46 127 90Z" id="E1-STIXWEBNORMALI-1D454-gensym001" stroke-width="1"/> <path d="M390 441l-24 -146h-15c0 64 -36 120 -92 120c-25 0 -51 -17 -51 -58c0 -55 134 -147 134 -242c0 -62 -48 -125 -135 -125c-34 0 -98 20 -110 20c-9 0 -18 -4 -30 -21h-17l25 156h16c0 -63 41 -130 104 -130c59 0 73 50 73 89c0 82 -130 132 -130 230c0 79 59 107 114 107 c43 0 63 -20 92 -20c11 0 22 10 30 20h16Z" id="E1-STIXWEBNORMALI-1D460-gensym001" stroke-width="1"/> <path d="M636 220h-261v-261h-66v261h-261v66h261v261h66v-261h261v-66Z" id="E1-STIXWEBMAIN-2B-gensym001" stroke-width="1"/> <path d="M61 510l-16 4c29 95 92 162 196 162c93 0 156 -55 156 -137c0 -48 -26 -98 -93 -138c44 -19 62 -31 83 -53c28 -31 44 -77 44 -129c0 -53 -17 -102 -46 -140c-48 -64 -143 -93 -232 -93c-73 0 -112 21 -112 57c0 21 18 36 41 36c17 0 33 -6 61 -26c37 -26 58 -31 86 -31 c74 0 130 68 130 153c0 76 -35 125 -104 145c-22 7 -45 10 -102 10v14c38 13 64 24 84 36c49 28 81 73 81 134c0 68 -42 102 -108 102c-62 0 -108 -32 -149 -106Z" id="E1-STIXWEBMAIN-33-gensym001" stroke-width="1"/> <path d="M394 0h-276v15c74 4 95 25 95 80v449c0 34 -9 49 -30 49c-10 0 -27 -5 -45 -12l-27 -10v14l179 91l9 -3v-597c0 -43 20 -61 95 -61v-15Z" id="E1-STIXWEBMAIN-31-gensym001" stroke-width="1"/> <path d="M438 681l-36 -85c-3 -7 -11 -13 -27 -13h-194l-40 -85c143 -27 193 -49 250 -128c26 -36 35 -74 35 -127c0 -96 -30 -158 -98 -208c-47 -34 -102 -49 -170 -49c-75 0 -127 24 -127 62c0 25 17 38 45 38c23 0 42 -5 74 -31c28 -23 51 -32 71 -32c70 0 135 83 135 169 c0 64 -22 114 -67 150c-47 38 -117 70 -213 70c-9 0 -12 2 -12 8c0 2 1 5 1 5l109 237h207c23 0 32 5 48 26Z" id="E1-STIXWEBMAIN-35-gensym001" stroke-width="1"/> <path d="M446 684l2 -16c-157 -26 -269 -134 -296 -285c49 38 83 45 127 45c117 0 189 -80 189 -209c0 -64 -18 -120 -51 -160c-37 -46 -93 -73 -159 -73c-79 0 -142 37 -177 101c-28 51 -47 122 -47 192c0 108 38 203 109 276c86 90 165 114 303 129zM378 188 c0 128 -42 194 -135 194c-57 0 -116 -24 -116 -116c0 -152 48 -252 142 -252c72 0 109 72 109 174Z" id="E1-STIXWEBMAIN-36-gensym001" stroke-width="1"/> <path d="M473 167h-103v-167h-78v167h-280v64l314 445h44v-445h103v-64zM292 231v343l-240 -343h240Z" id="E1-STIXWEBMAIN-34-gensym001" stroke-width="1"/> </defs> <g fill="black" stroke="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"> <g transform="translate(16540,0)"> <use xlink:href="#E1-STIXWEBNORMALI-1D461-gensym001" x="0" y="0"/> <g transform="translate(313,-150)"> <use xlink:href="#E1-STIXWEBNORMALI-1D462-gensym001" transform="scale(0.707)" x="0" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D461-gensym001" transform="scale(0.707)" x="474" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D450-gensym001" transform="scale(0.707)" x="788" y="0"/> </g> <use xlink:href="#E1-STIXWEBMAIN-3D-gensym001" x="1542" y="0"/> <g transform="translate(2505,0)"> <use xlink:href="#E1-STIXWEBNORMALI-1D461-gensym001" x="0" y="0"/> <g transform="translate(313,-150)"> <use xlink:href="#E1-STIXWEBNORMALI-1D45B-gensym001" transform="scale(0.707)" x="0" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D461-gensym001" transform="scale(0.707)" x="497" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D45D-gensym001" transform="scale(0.707)" x="810" y="0"/> </g> </g> <use xlink:href="#E1-STIXWEBMAIN-2212-gensym001" x="4060" y="0"/> <g transform="translate(4968,0)"> <use xlink:href="#E1-STIXWEBMAIN-32-gensym001"/> <use xlink:href="#E1-STIXWEBMAIN-32-gensym001" x="500" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-30-gensym001" x="1001" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-38-gensym001" x="1501" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-39-gensym001" x="2002" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-38-gensym001" x="2502" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-38-gensym001" x="3003" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-38-gensym001" x="3503" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-30-gensym001" x="4004" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-30-gensym001" x="4504" y="0"/> </g> </g> <g transform="translate(16774,-1400)"> <use xlink:href="#E1-STIXWEBNORMALI-1D461-gensym001" x="0" y="0"/> <g transform="translate(313,-150)"> <use xlink:href="#E1-STIXWEBNORMALI-1D461-gensym001" transform="scale(0.707)" x="0" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D44E-gensym001" transform="scale(0.707)" x="313" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D456-gensym001" transform="scale(0.707)" x="816" y="0"/> </g> <use xlink:href="#E1-STIXWEBMAIN-3D-gensym001" x="1488" y="0"/> <g transform="translate(2451,0)"> <use xlink:href="#E1-STIXWEBNORMALI-1D461-gensym001" x="0" y="0"/> <g transform="translate(313,-150)"> <use xlink:href="#E1-STIXWEBNORMALI-1D454-gensym001" transform="scale(0.707)" x="0" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D45D-gensym001" transform="scale(0.707)" x="492" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D460-gensym001" transform="scale(0.707)" x="982" y="0"/> </g> </g> <use xlink:href="#E1-STIXWEBMAIN-2B-gensym001" x="4093" y="0"/> <g transform="translate(5001,0)"> <use xlink:href="#E1-STIXWEBMAIN-33-gensym001"/> <use xlink:href="#E1-STIXWEBMAIN-31-gensym001" x="500" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-35-gensym001" x="1001" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-39-gensym001" x="1501" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-36-gensym001" x="2002" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-34-gensym001" x="2502" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-38-gensym001" x="3003" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-31-gensym001" x="3503" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-39-gensym001" x="4004" y="0"/> </g> </g> </g> </svg> </artwork> <artwork type="ascii-art"><![CDATA[t = t - 2208988800 utc ntp t = t + 315964819 tai gps ]]></artwork> </artset> </figure> <aside> <t>Editor's note: This initial set of timescales was deliberately chosen to be frugal, as the specification of the tag provides an extension point where additional timescales can be registered at any time. Registrations are clearly needed for earth-referenced timescales (such as UT1 and TT), as well as possibly for specific realizations of abstracttime scalestimescales (such asTAI(USNO)TAI(USNO), the specific realization obtained at the United States Naval Observatory, which is more accurate as a constant offset basis for GPS times). While the registration process itself is trivial, these registrations need to be made based on a solid specification of their actual definition.</t> </aside> </section> <section anchor="clock-quality"> <name>Clock Quality</name> <t>A number of keys are defined to indicate the quality of the clock that was used to determine the point in time.</t> <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="IEEE1588-2008"/>; the last two are specific to this document.</t> <sourcecode type="cddl"><![CDATA[ ClockQuality-group = ( ? &(ClockClass: -2) => uint .size 1 ; PTP/RFC8575 ? &(ClockAccuracy: -4) => uint .size 1 ; PTP/RFC8575 ? &(OffsetScaledLogVariance: -5) => uint .size 2 ; PTP/RFC8575 ? &(Uncertainty: -7) => ~time/~duration ? &(Guarantee: -8) => ~time/~duration ) ]]></sourcecode> <section anchor="clockclass-key-2"> <name>ClockClass (Key -2)</name> <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="IEEE1588-2008"/>; Table 4 in Section 7.6.2.5 of <xref target="IEEE1588-2019"/> has updated language). It is defined as a one-byte unsigned integer as that is the range defined in IEEE 1588.</t> </section> <section anchor="clockaccuracy-key-4"> <name>ClockAccuracy (Key -4)</name> <t>Key -4 (ClockAccuracy) can be used to indicate the clock accuracy as per <xref target="RFC8575"/> (which is based on Table 6 in Section 7.6.2.5 of <xref target="IEEE1588-2008"/>; additional values have been defined in Table 5 in 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. The range between 23 and 47 is a slightly distorted logarithmic scale from1 ps1 ps to1 s1 s in <xref target="IEEE1588-2019"/> (in <xreftarget="IEEE1588-2008"/>target="IEEE1588-2008"/>, the range was a subset of that, 32 to 47 for25 ns25 ns to1 s) —1 s) -- see <xref target="formula-accuracy-enum"/>; the number 254 is the 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"> <name>ApproximateconversionConversion fromaccuracyAccuracy toaccuracy enumeration value</name>Accuracy Enumeration Value</name> <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 -1221.9 14098.6 2013.3" width="32.745ex"> <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 -127 -167 -176 -286 -182v-28c0 -64 52 -107 113 -107c42 0 90 18 126 64zM124 211h9c104 0 198 69 198 157c0 25 -19 43 -44 43 c-74 0 -134 -115 -163 -200Z" id="E1-STIXWEBNORMALI-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 -132 -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 56 -29 56 -62c0 -25 -6 -50 -11 -70l-59 -231c-1 -2 -1 -5 -1 -10c1 -6 4 -14 15 -14c24 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 100 77c43 57 89 146 109 219l21 75h77Z" id="E1-STIXWEBNORMALI-1D462-gensym002" stroke-width="1"/> <path d="M667 107l13 -11c-32 -54 -84 -104 -131 -104c-22 0 -39 10 -39 49c0 7 1 17 6 37l56 221c4 14 6 23 6 40c0 20 -6 38 -24 38c-54 0 -164 -181 -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 24l-44 -169h6c94 143 154 169 192 169c37 0 55 -37 55 -81c0 -17 -3 -32 -9 -52l-10 -36h5c29 52 81 114 130 147c22 15 41 22 61 22c36 0 54 -26 54 -71c0 -18 -1 -37 -7 -61l-61 -231c-1 -3 -2 -9 -2 -12 c0 -8 6 -12 15 -12c17 0 43 16 62 53Z" id="E1-STIXWEBNORMALI-1D45A-gensym002" stroke-width="1"/> <path d="M472 428l-91 -345s-1 -2 -1 -11c0 -11 6 -17 14 -17c10 0 25 2 64 54l12 -12c-31 -47 -85 -107 -133 -107c-33 0 -42 23 -42 55c0 13 6 34 11 50h-4c-72 -92 -134 -105 -173 -105c-63 0 -89 55 -89 119c0 132 132 332 276 332c43 0 64 -24 66 -46h1l9 33h80zM367 341 c0 41 -12 71 -50 71c-68 0 -128 -87 -162 -171c-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 -259c0 -87 49 -109 94 -109 c61 0 107 33 142 67Z" id="E1-STIXWEBNORMALI-1D450-gensym002" stroke-width="1"/> <path d="M604 475h33c-6 -85 -60 -204 -158 -204c-96 0 -203 128 -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 -275 128c-70 0 -107 -67 -123 -138h-33 c5 100 65 204 163 204c96 0 203 -128 276 -128c69 0 102 67 117 138Z" id="E1-STIXWEBMAIN-2248-gensym002" stroke-width="1"/> <path d="M473 167h-103v-167h-78v167h-280v64l314 445h44v-445h103v-64zM292 231v343l-240 -343h240Z" id="E1-STIXWEBMAIN-34-gensym002" stroke-width="1"/> <path d="M445 155c0 -103 -77 -169 -197 -169c-113 0 -192 69 -192 163c0 69 23 108 130 183c-103 85 -124 123 -124 188c0 96 83 156 194 156c99 0 168 -65 168 -143c0 -75 -35 -109 -134 -162c123 -82 155 -136 155 -216zM355 533c0 69 -41 115 -109 115 c-67 0 -110 -37 -110 -99s37 -108 125 -160c68 40 94 82 94 144zM271 272l-59 40c-59 -48 -80 -89 -80 -154c0 -92 51 -144 127 -144c65 0 110 45 110 110c0 62 -30 102 -98 148Z" id="E1-STIXWEBMAIN-38-gensym002" stroke-width="1"/> <path d="M636 220h-261v-261h-66v261h-261v66h261v261h66v-261h261v-66Z" id="E1-STIXWEBMAIN-2B-gensym002" stroke-width="1"/> <path d="M447 -213h-259v926h66v-798c0 -64 19 -95 84 -95h109v-33Z" id="E1-STIXWEBMAIN-230A-gensym002" stroke-width="1"/> <path d="M474 137l-54 -137h-391v12l178 189c94 99 130 175 130 260c0 91 -54 141 -139 141c-72 0 -107 -32 -147 -130l-21 5c21 117 85 199 208 199c113 0 185 -77 185 -176c0 -79 -39 -154 -128 -248l-165 -176h234c42 0 63 11 96 67Z" id="E1-STIXWEBMAIN-32-gensym002" stroke-width="1"/> <path d="M203 253c0 -32 -27 -60 -59 -60c-33 0 -61 30 -61 60s28 60 61 60c32 0 59 -28 59 -60Z" id="E1-STIXWEBMAIN-22C5-gensym002" stroke-width="1"/> <path d="M278 668l-148 -591s-1 -4 -1 -11s4 -13 12 -13c23 0 53 39 62 55l16 -12c-34 -40 -77 -106 -135 -106c-30 0 -39 26 -39 51c0 12 3 26 6 36l128 510c3 13 3 21 3 24c0 12 -8 22 -31 22c-7 0 -19 -2 -27 -3l-3 15Z" id="E1-STIXWEBNORMALI-1D459-gensym002" stroke-width="1"/> <path d="M438 287c0 -139 -110 -298 -263 -298c-101 0 -135 90 -135 163c0 128 103 289 251 289c80 0 147 -46 147 -154zM357 318c0 38 -14 93 -67 93c-82 0 -169 -149 -169 -285c0 -33 3 -107 59 -107c106 0 177 223 177 299Z" id="E1-STIXWEBNORMALI-1D45C-gensym002" stroke-width="1"/> <path d="M492 413l-13 -45h-81c13 -15 17 -28 17 -50c0 -75 -53 -137 -141 -148c-59 -8 -88 -33 -88 -58c0 -63 233 -23 233 -148c0 -71 -66 -151 -215 -151c-134 0 -184 57 -184 115s55 88 117 108c-17 11 -24 30 -24 47c0 38 37 87 85 87v4c-67 15 -94 62 -94 109 c0 79 68 158 174 158c42 0 73 -13 88 -28h126zM336 349c0 37 -10 62 -54 62c-54 0 -98 -71 -98 -139c0 -46 12 -81 56 -81c71 0 96 102 96 158zM349 -69c0 78 -132 73 -192 95c-8 -5 -18 -10 -26 -16c-26 -19 -48 -45 -48 -72c0 -47 44 -97 139 -97c91 0 127 46 127 90Z" id="E1-STIXWEBNORMALI-1D454-gensym002" stroke-width="1"/> <path d="M394 0h-276v15c74 4 95 25 95 80v449c0 34 -9 49 -30 49c-10 0 -27 -5 -45 -12l-27 -10v14l179 91l9 -3v-597c0 -43 20 -61 95 -61v-15Z" id="E1-STIXWEBMAIN-31-gensym002" stroke-width="1"/> <path d="M476 330c0 -172 -63 -344 -226 -344c-171 0 -226 186 -226 350c0 177 69 340 230 340c131 0 222 -141 222 -346zM380 325c0 208 -44 325 -132 325c-83 0 -128 -118 -128 -321s44 -317 130 -317c85 0 130 115 130 313Z" id="E1-STIXWEBMAIN-30-gensym002" stroke-width="1"/> <path d="M156 301l104 -63c64 -39 88 -66 88 -123c0 -67 -64 -125 -140 -125c-21 0 -50 1 -73 9c-24 8 -35 9 -46 9c-12 0 -18 -2 -24 -12h-13v157h16c21 -97 58 -141 127 -141c51 0 83 33 83 74c0 31 -20 57 -53 75l-54 30c-83 46 -120 94 -120 145c0 79 56 123 138 123 c24 0 46 -1 67 -11c11 -5 21 -8 28 -8c4 0 8 1 16 10h11l5 -136h-15c-23 90 -53 123 -113 123c-43 0 -75 -21 -75 -68c0 -22 15 -51 43 -68Z" id="E1-STIXWEBMAIN-73-gensym002" stroke-width="1"/> <path d="M621 220h-557v66h557v-66Z" id="E1-STIXWEBMAIN-2212-gensym002" stroke-width="1"/> <path d="M444 372l-14 -8c-25 36 -60 47 -120 47c-63 0 -139 -44 -139 -113c0 -32 33 -51 78 -51c21 0 37 9 62 9c22 0 38 -7 38 -20c0 -17 -10 -31 -43 -31c-9 0 -40 6 -61 6c-49 0 -133 -33 -133 -103c0 -61 65 -78 125 -78c53 0 118 26 151 73l13 -10 c-42 -59 -99 -104 -210 -104c-124 0 -166 50 -166 102c0 73 49 120 116 137c-35 12 -58 33 -58 66c0 81 83 147 225 147c62 0 123 -33 136 -69Z" id="E1-STIXWEBNORMALI-1D700-gensym002" stroke-width="1"/> <path d="M286 -213h-259v33h109c65 0 84 31 84 95v798h66v-926Z" id="E1-STIXWEBMAIN-230B-gensym002" stroke-width="1"/> </defs> <g fill="black" stroke="currentColor" stroke-width="0" transform="matrix(1 0 0 -1 0 0)"> <use xlink:href="#E1-STIXWEBNORMALI-1D452-gensym002" x="0" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D45B-gensym002" x="445" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D462-gensym002" x="943" y="0"/> <g transform="translate(1417,0)"> <use xlink:href="#E1-STIXWEBNORMALI-1D45A-gensym002" x="0" y="0"/> <g transform="translate(710,-150)"> <use xlink:href="#E1-STIXWEBNORMALI-1D44E-gensym002" transform="scale(0.707)" x="0" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D450-gensym002" transform="scale(0.707)" x="502" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D450-gensym002" transform="scale(0.707)" x="918" y="0"/> </g> </g> <use xlink:href="#E1-STIXWEBMAIN-2248-gensym002" x="3448" y="0"/> <g transform="translate(4411,0)"> <use xlink:href="#E1-STIXWEBMAIN-34-gensym002"/> <use xlink:href="#E1-STIXWEBMAIN-38-gensym002" x="500" y="0"/> </g> <use xlink:href="#E1-STIXWEBMAIN-2B-gensym002" x="5635" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-230A-gensym002" x="6542" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-32-gensym002" x="7012" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-22C5-gensym002" x="7735" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D459-gensym002" x="8243" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D45C-gensym002" x="8562" y="0"/> <g transform="translate(9020,0)"> <use xlink:href="#E1-STIXWEBNORMALI-1D454-gensym002" x="0" y="0"/> <g transform="translate(492,-150)"> <use xlink:href="#E1-STIXWEBMAIN-31-gensym002" transform="scale(0.707)"/> <use xlink:href="#E1-STIXWEBMAIN-30-gensym002" transform="scale(0.707)" x="500" y="0"/> </g> </g> <g transform="translate(10321,0)"> <g transform="translate(120,0)"> <rect height="60" width="1453" x="0" y="220"/> <g transform="translate(60,676)"> <use xlink:href="#E1-STIXWEBNORMALI-1D44E-gensym002" x="0" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D450-gensym002" x="502" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D450-gensym002" x="918" y="0"/> </g> <use xlink:href="#E1-STIXWEBMAIN-73-gensym002" x="532" y="-686"/> </g> </g> <use xlink:href="#E1-STIXWEBMAIN-2212-gensym002" x="12236" y="0"/> <use xlink:href="#E1-STIXWEBNORMALI-1D700-gensym002" x="13144" y="0"/> <use xlink:href="#E1-STIXWEBMAIN-230B-gensym002" x="13629" y="0"/> </g> </svg> </artwork> <artwork type="ascii-art"><![CDATA[ acc enum ≈ 48 + ⌊2 ⋅log ──── - ε⌋ acc 10 s ]]></artwork> </artset> </figure> </section> <section anchor="offsetscaledlogvariance-key-5"> <name>OffsetScaledLogVariance (Key -5)</name> <t>Key -5 (OffsetScaledLogVariance) can be used to represent the variance exhibited by the clock when it has lost its synchronization with an external reference clock. The details for the computation of this characteristic are defined in Section 7.6.3 of <xref target="IEEE1588-2019"/> and the same section in <xref target="IEEE1588-2008"/>.</t> </section> <section anchor="uncertainty-key-7"> <name>Uncertainty (Key -7)</name> <t>Key -7 (Uncertainty) can be used to represent a knownmeasurementuncertainty of measurement for theclock,clock as a numeric value in seconds or as a duration (<xref target="duration"/>).</t> <t>For this document, uncertainty is defined as in Section 2.2.3 of <xref target="GUM"/>: "parameter, associated with the result of a measurement, that characterizes the dispersion of the values that could reasonably be attributed to the measurand". More specifically, the value for this key represents the expanded uncertainty fork = 2k = 2 (Section 6.2.1 of <xreftarget="GUM"/>),target="GUM"/>) in seconds.</t> <t>Note that the additional information that can be meaningfully provided with the duration that represents an uncertainty is limited, e.g., it is not customary to provide an uncertainty for a duration representing an uncertainty. Implementations are free to reduce the information contained in an uncertainty (which is already elective) to the information they can process.</t> <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>-3</sup> seconds (milliseconds) could be expressed by one of the extended time tags in <xref target="uncertainty-example"/> (note the slight rounding error in the third case, which is probably inconsequential for an uncertainty value):</t> <figure anchor="uncertainty-example"> <name>Examples Using Uncertainty</name> <sourcecode type="cbor-diag"><![CDATA[ 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.001}}) ]]></sourcecode> </figure> </section> <section anchor="guarantee-key-8"> <name>Guarantee (Key -8)</name> <t>Key -8 (Guarantee) can be used to represent a stated guarantee for the accuracy of the point intime,time as a numeric value in seconds or as a duration (<xref target="duration"/>) representing the maximum allowed deviation from the true value.</t> <t>While such a guarantee is unattainable in theory, existing standards such as <xref target="RFC3161"/> stipulate the representation of such guarantees, and therefore this format provides a way to represent them as well; the time value given is nominally guaranteed to not deviate from the actual time by more than the value of theguarantee,guarantee in seconds.</t> <t>Note that the additional information that can be meaningfully provided with the duration that represents a guarantee is limited, e.g., it is not meaningful to provide a guarantee of accuracy for the duration representing a guarantee of accuracy. Implementations are free to reduce a guarantee (which is already elective) to the information they can process.</t> </section> </section> <section anchor="tzh"> <name>Keys -10, 10: Time Zone Hint</name> <t>Keys -10 and 10 supply supplementary information, where key 10 is critical.</t> <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 string in the format defined for <tt>time-zone-name</tt> or <tt>time-numoffset</tt> in <xreftarget="IXDTF"/>.target="RFC9557"/>. Key -10 is equivalent to providing this information as an elective 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> <t>Keys -10 and 10 <bcp14>MUST NOT</bcp14> both be present.</t> <sourcecode type="cddl"><![CDATA[ $$ETIME-ELECTIVE //= (-10: time-zone-info) $$ETIME-CRITICAL //= (10: time-zone-info) time-zone-info = tstr .abnf ("time-zone-name / time-numoffset" .det IXDTFtz) IXDTFtz = ' time-hour = 2DIGIT ; 00-23 time-minute = 2DIGIT ; 00-59 time-numoffset = ("+" / "-") time-hour ":" time-minute time-zone-initial = ALPHA / "." / "_" time-zone-char = time-zone-initial / DIGIT / "-" / "+" time-zone-part = time-zone-initial*13(time-zone-char)*time-zone-char ; but not "." or ".." time-zone-name = time-zone-part *("/" time-zone-part) ALPHA = %x41-5A / %x61-7A ; A-Z / a-z DIGIT = %x30-39 ; 0-9 ' ; extracted from[IXDTF][RFC9557] and[RFC3339]; update as needed[RFC3339] ]]></sourcecode> </section> <section anchor="suff"> <name>Keys -11, 11: IXDTF Suffix Information</name> <t>Keys -11 and 11 supply supplementary information, where key 11 is critical.</t> <t>Similar to keys -10 and 10, keys -11 (elective) and 11 (critical) can be used to provide additional information in the style ofIXDTFInternet Extended Date/Time Format (IXDTF) suffixes, such as the calendar that would best fit for displaying the time given to humans. 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> <sourcecode type="cddl"><![CDATA[ $$ETIME-ELECTIVE //= (-11: suffix-info-map) $$ETIME-CRITICAL //= (11: suffix-info-map) suffix-info-map = { * suffix-key => suffix-values } suffix-key = tstr .abnf ("suffix-key" .det IXDTF) suffix-values = one-or-more<suffix-value> one-or-more<T> = T / [ 2* T ] suffix-value = tstr .abnf ("suffix-value" .det IXDTF) IXDTF = ' key-initial = lcalpha / "_" key-char = key-initial / DIGIT / "-" suffix-key = key-initial *key-char suffix-value = 1*alphanum alphanum = ALPHA / DIGIT lcalpha = %x61-7A ALPHA = %x41-5A / %x61-7A ; A-Z / a-z DIGIT = %x30-39 ; 0-9 ' ; extracted from[IXDTF]; update as needed![RFC9557] ]]></sourcecode> <t>When keys -11 and 11bothare both present, the two maps <bcp14>MUST NOT</bcp14> have entries with the same map keys.</t> <t>Figure 4 of <xreftarget="IXDTF"/>target="RFC9557"/> gives an example for an extended date-time with both time zone and suffix information:</t> <artwork><![CDATA[ 1996-12-19T16:39:57-08:00[America/Los_Angeles][u-ca=hebrew] ]]></artwork> <t>A time tag that is approximating this example, in CBOR diagnostic notation, would be:</t> <sourcecode type="cbor-diag"><![CDATA[ / 1996-12-19T16:39:57-08:00[America//Los_Angeles][u-ca=hebrew] / 1001({ 1: 851042397, -10: "America/Los_Angeles", -11: { "u-ca": "hebrew" } }) ]]></sourcecode> <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.Note also thatAlso note that, in thisexampleexample, the time numeric offset (<tt>-08:00</tt>) is lost in translating from the <xref target="RFC3339"/> information in the IXDTF into a POSIX time that can be included underKeykey 1 in a time tag.</t> </section> </section> <section anchor="duration"> <name>Duration Format</name> <t>A duration is the length of an interval of time. Durations in this format are given inSIInternational System of Units (SI) seconds, possibly adjusted for conventional corrections of the timescale given (e.g., leap seconds).</t> <t>Except for usingTagtag 1002 instead of 1001, durations are structurally identical to time values.</t> <sourcecode type="cddl"><![CDATA[ Duration = #6.1002(etime-detailed) ]]></sourcecode> <t>Semantically, they do not measure the time elapsed from a givenepoch,epoch but from the start to the end of(an otherwisean (otherwise unspecified) interval of time.</t> <t>In combination with an epoch identified in the context, a duration can also be used to express an absolute time.</t> <t>Without such context, durations are subject to some uncertainties underlying the timescale used.E.g.,For example, for durations intended as a determinant of future time periods, there is some uncertainty of what irregularities (such as leapseconds,seconds and timescale corrections) will be exhibited by the timescale in that period. For durations as measurements of past periods, abstracting the period to a duration loses some detail about timescale irregularities. For many applications, these uncertainties are acceptable and thus the use of durations is appropriate.</t> <aside> <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 durations here.</t> </aside> </section> <section anchor="period"> <name>Period Format</name> <t>A period is a specific interval of time, specified as either two extended times giving the start and the end of thatinterval,interval or as one of these two plus a duration.</t> <t>This is represented as an array of unwrapped time and duration elements, tagged withTagtag 1003, one of:</t> <ul spacing="normal"> <li> <t>a start and end time, in which case the tag content is an array of two unwrapped extended timeelements;</t>elements, or</t> </li> <li> <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 above but either the start or end time <bcp14>MUST</bcp14> be set tonull;null and the third one then is an unwrapped duration.</t> </li> </ul> <t>A simple CDDL definition that does not capture all the constraints is:</t> <sourcecode type="cddl"><![CDATA[ simple-Period = #6.1003([ start: ~Etime / null end: ~Etime / null ? duration: ~Duration ]) ]]></sourcecode> <t>Exactly two out of the three elements must be present and non-null; this can be somewhat more verbosely expressed in CDDL as:</t> <sourcecode type="cddl"><![CDATA[ Period = #6.1003([ (start: ~Etime, ((end: ~Etime) // (end: null, duration: ~Duration))) // (start: null, end: ~Etime, duration: ~Duration) ]) ]]></sourcecode> </section> <section anchor="cddl-typenames"> <name>CDDLtypenames</name>Type Names</name> <t>When detailed validation is not needed, the type names defined in <xref target="tag-cddl"/> are recommended:</t> <figure anchor="tag-cddl"> <name>Recommendedtype namesType Names for CDDL</name> <sourcecode type="cddl"><![CDATA[ etime = #6.1001({* (int/tstr) => any}) duration = #6.1002({* (int/tstr) => any}) period = #6.1003([~etime/null, ~etime/null,~duration/null])?~duration]) ]]></sourcecode> </figure> </section> <section anchor="iana-considerations"> <name>IANA Considerations</name><t><cref anchor="to-be-removed">RFC Editor: please replace RFCthis with the RFC number of this RFC, and remove this note.</cref></t><section anchor="cbor-tags"> <name>CBORtags</name>Tags</name> <t>In the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, IANA has allocated the tags in <xreftarget="tab-tag-values"/> from what was at the time the FCFS space, with the present document as the specification reference.</t>target="tab-tag-values"/>.</t> <table anchor="tab-tag-values"> <name>Values for Tags</name> <thead> <tr> <th align="right">Tag</th> <th align="left">Data Item</th> <th align="left">Semantics</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="right">1001</td> <td align="left">map</td> <tdalign="left">[RFCthis] extendedalign="left">extended time</td> <td align="left">[RFC9581, <xref target="time-format"/>]</td> </tr> <tr> <td align="right">1002</td> <td align="left">map</td> <tdalign="left">[RFCthis] duration</td>align="left">duration</td> <td align="left">[RFC9581, <xref target="duration"/>]</td> </tr> <tr> <td align="right">1003</td> <td align="left">array</td> <tdalign="left">[RFCthis] period</td>align="left">period</td> <td align="left">[RFC9581, <xref target="period"/>]</td> </tr> </tbody> </table> <t>IANAis requested to changehas updated the "Data Item" column forTagtag 1003 from "map" to "array".</t> </section> <section anchor="timescale-registry"><name>Timescale<name>Timescales Registry</name><t>This specification defines<t>Per this specification, IANA has created a newregistry titled"Timescales"inregistry within the"CBOR"Concise Binary Object Representation (CBOR) Tags" registry group <xreftarget="IANA.cbor-tags"/>, with a Registration Procedure requiringtarget="IANA.cbor-tags"/>. The registration procedure requires both "Expert Review" and "RFC Required" (Sections <xref section="4.5" sectionFormat="bare"target="BCP26"/>target="RFC8126"/> and <xref section="4.7" sectionFormat="bare"target="BCP26"/>target="RFC8126"/> of RFC 8126 <xreftarget="BCP26"/>).</t>target="BCP26"/>, respectively).</t> <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: <tt>[A-Z][A-Z0-9]*</tt>), a value (CBOR unsigned integer, uint, 0..18446744073709551615), a brief description of the semantics, and a specification reference (RFC). The initial contents are shown in <xref target="tab-timescales"/>.</t> <table anchor="tab-timescales"> <name>Initial Content of Timescale Registry</name> <thead> <tr> <th align="left">Timescale</th> <th align="right">Value</th> <th align="left">Semantics</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="left">UTC</td> <td align="right">0</td> <td align="left">UTC with POSIX Epoch</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="left">TAI</td> <td align="right">1</td> <td align="left">TAI with PTP Epoch</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> </tbody> </table> </section> <section anchor="map-key-registry"> <name>Time Tag MapKeyKeys Registry</name><t>This specification defines<t>Per this specification, IANA has created a newregistry titled"Time Tag Map Keys"inregistry within the"CBOR"Concise Binary Object Representation (CBOR) Tags" registry group <xreftarget="IANA.cbor-tags"/>, withtarget="IANA.cbor-tags"/>. The registration procedure is "Specification Required"as the Registration Procedure (<xref(Section <xref section="4.6"sectionFormat="of"sectionFormat="bare" target="RFC8126"/> of RFC 8126 <xref target="BCP26"/>).</t> <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 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, -18446744073709551616..18446744073709551615), a brief description of the semantics, and a specification reference. Note that negative integers indicate an elective key, while unsigned integers indicate a key that either provides a base time or is 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 needs to be indicated in the brief semantics description. (Elective map keys may be explicitly marked as such in the description, e.g., to distinguish them from critical keys.)</t> <t>The initial contents are shown in <xref target="tab-mapkeys"/>.</t> <table anchor="tab-mapkeys"> <name>Initial Content of Time Tag Map Keys Registry</name> <thead> <tr> <th align="right">Value</th> <th align="left">Semantics</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="right">-18</td> <td align="left">attoseconds</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-15</td> <td align="left">femtoseconds</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-13</td> <td align="left">timescale (elective)</td> <td align="left">[RFC9581]</td> </tr> <tr> <td align="right">-12</td> <td align="left">picoseconds</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-11</td> <td align="left">IXDTF Suffix Information (elective)</td> <tdalign="left">[RFCthis],align="left">[RFC9581], <xreftarget="IXDTF"/></td>target="RFC9557"/></td> </tr> <tr> <td align="right">-10</td> <td align="left">IXDTF Time Zone Hint (elective)</td> <tdalign="left">[RFCthis],align="left">[RFC9581], <xreftarget="IXDTF"/></td>target="RFC9557"/></td> </tr> <tr> <td align="right">-9</td> <td align="left">nanoseconds</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-8</td> <td align="left">Guarantee</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-7</td> <td align="left">Uncertainty</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-6</td> <td align="left">microseconds</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-5</td> <td align="left">Offset-Scaled Log Variance</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-4</td> <td align="left">Clock Accuracy</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-3</td> <td align="left">milliseconds</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-2</td> <td align="left">Clock Class</td> <tdalign="left">[RFCthis]</td>align="left">[RFC9581]</td> </tr> <tr> <td align="right">-1</td> <td align="left">timescale (elective) legacy</td> <td align="left">[RFC9581]</td> </tr> <tr> <td align="right">1</td> <td align="left">base time value as in CBORTagtag 1</td> <td align="left"> <xreftarget="RFC8949"/> [RFCthis]</td>target="RFC8949"/>, [RFC9581]</td> </tr> <tr> <td align="right">4</td> <td align="left">base time value as in CBORTagtag 4</td> <td align="left"> <xreftarget="RFC8949"/> [RFCthis]</td>target="RFC8949"/>, [RFC9581]</td> </tr> <tr> <td align="right">5</td> <td align="left">base time value as in CBORTagtag 5</td> <td align="left"> <xreftarget="RFC8949"/> [RFCthis]</td>target="RFC8949"/>, [RFC9581]</td> </tr> <tr> <td align="right">10</td> <td align="left">IXDTF Time Zone Hint (critical)</td> <tdalign="left">[RFCthis], <xref target="IXDTF"/></td>align="left"><xref target="RFC9557"/>, [RFC9581]</td> </tr> <tr> <td align="right">11</td> <td align="left">IXDTF Suffix Information (critical)</td> <tdalign="left">[RFCthis], <xref target="IXDTF"/></td>align="left"><xref target="RFC9557"/>, [RFC9581]</td> </tr> <tr> <td align="right">13</td> <td align="left">timescale (critical)</td> <td align="left">[RFC9581]</td> </tr> </tbody> </table> </section> </section> <section anchor="security-considerations"> <name>Security Considerations</name> <t>The security considerations of <xref target="RFC8949"/> apply; the tags introduced here are not expected to raise security considerations beyond those.</t> <t>Time, of course, has significant security considerations; these include the exploitation of ambiguities where time is security relevant (e.g., for freshness or in a validity span) or the disclosure of characteristics of the emitting system (e.g., timezone,zone or clock resolution and wall clock offset).</t> <t>A more detailed discussion of security considerations emanating from using a representation of time that allows the inclusion ofcomplex,complex and possibly inconsistent information is available inSection <xref"Security Considerations" (<xref section="7"sectionFormat="bare" target="IXDTF">Security Considerations</xref> of <xref target="IXDTF"/>.</t>sectionFormat="of" target="RFC9557"></xref>).</t> </section> </middle> <back> <displayreference target="ISO8601" to="ISO8601:1988"/> <displayreference target="ISO8601-2019" to="ISO8601-1:2019"/> <references> <name>References</name> <references anchor="sec-normative-references"> <name>Normative References</name><reference anchor="RFC8949"> <front> <title>Concise Binary Object Representation (CBOR)</title> <author fullname="C. Bormann" initials="C." surname="Bormann"/> <author fullname="P. Hoffman" initials="P." surname="Hoffman"/> <date month="December" year="2020"/> <abstract> <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t> <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange 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 constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations 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 describing the conditions under which new values should be assigned, as well as when 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 Considerations 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 5226.</t> </abstract> </front> <seriesInfo name="BCP" value="26"/> <seriesInfo name="RFC" value="8126"/> <seriesInfo name="DOI" value="10.17487/RFC8126"/> </reference><xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8949.xml"/> <referencegroup anchor="BCP26" target="https://www.rfc-editor.org/info/bcp26"> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/> </referencegroup> <reference anchor="TIME_T" target="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_16"> <front><title>Vol. 1:<title>The Open Group BaseDefinitions,Specifications Issue 7</title> <author><organization>The Open Group Base Specifications</organization><organization>IEEE</organization> </author> <date year="2018"/> </front> <seriesInfoname="Section 4.16" value="'Seconds Since the Epoch'"/> <seriesInfoname="IEEE Std" value="1003.1-2017"/><seriesInfo name="2018" value="Edition"/><refcontent>Section 4.16 Seconds Since the Epoch</refcontent> </reference> <referenceanchor="SI-SECOND">anchor="SI-SECOND" target="https://www.iso.org/standard/64974.html"> <front> <title>Quantities and units—-- Part 3: Space and time</title> <author><organization>International Organization for Standardization (ISO)</organization><organization>ISO</organization> </author> <dateday="01" month="March" year="2006"/> </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="Jiang"/> <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"month="October" year="2019"/><abstract> <t>This document defines a YANG data model for the configuration of devices and clocks using the Precision Time Protocol (PTP) as specified in IEEE 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 document conforms to the Network Management Datastore Architecture (NMDA).</t> </abstract></front> <seriesInfoname="RFC" value="8575"/> <seriesInfo name="DOI" value="10.17487/RFC8575"/>name="ISO" value="80000-3:2019"/> </reference> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8575.xml"/> <reference anchor="IEEE1588-2008" target="https://standards.ieee.org/ieee/1588/4355/"> <front> <title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title> <author> <organization>IEEE</organization> </author> <date month="July" year="2008"/> </front> <seriesInfo name="IEEE" value="1588-2008"/> <annotation>Often called PTP v2, as it replaced the earlier 2002 version of this standard by a non-backwards compatible protocol.</annotation> </reference> <reference anchor="IEEE1588-2019" target="https://standards.ieee.org/ieee/1588/6825/"> <front> <title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title> <author> <organization>IEEE</organization> </author> <date month="June" year="2020"/> </front> <seriesInfo name="IEEE" value="1588-2019"/> <annotation>Often called PTP v2.1, as it has been designed so it can be used in a way that is fully backwards compatible to IEEE1588-2008.</annotation> </reference> <reference anchor="GUM" target="https://www.bipm.org/en/publications/guides/gum.html"> <front> <title>Evaluation of measurement data—-- Guide to the expression of uncertainty in measurement</title> <author> <organization>Joint Committee for Guides in Metrology</organization> </author> <date month="September" year="2008"/> </front> <seriesInfo name="JCGM" value="100:2008"/> </reference> <reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags"> <front> <title>Concise Binary Object Representation (CBOR) Tags</title> <author> <organization>IANA</organization> </author> </front> </reference><reference anchor="RFC8610"> <front> <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</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 Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages 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 information</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 defined in RFC3339 for representing additional information including a time zone. It updates RFC3339 in the specific interpretation of the local offset Z, which is no longer understood to "imply that UTC is the preferred reference point for the specified time"; see Section 2. // (This "cref" paragraph will be removed by the RFC editor:) The // present version (-11) addresses comments received during IESG // review. </t> </abstract> </front> <seriesInfo name="Internet-Draft" value="draft-ietf-sedate-datetime-extended-11"/> </reference> <reference anchor="RFC2119"> <front> <title>Key words for use in RFCs to Indicate Requirement Levels</title> <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 signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, 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</title> <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 protocol 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><xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8610.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9557.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> </references> <references anchor="sec-informative-references"> <name>Informative References</name><reference anchor="RFC3161"> <front> <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title> <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 establishes several security-relevant requirements for TSA operation, with regards to processing 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 Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t> </abstract> </front> <seriesInfo name="RFC" value="3339"/> <seriesInfo name="DOI" value="10.17487/RFC3339"/> </reference><xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3161.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml"/> <reference anchor="ISO8601" target="https://www.iso.org/standard/15903.html"> <front> <title>Data elements and interchange formats—-- Information interchange—-- Representation of dates and times</title> <author><organization abbrev="ISO">International Organization for Standardization</organization><organization>ISO</organization> </author> <date month="June" year="1988"/> </front> <seriesInfo name="ISO" value="8601:1988"/> <annotation>Also available from<<eref<<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>>.</annotation> </reference> <reference anchor="ISO8601-2019" target="https://www.iso.org/standard/70907.html"> <front> <title>Date and time—-- Representations for information interchange—-- Part 1: Basic rules</title> <author><organization abbrev="ISO">International Organization for Standardization</organization><organization>ISO</organization> </author> <date month="February" year="2019"/> </front> <seriesInfo name="ISO" value="8601-1:2019"/> </reference> <reference anchor="C" target="https://www.iso.org/standard/74528.html"> <front> <title>Information technology—-- Programming languages—-- C</title> <author><organization>International Organization for Standardization</organization><organization>ISO</organization> </author> <date month="June" year="2018"/> </front> <seriesInfo name="ISO/IEC" value="9899:2018"/> <annotation>Contents available via<<eref target="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf">https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf</eref>></annotation><<eref target="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2310.pdf"/>></annotation> <refcontent>Fourth Edition</refcontent> </reference> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5905.xml"/> <referenceanchor="RFC5905">anchor="IEEE754" target="https://ieeexplore.ieee.org/document/8766229"> <front><title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title> <author fullname="D. Mills" initials="D." surname="Mills"/> <author fullname="J. Martin" initials="J." role="editor" surname="Martin"/> <author fullname="J. Burbank" initials="J." surname="Burbank"/> <author fullname="W. Kasch" initials="W." surname="Kasch"/><title>IEEE Standard for Floating-Point Arithmetic</title> <author> <organization>IEEE</organization> </author> <datemonth="June" year="2010"/> <abstract> <t>The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet. This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family. NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs. It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required. It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism. [STANDARDS-TRACK]</t> </abstract>month="July" year="2019"/> </front> <seriesInfoname="RFC" value="5905"/>name="IEEE" value="754-2019"/> <seriesInfo name="DOI"value="10.17487/RFC5905"/>value="10.1109/IEEESTD.2019.8766229"/> </reference> </references> </references> <?line 895?> <section anchor="collected-cddl"> <name>Collected CDDL</name> <t>This appendix collects the CDDL rules spread over the document into one convenient place.</t> <figure anchor="fig-collected-cddl"> <name>Collected CDDLrulesRules fromthis specification</name>This Specification</name> <sourcecode name="time-tag-collected-cddl.cddl" type="cddl"><![CDATA[ Etime = #6.1001(etime-detailed) etime-framework = { uint => any ; at least one base time * (nint/text) => any ; elective supplementary information * uint => any ; critical supplementary information } etime-detailed = ({ $$ETIME-BASETIME ClockQuality-group * $$ETIME-ELECTIVE * $$ETIME-CRITICAL * ((nint/text) .feature "etime-elective-extension") => any * (uint .feature "etime-critical-extension") => any }) .within etime-framework $$ETIME-BASETIME //= (1: ~time) $$ETIME-BASETIME //= (4: ~decfrac) $$ETIME-BASETIME //= (5: ~bigfloat) $$ETIME-ELECTIVE //= (-3: uint) $$ETIME-ELECTIVE //= (-6: uint) $$ETIME-ELECTIVE //= (-9: uint) $$ETIME-ELECTIVE //= (-12: uint) $$ETIME-ELECTIVE //= (-15: uint) $$ETIME-ELECTIVE //= (-18: uint) $$ETIME-ELECTIVE //= (-1 => $ETIME-TIMESCALE) $$ETIME-ELECTIVE //= (-13 => $ETIME-TIMESCALE) $$ETIME-CRITICAL //= (13 => $ETIME-TIMESCALE) $ETIME-TIMESCALE /= &(etime-utc: 0) $ETIME-TIMESCALE /= &(etime-tai: 1) ClockQuality-group = ( ? &(ClockClass: -2) => uint .size 1 ; PTP/RFC8575 ? &(ClockAccuracy: -4) => uint .size 1 ; PTP/RFC8575 ? &(OffsetScaledLogVariance: -5) => uint .size 2 ; PTP/RFC8575 ? &(Uncertainty: -7) => ~time/~duration ? &(Guarantee: -8) => ~time/~duration ) $$ETIME-ELECTIVE //= (-10: time-zone-info) $$ETIME-CRITICAL //= (10: time-zone-info) time-zone-info = tstr .abnf ("time-zone-name / time-numoffset" .det IXDTFtz) IXDTFtz = ' time-hour = 2DIGIT ; 00-23 time-minute = 2DIGIT ; 00-59 time-numoffset = ("+" / "-") time-hour ":" time-minute time-zone-initial = ALPHA / "." / "_" time-zone-char = time-zone-initial / DIGIT / "-" / "+" time-zone-part = time-zone-initial*13(time-zone-char)*time-zone-char ; but not "." or ".." time-zone-name = time-zone-part *("/" time-zone-part) ALPHA = %x41-5A / %x61-7A ; A-Z / a-z DIGIT = %x30-39 ; 0-9 ' ; extracted from[IXDTF][RFC9557] and[RFC3339]; update as needed[RFC3339] $$ETIME-ELECTIVE //= (-11: suffix-info-map) $$ETIME-CRITICAL //= (11: suffix-info-map) suffix-info-map = { * suffix-key => suffix-values } suffix-key = tstr .abnf ("suffix-key" .det IXDTF) suffix-values = one-or-more<suffix-value> one-or-more<T> = T / [ 2* T ] suffix-value = tstr .abnf ("suffix-value" .det IXDTF) IXDTF = ' key-initial = lcalpha / "_" key-char = key-initial / DIGIT / "-" suffix-key = key-initial *key-char suffix-value = 1*alphanum alphanum = ALPHA / DIGIT lcalpha = %x61-7A ALPHA = %x41-5A / %x61-7A ; A-Z / a-z DIGIT = %x30-39 ; 0-9 ' ; extracted from[IXDTF]; update as needed![RFC9557] Duration = #6.1002(etime-detailed)Periodsimple-Period = #6.1003([ start: ~Etime / null end: ~Etime / null ? duration: ~Duration/ null])clumsy-PeriodPeriod = #6.1003([ (start: ~Etime, ((end:~Etime, ? duration: null)~Etime) // (end: null, duration: ~Duration))) // (start: null, end: ~Etime, duration: ~Duration) ]) etime = #6.1001({* (int/tstr) => any}) duration = #6.1002({* (int/tstr) => any}) period = #6.1003([~etime/null, ~etime/null,~duration/null])?~duration]) ]]></sourcecode> </figure> </section> <section anchor="acknowledgements" numbered="false"> <name>Acknowledgements</name> <t>The authors would like to acknowledge the many comments from members of the CBOR WG, <contact fullname="Francesca Palombini"/> for her AD review,and<contact fullname="Thomas Fossati"/> and <contact fullname="Qin Wu"/> for their directoratereviews.</t> <!-- LocalWords: CBOR extensibility IANA uint sint IEEE endian TAI --> <!-- LocalWords: signedness endianness NTP IXDTF -->reviews, and <contact fullname="Rohan Mahy"/> for one more review late in the process.</t> </section> </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>