<?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.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-toutain-schc-universal-option-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.1 -->
  <?v3xml2rfc silence="Found SVG with width or height specified"?>
  <front>
    <title abbrev="SCHC for CoAP">Options representation in SCHC YANG Data Models</title>
    <seriesInfo name="Internet-Draft" value="draft-toutain-schc-universal-option-01"/>
    <author initials="Q." surname="Lampin" fullname="Quentin Lampin">
      <organization>Orange</organization>
      <address>
        <email>quentin.lampin@orange.com</email>
      </address>
    </author>
    <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="April" day="14"/>
    <area>Internet</area>
    <workgroup>SCHC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 64?>

<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 69?>

<section anchor="intro">
      <name>Introduction</name>
      <t>Static Context Header Compression (SCHC) provides an essential mechanism for efficient communication in constrained networks by compressing protocol headers using predefined Rules. Originally developed for Low Power Wide Area Networks (LPWANs), SCHC has proven effective in scenarios with limited bandwidth, power constraints, and predictable traffic patterns.</t>
      <t>The YANG Data Model defined in <xref target="RFC9363"/> was designed primarily for LPWAN technologies, focusing on highly constrained devices such as sensors and actuators that generate predictable traffic patterns, which allowed for static compression rules. This model also incorporates CoAP parameters defined in <xref target="RFC8824"/>, representing CoAP options as specific Field Identifiers (FIDs) within SCHC Rules.</t>
      <t>While this approach works well in controlled LPWAN environments, it presents interoperability challenges when SCHC is applied to more dynamic networks or when protocols evolve to incorporate new options. The primary issue arises from the disconnection between protocol option identifiers and SCHC Field Identifiers (FIDs), making it difficult to efficiently handle newly defined or private options without disrupting existing implementations.</t>
      <t>This document proposes a more flexible approach to representing protocol options in SCHC YANG Data Models. By preserving original protocol option identifiers within SCHC Rules, we aim to:</t>
      <ul spacing="normal">
        <li>
          <t>Improve interoperability between SCHC implementations</t>
        </li>
        <li>
          <t>Enable more graceful handling of protocol evolution</t>
        </li>
        <li>
          <t>Simplify Rule management between SCHC endpoints</t>
        </li>
        <li>
          <t>Support compression of newly defined or private options without requiring updates to the SCHC implementation</t>
        </li>
      </ul>
      <t>The following sections examine the current challenges in detail, explore potential solutions including both semantic and syntactic compression approaches, and propose extensions to the YANG Data Model that preserve protocol option identifiers while maintaining efficient compression capabilities.</t>
    </section>
    <section anchor="current-challenges">
      <name>Current Challenges</name>
      <t>The fundamental challenge in SCHC compression for protocols with options stems from how options are represented in the SCHC Data Model. Unlike the relatively static headers of IPv6 or UDP, CoAP includes a flexible options mechanism that allows for protocol extension through new options.</t>
      <section anchor="option-representation-problem">
        <name>Option Representation Problem</name>
        <t>In the current SCHC Data Model defined in <xref target="RFC9363"/>, CoAP options are represented as predefined Field Identifiers (FIDs) that are included in SCHC Rules. Each option is essentially abstracted away from its original protocol identifier and assigned a new SCHC-specific identifier. While this approach works adequately in static LPWAN environments where the set of options is known in advance and rarely changes, it creates significant challenges in more dynamic networks or when protocols evolve.</t>
        <t>The core problem is that the mapping between protocol option identifiers (as defined in the protocol specification) and SCHC FIDs is not standardized or predictable. When a new CoAP option is defined after a SCHC implementation is deployed, there is no straightforward mechanism for the implementation to assign an appropriate FID to this option or to communicate this assignment to other SCHC implementations.</t>
      </section>
      <section anchor="rule-management-challenges">
        <name>Rule Management Challenges</name>
        <t>This limitation becomes particularly problematic in scenarios involving rule management between two SCHC endpoints. The following scenario (cf. <xref target="fig-rule-mngt"/>) illustrates this issue:</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="296" viewBox="0 0 296 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:</t>
        <ul spacing="normal">
          <li>
            <t>Device A generates CoAP packets that may include various options, including newly defined ones.</t>
          </li>
          <li>
            <t>SCHC nodes S1 and S2 compress and decompress the traffic using Rules they share.</t>
          </li>
          <li>
            <t>When A uses a newly defined or private option, S1 can parse this option (as the CoAP header structure remains consistent) and could potentially derive a new Rule to optimize compression.</t>
          </li>
          <li>
            <t>However, S1 faces a critical problem: how to identify this new option in the Rule and communicate this identifier to S2 in a way that S2 can understand which option is involved and correctly reconstruct the header.</t>
          </li>
        </ul>
        <t>For example, suppose a Rule defines just a CoAP header, and S1 derives a more specific Rule including a URI-path. The entry shown in <xref target="fig-entry-uri-path"/> can be added to the derived Rule, and <xref target="RFC9363"/> defines appropriate identityref values (respectively fid:coap-option-uri-path, di:up, mo:equal and cda:not-sent)  that can be used to communicate this Rule description to S2.</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="464" viewBox="0 0 464 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>However, when A uses a recently defined option or a private option that was not known when the SCHC implementation was created, S1 cannot represent this option using existing FIDs. While S1 can still parse the CoAP header and identify the new option, it has no predefined FID to use in the Rule, as shown in <xref target="fig-new-fid"/>:</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="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 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>
      </section>
      <section anchor="interoperability-consequences">
        <name>Interoperability Consequences</name>
        <t>This disconnect between protocol option identifiers and SCHC FIDs creates several interoperability issues:</t>
        <ul spacing="normal">
          <li>
            <t>Limited Protocol Evolution Support: New protocol options cannot be efficiently compressed without updates to the SCHC implementation.</t>
          </li>
          <li>
            <t>Incompatible Rule Exchanges: Different SCHC implementations may assign different FIDs to the same new option, making Rule exchange between them problematic.</t>
          </li>
          <li>
            <t>Implementation Complexity: SCHC implementations must maintain complex mappings between protocol options and FIDs, and these mappings may differ between implementations.</t>
          </li>
          <li>
            <t>Deployment Barriers: Deploying SCHC in environments with evolving protocols becomes difficult and requires frequent updates to SCHC implementations.</t>
          </li>
        </ul>
        <t>The fundamental issue is that the protocol option space and the SCHC FID space are disconnected, with no standardized or dynamic mapping between them. This disconnect seriously limits SCHC's applicability in dynamic environments and its ability to adapt to protocol evolution.</t>
        <t>In the following sections, we will explore two approaches to address this challenge. The first approach, termed 'syntactic,' aims to closely align with CoAP's native representation of options by defining three distinct fields: option delta type, option length, and option value. 
The second approach, called 'semantic,' abstracts away from the byte-level representation and introduces a generic option framework that eliminates the need for mapping between option values and Field IDs. This semantic approach focuses on the logical meaning rather than the protocol-specific encoding.</t>
      </section>
    </section>
    <section anchor="syntactic-compression">
      <name>Syntactic compression</name>
      <section anchor="overview-of-the-approach">
        <name>Overview of the Approach</name>
        <t>SCHC compression typically uses a semantic approach where protocol fields are abstracted into generic representations with Field IDs (FIDs) that don't directly correlate to the protocol's encoding format. While effective for static fields, this creates challenges for dynamic protocol options as previously discussed.</t>
        <t>Syntactic compression, as proposed in <xref target="I-D.lampin-lpwan-schc-considerations"/>, takes a fundamentally different approach by aligning compression more closely with the protocol's wire format. Instead of abstracting away from the protocol's representation, syntactic compression preserves the original structure of protocol headers, including how options are encoded.</t>
      </section>
      <section anchor="coap-option-encoding-background">
        <name>CoAP Option Encoding Background</name>
        <t>To understand syntactic compression for CoAP options, it's important to recall how CoAP encodes options in messages:</t>
        <ul spacing="normal">
          <li>
            <t>Each CoAP option on the wire consists of three components:  </t>
            <ul spacing="normal">
              <li>
                <t>Option Delta: The difference between the option number of the present option and the option number of the previous option (if any).</t>
              </li>
              <li>
                <t>Option Length: The length of the option value in bytes.</t>
              </li>
              <li>
                <t>Option Value: The actual option content.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>This encoding allows CoAP to efficiently represent options while maintaining extensibility.</t>
          </li>
        </ul>
      </section>
      <section anchor="syntactic-representation-of-options">
        <name>Syntactic Representation of Options</name>
        <t>In the syntactic approach, instead of representing a CoAP option as a single abstract Field ID, each option is decomposed into its three constituent parts as shown in <xref target="fig-synt-not-sent"/>, where "x" in the Field Length of CoAP.value entry indicates the expected value:</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="448" viewBox="0 0 448 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="128" y="132">x</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  | x   | 1 | up | value | equal | not-sent|
