<?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.21 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-toutain-schc-universal-option-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="SCHC for CoAP">Options representation in SCHC YANG Data Models</title>
    <seriesInfo name="Internet-Draft" value="draft-toutain-schc-universal-option-00"/>
    <author initials="A." surname="Minaburo" fullname="Ana Minaburo">
      <organization>Consultant</organization>
      <address>
        <postal>
          <street>Rue de Rennes</street>
          <city>Cesson-Sevigne</city>
          <code>35510</code>
          <country>France</country>
        </postal>
        <email>anaminaburo@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Tiloca" fullname="Marco Tiloca">
      <organization>RISE AB</organization>
      <address>
        <postal>
          <street>Isafjordsgatan 22</street>
          <city>Kista</city>
          <code>16440</code>
          <country>Sweden</country>
        </postal>
        <email>marco.tiloca@ri.se</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization>IMT Atlantique</organization>
      <address>
        <postal>
          <street>CS 17607, 2 rue de la Chataigneraie</street>
          <city>Cesson-Sevigne Cedex</city>
          <code>35576</code>
          <country>France</country>
        </postal>
        <email>Laurent.Toutain@imt-atlantique.fr</email>
      </address>
    </author>
    <date year="2025" month="January" day="23"/>
    <area>Internet</area>
    <workgroup>SCHC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 58?>

<t>The idea of keeping option identifiers  in SCHC Rules simplifies the interoperability and the evolution of SCHC compression, when the protocol introduces new options, that can be unknown from the current SCHC implementation. This document discuss the augmentation of the current YANG Data Model, in order to add in the Rule options identifiers used by the protocol.</t>
    </abstract>
  </front>
  <middle>
    <?line 63?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Static Context Header Compression (SCHC) enables efficient communication in constrained networks by compressing protocol headers using predefined Rules. This document proposes improvements to how SCHC handles protocol options, as for CoAP (Constrained Application Protocol).</t>
      <t>The Data Model defined in <xref target="RFC9363"/> was written based on LPWAN technologies while the working group was developing a solution for those devices. When the <xref target="RFC9363"/> was developed, the group targeted devices such as sensors and actuators with very constrained resources but these devices have very predictable traffic leading to very static rules. Also, the data model includes CoAP parameters defined in <xref target="RFC8824"/>.</t>
    </section>
    <section anchor="current-challenges">
      <name>Current Challenges</name>
      <t>Since CoAP is a more flexible protocol compared to IPv6 (without extensions) or UDP, given that CoAP includes options. The data model redefined these options as identifiers that are included in SCHC Rules as Field ID (FID).</t>
      <t>If this approach was acceptable for LPWAN technologies that have a  static and controlled environment, the generalization of SCHC to more dynamic environment is a source of interoperability issues. Even though, this solution will become more accurate when rule management between two end-points in a SCHC instance is used to optimize compression.</t>
      <t>The following scenario (cf. <xref target="fig-rule-mngt"/>) illustrates this issue and assumes that the traffic is CoAP based, even if this can be extended to other protocols with options.</t>
      <figure anchor="fig-rule-mngt">
        <name>Rule Management between two SCHC end-points</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="304" viewBox="0 0 304 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 112,48 L 112,80" fill="none" stroke="black"/>
              <path d="M 200,48 L 200,80" fill="none" stroke="black"/>
              <path d="M 112,48 L 200,48" fill="none" stroke="black"/>
              <path d="M 24,96 L 88,96" fill="none" stroke="black"/>
              <path d="M 128,96 Q 130,92.8 132,96 Q 134,99.2 136,96 Q 138,92.8 140,96 Q 142,99.2 144,96 Q 146,92.8 148,96 Q 150,99.2 152,96 Q 154,92.8 156,96 Q 158,99.2 160,96 Q 162,92.8 164,96 Q 166,99.2 168,96 Q 170,92.8 172,96 Q 174,99.2 176,96 Q 178,92.8 180,96 Q 182,99.2 184,96 " fill="none" stroke="black"/>
              <path d="M 224,96 L 272,96" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="280,96 268,90.4 268,101.6" fill="black" transform="rotate(0,272,96)"/>
              <polygon class="arrowhead" points="232,96 220,90.4 220,101.6" fill="black" transform="rotate(180,224,96)"/>
              <polygon class="arrowhead" points="208,80 196,74.4 196,85.6" fill="black" transform="rotate(90,200,80)"/>
              <polygon class="arrowhead" points="192,96 180,90.4 180,101.6" fill="black" transform="rotate(0,184,96)"/>
              <polygon class="arrowhead" points="136,96 124,90.4 124,101.6" fill="black" transform="rotate(180,128,96)"/>
              <polygon class="arrowhead" points="120,80 108,74.4 108,85.6" fill="black" transform="rotate(90,112,80)"/>
              <polygon class="arrowhead" points="96,96 84,90.4 84,101.6" fill="black" transform="rotate(0,88,96)"/>
              <polygon class="arrowhead" points="32,96 20,90.4 20,101.6" fill="black" transform="rotate(180,24,96)"/>
              <g class="text">
                <text x="132" y="36">rule</text>
                <text x="172" y="36">mngt</text>
                <text x="8" y="100">A</text>
                <text x="108" y="100">S1</text>
                <text x="204" y="100">S2</text>
                <text x="288" y="100">B</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
              rule mngt
             +----------+
             |          |
             v          v
