<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vilimek-yang-cbor-inst-id-01" category="std" consensus="true" submissionType="IETF" updates="RFC9254" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="yang-cbor-inst-id">Encoding rules of YANG instance-identifier in the Concise Binary Object Representation (CBOR)</title>
    <seriesInfo name="Internet-Draft" value="draft-vilimek-yang-cbor-inst-id-01"/>
    <author initials="V." surname="Vilímek" fullname="Vojtěch Vilímek">
      <organization>CZ.NIC</organization>
      <address>
        <postal>
          <street>Milesovska 1136/5</street>
          <city>Praha</city>
          <code>13000</code>
          <country>Czech Republic</country>
        </postal>
        <email>vojtech.vilimek@nic.cz</email>
      </address>
    </author>
    <date year="2026" month="March" day="02"/>
    <area>AREA</area>
    <workgroup>CoRE</workgroup>
    <keyword>YANG-CBOR</keyword>
    <keyword>YANG</keyword>
    <keyword>CBOR</keyword>
    <abstract>
      <?line 48?>

<t>The YANG-CBOR document <xref target="RFC9254"/> defines rules for representing
YANG-modeled data <xref target="RFC7950"/> in CBOR <xref target="RFC8949"/>. The YANG-CBOR defines rules for all
built-in types, such as int64, leafref, and instance-identifier data type. However it fails to address
some cases of the instance-identifier, specifically those pointing
to keyless list entries or leaf-list entries. This documents updates <xref target="RFC9254"/> to make the rules complete.</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-vilimek-yang-cbor-inst-id/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Constrained RESTful Environments (CoRE) Working Group mailing list (<eref target="mailto:core@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/core/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/core/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/vvilimek/draft-vilimek-yang-cbor-inst-id"/>.</t>
    </note>
  </front>
  <middle>
    <?line 56?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The <xref target="RFC9254"/>: Encoding Rules of Data Modeled with YANG in the Concise Binary
Object Representation (CBOR) defines rules for representing of YANG-modeled data <xref target="RFC7950"/>
in CBOR <xref target="RFC8949"/>. The instance-identifier YANG data type is well-defined for instances that
reference containers, lists with one or more keys, and leafs. The document fails to address cases
when the instance-identifier instance points to entries in a list with no keys or a leaf-list.
The YANG-CBOR refines encoding rules of two kinds. One variant, named as using names, is compatible with YANG-JSON <xref target="RFC7951"/>
encoding. The second variant uses SIDs to compress the information needed to encode the instance-identifier.
Only the SID-based encoding rules are incomplete.
This documents aims to define the missing rules and to clarify the terminology used.</t>
    </section>
    <section anchor="terminology-and-notation">
      <name>Terminology and Notation</name>
      <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 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>The following terms are defined in <xref target="RFC7950"/>:</t>
      <ul spacing="normal">
        <li>
          <t>list</t>
        </li>
        <li>
          <t>leaf-list</t>
        </li>
        <li>
          <t>leaf</t>
        </li>
        <li>
          <t>container</t>
        </li>
        <li>
          <t>instance-identifier</t>
        </li>
      </ul>
      <t>The following term is defined in <xref target="RFC8949"/>:</t>
      <ul spacing="normal">
        <li>
          <t>data item</t>
        </li>
      </ul>
      <t>The following terms are defined in <xref target="RFC9254"/>:</t>
      <ul spacing="normal">
        <li>
          <t>YANG Scheme Item iDentifier (YANG SID, or simply SID)</t>
        </li>
        <li>
          <t>delta (of YANG SIDs)</t>
        </li>
        <li>
          <t>absolute SID</t>
        </li>
      </ul>
      <t>The following terms are defined in <xref target="RFC9595"/>:</t>
      <ul spacing="normal">
        <li>
          <t>item</t>
        </li>
      </ul>
      <dl>
        <dt>Keyless list:</dt>
        <dd>
          <t>Is config false YANG list without any keys.</t>
        </dd>
        <dt>Keyed list:</dt>
        <dd>
          <t>Is YANG list that is not a keyless list. It is either a config true list or
a config false list with at least one key. Note that a config true list must have at least one key.</t>
        </dd>
      </dl>
    </section>
    <section anchor="representing-sids-as-yang-instance-identifier-in-cbor">
      <name>Representing SIDs as YANG instance-identifier in CBOR</name>
      <section anchor="motivation">
        <name>Motivation example</name>
        <t>Definition example adapted from <xref target="RFC7950"/>:</t>
        <sourcecode type="yang"><![CDATA[
container system {
  ...
  leaf reporting-entity {
    type instance-identifier;
  }
}
]]></sourcecode>
        <t>The following example shows the encoding of the 'reporting-entity' value
referencing "neighbor-sysid" (which is assumed to have SID 68000) of the second list entry of the keyless
"/isis:adjacencies/adjacency" list. The example is adapted from
<xref target="RFC9130"/> and therefore uses the <tt>isis</tt> namespace:</t>
        <sourcecode type="yang"><![CDATA[
// in module isis
container adjacencies {
  config false;
  list adjacency {
    leaf neighbor-sysid {  // SID 68000
      type string;
    }
    leaf more-data {
      type binary;
    }
  }
}
]]></sourcecode>
        <t>We want to represent <tt>reporting-entity</tt> so that the value is
<tt>"/isis:adjacencies/adjacency[.=2]/neighbor-sysid"</tt>
 instance-identifier, but we want to use SIDs
Becuase the YANG list does not specify any keys, we will use index-based identification.
Becuase the YANG do not specify any keys, we will resort to index based identification.</t>
        <t>CBOR diagnostic notation: <tt>[ 68000, 2 ]</tt></t>
        <t>CBOR encoding:</t>
        <sourcecode type="cbor-pretty"><![CDATA[
82              # array(2)
   1A 000109A0  # 68000
   02           # 2
]]></sourcecode>
        <t>Where <tt>68000</tt> is absolute SID and <tt>2</tt> is 1-based index of the list entry.</t>
      </section>
      <section anchor="rules">
        <name>Rules</name>
        <t>The definitions of <xref section="6.13.1" sectionFormat="of" target="RFC9254"/> require that the list entries are
encoded as CBOR array with SID as first element, followed by keys in order same as walk from
schema root to the targeted child node. This formulation only applies to keyed lists.</t>
        <t>For keyless lists, the entry identification <bcp14>MUST</bcp14> be encoded using a CBOR unsigned integer data item
(major type 0). The index <bcp14>MUST</bcp14> be 1-based to maintain the same indexing base as RESTCONF <xref target="RFC8040"/>
and NETCONF <xref target="RFC6241"/>.</t>
        <t>If the target data node is a leaf-list entry, the last element of the CBOR array <bcp14>MUST</bcp14>
be encoded according to the encoding rules for the given leaf-list's type.</t>
        <t>The YANG 1.1 <xref target="RFC7950"/> allows a leaf-list of state data (config false) to have duplicates. In
this case, it is not defined which element the instance-identifier identifies.</t>
        <t>Due to restriction set forth in <xref section="9.13" sectionFormat="of" target="RFC7950"/> it is not possible to point the instance-identifier to a list or a leaf-list schema node.
Only instance data (i.e. nodes in the data tree) can be targeted.</t>
        <t>TODO: If these encoding rules are accepted by the working group consensus, changes to the draft I-D.core-comi (CORECONF) will be necessary.
This will allow us to identify keyless list instances, which is impossible in RESTCONF.</t>
      </section>
      <section anchor="examples">
        <name>Examples</name>
        <t>Unless stated otherwise, all examples are considered to live inside the <tt>example</tt> module namespace.
An equivalent representation using the Names encoding may
help readers who are already familiar with YANG JSON encoding <xref target="RFC7951"/>, or similar XML
encoding defined in YANG 1.1 <xref target="RFC7950"/>.</t>
        <section anchor="simple-leaf-list-instance-identifier">
          <name>Simple leaf-list instance-identifier</name>
          <t>The following example shows the encoding of the 'reporting-entity' value
referencing leaf-list instance "/auth/foreign-user" (which is assumed to have
SID 60000) entry "alice". The name-based representation is
<tt>"/example:auth/foreigh-user[.="alice"]"</tt>.</t>
          <sourcecode type="yang"><![CDATA[
container auth {
  leaf-list foreign-user { // SID 60000
    type string;
  }
}
]]></sourcecode>
          <t>CBOR diagnostic notation: <tt>[ 60000, "alice" ]</tt></t>
          <t>CBOR encoding:</t>
          <sourcecode type="cbor-pretty"><![CDATA[
82               # array(2)
   19 F6F6       # unsigned(60000)
   65            # text(5)
      616c696365 # "alice"
]]></sourcecode>
        </section>
        <section anchor="leaf-list-inst">
          <name>Leaf-list inside list</name>
          <t>The following example shows the encoding of the 'reporting-entity' value
referencing leaf-list instance "/user-group/user" (which is assumed to have SID
61000) entry "eve" for group-name "restricted". The name-based representation is
<tt>"/example:user-group[group-name="restricted"]/user[.="eve"]"</tt>.</t>
          <sourcecode type="yang"><![CDATA[
list user-group {
  config true;
  key "group-name"

  leaf group-name {
    type string;
  }

  leaf-list user { // SID 61000
    type string;
  }
}
]]></sourcecode>
          <t>CBOR diagnostic notation: <tt>[ 61000, "restricted", "eve" ]</tt></t>
          <t>CBOR encoding:</t>
          <sourcecode type="cbor-pretty"><![CDATA[
83                         # array(3)
   19 EE48                 # 61000
   6A                      # text(10)
      72657374726963746564 # "resricted"
   63                      # text(3)
      657665               # "eve"
]]></sourcecode>
        </section>
        <section anchor="list-instance">
          <name>List instance</name>
          <t>We reuse the YANG snippet from <xref target="leaf-list-inst"/>.
The following example shows the encoding of 'reporting-entity' value
referencing list instance "/user-group" for group name "restricted".
The name-based representation is
<tt>"/example:user-group[group-name="restricted"]"</tt>.</t>
          <t>CBOR diagnostic notation: <tt>[ 61000, "restricted" ]</tt></t>
          <t>CBOR encoding:</t>
          <sourcecode type="cbor-pretty"><![CDATA[
83                         # array(3)
   19 EE48                 # 61000
   6A                      # text(10)
      72657374726963746564 # "resricted"
]]></sourcecode>
        </section>
        <section anchor="instance-identifier-chaining">
          <name>Instance-identifier chaining</name>
          <t>The following example shows the encoding of 'reporting-entity' value
referencing leaf-list instance "/working-group/chair" entry. This entry
references "/auth/foreign-user" leaf-list entry "Carsten Bormann". The
"/working-group/chair" is assumed to have SID 62000. The name-based representation is
<tt>"/example:working-group[name="core"]/chair=[.="/example:auth/foreign-user[.="John Smith"]"]</tt>.</t>
          <sourcecode type="yang"><![CDATA[
list working-group {
  leaf name {
    type string;
  }

  leaf-list chair { // SID 62000
    type instance-identifier;
  }
}
]]></sourcecode>
          <t>CBOR diagnostic notation: <tt>[ 62000, "core", [ 60000, "Carsten Bormann" ] ]</tt></t>
          <t>CBOR encoding:</t>
          <sourcecode type="cbor-pretty"><![CDATA[
83                                        # array(3)
   19 F230                                # 62000
   64                                     # text(4)
      636F7265                            # "core"
   82                                     # array(2)
      19 F6F6                             # 60000
      6F                                  # text(15)
         4361727374656E20426F726D616E6E   # "Carsten Bormann"

]]></sourcecode>
          <t>TODO longer chains of leaf-list instance-identifier lead to high nesting of the CBOR array data items. Shoul a cap for the contrained nodes by put to simplify the implementations?
I think cap around 8 should be suffient for most deployments. I think that using leaf-list instance-identifier chaining is not a good practise.</t>
        </section>
        <section anchor="complex-example-of-mixed-keyed-and-keyless-lists">
          <name>Complex example of mixed keyed and keyless lists</name>
          <t>The following example shows the encoding of 'reporting-entity' value
referencing leaf 'token-data' of device with 'id' "id01", first 'security' list
entry for user's 'bob' second 'access-token' list entry. The leaf 'token-data'
is assumed to have SID 61500.
The name-based representation is
<tt>"/example:device[id="id01"]/security[.=1]/user[user="bob"]/access-token[.=2]/token-data"</tt>.</t>
          <sourcecode type="yang"><![CDATA[
list device {
  key "id";

  leaf id {
    type string;
  }

  list security {
    config false;

    list user {
      key "name";
      leaf name;

      list access-token {
        leaf type {
          type identityref { base token; }
        }
        leaf token-data { // SID 61500
          type binary;
        }
      }
    }
  }
}

identity token;
]]></sourcecode>
          <t>CBOR diagnostic notation: <tt>[ 61500, "id01", 1, "bob", 2 ]</tt></t>
          <t>CBOR encoding:</t>
          <sourcecode type="cbor-pretty"><![CDATA[
84             # array(4)
   19 F03C     # 61500
   64          # text(4)
      69643031 # "id01"
   01          # 1
   63          # text(3)
      626F62   # "bob"
   02          # 2
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="content-types">
      <name>Content-Types</name>
      <t>TODO Is it possible to reuse the Content-types define in the <xref target="RFC9254"/>? It would be wasteful to assign new MIME content-type to basically the same format.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="RFC8949"/>, <xref target="RFC7950"/>, <xref target="RFC9254"/> and
<xref target="RFC9595"/> apply.</t>
      <t>The implementations should be aware of possibly very large recursive nesting that occurs when instance-identifiers are chained.</t>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>TODO Is it possible to keep the same IANA allocations of th <xref target="RFC9254"/>? This draft wants to be more of a bugfix document than new encoding scheme.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <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="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="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6241">
          <front>
            <title>Network Configuration Protocol (NETCONF)</title>
            <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
            <date month="June" year="2011"/>
            <abstract>
              <t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices. It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages. The NETCONF protocol operations are realized as remote procedure calls (RPCs). This document obsoletes RFC 4741. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6241"/>
          <seriesInfo name="DOI" value="10.17487/RFC6241"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
        <reference anchor="RFC8040">
          <front>
            <title>RESTCONF Protocol</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8040"/>
          <seriesInfo name="DOI" value="10.17487/RFC8040"/>
        </reference>
        <reference anchor="RFC9130">
          <front>
            <title>YANG Data Model for the IS-IS Protocol</title>
            <author fullname="S. Litkowski" initials="S." role="editor" surname="Litkowski"/>
            <author fullname="D. Yeung" initials="D." surname="Yeung"/>
            <author fullname="A. Lindem" initials="A." surname="Lindem"/>
            <author fullname="J. Zhang" initials="J." surname="Zhang"/>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="October" year="2022"/>
            <abstract>
              <t>This document defines a YANG data model that can be used to configure and manage the IS-IS protocol on network elements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9130"/>
          <seriesInfo name="DOI" value="10.17487/RFC9130"/>
        </reference>
      </references>
    </references>
    <?line 397?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge. thank Andy Bierman for his friendly responses on mailing list.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9Va23LbypV9x1d06AfJUyRFUhRl0XFOZInKUcaSzkg+yZxx
uUpNoEm2BQIMLqIZlc6P5CU/kJ/IzIfN2ru7cSEp2c6tKn6wCKB7976ufQFa
rZZ3PxT7nhfEfiTnaiiCRE6y1r0O9VzdtVYymrb8cZy0dJRmLR20Ol0v01mI
lY1R5MeBjqYiyUOVingifjq+/I2glTLyFVarKNMTrRLcE9lMiZM48nWqxFsd
yWQlrsaflJ+Ja7VIVIq1MtNxJHZP3l5dv2x4cjxOFLhrbDDR8PJFIDOVDsX1
2clR76DveWmWKDkfivPR+zPPx8NpnKyGIs0Cz48jUE9zLM+SXHlelM/HKhl6
RGPoSWwciuPr0bG3nA7B4/XIu1OrZZwEQ0+0WKgW8eQu6C9f36soBwEhpkmc
L8Ap5AMfUkcqENejm/eTPBSj6F4ncTSHfClkA3XIJkS2WpAOfx8nd6TC3xAF
uj+XOsR9P07Ur7XKJu04mdL9qc5m+Xgo7q1p9r5gKM+TeTaLExbBmPZ38afs
//7kz8TvdPi/f8EukBUgD5n/p315fkKXpEaVDcWFhknj+/ROim53f7B3QA99
nUGlPyRyJvkyDkC1u9/pdMxlHmWk85M/KhwCq+bjUPv0SBmp7sEAHrUt07+O
tN/2/wh7xMkctr9nXcKih0cHnaEgkcz1q6P+0VCQdOaaLG6etyo3D44O7M2U
xNfRZI3soNfvDkWkMjjEpDipazd9SuPIHtfp43i4ZGXhEcQcCp3q1PNarZaQ
YzK0n3nee/h14SICcZSTqcXDQ2mTx0cRqAm8IrWhAs5A33o9zO8xgTn0GcJz
4JbS7cdWxA6Txh1DrC3WztygLcPQG+c6hCNE7GlpU6Q5jCJTkMsG/aYIlZwk
atIUMgq2hixzQXvb4vt4qe4pijMxgSFTkcVCBgHYT700nivhy9QAAAX5FmI4
faF8/PTB2QqrYoDAItZGeFBDvIH3VIQ6zQR2JZroJcxlq3qTZNdpoeZUWCRY
1zdozuWdYoaMXvx4vghVptrGgHMdBCGw4IU4B+U4yH0CH2POOq2hKIDu2gHd
KSnnwtpridB00LcF5rznYO4LjuFA9Qnf8J7wjW32ZAYLo8KVxVKFYcucH/DJ
bhsMPJOZB/dQicI1dAeusSyBH5E1UiNzHCky0hxYRRZMjTORzVLDRxEN625j
PMZbzlT0lM8U94yj8G7nGRBbGl9hPiJ2IHYYWbpMey00E6tptZG2siUI6CgA
11cQ6V4mWkZZk2EzoJjJU1pPl5BRG1+CFcehKo3f+u3N1WXhOoQmsI87y6gj
VVBk4OiDKo6/OT9l0Ygka8aow2IX/CRSKgAXLD0h7lP6antXEceWIpqtMRQc
rMuKVIetZSSsxZLUc+bF+ASTmus0reyPmBE/hAQTc1amkrmO4jCerkigAOGF
mHpfuUubLmPj9Sa+YCxB6TUVjYsfb943muavuLzi39ej//rx/Hp0Sr9vvj9+
96744dkVN99f/fjutPxV7jy5urgYXZ6azbgrare8xsXxTw3jpo2rH96fX10e
v2uYsK1ogvUEOcekLQgIw2TsCF6gUj/RY0WQKd6e/PDXP3f7sPkvkCF63e4R
gMdcvOoe9nFB/m1Oi8k25hJaW3lysVCS6yIgIqJhoTMZUgClIp3Fy0jMEHrQ
5X98IM18HIpfjv1Ft/8re4MErt10OqvdZJ1t3tnYbJS45daWYwpt1u6vabrO
7/FPtWun98rNX34XksO1uq+++5VnfGQSh2G8JNcjDzOu67AKWisgcAg4Zyig
Py707W/8KZALv7cEzbazKMDrJ9k8QCcxgOpMzb+FyyoBhuEbf6aQNs9BR+jT
AvF2zcPz0yZBWaoRpiu6fEkHqxAn77oim2CDbqMOicM845j/JpZQI1mOjDT/
WcnAQw91NKFcNNFTYHeYGhwtITfOESTRimG3zZtBvbK1XE2ZhDQaxdhRy/Nt
yE9PFOgpQm57HtXoZi+XdrLOR4n6oAsj07KIIaVNKKPMgVuIzXP8N5P3anMj
IdZ1NesyKMv02X6GOwDvxQuUAagxDVarz5KgVTy8mBc3Hz3vlNSvaytkIBeE
KZMkntec+eeffzaVb+G5Il2l5CgPUEa73cb/5NtUJsQJcdsirrIVPxc2uW+y
/BpPH71Hor/uJ44nAh6Tf4q0YUu6nfXDdpDEQrRSrkSgtY1I6emMWhAwjCZN
7C5nGjWnJlWm+dwkMbYA9CsGr9A3vHQn2NRYlHor98B6jNfYo+J7KINP0qcD
Vbrnfq8a1p9ILCcMnVrRsQcdEwGAMicxgtcJ1S2chOmgW3p8a5L8AnSrttjb
I4ujBsuZMpqA0joVjtgEVW8lpbNIBavWSmzBur7EgxA4p1ANr7P2RK8BDb/m
W48lASq8WqYirK4ec9lZri7M/nuUK1R4wAxFkSlu1217K9LYRBGphe0Mmb3b
5yzwof2m93FvzQFuve29wBjgsSxZgQU44Ly3ys9RtfCxJYAEsTLoYVqIVYE7
TSaikT6JAso39dlWPe4wnwOwvUk4iL9AEbqBTog7piu20/VM+6XlNIrTTPtE
lB8Nxe0HY8Wm6ImPt3alCyvrWtyuU22RrbxXPVH79wK4ncjVbu8lmbF7LECr
2zk67tCjwj86vdqWnjUzObe45VW3HAiVJMHuf9vj+12nL5bRBlwZgm2GN+55
DGQEBY5x2fzwcKO4axKDdne/3aV7tSYsUX/IdaJKZ6q1d0hMpj42NTZriIU2
8M68oiPSCe0JFRVmTYta2DE2JqO4RCVJKInApQ1LGd6ZkE8py0qRxDFbkqtV
mUy5lvNnOgxgr0DZjpIK7jw0MM7FGiq0kNg03alNb5TszpCbq3ksbVrMJNSq
u4jgWm1sARU0TCMhjbB5lOqpScuZmrqWm9Px7lx+wjEczp2XrqkjKzmKznbc
6GoGIwOkpAZeSifRGlIKDaNOri7PKNW4wQbaEy7NR8UTOxpBF+l555OKwgxn
pC12p7W2fGUUEMrSUM6ZKkYlxr2KKqTvw3Bcp8T1pFO2wnR7qu/RJBYn7qRm
KFEOXkQXrleOSyQ5SJ1JMAMYgv+zGLtVhH5Z5KQgh71pcIgu8DzyuCGgLrVJ
Yw9bwLg6yiQ2J+uTDaz7SV5zmiuDu4TlJmpSKBZSwte5LnPBdIRgKkKJ5j/F
8YsYzRg1nSDETfGTR1On7WqomipsTLDjm4axaLONcnQbEUGPUzfNMDODREFX
vozI91wUkRGuTq9Q8bG10w0bUu0JOytOw2PTMC7txJNnpqKYzTYRkpDXBBwf
S/NNcd46bdMstIWmVYvdkyvqMi7PXhqYBi+R8hGIktCK45jvsw8g2BjAjVZW
9RlTMepoiqJKQb3tFAzRXcgYFByZsgJA+GPEVNih0NdRJbHU5CbUyNnqw0hO
suH0xERpCD+mY7Vt4W/t2ltXVxSVR9s7RqEI6ETuJf9K6oMjgyFE4pJ2lDqf
y5U3U+ECGySOhS5msTFBSHdW8Pi5DjXaznJixUOLgkJ9euG6EI12X/z3xbti
mlHtJzYjkBX2QtxorsNK1/uK9usfVIlunikaezQO36OSD5jbQsWQPFOgelyF
dbhANbjekAAH1TBITJay8LtmG1MnWTGGlSNnfCTKJEvoY+O2vbXYpz1czpVC
VJlGleiKxI4rEtdKxKLce7466XB1Ytn5m2qU9SLlSJwNzgbFM5fedo0iacng
oL49U5+z3YOXtngddAf+4Giwj1UvHGNGEvKnd1WjUhDx74cXhZ74zcfjv9Kl
yCAtxrG9LzgUt+eDbtWh1D3UTkmOCbTIp0TDpQcVfKOrlax8KOm9qdL7uOc8
kE5e8z+WrKRRbWSogya3oqFdo6Td8FwjWuH/Ybs/1rx5zYu7f58Xd40XV+Rs
WtV+lUfvi6f+Od/ed749GvVfbVlVCDA4fooQe3m349z8sDc4ONw/7OMvnP2w
PzgY9MnhIYMVgck9wZolt18EzcHhoB5WvIh1YBRooqfqutwJJiqvtkRppBcL
KkjMQGItqh7b3xRWXxdST0ZTJS7EZlx4/+C44Ej4Vi/7t3avAlPPt5SOKMPQ
5AET/gkW3waith60OEqnA0hN/2k6M/5dvoxKt+fytZZENE4kGkd0Dm/pTUoU
GTz1njjvqRlVD9r/NiCukf9gvI0KWOAvn/WGEHhbhRAVFcJv41kkbuao0eCc
HzdxunZEUSuIr0Zg5qMCwb0aBH9pdvh8pPRMpLDETVGWGevWEB//3gj6UkCd
9fY7X95UCI8g+bpjONz6BfzuD84o4p7fY/RBWzZqqKe2VCsrsV5cPbWprAnB
2dnXHGPAoyjB8K+/P+ge9g4Ncox6nX6PJTxFdTYajIw469b0bKahblCEcTR1
OMJzomdbAHpqgg5FMrq5NKuUZpXxQTEbQXt+M4vzkGb8clGMCaiCtl/emO4V
7eYi58EPv0hx7yu5K5m74E2/887p3V90x8QkIioKxCsCuTwMqL9M8wnYjLgK
R6dGA0m1COMVvzFtC7ebR1ymM3teXAev5TuRaRwHYkEfk6CNtM3TCb+i/VyA
LvQx158hmxlF0dymNoL6J4G12MniOxXxjHmHdgbqHlW56R93dLAjGjrodBHp
Zky3kyo/T5ggv4YzUEyaI2zbScXOOB7vuGH/Do0G0rTFZ+xUB4+MuBsMeE+h
dPcAKP1NZYGR44MO3hgBPu45zgHAXVsq039vGuAYj6usmmF3ydiWUtrq6cHV
zTpovC4KZpr1Pw3TPKWxzNh19VcKZv5fltI2dPkcrsxf2ztFVrB73LuIiijF
bruaOSrvuZQQGDeBeyBt8EyRd7+2LyPo3+MaoUI71Vr/oECngnb1ZUWVzmPt
9YXnWLAHf1VrcMCZxzpoFz/JlF89kK/nAwfI/SK9dPZPHOo6uao5ZCNRHA36
+539LsEns8Tz+251Q3e97t+o9QHFg56BYJJl/RVA8QaAACQCQGet9/Txl8Hl
85RGidUZYtkCuOX8rZj7/sPO/+ovsb+jt7ZLh45LiTxAXznSwDGlfh8QvhQX
5xcjRmRHk7+mkGnx/ZedU5uvXPj9641z+RM7NTP47NnvZswzv/bMvIOwfDXL
AVRz/WMwwKVXe+/Nw/2VnSGvZYQK9sslTc9wilXaStwr4FlI408oD0ylNNRz
SYtzQOzTbf7UYxv+28ngjDOVnZ8WsvOnM+fHl8ebSqh+nTKTlDrMQskz49RR
2rTxnVKLUuFmD7KEX6qQ5k1rJjbn8QCW3tKl9mMY/tALO6QY59OJ/lyyBNGN
5Ys0w4NmSmf8td1Y+nck3LF/F8XLUAVTzp/ew9B8i6sAxAxvjUcriSxWqjaT
vxPHUbASb6FE1BycVPi9TYLsHMA0APsFDZMhU8Rf0boes+39P8OaHkbnLAAA

-->

</rfc>