+------------+-----+---+----+-------+-------+---------+
]]></artwork>
          </artset>
        </figure>
        <t>In this representation:</t>
        <ul spacing="normal">
          <li>
            <t>'CoAP.option' can represent either the absolute CoAP option number or the delta value as encoded in the CoAP message. While this choice affects how the parser is implemented, it has minimal impact on the overall performance of the compression approach being examined in this document.</t>
          </li>
          <li>
            <t>"CoAP.length" represents the option length field.</t>
          </li>
          <li>
            <t>"CoAP.value" contains the actual option value, noted "x".</t>
          </li>
        </ul>
        <t>This approach means that option identifiers remain in the CoAP numbering space rather than being converted to SCHC FIDs. This critical difference allows any option—existing, newly defined, or private—to be processed without requiring updates to the SCHC implementation's FID mapping.</t>
        <t>The syntactic approach offers several advantages. It provides robust support for protocol evolution, allowing new or private options to be compressed without requiring changes to SCHC implementations. It enhances interoperability since option identifiers remain in the protocol's numbering space, enabling different SCHC implementations to exchange rules for any option. Additionally, it simplifies implementation by eliminating the need for complex mappings between protocol option identifiers and SCHC FIDs.</t>
        <t>However, this approach also comes with notable disadvantages. It increases the number of entries required to describe each option by a factor of three, resulting in larger Rule representations. Furthermore, the syntactic approach may yield less efficient compression in certain scenarios, particularly when options must be sent rather than elided.</t>
        <t>For instance, in a semantic approach, only the value and potentially the length is sent as residue (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="424" viewBox="0 0 424 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>The equivalent syntactic representation requires three entries, as shown in (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="456" viewBox="0 0 456 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 304,32 L 304,128" fill="none" stroke="black"/>
                <path d="M 360,32 L 360,128" fill="none" stroke="black"/>
                <path d="M 448,32 L 448,128" fill="none" stroke="black"/>
                <path d="M 8,32 L 448,32" fill="none" stroke="black"/>
                <path d="M 8,62 L 448,62" fill="none" stroke="black"/>
                <path d="M 8,66 L 448,66" fill="none" stroke="black"/>
                <path d="M 8,128 L 448,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="244" 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="124" y="84">16</text>
                  <text x="152" y="84">1</text>
                  <text x="180" y="84">up</text>
                  <text x="208" y="84">opt</text>
                  <text x="236" y="84">or</text>
                  <text x="272" y="84">delta</text>
                  <text x="328" y="84">equal</text>
                  <text x="396" y="84">not-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="332" y="100">ignore</text>
                  <text x="404" 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="332" y="116">ignore</text>
                  <text x="404" 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|opt or delta |equal |not-sent  |
|CoAP.length |16 |1 |up|             |ignore|value-sent|
|CoAP.value  |var|1 |up|             |ignore|value-sent|
+------------+---+--+--+-------------+------+----------+
]]></artwork>
          </artset>
        </figure>
        <t>In this case, both the option number and length (which may be encoded in just 4 bits in the CoAP message) are treated as 16-bit fields that must be sent as residue. Additionally, the option length is effectively sent twice: once in the CoAP.length field and again as part of the value's residue.</t>
        <t>For example, a 4-byte option value would be encoded as follows in the syntactic approach:</t>
        <ul spacing="normal">
          <li>
            <t>0 bytes for the option number</t>
          </li>
          <li>
            <t>2 bytes for the length field</t>
          </li>
          <li>
            <t>0.5 bytes for the header of the value (in SCHC compressed format)</t>
          </li>
          <li>
            <t>4 bytes for the actual value</t>
          </li>
        </ul>
        <t>This totals 6.5 bytes, compared to a more efficient representation in the semantic approach with 4.5 bytes.</t>
        <t>One potential optimization would be to define a new length function that links the length of the value to the content of the CoAP.length field, avoiding the duplicate transmission of length information. However, this would add complexity to the compression mechanism.</t>
        <t>Extending the Data Model to support the syntactic approach essentially involves creating three new Field Identifiers (FIDs) that correspond to the components of the option structure.</t>
      </section>
      <section anchor="conclusion">
        <name>Conclusion</name>
        <t>While syntactic compression offers a more generic approach that can handle protocol evolution without requiring implementation updates, it may lead to suboptimal compression efficiency and larger Rule representations. The tradeoff between flexibility and efficiency must be carefully considered based on the specific deployment scenario and requirements.</t>
        <t>The syntactic approach demonstrates that staying too close to the byte-level representation of a protocol can compromise compression efficiency. This insight leads us to consider a hybrid approach that preserves the protocol's option identifiers while maintaining the efficiency of semantic compression, as discussed in the next section.</t>
      </section>
    </section>
    <section anchor="semantic-compression">
      <name>Semantic compression</name>
      <section anchor="the-proposed-approach">
        <name>The Proposed Approach</name>
        <t>Having examined the syntactic approach, which closely follows the byte-level representation of CoAP options, we now explore an alternative solution that maintains the efficiency of semantic compression while addressing the interoperability challenges. This approach preserves protocol option identifiers directly within SCHC Rules, eliminating the need for mapping between protocol-specific option numbers and SCHC Field Identifiers (FIDs).</t>
        <t>The core idea is to incorporate the original protocol identifiers into the compression Rules. Since multiple protocols may reuse the same option identifier for different purposes (for example, option 8 refers to Location-Path in CoAP but Timestamp in TCP), this approach associates each option value with its protocol namespace to avoid ambiguity.</t>
      </section>
      <section anchor="technical-solution">
        <name>Technical Solution</name>
        <t>The solution involves defining within SCHC an identity that references the protocol (creating a "protocol space"), followed by the specific option identifier used by that protocol. This preserves the protocol's native numbering scheme while allowing SCHC to differentiate between options from different protocols that might share the same option identifier.</t>
        <t>Using this approach, a Rule that includes various CoAP options would directly reference the CoAP option numbers rather than abstract FIDs. For instance, the representation of a URI with two path elements (option 11) and two query elements (option 15) might look like (cf. <xref target="fig-proto-id"/>):</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="416" viewBox="0 0 416 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>In this example, option identifiers 11 (URI-Path) and 15 (URI-Query) are directly specified, along with their position and direction, providing clear identification of which CoAP options are being compressed without requiring predefined FIDs for each option type.</t>
      </section>
    </section>
    <section anchor="data-model-implementation-challenges">
      <name>Data Model Implementation Challenges</name>
      <t>While this approach offers clear advantages for interoperability and protocol evolution, implementing it within the current YANG Data Model defined in <xref target="RFC9363"/> presents challenges. The current model defines Rule entries with a key composed of field-id, field-position, and direction-indicator, as shown in <xref target="fig-yang-rule-entry"/>:</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                schc:fl-type
                 +--rw field-position              uint8
                 +--rw direction-indicator         schc:di-type
                 .
                 .
                 .
]]></artwork>
      </figure>
      <t>The example shown in <xref target="fig-proto-id"/> is not valid under this model because the combination of FID, position, and direction is repeated multiple times, which violates the key constraints. We cannot simply include the option value as part of the key in the existing structure.</t>
      <t>Furthermore, it's not possible to augment the model defined in RFC 9363 to add a new leaf to the key of the list. Adding option identifiers to all entries would also be inefficient, as many fields (such as IPv6 or UDP fields) don't require this additional context.</t>
      <section anchor="proposed-yang-data-model-extension">
        <name>Proposed YANG Data Model Extension</name>
        <t>A more effective solution is to augment the current compression data model with a new list specifically designed for entries describing protocol 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-id field-position direction-indicator]
    +--rw schc-opt:space-id                    space-type
    +--rw schc-opt:option-id                   uint32
    +--rw schc-opt:field-length                schc:fl-type
    +--rw schc-opt:field-position              uint8
    +--rw schc-opt:direction-indicator         schc:di-type
    .
    .
    .
]]></artwork>
        </figure>
        <t>In this augmented model:</t>
        <ul spacing="normal">
          <li>
            <t>The space-id defines the protocol namespace (e.g., CoAP, TCP), with values provided by the SCHC Working Group</t>
          </li>
          <li>
            <t>The option-id contains the actual option identifier as defined in the protocol's IANA registry</t>
          </li>
          <li>
            <t>The remaining elements (field-length, field-position, etc.) function as they do in the standard entry structure, but they will be diffently identified.</t>
          </li>
        </ul>
        <t>This approach maintains the semantic efficiency of SCHC while eliminating the need for protocol-to-FID mappings.</t>
      </section>
      <section anchor="implications-for-residue-serialization">
        <name>Implications for Residue Serialization</name>
        <t>This design has implications for how residues are serialized. To ensure consistent interpretation, both SCHC endpoints must process entries in the same order. Therefore:</t>
        <ul spacing="normal">
          <li>
            <t>Fields from the standard "entry" list MUST be serialized before those defined in the new "entry-option-space" list</t>
          </li>
        </ul>
        <t>*This constraint should be documented in <xref target="I-D.ietf-lpwan-architecture"/> to ensure interoperability</t>
        <t>This approach preserves the guideline from <xref target="RFC8724"/> that Field Descriptors (entries) should be listed in the order they appear in the packet header.</t>
      </section>
      <section anchor="advantages-of-this-approach">
        <name>Advantages of this Approach</name>
        <t>The proposed approach offers several significant benefits compared to both the current SCHC model and the syntactic approach:</t>
        <ul spacing="normal">
          <li>
            <t>It maintains the efficiency of semantic compression while eliminating the mapping problem between protocol options and SCHC FIDs</t>
          </li>
          <li>
            <t>It enables straightforward handling of newly defined or private options without requiring updates to SCHC implementations</t>
          </li>
          <li>
            <t>It allows for cleaner Rule exchange between SCHC endpoints, improving interoperability in heterogeneous environments</t>
          </li>
        </ul>
        <t>This approach represents a balanced solution that addresses the interoperability challenges while preserving the compression efficiency that makes SCHC valuable in constrained environments.</t>
      </section>
      <section anchor="impact-on-current-standards">
        <name>Impact on Current Standards</name>
        <section anchor="compatibility-with-existing-standards">
          <name>Compatibility with Existing Standards</name>
          <t>The proposed extension to preserve protocol option identifiers in SCHC Rules has important implications for existing standards. Both <xref target="RFC9363"/> and <xref target="I-D.ietf-schc-8824-update"/> define specific Field Identifiers (FIDs) for CoAP options. These predefined FIDs and the proposed approach represent two different methods for identifying the same protocol elements, which creates potential compatibility issues.</t>
        </section>
        <section anchor="deprecation-of-predefined-coap-option-fids">
          <name>Deprecation of Predefined CoAP Option FIDs</name>
          <t>To maintain consistency and avoid confusion between the two approaches, the predefined CoAP option identifiers in the current standards should be deprecated in favor of the more flexible option identifier approach proposed in this document. This deprecation should be handled carefully to ensure backward compatibility with existing implementations while enabling a clear migration path to the new approach.</t>
        </section>
        <section anchor="entry-order-requirements">
          <name>Entry Order Requirements</name>
          <t>The proposed approach also highlights a constraint that was not explicitly included in the current Data Model. YANG does not impose a specific position for elements in a list, which has no impact on the compression process itself. However, the order becomes critical for the serialization of residues.