A <-------> S1 <~~~~~~> S2 <-----> B 
]]></artwork>
        </artset>
      </figure>
      <t>In this scenario:
* Device A generates CoAP packets with various options.
* SCHC nodes S1 and S2 compress and decompress the traffic using shared Rules.
* When A uses a newly defined or private option, S1 can derive new Rules to optimize compression, including this option.
* The challenge lies in communicating these new Field IDs (FIDs) to S2</t>
      <t>Suppose that a Rule defines just a CoAP header, and a more specific Rule is derived including a URI-path. The entry (cf. <xref target="fig-entry-uri-path"/>) is present in the derived Rule. <xref target="RFC9363"/> defines identityref for several elements, (respectively fid:coap-option-uri-path, di:up, mo:equal and cda:not-sent) that can be used to send the Rule description to the other side.</t>
      <figure anchor="fig-entry-uri-path">
        <name>New entry added by management</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="472" viewBox="0 0 472 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
              <path d="M 128,32 L 128,112" fill="none" stroke="black"/>
              <path d="M 176,32 L 176,112" fill="none" stroke="black"/>
              <path d="M 208,32 L 208,112" fill="none" stroke="black"/>
              <path d="M 248,32 L 248,112" fill="none" stroke="black"/>
              <path d="M 312,32 L 312,112" fill="none" stroke="black"/>
              <path d="M 376,32 L 376,112" fill="none" stroke="black"/>
              <path d="M 456,32 L 456,112" fill="none" stroke="black"/>
              <path d="M 8,32 L 456,32" fill="none" stroke="black"/>
              <path d="M 8,62 L 456,62" fill="none" stroke="black"/>
              <path d="M 8,66 L 456,66" fill="none" stroke="black"/>
              <path d="M 8,112 L 456,112" fill="none" stroke="black"/>
              <g class="text">
                <text x="56" y="52">FID</text>
                <text x="148" y="52">FL</text>
                <text x="196" y="52">FP</text>
                <text x="228" y="52">DI</text>
                <text x="276" y="52">TV</text>
                <text x="348" y="52">MO</text>
                <text x="416" y="52">CDA</text>
                <text x="32" y="84">...</text>
                <text x="152" y="84">...</text>
                <text x="192" y="84">...</text>
                <text x="224" y="84">...</text>
                <text x="272" y="84">...</text>
                <text x="336" y="84">...</text>
                <text x="400" y="84">...</text>
                <text x="64" y="100">CoAP.Uri-path</text>
                <text x="152" y="100">len</text>
                <text x="192" y="100">1</text>
                <text x="228" y="100">up</text>
                <text x="280" y="100">value</text>
                <text x="344" y="100">equal</text>
                <text x="420" y="100">not-sent</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+--------------+-----+---+----+-------+-------+---------+
|    FID       | FL  | FP| DI |  TV   |   MO  |   CDA   | 
+==============+=====+===+====+=======+=======+=========+
| ...          | ... |...|... | ...   | ...   | ...     |
|CoAP.Uri-path | len | 1 | up | value | equal | not-sent| 
+--------------+-----+---+----+-------+-------+---------+
]]></artwork>
        </artset>
      </figure>
      <t>Now suppose that A uses a recently defined option or a private option. In S1, nothing is changed, the CoAP header is parsed, the new option is discovered, and a Rule is derived to compress the option. The only blocking element is the identification of this new FID in the Rule and how S1 sends it to the other end-point to understand which option is involved (cf <xref target="fig-new-fid"/>) and what is the value for reconstructing the header.</t>
      <figure anchor="fig-new-fid">
        <name>New entry added by management</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="480" viewBox="0 0 480 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,112" fill="none" stroke="black"/>
              <path d="M 136,32 L 136,112" fill="none" stroke="black"/>
              <path d="M 184,32 L 184,112" fill="none" stroke="black"/>
              <path d="M 216,32 L 216,112" fill="none" stroke="black"/>
              <path d="M 256,32 L 256,112" fill="none" stroke="black"/>
              <path d="M 320,32 L 320,112" fill="none" stroke="black"/>
              <path d="M 384,32 L 384,112" fill="none" stroke="black"/>
              <path d="M 464,32 L 464,112" fill="none" stroke="black"/>
              <path d="M 8,32 L 464,32" fill="none" stroke="black"/>
              <path d="M 8,62 L 464,62" fill="none" stroke="black"/>
              <path d="M 8,66 L 464,66" fill="none" stroke="black"/>
              <path d="M 8,112 L 464,112" fill="none" stroke="black"/>
              <g class="text">
                <text x="64" y="52">FID</text>
                <text x="156" y="52">FL</text>
                <text x="204" y="52">FP</text>
                <text x="236" y="52">DI</text>
                <text x="284" y="52">TV</text>
                <text x="356" y="52">MO</text>
                <text x="424" y="52">CDA</text>
                <text x="32" y="84">...</text>
                <text x="160" y="84">...</text>
                <text x="200" y="84">...</text>
                <text x="232" y="84">...</text>
                <text x="280" y="84">...</text>
                <text x="344" y="84">...</text>
                <text x="408" y="84">...</text>
                <text x="72" y="100">CoAP.new-option</text>
                <text x="160" y="100">len</text>
                <text x="200" y="100">1</text>
                <text x="236" y="100">up</text>
                <text x="288" y="100">value</text>
                <text x="352" y="100">equal</text>
                <text x="428" y="100">not-sent</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+---------------+-----+---+----+-------+-------+---------+
