<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.24 (Ruby 3.4.1) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-bormann-cbor-yang-standin-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title>Stand-in Tags for YANG-CBOR</title>
    <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-yang-standin-01"/>
    <author initials="C." surname="Bormann" fullname="Carsten 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 initials="M." surname="Matejka" fullname="Maria Matejka">
      <organization>CZ.NIC</organization>
      <address>
        <postal>
          <street>Milesovska 1136/5</street>
          <city>Praha</city>
          <code>13000</code>
          <country>Czechia</country>
        </postal>
        <email>maria.matejka@nic.cz</email>
        <email>mq@jmq.cz</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>Applications and Real-Time</area>
    <workgroup>CBOR (Concise Binary Object Representation) Maint. and Ext.</workgroup>
    <keyword>efficient YANG</keyword>
    <abstract>
      <?line 57?>

<t>YANG (RFC 7950) is a data modeling language used to model
configuration data, state data, parameters and results of Remote
Procedure Call (RPC) operations or actions, and notifications.</t>
      <t>YANG-CBOR (RFC 9254) defines encoding rules for YANG in the Concise Binary
Object Representation (CBOR) (RFC 8949).
While the overall structure of YANG-CBOR is encoded in an efficient,
binary format, YANG itself has its roots in XML and therefore
traditionally encodes some information such as date/times and IP
addresses/prefixes in a verbose text form.</t>
      <t>This document defines how to use existing CBOR tags for this kind of
information in YANG-CBOR as a "stand-in" for the text-based
information that would be found in the original form of YANG-CBOR.</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-bormann-cbor-yang-standin/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        CBOR (Concise Binary Object Representation) Maintenance and Extensions 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/cabo/yang-standin"/>.</t>
    </note>
  </front>
  <middle>
    <?line 75?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>(see abstract)</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The terminology of <xref target="RFC9254"/> applies.</t>
      <dl>
        <dt>Legacy representation:</dt>
        <dd>
          <t>The (often text-based) representation for a YANG data item as used
in YANG-XML, YANG-JSON, and (unchanged) YANG-CBOR.</t>
        </dd>
        <dt>Stand-in tag:</dt>
        <dd>
          <t>A CBOR tag that can supply the information that is equivalent to a
legacy representation in a more efficient format (e.g., using binary
data).</t>
        </dd>
        <dt>Encoder:</dt>
        <dd>
          <t>The party which generates (sends) CBOR data described by YANG.</t>
        </dd>
        <dt>Intermediate Encoder:</dt>
        <dd>
          <t>An encoder which isn't the original author of the data, converting it
from legacy representation.</t>
        </dd>
        <dt>Aggressive Intermediate Encoder:</dt>
        <dd>
          <t>An intermediate encoder that might choose to discard some
information of a legacy representation in order to be able to use a
stand-in tag.
Such a choice may be based on knowledge of the Decoder's handling of
such information (e.g, to accommodate intolerant decoders), or it
may be a general characteristic of the service provided by the
intermediate encoder (e.g., in order to serve as a legacy-eschewing
encoder).</t>
        </dd>
        <dt>Legacy-Eschewing Encoder:</dt>
        <dd>
          <t>An encoder that does not generate legacy representations in places
where a stand-in tag might instead be used.
An intermediate encoder may need to be aggressive to achieve this.</t>
        </dd>
        <dt>Decoder:</dt>
        <dd>
          <t>The party which receives and parses CBOR data described by YANG.</t>
        </dd>
        <dt>Intolerant Decoder:</dt>
        <dd>
          <t>A decoder that does not accept legacy representations in places
where a stand-in tag might instead be used.
Such a decoder is designed to interoperate only with an
legacy-eschewing encoder.</t>
        </dd>
        <dt>Intermediate Decoder:</dt>
        <dd>
          <t>A decoder which isn't the final recipient of the data, converting it
to legacy representation.</t>
        </dd>
        <dt>Data Transfer:</dt>
        <dd>
          <t>A series of actions, generally beginning by data origination, encoding,