When transmitting Rules from one endpoint to another, the order of Field Descriptors must be preserved to ensure consistent handling of residues. This requirement should be explicitly documented in <xref target="I-D.ietf-lpwan-architecture"/> to clarify that:</t>
          <ul spacing="normal">
            <li>
              <t>The order of entries should not be changed when transmitted between endpoints
This ordering preserves the guidance in <xref target="RFC8724"/> that Field Descriptors (entries) should be listed in the order they appear in the packet header</t>
            </li>
            <li>
              <t>This ordering requirement becomes particularly important with the introduction of the new "entry-option-space" list, as both types of entries (standard and option-space) must be processed in a consistent sequence across all implementations.</t>
            </li>
          </ul>
          <t>The statement "ordered-by user;" MUST be included in a revision of <xref target="RFC9363"/>.</t>
        </section>
      </section>
    </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="3" month="March" year="2025"/>
            <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-04"/>
        </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>
        <reference anchor="GPC-SPE-207" target="https://globalplatform.org/specs-library/amendment-m-remote-application-mgmt-over-coap/">
          <front>
            <title>Remote Application Management over CoAP – Amendment M v1.0</title>
            <author>
              <organization>GlobalPlatform</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 395?>

<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="yang" name="ietf-schc-opt@2024-12-19.yang" markers="true"><![CDATA[
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-id field-position direction-indicator";
    leaf space-id {
      type space-type;
      mandatory true;
      description
        "";
    }
    leaf option-id {
      type uint32;
    }
    leaf field-length {
      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.";
    }
  }

  }
}
]]></sourcecode>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>This appendix provides practical examples that compare different approaches to representing protocol options in SCHC. The purpose of these examples is to demonstrate the operational implications of each approach in terms of Rule size, compression efficiency, and query performance.</t>
      <section anchor="test-scenario-and-methodology">
        <name>Test Scenario and Methodology</name>
        <t>To provide a consistent basis for comparison, we use a common CoAP message containing various standard options along with one non-standard option (SCP82-Param). This example was chosen to illustrate how each approach handles both well-known and recently defined options.</t>
        <t>The following CoAP message serves as our reference example:</t>
        <figure anchor="fig-coap-example">
          <name>Example of a CoAP packet with options.</name>
          <artwork align="center"><![CDATA[
0000  40 01 00 01 BD 01 61 63 63 65 6C 65 72 6F 6D 65  @.....accelerome
0010  74 65 72 73 07 6D 61 78 69 6D 75 6D 4A 64 61 74  ters.maximumJdat
0020  65 3D 74 6F 64 61 79 0A 75 6E 69 74 3D 6D 2F 73  e=today.unit=m/s
0030  5E 32 21 3C D1 E4 02 E3 05 F8 54 4C 56           ^2!<......TLV

CON  0x0001 GET   
> Uri-path : b'accelerometers'
> Uri-path : b'maximum'
> Uri-query : b'date=today'
> Uri-query : b'unit=m/s^2'
> Accept : 60
> No-Response : 2
> SCP82-Param : b'TLV'
]]></artwork>
        </figure>
        <t>For each approach, we will evaluate three key metrics:</t>
        <ul spacing="normal">
          <li>
            <t>Rule Size: The size of the CBOR-serialized compression rule in bytes</t>
          </li>
          <li>
            <t>Query Size: The size of the CORECONF query payload needed to access specific values in the rule</t>
          </li>
          <li>
            <t>Compressed Packet Size: The size of the resulting SCHC-compressed packet in bytes</t>
          </li>
        </ul>
        <t>In all examples, our compression rule will send residues for the Uri-Path, Uri-Query, and SCP82-Param options, while eliding the rest. This allows us to compare how different approaches handle both sent and not-sent options.</t>
      </section>
      <section anchor="approaches-compared">
        <name>Approaches Compared</name>
        <t>We evaluate the following approaches to option representation:</t>
        <ul spacing="normal">
          <li>
            <t>Semantic Compression with RFC 9363: The current approach using predefined Field IDs for known options</t>
          </li>
          <li>
            <t>Universal Options: Our proposed approach preserving protocol option identifiers
Merged Data Model: A combined approach that integrates both methods into a single data model</t>
          </li>
          <li>
            <t>Ordered SID Allocation: An optimized version with carefully arranged SID values</t>
          </li>
          <li>
            <t>Syntactic Compression: The approach using delta-type, length, and value fields</t>
          </li>
        </ul>
        <t>Each approach represents a different balance between compatibility, flexibility, and efficiency. The examples will demonstrate these trade-offs quantitatively.
Let's examine each approach in detail:</t>
      </section>
    </section>
    <section anchor="semantic-compression-1">
      <name>Semantic compression</name>
      <t>Semantic compression is the approach currently defined in <xref target="RFC8724"/>, where each protocol field is assigned an abstract Field Identifier (FID) that represents its semantic meaning rather than its wire format. This section examines how this approach handles our example CoAP message.</t>
      <section anchor="rule-definition">
        <name>Rule Definition</name>
        <t>Using RFC 8724's informal notation, a rule matching our sample packet would be structured as follows:</t>
        <figure anchor="fig-rule-test">
          <name>Target rule.</name>
          <artwork align="center"><![CDATA[
+===================================================================+
|RuleID 1/8                                                         |
+==========+===+==+==+======+===============+===============+=======+
|  Field   | FL|FP|DI|  TV  |       MO      |      CDA      |  Sent |
|          |   |  |  |      |               |               | [bits]|
+==========+===+==+==+======+===============+===============+=======+
|CoAP      |2  |1 |Bi|01    | equal         | not-sent      |       |
|version   |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP Type |2  |1 |Dw|CON   | equal         | not-sent      |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP TKL  |4  |1 |Bi|0     | equal         | not-sent      |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP Code |8  |1 |DW|0.01  | equal         | not-sent      |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP MID  |16 |1 |Bi|0000  | MSB(7)        | LSB           |MID    |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP Uri- |var|1 |Dw|      | ignore        | value-sent    | size+ |
|Path      |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP Uri- |var|2 |Dw|      | ignore        | value-sent    | size+ |
|Path      |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP Uri- |var|1 |Dw|      | ignore        | value-sent    | size+ |
|Query     |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP Uri- |var|2 |Dw|      | ignore        | value-sent    | size+ |
|Query     |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP      |8  |1 |Dw| 60   | equal         | not-sent      |       |
|Accept    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP  No- |8  |1 |Dw| 2    | equal         | not-sent      |       |
|Response  |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP  SCP |var|1 |Dw|      | ignore        | value-sent    | size+ |
|82-Param  |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+=======+

]]></artwork>
        </figure>
      </section>
      <section anchor="implementation-with-rfc-9363">
        <name>Implementation with RFC 9363</name>
        <t>When implementing this rule using the RFC 9363 Data Model, we encounter a fundamental limitation: there is no identity reference (identityref) defined for the CoAP SCP82-Param option in the current standard. This illustrates the core problem addressed in this document – the inability to represent new or protocol-specific options without updating the SCHC implementation.