|     FID       | FL  | FP| DI |  TV   |   MO  |   CDA   | 
+===============+=====+===+====+=======+=======+=========+
| ...           | ... |...|... | ...   | ...   | ...     |
|CoAP.new-option| len | 1 | up | value | equal | not-sent| 
+---------------+-----+---+----+-------+-------+---------+
]]></artwork>
        </artset>
      </figure>
      <t>In fact, the way FIDs are allocated using a YANG Data Model cannot be used when some fields are defined after the SCHC implementation. The Parser will identify this new option since the structure in the header remains the same. The compression and decompression do not need to be modified, since it is based in generic procedure. The problem is related to FID allocation, internally to the SCHC implementation and to the Data Model to exchange Rules with other implementations.</t>
      <t>The protocol option space and the SCHC FID space are not correlated, this leads to an interoperability issue.</t>
    </section>
    <section anchor="syntactic-compression">
      <name>Syntactic compression</name>
      <t>SCHC compression is semantic, field ID are abstracted in a generic representation composed of a field ID, a position, and a direction. For instance, when a CoAP option is sent on the wire, the option is coded as a delta option, a length value and the value. All these information is found in the abstract description. The delta option allows to find the option number which is turned into a SCHC FID, the length is taken from the option as the associated value.  As stated before, the mapping between the option number and the FID must be known and failed if the option is new to the SCHC implementation.</t>
      <t>To avoid the mapping between a protocol ID and a SCHC ID <xref target="I-D.lampin-lpwan-schc-considerations"/> proposed,  to stay closer to the protocol syntax and define Rules that will take into account the option format. So, an option will be described in 3 fields (cf. <xref target="fig-synt-not-sent"/>):</t>
      <figure anchor="fig-synt-not-sent">
        <name>representation of an elided option with syntactic representation</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="456" viewBox="0 0 456 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,144" fill="none" stroke="black"/>
              <path d="M 112,32 L 112,144" fill="none" stroke="black"/>
              <path d="M 160,32 L 160,144" fill="none" stroke="black"/>
              <path d="M 192,32 L 192,144" fill="none" stroke="black"/>
              <path d="M 232,32 L 232,144" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,144" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,144" fill="none" stroke="black"/>
              <path d="M 440,32 L 440,144" fill="none" stroke="black"/>
              <path d="M 8,32 L 440,32" fill="none" stroke="black"/>
              <path d="M 8,62 L 440,62" fill="none" stroke="black"/>
              <path d="M 8,66 L 440,66" fill="none" stroke="black"/>
              <path d="M 8,144 L 440,144" fill="none" stroke="black"/>
              <g class="text">
                <text x="64" y="52">FID</text>
                <text x="132" y="52">FL</text>
                <text x="180" y="52">FP</text>
                <text x="212" y="52">DI</text>
                <text x="260" y="52">TV</text>
                <text x="332" y="52">MO</text>
                <text x="400" y="52">CDA</text>
                <text x="56" y="84">CoAP.option</text>
                <text x="132" y="84">16</text>
                <text x="176" y="84">1</text>
                <text x="212" y="84">up</text>
                <text x="256" y="84">opt</text>
                <text x="284" y="84">or</text>
                <text x="328" y="84">equal</text>
                <text x="404" y="84">not-sent</text>
                <text x="264" y="100">delta</text>
                <text x="56" y="116">CoAP.length</text>
                <text x="132" y="116">16</text>
                <text x="176" y="116">1</text>
                <text x="212" y="116">up</text>
                <text x="264" y="116">value</text>
                <text x="328" y="116">equal</text>
                <text x="404" y="116">not-sent</text>
                <text x="52" y="132">CoAP.value</text>
                <text x="136" y="132">len</text>
                <text x="176" y="132">1</text>
                <text x="212" y="132">up</text>
                <text x="264" y="132">value</text>
                <text x="328" y="132">equal</text>
                <text x="404" y="132">not-sent</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+------------+-----+---+----+-------+-------+---------+