continuing by optional intermediate transcoding, sending and receiving,
and finally decoding and consuming.</t>
        </dd>
        <dt>Round Trip:</dt>
        <dd>
          <t>Part of a data transfer between an encoder generating CBOR data with
stand-in tags and a decoder parsing the data.</t>
        </dd>
        <dt>Legacy Round Trip:</dt>
        <dd>
          <t>A Round Trip where the encoder is an intermediate encoder or the decoder is
an intermediate decoder and any of these converts from or to the
legacy representation.</t>
        </dd>
        <dt>Unambiguous Round Trip:</dt>
        <dd>
          <t>A Legacy Round Trip that provides exactly the same legacy representation
(not just semantically equivalent).
The stand-in tag is also said to "unambiguously stand in" for the
legacy representation.</t>
        </dd>
      </dl>
      <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 in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="stand-in-tags">
      <name>Stand-In Tags</name>
      <t>This document defines two sets of stand-in tags.
Where information starts out in a legacy representation, these tags
are only used when an Unambiguous Round Trip can be achieved.</t>
      <section anchor="ietf-yang-types-tag-1-datetime-and-tag-100-date">
        <name><tt>ietf-yang-types</tt>: Tag 1 (Date/Time) and Tag 100 (Date)</name>
        <t><xref section="3" sectionFormat="of" target="I-D.ietf-netmod-rfc6991-bis"/> defines the following types in <tt>ietf-yang-types</tt>:</t>
        <table>
          <name>Legacy date and date/time representations in ietf-yang-types</name>
          <thead>
            <tr>
              <th align="left">YANG type</th>
              <th align="left">base type</th>
              <th align="left">specification</th>
              <th align="left">stand-in</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">date-and-time</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">tag 1</td>
            </tr>
            <tr>
              <td align="left">date</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">(none)</td>
            </tr>
            <tr>
              <td align="left">date-no-zone</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">tag 100</td>
            </tr>
          </tbody>
        </table>
        <t>Tag 1 (Section <xref target="RFC8949" section="3.4.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>) can unambiguously stand in for all <tt>date-and-time</tt> values that:</t>
        <ul spacing="normal">
          <li>
            <t>do not specify a time zone (note that <xref target="I-D.ietf-netmod-rfc6991-bis"/>
uses the legacy "<tt>-00:00</tt>" format for time-zone-free date-times)</t>
          </li>
          <li>
            <t>are not an inserted leap second (23:59:60 or 23:59:61)</t>
          </li>
          <li>
            <t>do not have trailing zeroes in the fractional part of the seconds.</t>
          </li>
          <li>
            <t>do not have fractional parts of the seconds with a precision that
cannot be represented in floating-point tag content in a tag 1.</t>
          </li>
        </ul>
        <t>All other <tt>date-and-time</tt> values stay in legacy representation.</t>
        <t>Tag 1 uses an integer tag content for all <tt>date-and-time</tt> values
without fractional seconds and a floating-point tag content for values
that have fractional seconds given.</t>
        <t>Tag 100 <xref target="RFC8943"/> can unambiguously stand in for all <tt>date-no-zone</tt> values.</t>
      </section>
      <section anchor="hex-tags">
        <name><tt>ietf-yang-types</tt>: Tags 37 (UUID) and CPA113 (hex-string)</name>
        <t><xref section="3" sectionFormat="of" target="I-D.ietf-netmod-rfc6991-bis"/> defines the following types in <tt>ietf-yang-types</tt>:</t>
        <table anchor="tab-hex">
          <name>Legacy UUID and colon-separated hexadecimal representations in ietf-yang-types</name>
          <thead>
            <tr>
              <th align="left">YANG type</th>
              <th align="left">base type</th>
              <th align="left">specification</th>
              <th align="left">stand-in</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">uuid</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">tag 37</td>
            </tr>
            <tr>
              <td align="left">hex-string</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">tag CPA113</td>
            </tr>
            <tr>
              <td align="left">mac-address</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">tag CPA113</td>
            </tr>
            <tr>
              <td align="left">phys-address</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">tag CPA113</td>
            </tr>
          </tbody>
        </table>
        <t>These types are hexadecimal representations of byte strings, adorned
in various ways.</t>
        <t><tt>uuid</tt> stands for a 16-byte byte string (<xref section="4" sectionFormat="of" target="RFC9562"/>),
represented in hexadecimal with ASCII minus/hyphen characters added in
specific positions.
Tag 37 (see also Section 7 of <xref target="I-D.bormann-cbor-notable-tags"/>) can be used as a binary
stand-in for this adorned hexadecimal representation.
According to the description of <tt>uuid</tt> in <xref section="3" sectionFormat="of" target="I-D.ietf-netmod-rfc6991-bis"/>,
"the canonical representation uses lowercase characters".
For consistency with this specification, an intermediate decoder of a
tag 37 stand-in <bcp14>MUST</bcp14> use lowercase characters in the uuid hex string
generated.</t>
        <t><tt>hex-string</tt>, and the similar, but more specific types <tt>mac-address</tt>
and <tt>phys-address</tt>, stand for byte strings in various lengths (exactly
6 bytes for <tt>mac-address</tt>, variable-length for the others),
represented in hexadecimal with ASCII colon characters added between
the representations of each of the bytes.
This specification defines tag number CPA113 <xref target="iana-113"/> to be an additional
"Expected Later Encoding" tag (similar to tag 23, see Section <xref target="RFC8949" section="3.4.5.2" sectionFormat="bare"/> of RFC 8949 <xref target="STD94"/>), except that the expected encoding of CPA113
includes colons and uses lowercase hex digits.</t>
        <t>The following example implementation of the transformation in a
decoder shows the use of lowercase hex characters (<tt>%02x</tt> as opposed
to <tt>%02X</tt>) and the insertion of colon characters between the
hex-represented bytes:</t>
        <sourcecode type="ruby"><![CDATA[
def tag_cpa113_to_legacy(s)
  s.bytes.map{|x| "%02x" % x}.join(":")
end
]]></sourcecode>
        <t>Note: <xref section="2.4" sectionFormat="of" target="RFC9542"/> defines tag number 48 for MAC
addresses.
This could be used in place of tag CPA113, but only for MAC addresses,
not for other byte strings of a similar form.
This specification therefore requests IANA to assign a new CBOR tag that can be
used as a stand-in for all instances of colon-separated text strings
of hexadecimally represented bytes, as shown in <xref target="tab-hex"/>.</t>
        <t>Note Related tags have not been defined so far for tag 21 or 22
defined alongside tag 23, as YANG has a base type "binary" that is
encoded in base64 classic in YANG-XML and YANG-JSON, but already
encoded in a binary byte string in YANG-CBOR; use cases that might
actually use base type "string" for base64-encoded data in YANG have
not been considered.  However, tag 21 or 22 could be used as stand-in
tags if that is useful for some specific YANG model not considered
here.</t>
        <t><cref anchor="cpa">RFC-Editor: This document uses the CPA (code point allocation)
  convention described in [I-D.bormann-cbor-draft-numbers].  For
  each usage of the term "CPA", please remove the prefix "CPA"
  from the indicated value and replace the residue with the value
  assigned by IANA; perform an analogous substitution for all other
  occurrences of the prefix "CPA" in the document.  Finally,
  please remove this note.</cref></t>
      </section>
      <section anchor="ietf-inet-types-tags-54-and-52-ip-addresses-and-prefixes">
        <name><tt>ietf-inet-types</tt>: Tags 54 and 52 (IP addresses and prefixes)</name>
        <t><xref section="4" sectionFormat="of" target="I-D.ietf-netmod-rfc6991-bis"/> defines in <tt>ietf-inet-types</tt>:</t>
        <table>
          <name>Legacy representations in ietf-yang-types</name>
          <thead>
            <tr>
              <th align="left">YANG type</th>
              <th align="left">base type</th>
              <th align="left">specification</th>
              <th align="left">stand-in</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ip-address</td>
              <td align="left">union</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">(see union)</td>
            </tr>
            <tr>
              <td align="left">ipv6-address</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">tag 54</td>
            </tr>
            <tr>
              <td align="left">ipv4-address</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">tag 52</td>
            </tr>
            <tr>
              <td align="left">ip-address-no-zone</td>
              <td align="left">union</td>
              <td align="left">RFC 6991</td>
              <td align="left">(see union)</td>
            </tr>
            <tr>
              <td align="left">ipv6-address-no-zone</td>
              <td align="left">ipv6-address</td>
              <td align="left">RFC 6991</td>
              <td align="left">tag 54</td>
            </tr>
            <tr>
              <td align="left">ipv4-address-no-zone</td>
              <td align="left">ipv4-address</td>
              <td align="left">RFC 6991</td>
              <td align="left">tag 52</td>
            </tr>
            <tr>
              <td align="left">ip-address-link-local</td>
              <td align="left">union</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">(see union)</td>
            </tr>
            <tr>
              <td align="left">ipv6-address-link-local</td>
              <td align="left">ipv6-address</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">tag 54</td>
            </tr>
            <tr>
              <td align="left">ipv4-address-link-local</td>
              <td align="left">ipv4-address</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">tag 52</td>
            </tr>
            <tr>
              <td align="left">ip-prefix</td>
              <td align="left">union</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">(see union)</td>
            </tr>
            <tr>
              <td align="left">ipv6-prefix</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">tag 54</td>
            </tr>
            <tr>
              <td align="left">ipv4-prefix</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="RFC6021"/></td>
              <td align="left">tag 52</td>
            </tr>
            <tr>
              <td align="left">ip-address-and-prefix</td>
              <td align="left">union</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">(see union)</td>
            </tr>
            <tr>
              <td align="left">ipv6-address-and-prefix</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">tag 54</td>
            </tr>
            <tr>
              <td align="left">ipv4-address-and-prefix</td>
              <td align="left">string</td>
              <td align="left">
                <xref target="I-D.ietf-netmod-rfc6991-bis"/></td>
              <td align="left">tag 52</td>
            </tr>
          </tbody>
        </table>
        <t>An intermediate encoder <bcp14>MAY</bcp14> normalize IPv6 addresses and prefixes that do not comply with <xref target="RFC5952"/>
but can be converted into the stand-in representation.
For example, IPv6 address written as 2001:db8:: is the same as 2001:0db8::0:0 and both would
be converted to <tt>54(h'20010db8000000000000000000000000')</tt>, anyway only the
first one complies with <xref target="RFC5952"/>. The encoder <bcp14>MAY</bcp14> refuse to convert the
latter one.</t>
        <t>If the schema specifies
<tt>ip-prefix</tt>, an intermediate encoder <bcp14>MAY</bcp14> normalize prefixes with non-zero bits after the prefix end.
For example, if the legacy representation of <tt>ipv6-prefix</tt> is 2001:db8:1::/40, the encoder
may either refuse it as malformed or convert it to 2001:db8::/40 and represent
as <tt>54([40, h'20010db8'])</tt>.</t>
        <t>The encoder implementation should be clear about which normalizations are employed and how.</t>
        <t>Adapted examples from <xref target="RFC9164"/>:</t>
        <t>Stand-in representation of IPv6 address 2001:db8:1234:deed:beef:cafe:face:feed
is <tt>54(h'20010db81234deedbeefcafefacefeed')</tt>.</t>
        <t>CBOR encoding of stand-in (19 bytes):</t>
        <sourcecode type="cbor-pretty"><![CDATA[
D8 36                                  # tag(54)
   50                                  # bytes(16)
      20010DB81234DEEDBEEFCAFEFACEFEED
]]></sourcecode>
        <t>CBOR encoding of legacy representation (40 bytes):</t>
        <sourcecode type="cbor-pretty"><![CDATA[
78 26                                   # text(38)
   323030313A6462383A313233343A646565643A626565663A636166653A666163653A66656564
]]></sourcecode>
        <t>Stand-in representation of IPv6 prefix 2001:db8:1234::/48 is
<tt>54([48, h'20010db81234'])</tt>.</t>
        <t>CBOR encoding of stand-in (12 bytes):</t>
        <sourcecode type="cbor-pretty"><![CDATA[
D8 36                 # tag(54)
   82                 # array(2)
      18 30           # unsigned(48)
      46              # bytes(6)
         20010DB81234 # " \u0001\r\xB8\u00124"
]]></sourcecode>
        <t>CBOR encoding of legacy representation (19 bytes):</t>
        <sourcecode type="cbor-pretty"><![CDATA[
72                                      # text(18)
   323030313A6462383A313233343A3A2F3438 # "2001:db8:1234::/48"
]]></sourcecode>
        <t>Stand-in representation of IPv6 link-local address fe80::0202:02ff:ffff:fe03:0303/64%eth0 is
<tt>54([h'fe8000000000020202fffffffe030303', 64, 'eth0'])</tt>.</t>
        <t>CBOR encoding of stand-in (27 bytes):</t>
        <sourcecode type="cbor-pretty"><![CDATA[
D8 36                                   # tag(54)
   83                                   # array(3)
      50                                # bytes(16)
         FE8000000000020202FFFFFFFE030303
      18 40                             # unsigned(64)
      44                                # bytes(4)
         65746830                       # "eth0"
]]></sourcecode>
        <t>CBOR encoding of legacy representation (40 bytes):</t>
        <sourcecode type="cbor-pretty"><![CDATA[
78 26                                   # text(38)
   666538303A3A303230323A303266663A666666663A666530333A303330332F36342565746830
]]></sourcecode>
        <t>TO DO: adapt more examples from <xref target="RFC9164"/></t>
        <t>TO DO: Check how the unions in <xref target="RFC6021"/> and <xref target="I-D.ietf-netmod-rfc6991-bis"/> interact
with this.  E.g., the union ip-address needs to be parsed to decide
between tag 54 and tag 52.</t>
      </section>
      <section anchor="union-handling">
        <name>Union handling</name>
        <t>When the schema specifies a union data type for a node, there are
additional requirements on the encoder and decoder.</t>
        <t>An encoder which is fully aware of data semantics <bcp14>MUST</bcp14> use the appropriate
data type, even though it isn't formally specified by the schema.</t>
        <t>If an intermediate encoder doesn't fully understand the data semantics,
it needs to find out which type the data actually is to choose the right stand-in.
If more types are possible, it <bcp14>MAY</bcp14> choose any of these which allow for an Unambiguous Round Trip,
otherwise it <bcp14>SHOULD</bcp14> keep the legacy representation.</t>
        <t>If a decoder receives data for a union-typed node, it <bcp14>MUST</bcp14> accept any data type
of the union, even though it may violate additional constraints outside the schema.</t>
      </section>
    </section>
    <section anchor="using-stand-in-tags">
      <name>Using Stand-In Tags</name>
      <section anchor="defining-stand-in-usage-in-schema">
        <name>Defining Stand-In Usage in Schema</name>
        <t>Requiring modifications to a YANG model in order to use it with
stand-in tags would pose significant deployment hurdles to using
stand-in tags.</t>
        <t>A YANG model may want to restrict the information content in such a
way that stand-in tags can always be used, e.g., by using date-no-zone
in place of date where that is applicable, or by excluding features of
a YANG data type that cannot be represented in a stand-in-tag.</t>
        <t>ISSUE: Should this document define such restricted types, e.g.:</t>
        <sourcecode type="yang"><![CDATA[
  typedef efficient-date-and-time {
    type date-and-time {
      pattern '.*-00:00'
    }
    description
      "The efficient-date-and-time type is a profile of the
       date-and-time that is intended to always enable using a
       stand-in tag as per ((this document)), e.g., by not expressing
       a time-zone-offset.
       Not all restrictions that make this possible are expressed in
       the above YANG string pattern.";
  }
]]></sourcecode>
        <t>(This particular example is additionally problematic since the usual
way to indicate the absence of time zone information in ISO 8601
date-times is using <tt>Z</tt> as the time zone indicated, not <tt>-00:00</tt> as is
required by <xref section="3" sectionFormat="of" target="I-D.ietf-netmod-rfc6991-bis"/> but not allowed by ISO 8601;
see <xref target="RFC9557"/> for additional discussion of this.)
<cref anchor="no8601reference">Note that this paragraph does not reference ISO
8601 because that is complicated and best done by consulting <xref target="RFC9557"/>.</cref></t>
      </section>
      <section anchor="original-stand-ins">
        <name>Original stand-ins</name>
        <t>The simplest situation is when no intermediate encoders and decoders are
involved in the data transfer, therefore the round trip is not legacy.
In this case, no conversions are involved and data is validated using the
schema extension from the previous section.</t>
      </section>
      <section anchor="legacy-round-trip">
        <name>Legacy Round Trip</name>
        <t>Producing a stand-in <bcp14>MUST</bcp14> be triggered by schema usage. Intermediate encoders
<bcp14>MUST NOT</bcp14> encode stand-ins when no schema is available.</t>
        <t>It's generally not recommended to do a legacy round trip where both the encoder
and decoder are converting from and to the legacy representation.</t>
      </section>
    </section>
    <section anchor="negotiation">
      <name>Negotiation</name>
      <t>Introducing stand-in tags in YANG-CBOR requires some form of consent
between the producer and the consumer of YANG-CBOR information:</t>
      <ul spacing="normal">
        <li>
          <t>A producer that creates YANG-CBOR containing stand-in tags needs to
know whether the consumer supports stand-in tags, and, possibly,
which specific stand-in tags it supports.  We speak about the
<em>capability</em> of a consumer to consume stand-in tags.
A producer <bcp14>MUST NOT</bcp14> employ stand-in tags unless it knows about the
capabilities of the consumer.
A consumer <bcp14>SHOULD</bcp14> indicate its capabilities for consuming stand-in tags.</t>
        </li>
        <li>
          <t>A consumer may not want to implement certain legacy text-based
representations where more efficient (and easy to implement)
stand-in tags are available, i.e., it may use an intolerant decoder.
This places a <em>requirement</em> on the
producer to use a legacy-eschewing encoder (which therefore needs to
have the <em>capability</em> to produce YANG-CBOR
where those stand-in tags are used, in place of legacy
representations).
Where the consumer employs an intolerant decoder, stand-in tags are
<em>required</em> by the consumer: for interoperating with a producer's
encoder, this <bcp14>MUST</bcp14> be legacy-eschewing, i.e. it <bcp14>MUST NOT</bcp14> employ
legacy representations.
A consumer that has requirements for only receiving stand-in tags in
place of legacy representations, <bcp14>MUST</bcp14> indicate this to the producer.</t>
        </li>
      </ul>
      <t>ISSUE: Where do we put those two aspects of negotiation?</t>
      <ul spacing="normal">
        <li>
          <t>NETCONF negotiation</t>
        </li>
        <li>
          <t>yang-library</t>
        </li>
        <li>
          <t>media-type parameters</t>
        </li>
        <li>
          <t>?</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-113">
        <name>New CBOR Tags</name>
        <t>In the registry "<xref section="CBOR Tags" relative="#cbor-tags" sectionFormat="bare" target="IANA.cbor-tags"/>" <xref target="IANA.cbor-tags"/>,
IANA is requested to assign the tag in <xref target="tab-new-tags"/>.</t>
        <table anchor="tab-new-tags">
          <name>New CBOR Tag Defined by this Specification</name>
          <thead>
            <tr>
              <th align="left">Tag</th>
              <th align="left">Data Item</th>
              <th align="left">Semantics</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CPA113</td>
              <td align="left">byte string</td>
              <td align="left">Expected Later Encoding: colon-separated hexadecimal representation of a byte string</td>
              <td align="left">draft-bormann-yang-standin, <xref target="hex-tags"/></td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="stand-in-tags-1">
        <name>stand-in tags?</name>
        <t>ISSUE: Do we want to have a separate registry for stand-in tags?</t>
        <t>They already are CBOR tags and thus in the registry, but might
get lost in the bulk of that (and are only identified as YANG-CBOR
stand-in Tags in the specification).</t>
      </section>
      <section anchor="media-type-parameters">
        <name>media-type parameters</name>
        <t>ISSUE: Should the use of stand-in tags be mentioned in the various
YANG-CBOR-based media types (as a media type parameter)?</t>
        <t>Compare how application/yang-data+cbor can use id=name/id=sid to
indicate another encoding decision.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="RFC9164">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for IPv4 and IPv6 Addresses and Prefixes</title>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This specification defines two Concise Binary Object Representation (CBOR) tags for use with IPv6 and IPv4 addresses and prefixes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9164"/>
          <seriesInfo name="DOI" value="10.17487/RFC9164"/>
        </reference>
        <reference anchor="I-D.ietf-netmod-rfc6991-bis">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="Jürgen Schönwälder" initials="J." surname="Schönwälder">
              <organization>Constructor University</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   This document defines a collection of common data types to be used
   with the YANG data modeling language.  This version of the document
   adds several new type definitions and obsoletes RFC 6991.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netmod-rfc6991-bis-17"/>
        </reference>
        <reference anchor="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
        <reference anchor="RFC8943">
          <front>
            <title>Concise Binary Object Representation (CBOR) Tags for Date</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="J. Richter" initials="J." surname="Richter"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR), as specified in RFC 7049, 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 7049 defines two tags for time: CBOR tag 0 (date/time string as per RFC 3339) and tag 1 (POSIX "seconds since the epoch"). Since then, additional requirements have become known. This specification defines a CBOR tag for a date text string (as per RFC 3339) for applications needing a textual date representation within the Gregorian calendar without a time. It also defines a CBOR tag for days since the date 1970-01-01 in the Gregorian calendar for applications needing a numeric date representation without a time. This specification is the reference document for IANA registration of the CBOR tags defined.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8943"/>
          <seriesInfo name="DOI" value="10.17487/RFC8943"/>
        </reference>
        <referencegroup anchor="STD94" target="https://www.rfc-editor.org/info/std94">
          <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
        <reference anchor="RFC6021">
          <front>
            <title>Common YANG Data Types</title>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6021"/>
          <seriesInfo name="DOI" value="10.17487/RFC6021"/>
        </reference>
        <reference anchor="RFC9562">
          <front>
            <title>Universally Unique IDentifiers (UUIDs)</title>
            <author fullname="K. Davis" initials="K." surname="Davis"/>
            <author fullname="B. Peabody" initials="B." surname="Peabody"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9562"/>
          <seriesInfo name="DOI" value="10.17487/RFC9562"/>
        </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>
        <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
          <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/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" target="https://www.rfc-editor.org/info/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>
        </referencegroup>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9557">
          <front>
            <title>Date and Time on the Internet: Timestamps with Additional Information</title>
            <author fullname="U. Sharma" initials="U." surname="Sharma"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="April" year="2024"/>
            <abstract>
              <t>This document defines an extension to the timestamp format defined in RFC 3339 for representing additional information, including a time zone.</t>
              <t>It updates RFC 3339 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".</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9557"/>
          <seriesInfo name="DOI" value="10.17487/RFC9557"/>
        </reference>
        <reference anchor="RFC9542">
          <front>
            <title>IANA Considerations and IETF Protocol and Documentation Usage for IEEE 802 Parameters</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="J. Abley" initials="J." surname="Abley"/>
            <author fullname="Y. Li" initials="Y." surname="Li"/>
            <date month="April" year="2024"/>
            <abstract>
              <t>Some IETF protocols make use of Ethernet frame formats and IEEE 802 parameters. This document discusses several aspects of such parameters and their use in IETF protocols, specifies IANA considerations for assignment of points under the IANA Organizationally Unique Identifier (OUI), and provides some values for use in documentation. This document obsoletes RFC 7042.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="141"/>
          <seriesInfo name="RFC" value="9542"/>
          <seriesInfo name="DOI" value="10.17487/RFC9542"/>
        </reference>
        <reference anchor="I-D.bormann-cbor-notable-tags">
          <front>
            <title>Notable CBOR Tags</title>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="12" month="February" year="2025"/>
            <abstract>
              <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.

   In CBOR, one point of extensibility is the definition of CBOR tags.
   RFC 8949's original edition, RFC 7049, defined a basic set of 16 tags
   as well as a registry that can be used to contribute additional tag
   definitions [IANA.cbor-tags].  Since RFC 7049 was published, at the
   time of writing some 190 definitions of tags and ranges of tags have
   been added to that registry.

   The present document provides a roadmap to a large subset of these
   tag definitions.  Where applicable, it points to an IETF standards or
   standard development document that specifies the tag.  Where no such
   document exists, the intention is to collect specification
   information from the sources of the registrations.  After some more
   development, the present document is intended to be useful as a
   reference document for the IANA registrations of the CBOR tags the
   definitions of which have been collected.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-bormann-cbor-notable-tags-12"/>
        </reference>
      </references>
    </references>
    <?line 521?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