For the purpose of this comparison, we'll assume that a theoretical extension to RFC 9363 has been created that defines identityrefs for the options in <xref target="GPC-SPE-207"/>, with corresponding SID ranges: RFC 9363 SIDs starting at 5000 and <xref target="GPC-SPE-207"/> SIDs starting at 10000.</t>
        <section anchor="cbor-serialization">
          <name>CBOR Serialization</name>
          <t>With these assumptions, the rule can be serialized in CBOR format. The resulting message is 357 bytes long <xref target="fig-cbor-serial"/>.</t>
          <figure anchor="fig-cbor-serial">
            <name>CBOR serialisation.</name>
            <artwork align="center"><![CDATA[
b'a11913e7a10181a4048ca7061913bf070208010519139b091913db011913970d81a20100024101a7
061913be070208010519139a091913db011913970d81a20100024100a7061913bc070408010519139b
091913db011913970d81a20100024100a70619139f070808010519139a091913db011913970d81a201
00024101a8061913a2071008010519139a091913de0a81a20100024107011913950d81a20100024100
a6061913b907d82d1913d508010519139b091913dc01191398a6061913b907d82d1913d50802051913
9b091913dc01191398a6061913bb07d82d1913d508010519139b091913dc01191398a6061913bb07d8
2d1913d508020519139b091913dc01191398a7061913a4070808010519139b091913db011913970d81
a2010002413ca7061913ae070808010519139b091913db011913970d81a20100024102a60619271107
d82d1913d508010519139b091913dc0119139818220818210818231913e0'
]]></artwork>
          </figure>
          <t>The diagnostic representation provides insight into the structure of this serialized rule:</t>
          <figure anchor="fig-cbor-diag">
            <name>CBOR diagnostic notation.</name>
            <artwork type="~" align="center"><![CDATA[
Deltas in entry part:
- 6: field-id
- 7: field-length
- 8: field-position
- 5: direction-indicator
- 9: matching-operator
- 1: comp-decomp-action
- 10: matching-operator-value
- 13: target-value

Deltas in the rule part:
- 33: rule-id-length
- 34: rule-id-value
- 35: rule-nature

{5095: {1: [{4: [
  {6: 5055, 7: 2, 8: 1, 5: 5019, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'01'}]}, 
  {6: 5054, 7: 2, 8: 1, 5: 5018, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'00'}]}, 
  {6: 5052, 7: 4, 8: 1, 5: 5019, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'00'}]}, 
  {6: 5023, 7: 8, 8: 1, 5: 5018, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'01'}]}, 
  {6: 5026, 7: 16, 8: 1, 5: 5018, 9: 5086, 
                10: [{1: 0, 2: h'07'}], 1: 5013, 13: [{1: 0, 2: h'00'}]}, 
  {6: 5049, 7: 45(5077), 8: 1, 5: 5019, 9: 5084, 1: 5016}, 
  {6: 5049, 7: 45(5077), 8: 2, 5: 5019, 9: 5084, 1: 5016}, 
  {6: 5051, 7: 45(5077), 8: 1, 5: 5019, 9: 5084, 1: 5016}, 
  {6: 5051, 7: 45(5077), 8: 2, 5: 5019, 9: 5084, 1: 5016}, 
  {6: 5028, 7: 8, 8: 1, 5: 5019, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'3C'}]}, 
  {6: 5038, 7: 8, 8: 1, 5: 5019, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'02'}]}, 
  {6: 10001, 7: 45(5077), 8: 1, 5: 5019, 9: 5084, 1: 5016}], 
34: 8, 33: 8, 35: 5088}]}}
]]></artwork>
          </figure>
          <t>Note that the encoding of rule-id-value, rule-id-length, and rule-nature is not optimal because the delta values are higher than 23, requiring 2 bytes each in the CBOR encoding.</t>
        </section>
        <section anchor="coreconf-query-example">
          <name>CORECONF Query Example</name>
          <t>To access the target value of the Accept option in this rule, a CORECONF query would be structured as follows. The size of the CoAP payload for this query is 14 bytes:</t>
          <figure anchor="fig-query">
            <name>CORECONF query to Accept TV.</name>
            <artwork align="center"><![CDATA[
REQ: FETCH </c>
        (Content-Format: application/yang-identifiers+cbor-seq)
   [5115,     / .../target-value/value 
    1,        / rule-id-value
    8,        / rule-id-length
    5028,     / fid-coap-option-accept
    1,        / field-position
    5019,     / direction-indicator
    0]        / target-value/index
]]></artwork>
          </figure>
        </section>
        <section anchor="compressed-packet">
          <name>Compressed Packet</name>
          <t>When applied to our sample CoAP message, the semantic compression approach produces a SCHC packet of 389 bits (49 bytes with byte alignment):</t>
          <figure anchor="fig-residue">
            <name>SCHC compressed packet.</name>
            <artwork align="center"><![CDATA[
0800f30b1b1b2b632b937b6b2ba32b939bb6b0bc34b6bab6d3230ba329eba37b230bcd3ab734ba1eb697b9af191aa262b0/389
]]></artwork>
          </figure>
        </section>
        <section anchor="analysis">
          <name>Analysis</name>
          <t>The semantic compression approach demonstrates both significant strengths and notable limitations. On the positive side, it achieves an efficient compressed packet size of only 49 bytes, making it suitable for constrained networks where bandwidth is at a premium. The query size is also relatively small at 14 bytes, which enables efficient rule management operations. Additionally, the semantic representation of fields provides clarity by abstracting protocol details into meaningful identifiers.</t>
          <t>However, this approach faces important limitations that impact its flexibility. Most critically, it cannot handle new options without predefined Field Identifiers, which creates a dependency on standards updates. When new protocol options emerge, the approach requires formal extension of the standard to define appropriate identifiers, creating potential delays and compatibility issues. While the rule serialization size is moderate at 357 bytes, this still represents significant overhead in highly constrained environments. These limitations illustrate why semantic compression works well in static, predictable environments but presents challenges for protocol evolution and interoperability in more dynamic contexts where protocols frequently evolve.</t>
        </section>
      </section>
      <section anchor="universal-options">
        <name>Universal Options</name>
        <t>The Universal Options approach preserves protocol option identifiers directly within SCHC Rules, eliminating the need for predefined Field Identifiers for each option type. This section examines how this approach handles our example CoAP message.</t>
        <section anchor="implementation-approach">
          <name>Implementation Approach</name>
          <t>In this approach, we assign SIDs starting from 7000 to the YANG Data Model augmentation defined in this document. All CoAP options are represented by a combination of a space ID (indicating the protocol namespace, in this case CoAP) and the option identifier as used in the CoAP protocol. This allows the SCP82-Param option to be processed like any other option, regardless of whether it was defined when the SCHC implementation was created.</t>
        </section>
        <section anchor="cbor-serialization-1">
          <name>CBOR Serialization</name>
          <t>The CBOR serialization of the rule using the Universal Options approach is 481 bytes long:</t>
          <figure anchor="fig-cbor-serial2">
            <name>CBOR serialisation.</name>
            <artwork align="center"><![CDATA[
b'a11913e7a10181a4048ca7061913bf070208010519139b091913db011913970d81a20100024101a7
061913be070208010519139a091913db011913970d81a20100024100a7061913bc070408010519139b
091913db011913970d81a20100024100a70619139f070808010519139a091913db011913970d81a201
00024101a8061913a2071008010519139a091913de0a81a20100024107011913950d81a20100024100
a719077c191b5a19077b0b190775d82d1913d51907760119077419139b1907771913dc190770191398
a719077c191b5a19077b0b190775d82d1913d51907760219077419139b1907771913dc190770191398
a719077c191b5a19077b0f190775d82d1913d51907760119077419139b1907771913dc190770191398
a719077c191b5a19077b0f190775d82d1913d51907760219077419139b1907771913dc190770191398
a819077c191b5a19077b11190775081907760119077419139b1907771913db19077019139719077d81
a2010002413ca819077c191b5a19077b190102190775d82d1913d51907760119077419139b19077719
13db19077019139719077d81a20100024102a719077c191b5a19077b190807190775d82d1913d51907
760119077419139b1907771913dc19077019139818220818210818231913e0'
]]></artwork>
          </figure>
          <t>The diagnostic representation of the CBOR message is the following:</t>
          <figure>
            <name>CBOR serialisation.</name>
            <artwork align="center"><![CDATA[
Deltas in entry part:
- 6: field-id                     **1916: space-id  
- 7: field-length                 **1915: option-id 
- 8: field-position               **1909: field-length
- 5: direction-indicator          **1910: field-position
- 9: matching-operator            **1908: direction-indicator
- 1: comp-decomp-action           **1911: matching-operator  
- 10: matching-operator-value     **1917: target-value
- 13: target-value                

Deltas in the rule part:
* 33: rule-id-length
* 34: rule-id-value
* 35: rule-nature

{5095: {1: [{4: [
  {6: 5055, 7: 2, 8: 1, 5: 5019, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'01'}]}, 
  {6: 5054, 7: 2, 8: 1, 5: 5018, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'00'}]}, 
  {6: 5052, 7: 4, 8: 1, 5: 5019, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'00'}]}, 
  {6: 5023, 7: 8, 8: 1, 5: 5018, 9: 5083, 1: 5015, 13: [{1: 0, 2: h'01'}]}, 
  {6: 5026, 7: 16, 8: 1, 5: 5018, 9: 5086, 
                    10: [{1: 0, 2: h'07'}], 1: 5013, 13: [{1: 0, 2: h'00'}]}, 
  {1916: 7002, 1915: 11, 1909: 45(5077), 1910: 1, 1908: 5019, 1911: 5084, 1904: 5016}, 
  {1916: 7002, 1915: 11, 1909: 45(5077), 1910: 2, 1908: 5019, 1911: 5084, 1904: 5016}, 
  {1916: 7002, 1915: 15, 1909: 45(5077), 1910: 1, 1908: 5019, 1911: 5084, 1904: 5016}, 
  {1916: 7002, 1915: 15, 1909: 45(5077), 1910: 2, 1908: 5019, 1911: 5084, 1904: 5016}, 
  {1916: 7002, 1915: 17, 1909: 8, 1910: 1, 1908: 5019, 1911: 5083, 1904: 5015, 
                                                1917: [{1: 0, 2: h'3C'}]}, 
  {1916: 7002, 1915: 258, 1909: 45(5077), 1910: 1, 1908: 5019, 1911: 5083, 1904: 5015, 
                                                1917: [{1: 0, 2: h'02'}]},
  {1916: 7002, 1915: 2055, 1909: 45(5077), 1910: 1, 1908: 5019, 1911: 5084, 1904: 5016}], 