|     FID    | FL  | FP| DI |  TV   |   MO  |   CDA   | 
+============+=====+===+====+=======+=======+=========+
|CoAP.option | 16  | 1 | up | opt or| equal | not-sent|
|            |     |   |    | delta |       |         |
|CoAP.length | 16  | 1 | up | value | equal | not-sent|
|CoAP.value  | len | 1 | up | value | equal | not-sent|
+------------+-----+---+----+-------+-------+---------+
]]></artwork>
        </artset>
      </figure>
      <t>Where option could be either the absolute CoAP option number or the delta as it appears in the CoAP message. This way, the option remains in the CoAP numbering space and every option is processed the same way and upcoming options will also be compressed.</t>
      <t>Nevertheless, this encoding multiply by three the number of entries to describe an option, leading to a larger representation of the Rule. If this description works well when the field is elided with not-sent CDA, the compression is more complex when the option must be sent. For instance (cf. <xref target="fig-sem-value-sent"/>):</t>
      <figure anchor="fig-sem-value-sent">
        <name>representation of an option sent with semantic representation</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="432" viewBox="0 0 432 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
              <path d="M 136,32 L 136,96" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,96" fill="none" stroke="black"/>
              <path d="M 200,32 L 200,96" fill="none" stroke="black"/>
              <path d="M 224,32 L 224,96" fill="none" stroke="black"/>
              <path d="M 272,32 L 272,96" fill="none" stroke="black"/>
              <path d="M 328,32 L 328,96" fill="none" stroke="black"/>
              <path d="M 416,32 L 416,96" fill="none" stroke="black"/>
              <path d="M 8,32 L 416,32" fill="none" stroke="black"/>
              <path d="M 8,62 L 416,62" fill="none" stroke="black"/>
              <path d="M 8,66 L 416,66" fill="none" stroke="black"/>
              <path d="M 8,96 L 416,96" fill="none" stroke="black"/>
              <g class="text">
                <text x="72" y="52">FID</text>
                <text x="148" y="52">FL</text>
                <text x="180" y="52">FP</text>
                <text x="212" y="52">DI</text>
                <text x="244" y="52">TV</text>
                <text x="300" y="52">MO</text>
                <text x="368" y="52">CDA</text>
                <text x="72" y="84">CoAP.new-option</text>
                <text x="152" y="84">var</text>
                <text x="184" y="84">1</text>
                <text x="212" y="84">up</text>
                <text x="248" y="84">value</text>
                <text x="296" y="84">equal</text>
                <text x="372" y="84">value-sent</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+---------------+---+---+--+-----+------+----------+
|      FID      |FL |FP |DI| TV  |  MO  |   CDA    | 
+===============+===+===+==+=====+======+==========+
|CoAP.new-option|var| 1 |up|value|equal |value-sent|
+---------------+---+---+--+-----+------+----------+
]]></artwork>
        </artset>
      </figure>
      <t>will be transformed into (cf. <xref target="fig-snyt-value-sent"/>):</t>
      <figure anchor="fig-snyt-value-sent">
        <name>representation of an option sent with syntactic representation</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="376" viewBox="0 0 376 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,128" fill="none" stroke="black"/>
              <path d="M 112,32 L 112,128" fill="none" stroke="black"/>
              <path d="M 144,32 L 144,128" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,128" fill="none" stroke="black"/>
              <path d="M 192,32 L 192,128" fill="none" stroke="black"/>
              <path d="M 216,32 L 216,128" fill="none" stroke="black"/>
              <path d="M 272,32 L 272,128" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,128" fill="none" stroke="black"/>
              <path d="M 8,32 L 360,32" fill="none" stroke="black"/>
              <path d="M 8,62 L 360,62" fill="none" stroke="black"/>
              <path d="M 8,66 L 360,66" fill="none" stroke="black"/>
              <path d="M 8,128 L 360,128" fill="none" stroke="black"/>
              <g class="text">
                <text x="56" y="52">FID</text>
                <text x="124" y="52">FL</text>
                <text x="156" y="52">FP</text>
                <text x="180" y="52">DI</text>
                <text x="204" y="52">TV</text>
                <text x="244" y="52">MO</text>
                <text x="312" y="52">CDA</text>
                <text x="56" y="84">CoAP.option</text>
                <text x="124" y="84">16</text>
                <text x="152" y="84">1</text>
                <text x="180" y="84">up</text>
                <text x="244" y="84">ignore</text>
                <text x="316" y="84">value-sent</text>
                <text x="56" y="100">CoAP.length</text>
                <text x="124" y="100">16</text>
                <text x="152" y="100">1</text>
                <text x="180" y="100">up</text>
                <text x="244" y="100">ignore</text>
                <text x="316" y="100">value-sent</text>
                <text x="52" y="116">CoAP.value</text>
                <text x="128" y="116">var</text>
                <text x="152" y="116">1</text>
                <text x="180" y="116">up</text>
                <text x="244" y="116">ignore</text>
                <text x="316" y="116">value-sent</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+------------+---+--+--+--+------+----------+