5qe+P6BAb7/zlAm0ZL07NLEhbeP4JW3j+OTk+OXJyauj8auTV+Ojk1fwnZPA
jW1sF8U6CMfOPb04EL0n7Ak3BblSvX9AKPZ7/Q781+2Ph4Nhr3/QH8PnXr/f
H9CTffgPP/Xo0xA+9Yfd4XC4D5+G8KmvP9E43sunBEJrYVkeQO4PMPFhST9w
JR3fa2l/jNu9z+V2ibkHvS3vZZLIdb1nWNkFMJ3SgDziULk+ODCDBsMqFJYI
KxAVmYABNfFLDra3+0vyy93LA/zc7Q1qnycYjwn7i829PSYY3U8LRn/cewX/
HiDym3ysPU0OnHjK2IiZOuiAN+t1evBrNhvNZvhLdfojROX5cPCFyhYdKyeL
PZxgf3r434x/VIew32uK4aAp9nDap2Wo9+L/bTEqUtV/0gyWs76RkE8bmk0z
Az+vTqq0eMU/J0yLQooHjy/gyPVwYOV68FSkBg5Ow/0Xg+FBf9d6ID7Imc+U
9b/eCJJBAzRRsuF3j/6nT/BmSAZuaD/tw/M+ve3j/6AJw/6gt2+2ynu5PBfH
5yMQbPCgurt3pxO1o48Wyr/mrvGFjrhTLk+VY3n00NVImYIkvKpgDxEgoT6h
Hk4LTDiJKDY+prryTE2LFCVixWyqPFsNpcCdS6gUh3Pu/Z6AmU5WD5tDoq2h
nJB6YW5dwzSZj58iCFiaXCjE4MMrCt9UMwzoug4eb0elDjPqUVCm13BLd7KY
5VixkreSLxrQuqY9Ky2ORhCoXK2SeJVgVOlZ/JpC3dBm4ny+wOCMGxWpRo2Q
zdZM+6zeMkezu2JVbOUkKIRcHmEDb2bq0mUUmx6saXkzo5sBNmojAto5tj4X
0FjTAI3lHWr5NHatjaiRCBYni6s4TYMJhb4ZhdJ6dqnvjhfFctcts21Xs07T
o7rPbcChrm51ulZqtTus1hSzR1m2i5b2xlJCskNSP9USg9giD3VPLKJrWefp
IhPN2uAjBuU3QRxSq0shbVghxM6MiFuZuFrrshWknXojKw1UoAV83cF99Z6q
d6CwFzTb896RLOOYJRg1eymHKuFurdLtstb5ArVtlps2+UoHHnAINM8Ej7q3
MHCnmuUiT6ZoYggMqmali8sbu6siSW4l308AzkAO7mcb1xmcbhC+KuNhbkhZ
cRk7TIBliEfOpoQLPCD7M1nrKwxug4TnHk1QA5JpKOUSr+QrlCSjdGCIh1Zh
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
4coj7hZT0wdtbaQdAxHx/wFpFCklA0sAAA==

-->

</rfc>