34: 8, 33: 8, 35: 5088}]}}
]]></artwork>
          </figure>
          <t>It's important to note that in the CoAP options part, the delta values are very large and require 3 bytes each for CBOR encoding. This is because we've used a separate range of SIDs for the augmentation, following the standard allocation procedure where each YANG Data Model has its own SID range.</t>
        </section>
        <section anchor="coreconf-query-example-1">
          <name>CORECONF Query Example</name>
          <t>A CORECONF query to access the target value of the Accept option in this approach would be structured as follows. The size of the CoAP payload is 15 bytes:</t>
          <figure anchor="fig-query2">
            <name>CORECONF query to Accept TV.</name>
            <artwork align="center"><![CDATA[
REQ: FETCH </c>
        (Content-Format: application/yang-identifiers+cbor-seq)
   [7019,     / .../target-value/value 
    1,        / rule-id-value
    8,        / rule-id-length
    7002,     / space-id-value
    17,       / option-id
    1,        / field-position
    5019,     / direction-indicator
    0]        / target-value/index
]]></artwork>
          </figure>
        </section>
        <section anchor="compressed-packet-1">
          <name>Compressed Packet</name>
          <t>When applied to our sample CoAP message, the Universal Options approach produces a SCHC packet with the same size as the semantic approach: 49 bytes with byte alignment.</t>
        </section>
        <section anchor="analysis-1">
          <name>Analysis</name>
          <t>The Universal Options approach demonstrates several important characteristics when compared to the semantic approach.</t>
          <t>The primary advantage of this approach is its flexibility and future-proofing. By preserving the protocol's native option identifiers, it can handle any option—including newly defined or private options—without requiring updates to the SCHC implementation. This is particularly evident in how it handles the SCP82-Param option (2055) without requiring predefined Field Identifiers.
The compressed packet size remains efficient at 49 bytes, identical to the semantic approach, demonstrating that flexibility doesn't come at the cost of compression efficiency at the packet level.</t>
          <t>However, there are trade-offs. The CBOR serialization of the rule is significantly larger at 481 bytes compared to 357 bytes for the semantic approach. This increased size is primarily due to the additional information needed to represent both protocol space identifiers and option values, along with less efficient delta encoding due to SID allocation in separate ranges.
The query size is also slightly larger (15 bytes vs. 14 bytes), though this difference is minimal.</t>
          <t>Overall, the Universal Options approach provides significantly improved flexibility and interoperability at the cost of larger rule serialization size. This trade-off may be acceptable in many applications, particularly where protocol evolution and interoperability are more critical than rule storage efficiency.</t>
        </section>
      </section>
      <section anchor="merged-data-model-approach">
        <name>Merged Data Model Approach</name>
        <t>The Merged approach combines elements from both the semantic compression and Universal Options approaches into a single, unified YANG Data Model. This section examines how this integrated approach handles our example CoAP message.</t>
        <section anchor="implementation-approach-1">
          <name>Implementation Approach</name>
          <t>Instead of maintaining two separate Data Models (RFC 9363 and Universal Options), this approach merges them into a single model, which we'll refer to as "9363bis." The SID allocation process remains unchanged, with SIDs allocated automatically based on alphabetical ordering of nodes in the YANG model.
The key advantage of this approach is that it provides a unified framework that can represent both predefined fields using semantic compression and protocol-specific options using the Universal Options approach.</t>
        </section>
        <section anchor="cbor-serialization-2">
          <name>CBOR Serialization</name>
          <t>The CBOR serialization of the rule using the Merged approach is 400 bytes in size:</t>
          <figure anchor="fig-cbor-serial3">
            <name>CBOR serialisation.</name>
            <artwork align="center"><![CDATA[
b'a11913e9a10181a4048ca7171913bf1818021819011619139b181a1913db12191397181e81a20100
024101a7171913be1818021819011619139a181a1913db12191397181e81a20100024100a7171913bc
1818041819011619139b181a1913db12191397181e81a20100024100a71719139f1818081819011619
139a181a1913db12191397181e81a20100024101a8171913a21818101819011619139a181a1913de18
1b81a2010002410712191395181e81a20100024100a70e1913e60d0b07d82d1913d508010619139b09
1913dc02191398a70e1913e60d0b07d82d1913d508020619139b091913dc02191398a70e1913e60d0f
07d82d1913d508010619139b091913dc02191398a70e1913e60d0f07d82d1913d508020619139b0919
13dc02191398a80e1913e60d11070808010619139b091913db021913970f81a2010002413ca80e1913
e60d19010207d82d1913d508010619139b091913db021913970f81a20100024102a70e1913e60d1908
0707d82d1913d508010619139b091913dc0219139818330818320818341913e0'
]]></artwork>
          </figure>
          <t>The diagnostic representation reveals the structure of this serialized rule:</t>
          <figure anchor="fig-cbor-diag3">
            <name>CBOR serialisation.</name>
            <artwork align="center"><![CDATA[
Deltas in entry part:
- 23: field-id                     -14: space-id  
* 24: field-length                 -11: option-id 
* 25: field-position               -7: field-length
- 22: direction-indicator          -8: field-position
* 26: matching-operator            -6: direction-indicator
- 18: comp-decomp-action           -9: matching-operator  
* 27: matching-operator-value      -15: target-value
* 30: target-value                 

Deltas in the rule part:
* 50: rule-id-length
* 51: rule-id-value
* 52: rule-nature

{5097: {1: [{4: [
  {23: 5055, 24: 2, 25: 1, 22: 5019, 26: 5083, 18: 5015, 30: [{1: 0, 2: h'01'}]}, 
  {23: 5054, 24: 2, 25: 1, 22: 5018, 26: 5083, 18: 5015, 30: [{1: 0, 2: h'00'}]}, 
  {23: 5052, 24: 4, 25: 1, 22: 5019, 26: 5083, 18: 5015, 30: [{1: 0, 2: h'00'}]}, 
  {23: 5023, 24: 8, 25: 1, 22: 5018, 26: 5083, 18: 5015, 30: [{1: 0, 2: h'01'}]}, 
  {23: 5026, 24: 16, 25: 1, 22: 5018, 26: 5086, 
                       27: [{1: 0, 2: h'07'}], 18: 5013, 30: [{1: 0, 2: h'00'}]}, 
  {14: 5094, 13: 11, 7: 45(5077), 8: 1, 6: 5019, 9: 5084, 2: 5016}, 
  {14: 5094, 13: 11, 7: 45(5077), 8: 2, 6: 5019, 9: 5084, 2: 5016}, 
  {14: 5094, 13: 15, 7: 45(5077), 8: 1, 6: 5019, 9: 5084, 2: 5016}, 
  {14: 5094, 13: 15, 7: 45(5077), 8: 2, 6: 5019, 9: 5084, 2: 5016}, 
  {14: 5094, 13: 17, 7: 8, 8: 1, 6: 5019, 9: 5083, 2: 5015, 
                                                      15: [{1: 0, 2: h'3C'}]}, 
  {14: 5094, 13: 258, 7: 45(5077), 8: 1, 6: 5019, 9: 5083, 2: 5015, 
                                                      15: [{1: 0, 2: h'02'}]}, 
  {14: 5094, 13: 2055, 7: 45(5077), 8: 1, 6: 5019, 9: 5084, 2: 5016}], 
51: 8, 50: 8, 52: 5088}]}}
]]></artwork>
          </figure>
          <t>It can be observed that some delta values are higher than 23, requiring 2 bytes for their encoding in CBOR. This is a result of the automatic SID allocation based on alphabetical ordering, which doesn't optimize for efficient deltas.</t>
        </section>
        <section anchor="coreconf-query-and-compressed-packet">
          <name>CORECONF Query and Compressed Packet</name>
          <t>The CORECONF query and compressed packet sizes remain consistent with previous approaches. The query size is 15 bytes (similar to the Universal Options approach), and the compressed packet size remains at 49 bytes.</t>
        </section>
        <section anchor="analysis-2">
          <name>Analysis</name>
          <t>The Merged Data Model approach offers an interesting middle ground between the semantic and Universal Options approaches. By combining both approaches in a single model, it provides the benefits of compatibility with existing semantic compression while adding the flexibility to handle new or protocol-specific options.</t>
          <t>The CBOR serialization size (400 bytes) falls between the semantic approach (357 bytes) and the Universal Options approach (481 bytes), reflecting its hybrid nature. This represents a reasonable compromise that balances compatibility, flexibility, and efficiency.</t>
          <t>A key advantage of this approach is its unified framework, which eliminates the need to choose between different compression approaches. Implementations can leverage semantic compression for well-known fields while still maintaining the ability to handle any new protocol options through the Universal Options mechanism.</t>
          <t>However, the automatic SID allocation based on alphabetical ordering leads to some inefficiency in delta encoding. As shown in the diagnostic representation, some delta values require 2 bytes for encoding, which increases the serialization size. This suggests that further optimization of SID allocation could improve efficiency, which is explored in the next approach.</t>
          <t>Overall, the Merged approach offers a pragmatic solution that balances the strengths of both semantic and Universal Options approaches while mitigating some of their respective limitations. It provides a path forward that maintains backward compatibility while enabling future extensibility.</t>
        </section>
      </section>
      <section anchor="ordered-sid-allocation-approach">
        <name>Ordered SID Allocation Approach</name>
        <t>The Ordered approach represents a further optimization of the Merged approach through strategic manual allocation of SIDs. While it uses the exact same YANG Data Model as the Merged approach, it differs in how SIDs are assigned to the nodes in the model.</t>
        <section anchor="implementation-approach-2">
          <name>Implementation Approach</name>
          <t>In standard YANG Data Models, SIDs are typically allocated automatically based on alphabetical ordering of nodes or through sequential assignment. This automatic allocation, while convenient, often produces suboptimal delta values when serializing CBOR-encoded rules.