|    FID     |FL |FP|DI|TV|  MO  |   CDA    | 
+============+===+==+==+==+======+==========+
|CoAP.option |16 |1 |up|  |ignore|value-sent| 
|CoAP.length |16 |1 |up|  |ignore|value-sent|
|CoAP.value  |var|1 |up|  |ignore|value-sent|
+------------+---+--+--+--+------+----------+
]]></artwork>
        </artset>
      </figure>
      <t>In that case, the option or the length coded from 4 bits to 16 bits may be viewed as a 16-bit field that has to be sent as residue. The option length has to be sent twice, the first time in the CoAP.length field and a second time in the residue of the value. To avoid this, one option could have been to define a new length function, linking the length of the value to the content of the CoAP.length field. Without this optimization, if we want to keep it generic, an option of 4 bytes, will be coded 2+2+0.5+3 = 7.5 bytes.</t>
      <t>Having generic compression schemes is interesting and this work needs to continue to be investigated, but going too close to the byte representation may lead to suboptimal compression and Rule representation.</t>
    </section>
    <section anchor="options-id">
      <name>Options ID</name>
      <t>The idea of keeping   protocol identifiers in SCHC Rules simplify the interoperability and the evolution of SCHC compression, when the protocol evolves. One solution is to use these identifiers in the compression Rules. Since several protocols may reuse the same values. For instance, option 8 refers to Location-Path in CoAP and Timestamp in TCP. The value must be associated with the protocol to avoid ambiguities.</t>
      <t>One solution could be to define in SCHC an identity referring to the protocol, followed by the value used by this protocol.</t>
      <t>The tree (cf. <xref target="fig-yang-rule-entry"/>) shows how compression rules are defined in the YANG Data Model <xref target="RFC9363"/>:</t>
      <figure anchor="fig-yang-rule-entry">
        <name>Rule entry defined by [RFC 9363].</name>
        <artwork align="center"><![CDATA[
           +--:(compression) {compression}? 
              +--rw entry* [field-id field-position direction-indicator] 
                 +--rw field-id                    schc:fid-type 
                 +--rw field-length                union 
                 +--rw field-position              uint8 
                 +--rw direction-indicator         schc:di-type 
                 .
                 .
                 .
]]></artwork>
      </figure>
      <t>An entry is defined by a key composed of the field-id, a field-position and the direction indicator. This branch of the tree cannot be augmented with a new leaf containing the option value and the field-id set to an identifier specifying the CoAP options.</t>
      <t>For instance, the representation of an URI with two path elements (11) and two query elements (15):</t>
      <figure anchor="fig-proto-id">
        <name>Rule including options ID.</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="424" viewBox="0 0 424 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,144" fill="none" stroke="black"/>
              <path d="M 136,32 L 136,144" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,144" fill="none" stroke="black"/>
              <path d="M 192,32 L 192,144" fill="none" stroke="black"/>
              <path d="M 216,32 L 216,144" fill="none" stroke="black"/>
              <path d="M 264,32 L 264,144" fill="none" stroke="black"/>
              <path d="M 320,32 L 320,144" fill="none" stroke="black"/>
              <path d="M 408,32 L 408,144" fill="none" stroke="black"/>
              <path d="M 8,32 L 408,32" fill="none" stroke="black"/>
              <path d="M 8,62 L 408,62" fill="none" stroke="black"/>
              <path d="M 8,66 L 408,66" fill="none" stroke="black"/>
              <path d="M 8,144 L 408,144" fill="none" stroke="black"/>
              <g class="text">
                <text x="72" y="52">FID</text>
                <text x="148" y="52">FL</text>
                <text x="180" y="52">FP</text>
                <text x="204" y="52">DI</text>
                <text x="236" y="52">TV</text>
                <text x="292" y="52">MO</text>
                <text x="360" y="52">CDA</text>
                <text x="72" y="84">CoAP.option(11)</text>
                <text x="152" y="84">len</text>
                <text x="176" y="84">1</text>
                <text x="204" y="84">up</text>
                <text x="240" y="84">value</text>
                <text x="288" y="84">equal</text>
                <text x="356" y="84">not-sent</text>
                <text x="72" y="100">CoAP.option(11)</text>
                <text x="152" y="100">len</text>
                <text x="176" y="100">2</text>
                <text x="204" y="100">up</text>
                <text x="292" y="100">ignore</text>
                <text x="364" y="100">value-sent</text>
                <text x="72" y="116">CoAP.option(15)</text>
                <text x="152" y="116">len</text>
                <text x="176" y="116">1</text>
                <text x="204" y="116">up</text>
                <text x="240" y="116">value</text>
                <text x="288" y="116">equal</text>
                <text x="356" y="116">not-sent</text>
                <text x="72" y="132">CoAP.option(15)</text>
                <text x="152" y="132">len</text>
                <text x="176" y="132">2</text>
                <text x="204" y="132">up</text>
                <text x="240" y="132">value</text>
                <text x="288" y="132">equal</text>
                <text x="356" y="132">not-sent</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+---------------+---+--+--+-----+------+----------+