The Ordered approach intervenes in this process by manually editing the SID file to optimize delta values specifically for CBOR encoding efficiency. By carefully arranging SIDs to ensure that frequently used nodes have closely related values, this approach minimizes the number of bytes required to encode the deltas between adjacent SIDs in the CBOR representation.</t>
        </section>
        <section anchor="cbor-serialization-3">
          <name>CBOR Serialization</name>
          <t>The CBOR serialization of the rule using the Ordered approach is 376 bytes in size:</t>
          <figure anchor="fig-cbor-serial4">
            <name>CBOR serialisation.</name>
            <artwork align="center"><![CDATA[
b'a119139fa11781a4178ca71719142228022701161913fe2619143e121913fa2281a20100024101a7
1719142128022701161913fd2619143e121913fa2281a20100024100a71719141f28042701161913fe
2619143e121913fa2281a20100024100a71719140228082701161913fd2619143e121913fa2281a201
00024101a81719140528102701161913fd261914412581a20100024107121913f82281a20100024100
a70e1914490d0b07d82d1914380801061913fe0919143f021913fba70e1914490d0b07d82d19143808
02061913fe0919143f021913fba70e1914490d0f07d82d1914380801061913fe0919143f021913fba7
0e1914490d0f07d82d1914380802061913fe0919143f021913fba80e1914490d1107080801061913fe
0919143e021913fa0f81a2010002413ca80e1914490d19010207d82d1914380801061913fe0919143e
021913fa0f81a20100024102a70e1914490d19080707d82d1914380801061913fe0919143f021913fb
2a0829082b191443
]]></artwork>
          </figure>
          <t>The diagnostic representation shows how this approach affects the delta values:</t>
          <figure anchor="fig-cbor-diag4">
            <name>CBOR serialisation.</name>
            <artwork align="center"><![CDATA[
Deltas in entry part:
- 23: field-id                     -14: space-id  
* -9: field-length                 -11: option-id 
* -8: field-position               -7: field-length
- 22: direction-indicator          -8: field-position
* -7: matching-operator            -6: direction-indicator
- 18: comp-decomp-action           -9: matching-operator  
* -6: matching-operator-value      -15: target-value
* -3: target-value                 

Deltas in the rule part:
* -11: rule-id-length
* -10: rule-id-value
* -12: rule-nature

{5023: {23: [{23: [
  {23: 5154, -9: 2, -8: 1, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'01'}]}, 
  {23: 5153, -9: 2, -8: 1, 22: 5117, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'00'}]}, 
  {23: 5151, -9: 4, -8: 1, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'00'}]}, 
  {23: 5122, -9: 8, -8: 1, 22: 5117, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'01'}]}, 
  {23: 5125, -9: 16, -8: 1, 22: 5117, -7: 5185, 
                       -6: [{1: 0, 2: h'07'}], 18: 5112, -3: [{1: 0, 2: h'00'}]}, 
  {14: 5193, 13: 11, 7: 45(5176), 8: 1, 6: 5118, 9: 5183, 2: 5115}, 
  {14: 5193, 13: 11, 7: 45(5176), 8: 2, 6: 5118, 9: 5183, 2: 5115}, 
  {14: 5193, 13: 15, 7: 45(5176), 8: 1, 6: 5118, 9: 5183, 2: 5115}, 
  {14: 5193, 13: 15, 7: 45(5176), 8: 2, 6: 5118, 9: 5183, 2: 5115}, 
  {14: 5193, 13: 17, 7: 8, 8: 1, 6: 5118, 9: 5182, 2: 5114, 
                                                         15: [{1: 0, 2: h'3C'}]}, 
  {14: 5193, 13: 258, 7: 45(5176), 8: 1, 6: 5118, 9: 5182, 2: 5114, 
                                                         15: [{1: 0, 2: h'02'}]}, 
  {14: 5193, 13: 2055, 7: 45(5176), 8: 1, 6: 5118, 9: 5183, 2: 5115}],
-11: 8, -10: 8, -12: 5187}]}}
]]></artwork>
          </figure>
          <t>The key innovation in this approach is visible in the diagnostic representation: by carefully arranging SIDs, many of the delta values are now negative numbers with small absolute values. In CBOR, small integers (both positive and negative) can be encoded in a single byte, leading to significant space savings compared to the larger deltas in the Merged approach.</t>
        </section>
        <section anchor="sid-allocation-strategy">
          <name>SID Allocation Strategy</name>
          <t>The SID allocation file was manually edited to optimize delta values, as shown in the excerpt below:</t>
          <figure anchor="fig-sid-assignation">
            <name>CBOR serialisation.</name>
            <artwork align="center"><![CDATA[
5023;data;/ietf-schc:schc
...
5030;data;/ietf-schc:schc/rule/window-size
5031;data;/ietf-schc:schc/rule/w-size
5032;data;/ietf-schc:schc/rule/tile-size
5033;data;/ietf-schc:schc/rule/tile-in-all-1
5034;data;/ietf-schc:schc/rule/rule-nature
5035;data;/ietf-schc:schc/rule/rule-id-value
5036;data;/ietf-schc:schc/rule/rule-id-length
5037;data;/ietf-schc:schc/rule/retransmission-timer/ticks-numbers
5038;data;/ietf-schc:schc/rule/retransmission-timer/ticks-duration
5039;data;/ietf-schc:schc/rule/retransmission-timer
5040;data;/ietf-schc:schc/rule/rcs-algorithm
5041;data;/ietf-schc:schc/rule/maximum-packet-size
5042;data;/ietf-schc:schc/rule/max-interleaved-frames
5043;data;/ietf-schc:schc/rule/dtag-size
5044;data;/ietf-schc:schc/rule/direction
5045;data;/ietf-schc:schc/rule/ack-behavior
5046;data;/ietf-schc:schc/rule
5047;data;/ietf-schc:schc/rule/fcn-size
5048;data;/ietf-schc:schc/rule/fragmentation-mode
5049;data;/ietf-schc:schc/rule/inactivity-timer
5050;data;/ietf-schc:schc/rule/inactivity-timer/ticks-duration
5051;data;/ietf-schc:schc/rule/inactivity-timer/ticks-numbers
5052;data;/ietf-schc:schc/rule/l2-word-size
5053;data;/ietf-schc:schc/rule/max-ack-requests
...
5060;data;/ietf-schc:schc/rule/entry/field-length
5061;data;/ietf-schc:schc/rule/entry/field-position
5062;data;/ietf-schc:schc/rule/entry/matching-operator
5063;data;/ietf-schc:schc/rule/entry/matching-operator-value
5064;data;/ietf-schc:schc/rule/entry/matching-operator-value/index
5065;data;/ietf-schc:schc/rule/entry/matching-operator-value/value
5066;data;/ietf-schc:schc/rule/entry/target-value
5067;data;/ietf-schc:schc/rule/entry/target-value/index
5068;data;/ietf-schc:schc/rule/entry/target-value/value
5069;data;/ietf-schc:schc/rule/entry
5070;data;/ietf-schc:schc/rule/entry-option-space
5071;data;/ietf-schc:schc/rule/entry-option-space/comp-decomp-action
5072;data;/ietf-schc:schc/rule/entry-option-space/comp-decomp-action-value
5073;data;/ietf-schc:schc/rule/entry-option-space/comp-decomp-action-value/index
5074;data;/ietf-schc:schc/rule/entry-option-space/comp-decomp-action-value/value
5075;data;/ietf-schc:schc/rule/entry-option-space/direction-indicator
5076;data;/ietf-schc:schc/rule/entry-option-space/field-length
5077;data;/ietf-schc:schc/rule/entry-option-space/field-position
5078;data;/ietf-schc:schc/rule/entry-option-space/matching-operator
5079;data;/ietf-schc:schc/rule/entry-option-space/matching-operator-value
5080;data;/ietf-schc:schc/rule/entry-option-space/matching-operator-value/index
5081;data;/ietf-schc:schc/rule/entry-option-space/matching-operator-value/value
5082;data;/ietf-schc:schc/rule/entry-option-space/option-id
5083;data;/ietf-schc:schc/rule/entry-option-space/space-id
5084;data;/ietf-schc:schc/rule/entry-option-space/target-value
5085;data;/ietf-schc:schc/rule/entry-option-space/target-value/index
5086;data;/ietf-schc:schc/rule/entry-option-space/target-value/value
5087;data;/ietf-schc:schc/rule/entry/comp-decomp-action
5088;data;/ietf-schc:schc/rule/entry/comp-decomp-action-value
5089;data;/ietf-schc:schc/rule/entry/comp-decomp-action-value/index
5090;data;/ietf-schc:schc/rule/entry/comp-decomp-action-value/value
5091;data;/ietf-schc:schc/rule/entry/direction-indicator
5092;data;/ietf-schc:schc/rule/entry/field-id
]]></artwork>
          </figure>
          <t>The allocation strategy focuses on several key principles:</t>
          <ul spacing="normal">
            <li>
              <t>Grouping related nodes with consecutive SIDs to minimize delta values</t>
            </li>
            <li>
              <t>Positioning frequently used nodes strategically to ensure small deltas</t>
            </li>
            <li>
              <t>Using both positive and negative deltas to maximize single-byte encoding opportunities</t>
            </li>
            <li>
              <t>Arranging rule-related fields to minimize the encoding size of rule metadata</t>
            </li>
          </ul>
        </section>
        <section anchor="coreconf-query-and-compressed-packet-1">
          <name>CORECONF Query and Compressed Packet</name>
          <t>As with previous approaches, the CORECONF query size (15 bytes) and compressed packet size (49 bytes) remain consistent. The optimization affects only the rule serialization size, not the operational efficiency of queries or the compression ratio of actual packets.</t>
        </section>
        <section anchor="analysis-3">
          <name>Analysis</name>
          <t>The Ordered SID Allocation approach demonstrates the significant impact that strategic SID assignment can have on rule serialization efficiency. By reducing the CBOR serialization size from 400 bytes in the Merged approach to 376 bytes, it achieves a 6% reduction in size while maintaining identical functionality and compatibility.</t>
          <t>This approach is particularly noteworthy because it achieves this efficiency gain without any changes to the YANG Data Model itself—only the SID allocation is modified. This makes it a non-invasive optimization that can be applied to existing models without affecting their structure or semantics.</t>
          <t>The resulting serialization size (376 bytes) is only slightly larger than the original semantic approach (357 bytes), while maintaining all the flexibility benefits of the Universal Options approach. This represents an excellent compromise that nearly eliminates the size penalty of the more flexible approach.</t>
          <t>The Ordered approach demonstrates that thoughtful SID allocation can significantly improve encoding efficiency for CBOR-serialized SCHC Rules. This optimization technique could be valuable in constrained environments where rule transmission and storage efficiency are critical concerns.</t>
        </section>
      </section>
    </section>
    <section anchor="syntatic-compression">
      <name>Syntatic compression</name>
      <t>The syntactic approach processes all options uniformly by decomposing each CoAP option into its constituent components. Rather than treating an entire option as a single field, this approach treats the delta type, length, and value components that make up a CoAP option as separate fields. While the core compression algorithm remains unchanged, the parsing phase must be modified to accommodate this decomposed representation of the header. From a Data Model perspective, three new Field Identifiers (FIDs) need to be defined. The specific SID values assigned have minimal impact since they function purely as identifiers without CORECONF delta encoding considerations.</t>
      <section anchor="rule-specification">
        <name>Rule specification</name>
        <t>As shown in the transition from <xref target="fig-rule-test"/> to <xref target="fig-rule-test2"/>, the Field Position (FP) parameter plays a crucial role in maintaining the proper ordering of these option components.</t>
        <figure anchor="fig-rule-test2">
          <name>Target rule.</name>
          <artwork align="center"><![CDATA[
+===================================================================+
|RuleID 9/8                                                         |
+==========+===+==+==+======+===============+===============+=======+
|  Field   | FL|FP|DI|  TV  |       MO      |      CDA      |  Sent |
|          |   |  |  |      |               |               | [bits]|
+==========+===+==+==+======+===============+===============+=======+
|CoAP      |2  |1 |Bi|01    | equal         | not-sent      |       |
|version   |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP Type |2  |1 |Dw|CON   | equal         | not-sent      |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP TKL  |4  |1 |Bi|0     | equal         | not-sent      |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP Code |8  |1 |DW|0.01  | equal         | not-sent      |       |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP MID  |16 |1 |Bi|0000  | MSB(7)        | LSB           |MID    |
+----------+---+--+--+------+---------------+---------------+=======+
|CoAP      |16 |1 |Dw|11    | equal         | not-sent      |       |
|DeltaT    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |8  |1 |Dw|      | ignore        | value-sent    | size  |
|Length    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+
|CoAP      |var|1 |Dw|      | ignore        | value_sent    | size+ |
|Value     |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |16 |2 |Dw|0     | equal         | not-sent      |       |
|DeltaT    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |4  |2 |Dw|      | ignore        | value-sent    | size  |
|Length    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+
|CoAP      |var|2 |Dw|      | ignore        | value_sent    | size+ |
|Value     |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |16 |3 |Dw|4     | equal         | not-sent      |       |
|DeltaT    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |4  |3 |Dw|      | ignore        | value-sent    | size  |
|Length    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+
|CoAP      |var|3 |Dw|      | ignore        | value_sent    | size+ |
|Value     |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |16 |4 |Dw|0     | equal         | not-sent      |       |
|DeltaT    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |4  |4 |Dw|      | ignore        | value-sent    | size  |
|Length    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+
|CoAP      |var|4 |Dw|      | ignore        | value-sent    | size+ |
|Value     |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |16 |5 |Dw| 2    | equal         | not-sent      |       |
|DeltaT    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |4  |5 |Dw| 1    | equal         | not-sent      |       |
|Length    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+
|CoAP      |var|5 |Dw| 60   | equal         | not-sent      |       |
|Value     |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |16 |6 |Dw| 241  | equal         | not-sent      |       |
|DeltaT    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |4  |6 |Dw| 1    | equal         | not-sent      |       |
|Length    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+
|CoAP      |var|6 |Dw| 2    | equal         | not-sent      |       |
|Value     |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |16 |7 |Dw|1797  | equal         | not-sent      |       |
|DeltaT    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+ 
|CoAP      |4  |7 |Dw|      | ignore        | value-sent    | size  |
|Length    |   |  |  |      |               |               |       |
+----------+---+--+--+------+---------------+---------------+-------+
|CoAP      |var|7 |Dw|      | ignore        | value-sent    | size+ |
|Value     |   |  |  |      |               |               | value |
+----------+---+--+--+------+---------------+---------------+-------+ 
]]></artwork>
        </figure>
        <t>A notable limitation of this approach concerns the SCHC Field Length of the 'CoAP Length' fields, which restricts the rule's applicability. For example, the first Uri-path option requires 8 bits, instead of 4, for its Field Length because the value 'accelerometers' is 14 bytes long, necessitating the escape value 0xD to encode the length on an additional byte. Consequently, if shorter values need to be handled, separate rules would be required.</t>
      </section>
      <section anchor="compressed-packet-2">
        <name>Compressed packet</name>
        <t>The compression residue with the rule ID is 409 bit-long or 52 byte-long with the alignment (see <xref target="fig-residue2"/>).</t>
        <figure anchor="fig-residue2">
          <name>SCHC compressed packet.</name>
          <artwork align="center"><![CDATA[
090087730b1b1b2b632b937b6b2ba32b939bbb6b0bc34b6bab6d53230ba329eba37b230bcd
53ab734ba1eb697b9af191aa262b00
]]></artwork>
        </figure>
        <t>The increased size of the syntactic approach is primarily due to redundant transmission of option lengths. The length information must be sent twice: first to reconstruct the 'CoAP Length' field in the option header, and again to specify the size of the 'CoAP Value' residue. This duplication contributes significantly to the lower compression efficiency compared to other approaches.</t>
      </section>
      <section anchor="coreconf-query-example-2">
        <name>CORECONF Query Example</name>
        <t>A CORECONF query to access the target value of the Accept with is in fith position. The size of the CoAP payload is also 14 bytes:</t>
        <figure anchor="fig-query3">
          <name>CORECONF query to Accept TV.</name>
          <artwork align="center"><![CDATA[
REQ: FETCH </c>
        (Content-Format: application/yang-identifiers+cbor-seq)
   [5115,     / .../target-value/value 
    9,        / rule-id-value
    8,        / rule-id-length
    8003,     / fid-coap-value (from another YANG DM)
    5,        / field-position
    5019,     / direction-indicator
    0]        / target-value/index
]]></artwork>
        </figure>
      </section>
      <section anchor="cbor-serialization-4">
        <name>CBOR Serialization</name>
        <t>The serialization uses the manually assigned sid to minize the representation. The result is 718 byte-long.</t>
        <artwork><![CDATA[
Deltas in entry part:
- 23: field-id                     -14: space-id  
* -9: field-length                 -11: option-id 
* -8: field-position               -7: field-length
- 22: direction-indicator          -8: field-position
* -7: matching-operator            -6: direction-indicator
- 18: comp-decomp-action           -9: matching-operator  
* -6: matching-operator-value      -15: target-value
* -3: target-value                 

Deltas in the rule part:
* -11: rule-id-length
* -10: rule-id-value
* -12: rule-nature

{5023: {23: [
  {23: [{23: 5154, -9: 2, -8: 1, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'01'}]}, 
  {23: 5153, -9: 2, -8: 1, 22: 5117, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'00'}]}, 
  {23: 5151, -9: 4, -8: 1, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'00'}]}, 
  {23: 5122, -9: 8, -8: 1, 22: 5117, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'01'}]}, 
  {23: 5125, -9: 16, -8: 1, 22: 5117, -7: 5185, -6: [{1: 0, 2: h'07'}], 
                                                    18: 5112, -3: [{1: 0, 2: h'00'}]}, 
  {23: 8001, -9: 4, -8: 1, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'0B'}]}, 
  {23: 8002, -9: 12, -8: 1, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8003, -9: 45(5176), -8: 1, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8001, -9: 4, -8: 2, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'00'}]}, 
  {23: 8002, -9: 4, -8: 2, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8003, -9: 45(5176), -8: 2, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8001, -9: 4, -8: 3, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'04'}]}, 
  {23: 8002, -9: 4, -8: 3, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8003, -9: 45(5176), -8: 3, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8001, -9: 4, -8: 4, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'00'}]}, 
  {23: 8002, -9: 4, -8: 4, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8003, -9: 45(5176), -8: 4, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8001, -9: 4, -8: 5, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'02'}]}, 
  {23: 8002, -9: 4, -8: 5, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'01'}]}, 
  {23: 8003, -9: 8, -8: 5, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'3C'}]}, 
  {23: 8001, -9: 4, -8: 6, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'F1'}]}, 
  {23: 8002, -9: 4, -8: 6, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'01'}]}, 
  {23: 8003, -9: 8, -8: 6, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'02'}]}, 
  {23: 8001, -9: 8, -8: 7, 22: 5118, -7: 5182, 18: 5114, -3: [{1: 0, 2: h'0705'}]}, 
  {23: 8002, -9: 4, -8: 7, 22: 5118, -7: 5183, 18: 5115}, 
  {23: 8003, -9: 8, -8: 7, 22: 5118, -7: 5183, 18: 5115}], -11: 9, -10: 8, -12: 5187}]}}
]]></artwork>
        <!--