|      FID      |FL |FP|DI| TV  |  MO  |   CDA    | 
+===============+===+==+==+=====+======+==========+
|CoAP.option(11)|len|1 |up|value|equal |not-sent  |
|CoAP.option(11)|len|2 |up|     |ignore|value-sent| 
|CoAP.option(15)|len|1 |up|value|equal |not-sent  |
|CoAP.option(15)|len|2 |up|value|equal |not-sent  |
+---------------+---+--+--+-----+------+----------+
]]></artwork>
        </artset>
      </figure>
      <t>Is not valid regarding the Data Model, since the key FID, position, direction is repeated four times on the example. The option itself must be included as a key.</t>
      <t>It is not possible to augment the model defined in RFC 9363 and add this leaf to the key of the list. Having this element on all entries is not also optimal. It looks better to augment the current compression data model with another list containing entries describing options.</t>
      <figure anchor="fig-augmentation-id">
        <name>Augmentation of SCHC Data Model to include options ID.</name>
        <artwork align="center"><![CDATA[
  +--rw schc-opt:entry-option-space* \
          [space-id option-value field-position direction-indicator] 
    +--rw schc-opt:space-id                    space-type 
    +--rw schc-opt:option-value                uint32 
    +--rw schc-opt:field-length                union 
    +--rw schc-opt:field-position              uint8 
    +--rw schc-opt:direction-indicator         schc:di-type 
    .
    .
    .
]]></artwork>
      </figure>
      <t>The space-id defines the protocol space, this value may be provided by the SCHC WG and option-value is taken from the protocol space maintained by IANA.</t>
      <t>This will have an impact on the serialization of residues. Both ends must have the entry in the same order. So Field from “entry” list MUST be serialized before the ones defined in “entry-option-space”.</t>
    </section>
    <section anchor="impact-on-current-standards">
      <name>Impact on current standards</name>
      <t><xref target="RFC9363"/> and <xref target="I-D.ietf-schc-8824-update"/> define some FID for CoAP options. This leads to have similar Rule but they are incompatible. CoAP option identifier should be deprecated.</t>
      <t>This leads also to a constraint that has not been included for the Data Model. The order of the Field Descriptors is not specified as YANG do not impose a position in a list. This has no impact on the compression process but is important for the serialization. The <xref target="I-D.ietf-lpwan-architecture"/> should document the fact that entry ordrer should not be changed when transmitted from one end-point to the other. So, this allow to keep the indication of <xref target="RFC8724"/> to keep Field Descriptors (aka entries) listed in the order they appear in the packet header.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8724">
          <front>
            <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="C. Gomez" initials="C." surname="Gomez"/>
            <author fullname="D. Barthel" initials="D." surname="Barthel"/>
            <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
            <date month="April" year="2020"/>
            <abstract>
              <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
              <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
              <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
              <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8724"/>
          <seriesInfo name="DOI" value="10.17487/RFC8724"/>
        </reference>
        <reference anchor="RFC9363">
          <front>
            <title>A YANG Data Model for Static Context Header Compression (SCHC)</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <date month="March" year="2023"/>
            <abstract>
              <t>This document describes a YANG data model for the Static Context Header Compression (SCHC) compression and fragmentation Rules.</t>
              <t>This document formalizes the description of the Rules for better interoperability between SCHC instances either to exchange a set of Rules or to modify the parameters of some Rules.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9363"/>
          <seriesInfo name="DOI" value="10.17487/RFC9363"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8824">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
            <author fullname="L. Toutain" initials="L." surname="Toutain"/>
            <author fullname="R. Andreasen" initials="R." surname="Andreasen"/>
            <date month="June" year="2021"/>
            <abstract>
              <t>This document defines how to compress Constrained Application Protocol (CoAP) headers using the Static Context Header Compression and fragmentation (SCHC) framework. SCHC defines a header compression mechanism adapted for Constrained Devices. SCHC uses a static description of the header to reduce the header's redundancy and size. While RFC 8724 describes the SCHC compression and fragmentation framework, and its application for IPv6/UDP headers, this document applies SCHC to CoAP headers. The CoAP header structure differs from IPv6 and UDP, since CoAP uses a flexible header with a variable number of options, themselves of variable length. The CoAP message format is asymmetric: the request messages have a header format different from the format in the response messages. This specification gives guidance on applying SCHC to flexible headers and how to leverage the asymmetry for more efficient compression Rules.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8824"/>
          <seriesInfo name="DOI" value="10.17487/RFC8824"/>
        </reference>
        <reference anchor="I-D.lampin-lpwan-schc-considerations">
          <front>
            <title>SCHC design and implementation considerations</title>
            <author fullname="Quentin Lampin" initials="Q." surname="Lampin">
              <organization>Orange</organization>
            </author>
            <date day="10" month="November" year="2022"/>
            <abstract>
              <t>   Taking the opportunity of a fresh implementation of SCHC by a
   newcomer to SCHC to reflect on the design principles and the
   implications on the implication of SCHC.

   Topics addressed:

   *  The parser, as described in SCHC specification.

   *  A discussion on parsing and interpretation.

   *  Practical implications of the specification of the parser of SCHC.

   *  the challenge and opportunity of a generic parser implementation
      able to handle any protocol stack and rules design to enable it.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-lampin-lpwan-schc-considerations-00"/>
        </reference>
        <reference anchor="I-D.ietf-schc-8824-update">
          <front>
            <title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Ivan Martinez" initials="I." surname="Martinez">
              <organization>Nokia Bell Labs</organization>
            </author>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   This document defines how to compress Constrained Application
   Protocol (CoAP) headers using the Static Context Header Compression
   and fragmentation (SCHC) framework.  SCHC defines a header
   compression mechanism adapted for constrained devices.  SCHC uses a
   static description of the header to reduce the header's redundancy
   and size.  While RFC 8724 describes the SCHC compression and
   fragmentation framework, and its application for IPv6/UDP headers,
   this document applies SCHC to CoAP headers.  The CoAP header
   structure differs from IPv6 and UDP, since CoAP uses a flexible
   header with a variable number of options, themselves of variable
   length.  The CoAP message format is asymmetric: the request messages
   have a header format different from the format in the response
   messages.  This specification gives guidance on applying SCHC to
   flexible headers and how to leverage the asymmetry for more efficient
   compression Rules.  This document replaces and obsoletes RFC 8824.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-8824-update-03"/>
        </reference>
        <reference anchor="I-D.ietf-lpwan-architecture">
          <front>
            <title>LPWAN Static Context Header Compression (SCHC) Architecture</title>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>Acklio</organization>
            </author>
            <author fullname="Pascal Thubert" initials="P." surname="Thubert">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Acklio</organization>
            </author>
            <date day="30" month="June" year="2022"/>
            <abstract>
              <t>   This document defines the LPWAN SCHC architecture.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lpwan-architecture-02"/>
        </reference>
      </references>
    </references>
    <?line 240?>

<section anchor="yang-data-model">
      <name>YANG Data Model</name>
      <t>This appendix defines the work in progress YANG Data Model to extend the Data Model defined in <xref target="RFC9363"/>.</t>
      <sourcecode type="~~~~~~~~"><![CDATA[
<CODE BEGINS> file "ietf-schc-opt@2024-12-19.yang"


module ietf-schc-opt {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-schc-opt";
  prefix schc-opt;

  import ietf-schc {
      prefix schc;
  }

  organization
    "IETF IPv6 over Low Power Wide-Area Networks (lpwan) working group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lpwan/about/>
     WG List:  <mailto:p-wan@ietf.org>
     Editor:   Laurent Toutain
       <mailto:laurent.toutain@imt-atlantique.fr>
     Editor:   Ana Minaburo
       <mailto:ana@ackl.io>";
  description
     "
     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.

     *************************************************************************

     This module extends the ietf-schc module to include the compound-ack 
     behavior for Ack On Error as defined in RFC YYYY. 
     It introduces a new leaf for Ack on Error defining the format of the
     SCHC Ack and add the possibility to send several bitmaps in a single 
     answer.";

  revision 2024-12-19 {
    description
      "Initial version for RFC YYYY ";
    reference
      "RFC YYYY: OAM";
  }


  identity space-id-base-type {
    description
      "Field ID base type for all fields.";
  }

  identity space-id-coap {
    base space-id-base-type;
    description
      "Field ID base type for IPv6 headers described in RFC 8200.";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  typedef space-type {
    type identityref {
      base space-id-base-type;
    }
    description
      "Field ID generic type.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }


 augment "/schc:schc/schc:rule/schc:nature/schc:compression" {
  list entry-option-space {
    key "space-id option-value field-position direction-indicator";
    leaf space-id {
      type space-type;
      mandatory true;
      description
        "";
    }
    leaf option-value {
      type uint32;
    }
    leaf field-length {
      type union {
      type uint8;
      type schc:fl-type;
        }
      mandatory true;
      description
        "Field Length, expressed in number of bits if the length is
         known when the Rule is created or through a specific
         function if the length is variable.";
    }
    leaf field-position {
      type uint8;
      mandatory true;
      description
        "Field Position in the header is an integer.  Position 1
         matches the first occurrence of a field in the header,
         while incremented position values match subsequent
         occurrences.
         Position 0 means that this entry matches a field
         irrespective of its position of occurrence in the
         header.
         Be aware that the decompressed header may have
         position-0 fields ordered differently than they
         appeared in the original packet.";
    }
    leaf direction-indicator {
      type schc:di-type;
      mandatory true;
      description
        "Direction Indicator, indicate if this field must be
         considered for Rule selection or ignored based on the
         direction (bidirectional, only uplink, or only
         downlink).";
    }
    list target-value {
      key "index";
      uses schc:tv-struct;
      description
        "A list of values to compare with the header field value.
         If Target Value is a singleton, position must be 0.
         For use as a matching list for the mo-match-mapping Matching
         Operator, index should take consecutive values starting
         from 0.";
    }
    leaf matching-operator {
      type schc:mo-type;
      must "../target-value or derived-from-or-self(.,
                                                   'mo-ignore')" {
        error-message
          "mo-equal, mo-msb, and mo-match-mapping need target-value";
        description
          "target-value is not required for mo-ignore.";
      }
      must "not (derived-from-or-self(., 'mo-msb')) or
            ../matching-operator-value" {
        error-message "mo-msb requires length value";
      }
      mandatory true;
      description
        "MO: Matching Operator.";
      reference
        "RFC 8724 SCHC: Generic Framework for Static Context Header
                  Compression and Fragmentation (see Section 7.3)";
    }
    list matching-operator-value {
      key "index";
      uses schc:tv-struct;
      description
        "Matching Operator Arguments, based on TV structure to allow
         several arguments.
         In RFC 8724, only the MSB Matching Operator needs arguments
         (a single argument, which is the number of most significant
         bits to be matched).";
    }
    leaf comp-decomp-action {
      type schc:cda-type;
      must "../target-value or
                derived-from-or-self(., 'cda-value-sent') or
                derived-from-or-self(., 'cda-compute') or
                derived-from-or-self(., 'cda-appiid') or
                derived-from-or-self(., 'cda-deviid')" {
        error-message
          "cda-not-sent, cda-lsb, and cda-mapping-sent need
           target-value";
        description
          "target-value is not required for some CDA.";
        }
      mandatory true;
      description
        "CDA: Compression Decompression Action.";
      reference
        "RFC 8724 SCHC: Generic Framework for Static Context Header
                  Compression and Fragmentation (see Section 7.4)";
    }
    list comp-decomp-action-value {
      key "index";
      uses schc:tv-struct;
      description
        "CDA arguments, based on a TV structure, in order to allow
         for several arguments.  The CDAs specified in RFC 8724
         require no argument.";
    }
  }

  }
}