# flatten RFC9363 

with Corentin proposal to flatten the rule entries
-->

</section>
    </section>
    <section anchor="summary">
      <name>Summary</name>
      <artwork><![CDATA[
  +--------+---------+----------+--------+---------+------------+---------+
  |        | RFC9363 | Univ Opt | merged | ordered |  Syntactic | Revised |
  +--------+---------+==========+========+=========+------------+---------+
  |CORECONF|    357  |     481  |    400 |     376 |        718 |         |       
  +--------+---------+----------+--------+---------+------------+---------+
  |Query   |     14  |      15  |     15 |      15 |         14 |         |
  +--------+---------+----------+--------+---------+------------+---------+
  |SCHC pkt|     49  |      49  |     49 |      49 |         52 |         |
  +--------+---------+----------+--------+---------+------------+---------+

]]></artwork>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank</t>
      <t>This work was supported by the Sweden's Innovation Agency VINNOVA within the EUREKA CELTIC-NEXT project CYPRESS.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
hqdM3yeYcHIdR8CcJGJszDZXnbO7qtaqJOsSf3AtTrTTyum3ZPQ1ibrQ6SRM
+SZlvoi3EHQo1ZzNFb1uWjNVoaR0TpvZCNhJ0sWcygmzvJLQmUhFUpwiMJx0
iqRC84rypV72JOYKsm+c+2JzXQw3II8wRvNJN0FmLcl0GhYjWaip62hedX2w
HVtHpb0L1fJG31duxzP5t3z6umV36SYpL+BTG/OqMmK5WkDK10VfYwXRxTJD
m7HhN1IBJlnAA75bGBPSBa0YrlRZ8g6L9IZpUz1DXh+4vA6ORB2ih8PjdekY
DFquFYv3+gL70MGt41BXl5CaMTrA2F7kbAPQ6MSSPHl9zsEcJ4Sie3Mc4OVW
GIgUZF6BAM0PjWRRKAJAUsLU1r62F/6aUCqOHSrGjNLeYG8+HYJ8l5O5Oe3D
B5xo4WEH77jCxowhLScCel4f4tIFIFMBjd5wXWbYVnAAw6TTRKfZ++G4N5Q2
74XC5VQnWYjLIX92GXzaq4SPf7tKWP12lfC21yX+dpVwNSy/XSVcDQt3LbAA
vbR33QEUPvRWP/xn7AD9r1p1q6sMts2NoTSl5ybk7J89JW9GW96B+v8q7kD9
3sR+/bPuQK1eJKQ7vkx4V97w2dJdT6lH3I/8udPdFjP6n0Z3XZpSTwb7VdBd
91dHd1vM6H8a3fV+ffyu96uju91n9NnTXf9xF8J/znQnU9pVZP2M6U5mdNTa
bUYfRXe/4CIh3R0J3fV20rc+a7o7+tXR3dHjmMPnTHcD1mcHx4NfDd0NfnXn
7O4z+uzOWe9KTmOC1oEVb7n8O36xLqLipOLCzHKRC+33saWf2SorCyyOhH3C
MT/bF3eHrlqARVbSSOfwIVT7mS4pqy9xfJaY4qdsRp9FaZar79KoQVUAxOxt
7k0c0jWpeKuaKX7aq5MnDR1FHoTuLcS8DPtY4nYepgnZ5LN991peulWsruIQ
XVaEFLHIh9kkuNE9tN6fFTKaJWWQnGluFWTstKlOMcREgkUA6Bn6G1L0B4hH
xPGecPWNad0pVYxuQFugX6dUcx2D02LMRM2rhs1I4ztbTeF1cgBenHGBT7pw
tkGFlQF7fS590bCFlql0hy65rg6yMNSuD+628+HDofggWset1nAwWH8jbeFK
2n7lnbS1/rpbaVtVV9J2Hn8nLSKsUN9aX8NZ9mZWVb7GKId4ShdauG5VvDSW
6ZapQwolCam49bG1N4/YTn4XTcKR7ADqnR26y0m+aq9pz5UMx249dlkGFOWA
yTLk9Lq37nBv6xJ329e0Ik7n6dLUfabbLtNovMxL9al1ik1yF6arKp67+Th8
BaFT4IYJ+ZNfdUHkS0WXAUkmzoqL1a+/zIJKgH9GF3Uff8yNFsNWq1u6qJs7
PyD3ZhDzinC4y4tDvq/iv/86i+5HXmdRW1Mawg9+MYVVTNqWcUkD+esgOQmR
K5SgUDaqBkll0B5ajtn8LSf9t5z0tTnpOoP6x99y0v9ZOemrcs8flW+8ZcI6
Agh8+KPR+LTUpaCxvYaAuqbPvt9WCMWmPu/cgz+hzkfThZ3Qmi53m89OPfjz
6e4+n96G+VR1udt8durBn0/v069PVZe7zWenHvz59HefT2fDfB7RZbvUZddj
bbt36ZZRqJz40c5dPitD2fnILjdO/BFdlpen7XU52L3LQau/YepVnW6i4TXw
uE1/qrPscLyuVkTtd//SaNS+ULN5kGNhujfPTul6llqNNJjTBIuDRlSwDoQv
vqpKv2tEFZQ0MQGk0fgDBeguF3gfGcujSn1Vtil9VTYsVX/rPa45xq0HA+kD
hW9j5DZ8XHCGwAMHL9InjhcmPRoahbcR6tkPK+CqiKSzz9bBpdUGAhAj0gVU
LCrLHzGbgZ9h4LuZCMrw1mSnP31qtLFeq/tv98xI7b552HeeWYjgXQe8Tw0X
3833LhdkHRu47Ef4ZJ9ZUPqdXwwu3hhfgOKHFWzn4fSKI9i/UD9/EfjPPoAW
uYw5+T2c6kyxZX6dpBlHE1PwMEaHv5MEErq9B8t2ZEvKngJqHEtCx10I2vp+
pi5svZWTKzJhfH/x8uWr70/IrCBKwvl3b87/9USdnj9/e3HaeHn+b29xk/4F
9B11+ufXb84vL5u1/w9StnpouSkBAA==

-->

</rfc>