<CODE ENDS>
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA81cW3cbN5J+56/AYR4sRWzakq9hEq9pSU50RrK0lpxsTnYe
wG6QQtzsZvoiWmNpzvyQ3T83v2TrBjS6Scmy4oflObbJblwKhaqvLig4iqLe
xUg97vUqW6VmpI4Xlc2zUhVmUZjSZJXG38pm6nT351312/jtT2pPV1od5YlJ
y56eTAoDI9DbaV6o3Xx80kvyONNzGC4p9LSKqryutM2iMj6PozqzF6YodRrl
NFf06FGvpwujR+ogq0yRmaq3nMmIv+bFB5vN1E9FXi96H5ZNm2gPh+7Fuhqp
skp6ZT2Z27KEAavLBcx8sH/2pteL8wS6j1RdTaMXME1dnefFqKfoE8m/CpZX
jtR4qI5spid1kfsXvIpxpldf5QWMuwu8qtNKZ5V/XlaFMUDUu9qoxKh3JstM
6d/GtrqEbqYsYeWn5sLOMtO8BJ7CZjx9uv0oeFZnVQF93hQ6i5u2Zq5tOlIa
KBTKXs3w0TDO5+vXdzRUZzbNY91Z3ZEu4rz7ilb37uB0X41fryztoNTTP/Ii
KWcgCZna2eks72+2rHRnVaf70fazJ0/WLOx0aRKTdRc2R6qGFVH1qrDD0qxf
1SGsisWrs6xDXRcgvytvaWUHR2dqXKWwb/bP2qwscPdUbT9/9uj5QO2ogvcx
1Wr3HJaLG1Zoa27dUfiZmI+r+/r82V33VagfCvWv7LyKtCd4OC16vSwv5qCd
Fwbl+d2b3RfPd57I1+8eP3s86vVsNu22ecFtDqK9YarnC1DKdLHUopoxSLNN
YHmEAa6dNaA89B57R/Ui0ZVpveQhYMPObWXiCiiHyYF65Ay0O90/fDNS/d9h
/ui/4PP3fq8XRZHSE+C3jqte7+zcKJhYq3yqPhizQJVndMDHMNDUAmQoD0Pv
6tSUqrTzRYqvSlXhAIgM+QLIn9gUpgbdSOiFucjTmgaD4ak/6AjCG6LFQC3P
TUbtFkVe5XGe4khFntQxDJyZpVBSDqCRrlQMEj8xqs4+ZPkyU9Min1PvuC5I
3mgCpMzMHXyCiJ7bUgEq1vhMJbaM65Kp1vXMt0P6wqE6aDvA9YPamUJVudJJ
gr+xPbLDUdliWF2aRE0uW6sbqh6zf26TJDW93jeIqbReouEb9ekbYsB1r3eK
dMWIcpX5WKmfjcbJdxvuqQ1c7qYyAEG4JWY6tbFF2oHFc4D62NsPFC7YbpsB
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
5+suiU9VMYURf/2D6v0fPmnMGT5RAAA=

-->

</rfc>
