<?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.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-schc-universal-option-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.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-ietf-schc-universal-option-02"/>
    <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>
    <author initials="S." surname="Sirohi" fullname="Samar Sirohi">
      <organization>Institut MINES TELECOM; IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie CS 17607</street>
          <city>Cesson-Sevigne Cedex</city>
          <code>35576</code>
          <country>France</country>
        </postal>
        <email>Samar.Sirohi@imt-atlantique.fr</email>
      </address>
    </author>
    <date year="2026" month="October" day="22"/>
    <area>Internet</area>
    <workgroup>SCHC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 83?>

<t>Keeping option identifiers in SCHC Rules simplifies interoperability
and the evolution of SCHC compression when a protocol introduces
options that the current SCHC implementation does not know.
This document explains why the Field Identifiers (FIDs) defined for
CoAP options in RFC 9363 do not scale: a FID must be allocated,
standardized and implemented for each option a protocol defines,
before any Rule can describe that option.
It presents an evolution of the compression Rule defined in RFC 9363,
in which an entry refers to an option by the pair (option space,
option number), called a Universal Option, and in which entries are
indexed, ordered and can reference one another.
It also presents a data model dedicated to CoAP, which processes
options directly from the option number carried in the message,
instead of mapping each option to a FID of its own.</t>
    </abstract>
  </front>
  <middle>
    <?line 101?>

<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"/>, and S2 is unable to find the original option number to reconstruct the header:</t>
        <figure anchor="fig-new-fid">
          <name>New entry added by management</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="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 introduce two approaches to address this challenge for CoAP. The first 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.
The second 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. Since many protocols encode their options as a type, a length and a value, this second approach can easily be derived for protocols other than CoAP.</t>
      </section>
    </section>
    <section anchor="semantic-compression">
      <name>Semantic compression</name>
      <t>The first solution keeps the efficiency of semantic compression while addressing the interoperability challenges described above. It 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>
      <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 anchor="universal-options">
        <name>Universal Options</name>
        <t>In RFC 9363 <xref target="RFC9363"/>, each entry in the compression structure is referenced
by a tuple composed of a Field ID (FID), a Direction Indicator (DI)
and a position.</t>
        <t>This keying does not guarantee that entries appear in the same
order as the corresponding fields in the header (all the options
will appear at the end of the Rule), whereas RFC 8724 <xref target="RFC8724"/>
mandates that order and recent implementations have shown it to be
efficient. In addition, these three- or four-element keys remain
large, which may be a penalty when Rule management is used.</t>
        <t>RFC 7950 <xref target="RFC7950"/>, Section 11, does not allow the "entry" list's
key, nor the "field-id" leaf, to be changed in place in a published
module ("Otherwise, if the semantics of any previous definition are
changed [...] then this MUST be achieved by a new definition with a
new identifier"). This document therefore deprecates the whole
compression Rule entry structure
in favor of a new one, providing a uniform way to reference a field
entry. A new
"entry-index" leaf is introduced as the key of the new
"entry-universal" list. The list is defined as "ordered-by user", and
"entry-index" values are assigned sequentially according to the order of
the entries in that list. The list order therefore continues to convey
the header field order (addressing the second
problem).</t>
        <t>"entry-index" is then followed by a choice between a field-id and a
space-id/option-number. The rest of the entry is unchanged, except
for the new "field-length-value" leaf, added to carry the argument
of a Field Length function.</t>
        <t>This document therefore leaves the RFC 9363
"compression-rule-entry" grouping, its "compression-content"
grouping, and the "compression" case untouched, and marks them
"status deprecated;" (RFC 8407 recommends a "deprecated" status be
kept for at least one year before moving to "obsolete"). The new
structure is defined in a new "compression-rule-entry-universal" grouping,
used by a new "compression-content-universal" grouping and a new
"compression-universal" case, sitting alongside the deprecated ones in the
"nature" choice. The YANG definitions of these groupings are
specified in <xref target="I-D.toutain-schc-rfc9363bis"/>.</t>
        <t><xref target="fig-compression-rule-entry"/> shows the resulting YANG tree diagram
for both cases (deprecated "compression" and new "compression-universal").</t>
        <figure anchor="fig-compression-rule-entry">
          <name>Compression Rule Entry: deprecated (RFC 9363) and new (-universal) cases</name>
          <artwork type="ascii-art"><![CDATA[
x--:(compression) {compression}?
|  x--rw entry* [field-id field-position direction-indicator]
|     +--rw field-id                    fid-type
|     +--rw field-length                union
|     +--rw field-position              uint8
|     +--rw direction-indicator         di-type
|     +--rw target-value* [index]
|     |  +--rw index    uint16
|     |  +--rw value?   binary
|     +--rw matching-operator           mo-type
|     +--rw matching-operator-value* [index]
|     |  +--rw index    uint16
|     |  +--rw value?   binary
|     +--rw comp-decomp-action          cda-type
|     +--rw comp-decomp-action-value* [index]
|        +--rw index    uint16
|        +--rw value?   binary
+--:(compression-universal) {compression or management}?
   +--rw entry-universal* [entry-index]
   |  +--rw entry-index                 uint16
   |  +--rw (field-or-space)
   |  |  +--:(regular-field)
   |  |  |  +--rw field-id              fid-type
   |  |  +--:(universal-option)
   |  |     +--rw space-id              space-id-type
   |  |     +--rw universal-value       uint64
   |  +--rw field-length                union
   |  +--rw field-length-value?         uint16
   |  +--rw field-position              uint8
   |  +--rw direction-indicator         di-type
   |  +--rw target-value* [index]
   |  |  +--rw index    uint16
   |  |  +--rw value?   binary
   |  +--rw matching-operator           mo-type
   |  +--rw matching-operator-value* [index]
   |  |  +--rw index    uint16
   |  |  +--rw value?   binary
   |  +--rw comp-decomp-action          cda-type
   |  +--rw comp-decomp-action-value* [index]
   |     +--rw index    uint16
   |     +--rw value?   binary
   +--rw action?                          action-type
   +--rw action-value* [index]
      +--rw index    uint16
      +--rw value?   binary
]]></artwork>
        </figure>
        <t>Unlike the deprecated "entry" list, keyed by the compound
"field-id"/"field-position"/"direction-indicator", "entry-universal"
is keyed by the single-leaf "entry-index". This makes an entry
cheap and unambiguous to reference from elsewhere within the same
Rule, e.g. the "field-length-value" argument of a Field Length
function, or a management operation targeting that entry.</t>
      </section>
      <section anchor="space-id">
        <name>Space ID</name>
        <t>Several protocols define options: CoAP <xref target="RFC7252"/> is one example,
but other protocols define their own options too, each with its own
option numbering. An option number is therefore not enough by
itself; it must be qualified by the option space, i.e. the protocol
it belongs to.</t>
        <t>To identify these option spaces, this document creates a
"space-id-base-type" identity and derives one identity per protocol
from it; a "space-id-type" typedef is then created from
"space-id-base-type", following the identityref pattern used
throughout RFC 9363 (e.g. for "rcs-algorithm-type"). At present, the
module only defines one such identity, "space-id-coap", for the CoAP
option space; other protocols that define options can add their own
"space-id-*" identity the same way. <xref target="fig-space-id"/> shows this
pattern, mirroring how RFC 9363 introduces its own
identityref-derived types.</t>
        <figure anchor="fig-space-id">
          <name>Space ID: base identity, one derived identity per protocol, and typedef</name>
          <sourcecode type="yang"><![CDATA[
identity space-id-base-type {
  base schc:space-field-id-base-type;
  description
    "Base identity for a Universal Option space. Several
     protocols define options (e.g. CoAP); each such protocol
     is identified by an identity derived from this base type.";
}

identity space-id-coap {
  base space-id-base-type;
  description
    "Space ID identifying the CoAP option space.";
  reference
    "RFC 7252 The Constrained Application Protocol (CoAP)";
}

typedef space-id-type {
  type identityref {
    base space-id-base-type;
  }
  description
    "Space ID type for universal option spaces (CoAP options,
     etc.). Used in the universal-option case of
     compression-rule-entry-universal.";
}
]]></sourcecode>
        </figure>
        <t>"space-id-type" is used, together with "space-id-base-type" and
"fid-base-type"'s common ancestor "space-field-id-base-type", by the
"field-or-space" choice (see <xref target="fig-compression-rule-entry"/>).</t>
      </section>
      <section anchor="deprecating-the-per-option-coap-fids">
        <name>Deprecating the Per-Option CoAP FIDs</name>
        <t>RFC 9363 defines twenty per-option Field IDs deriving from
"fid-coap-option", one for each CoAP option registered at the time
(see <xref target="tbl-coap-option-fids"/>). Now that Universal Options provide a
"space-id-coap"/"universal-value" pair to reference any CoAP option
by its option number, without needing a dedicated FID for it, each
of these twenty identities is superseded and marked deprecated.</t>
        <t>RFC 7950 <xref target="RFC7950"/>, Section 11, states that "Obsolete definitions
MUST NOT be removed from published modules, since their identifiers
may still be referenced by other modules": once RFC 9363 is
published, these twenty identities can only ever be marked
"deprecated" and then "obsolete"; they can never simply disappear
from a later revision of the module. RFC 8407 <xref target="RFC8407"/>, Section
4.7, further recommends that "an object SHOULD be available for at
least one year with a 'deprecated' status before it is changed to
'obsolete'", and that "the status SHOULD NOT be changed from
'current' directly to 'obsolete'": since these twenty identities are
"current" in RFC 9363, this document marks them "deprecated" rather
than "obsolete".</t>
        <t>These twenty identities MUST NOT be used in a new "entry-universal"
list (<xref target="fig-compression-rule-entry"/>): the "space-id"/
"universal-value" pair introduced in <xref target="universal-options"/>
supersedes them there. They remain usable only in the deprecated
"entry" list, for Rules that already reference them.</t>
        <t>IANA has allocated the SID range 2550-2949 to the "ietf-schc"
module. At the time of writing, no SID file for "ietf-schc" is
registered in the IETF YANG-SID Modules registry. No SID from that
range is to be allocated to these twenty deprecated identities: a
SID "immutably maps to EXACTLY one YANG name", so allocating one to
an identity already superseded by Universal Options would waste it
permanently, with no way to reclaim it later.</t>
        <t>The working copy of the module has been corrected accordingly: the
twenty identities are present, each with "status deprecated;" (see
<xref target="fig-fid-coap-option-deprecated"/>).</t>
        <table anchor="tbl-coap-option-fids">
          <name>RFC 9363 per-option CoAP FIDs and their Universal Option replacement</name>
          <thead>
            <tr>
              <th align="left">RFC 9363 FID</th>
              <th align="left">CoAP Option</th>
              <th align="left">Replaced by (space-id-coap / universal-value)</th>
              <th align="left">Defined in</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">fid-coap-option-if-match</td>
              <td align="left">If-Match</td>
              <td align="left">1</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-uri-host</td>
              <td align="left">Uri-Host</td>
              <td align="left">3</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-etag</td>
              <td align="left">ETag</td>
              <td align="left">4</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-if-none-match</td>
              <td align="left">If-None-Match</td>
              <td align="left">5</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-observe</td>
              <td align="left">Observe</td>
              <td align="left">6</td>
              <td align="left">
                <xref target="RFC7641"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-uri-port</td>
              <td align="left">Uri-Port</td>
              <td align="left">7</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-location-path</td>
              <td align="left">Location-Path</td>
              <td align="left">8</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-uri-path</td>
              <td align="left">Uri-Path</td>
              <td align="left">11</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-content-format</td>
              <td align="left">Content-Format</td>
              <td align="left">12</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-max-age</td>
              <td align="left">Max-Age</td>
              <td align="left">14</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-uri-query</td>
              <td align="left">Uri-Query</td>
              <td align="left">15</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-accept</td>
              <td align="left">Accept</td>
              <td align="left">17</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-location-query</td>
              <td align="left">Location-Query</td>
              <td align="left">20</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-block2</td>
              <td align="left">Block2</td>
              <td align="left">23</td>
              <td align="left">
                <xref target="RFC7959"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-block1</td>
              <td align="left">Block1</td>
              <td align="left">27</td>
              <td align="left">
                <xref target="RFC7959"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-size2</td>
              <td align="left">Size2</td>
              <td align="left">28</td>
              <td align="left">
                <xref target="RFC7959"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-proxy-uri</td>
              <td align="left">Proxy-Uri</td>
              <td align="left">35</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-proxy-scheme</td>
              <td align="left">Proxy-Scheme</td>
              <td align="left">39</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-size1</td>
              <td align="left">Size1</td>
              <td align="left">60</td>
              <td align="left">
                <xref target="RFC7252"/></td>
            </tr>
            <tr>
              <td align="left">fid-coap-option-no-response</td>
              <td align="left">No-Response</td>
              <td align="left">258</td>
              <td align="left">
                <xref target="RFC7967"/></td>
            </tr>
          </tbody>
        </table>
        <figure anchor="fig-fid-coap-option-deprecated">
          <name>Example: Deprecating a Per-Option CoAP FID (fid-coap-option-uri-path)</name>
          <sourcecode type="yang"><![CDATA[
identity fid-coap-option-uri-path {
  base fid-coap-option;
  status deprecated;
  description
    "CoAP option Uri-Path. Deprecated in favor of Universal
     Options (space-id-coap / universal-value).";
  reference
    "RFC 7252 The Constrained Application Protocol (CoAP)";
}
]]></sourcecode>
        </figure>
      </section>
    </section>
    <section anchor="field-length-functions">
      <name>New field-length functions</name>
      <t>RFC 8824 <xref target="RFC8824"/> defines a specific length function for the
Token field: when this function is specified, the value of the
Token Length (TKL) is used to indicate the length of the field.
<xref target="I-D.ietf-schc-8824-update"/> extends this principle to the Partial IV field
for OSCORE.</t>
      <t>This approach is not scalable: a new function would have to be defined
for every new protocol field whose length needs to be carried this way.
This document instead introduces two new functions, "fl-length-bytes"
and "fl-length-bits". They both take an argument, carried in the new
Rule entry field "field-length-value", that points to the entry where
the length is specified, referenced by its "entry-index" (see
<xref target="fig-compression-rule-entry"/>). Having two separate functions, rather
than a single generic one, also conveys the unit of the length value:
bytes for "fl-length-bytes", bits for "fl-length-bits".</t>
      <ul spacing="normal">
        <li>
          <t>"fl-length-bytes" generalizes "fl-token-length": for example,
"fl-token-length" is now equivalent to "fl-length-bytes(index)",
where "index" is the "entry-index" of the CoAP TKL field.</t>
        </li>
        <li>
          <t>"fl-length-bits" is the bit-level equivalent of "fl-length-bytes".</t>
        </li>
      </ul>
      <t>This document also introduces "fl-remaining", for an entry that is
always the last one in the Rule, such as the "fid-payload" Field ID
of <xref target="I-D.ietf-schc-icmpv6-compression"/>.
Unlike "fl-variable", which prefixes its residue with an explicit
length, "fl-remaining" accepts a
field of any length but does not add that prefix when serializing
the residue: being the last entry, its residue already runs to the
end of the compression residue and needs no delimiter.</t>
    </section>
    <section anchor="syntactic-compression">
      <name>Syntactic compression</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>
      <t>Staying close to the wire format also affects processing performance. The compressor walks the options exactly as they appear in the message, so parsing and compression can be carried out in a single pass, without building an intermediate representation of the header and without looking up a mapping from option numbers to Field IDs. The same code path serves every option, known or not, which keeps the implementation small and its processing cost independent of the number of options the protocol defines. This gain has to be weighed against the compression efficiency examined below.</t>
      <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>
      <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, carried by three consecutive entries "n", "n+1" and "n+2" of the Rule, as shown in <xref target="fig-synt-not-sent"/>, where the Field Length of the CoAP.value entry is obtained from the entry "n+1" holding the option length, through the "fl-length-bytes" function:</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="176" width="552" viewBox="0 0 552 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,160" fill="none" stroke="black"/>
              <path d="M 56,32 L 56,160" fill="none" stroke="black"/>
              <path d="M 160,32 L 160,160" fill="none" stroke="black"/>
              <path d="M 264,32 L 264,160" fill="none" stroke="black"/>
              <path d="M 296,32 L 296,160" fill="none" stroke="black"/>
              <path d="M 336,32 L 336,160" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,160" fill="none" stroke="black"/>
              <path d="M 464,32 L 464,160" fill="none" stroke="black"/>
              <path d="M 544,32 L 544,160" fill="none" stroke="black"/>
              <path d="M 8,32 L 544,32" fill="none" stroke="black"/>
              <path d="M 8,62 L 544,62" fill="none" stroke="black"/>
              <path d="M 8,66 L 544,66" fill="none" stroke="black"/>
              <path d="M 8,160 L 544,160" fill="none" stroke="black"/>
              <g class="text">
                <text x="32" y="52">#</text>
                <text x="112" y="52">FID</text>
                <text x="212" y="52">FL</text>
                <text x="284" y="52">FP</text>
                <text x="316" y="52">DI</text>
                <text x="364" y="52">TV</text>
                <text x="436" y="52">MO</text>
                <text x="504" y="52">CDA</text>
                <text x="24" y="84">n</text>
                <text x="104" y="84">CoAP.option</text>
                <text x="180" y="84">16</text>
                <text x="280" y="84">1</text>
                <text x="316" y="84">up</text>
                <text x="368" y="84">delta</text>
                <text x="432" y="84">equal</text>
                <text x="508" y="84">not-sent</text>
                <text x="32" y="100">n+1</text>
                <text x="104" y="100">CoAP.length</text>
                <text x="180" y="100">16</text>
                <text x="280" y="100">1</text>
                <text x="316" y="100">up</text>
                <text x="352" y="100">-</text>
                <text x="428" y="100">ignore</text>
                <text x="492" y="100">value-</text>
                <text x="484" y="116">sent</text>
                <text x="32" y="132">n+2</text>
                <text x="100" y="132">CoAP.value</text>
                <text x="200" y="132">length-</text>
                <text x="280" y="132">1</text>
                <text x="316" y="132">up</text>
                <text x="352" y="132">-</text>
                <text x="428" y="132">ignore</text>
                <text x="492" y="132">value-</text>
                <text x="212" y="148">bytes(n+1)</text>
                <text x="484" y="148">sent</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
+-----+------------+------------+---+----+-------+-------+---------+
|  #  |     FID    |     FL     | FP| DI |  TV   |   MO  |   CDA   |
+=====+============+============+===+====+=======+=======+=========+
| n   |CoAP.option | 16         | 1 | up | delta | equal | not-sent|
| n+1 |CoAP.length | 16         | 1 | up | -     |ignore |value-   |
|     |            |            |   |    |       |       |sent     |
| n+2 |CoAP.value  | length-    | 1 | up | -     |ignore |value-   |
|     |            | bytes(n+1) |   |    |       |       |sent     |
+-----+------------+------------+---+----+-------+-------+---------+
]]></artwork>
        </artset>
      </figure>
      <t>In this representation:</t>
      <ul spacing="normal">
        <li>
          <t>'CoAP.option' the delta value as encoded in the CoAP message.</t>
        </li>
        <li>
          <t>"CoAP.length" represents the option length field.</t>
        </li>
        <li>
          <t>"CoAP.value" contains the actual option value, whose length is
given by the "CoAP.length" entry.</t>
        </li>
      </ul>
    </section>
    <section anchor="oscore-kudos-fids">
      <name>Fields of the OSCORE Option for OSCORE and KUDOS</name>
      <t>Universal Options allow any option to be compressed following the
SCHC principle, but compression can be more efficient when the
sub-fields of an option are taken into account individually. This is
why the module introduces specific fields of the OSCORE Option,
separately for OSCORE <xref target="RFC8613"/> and
KUDOS <xref target="I-D.ietf-core-oscore-key-update"/>: the OSCORE Option value is
split into sub-fields, each with its own identity
("fid-coap-option-oscore-piv", "fid-coap-option-oscore-kid",
"fid-coap-option-oscore-kidctx", "fid-coap-option-kudos-nonce",
etc.).</t>
      <t>Note that flag-related fields, such as the OSCORE flag bits for OSCORE
and the x byte for KUDOS, are also distinct and split so that its
length indicator becomes a specific field of its own:
"fid-coap-option-oscore-flags-flagbits"/"fid-coap-option-oscore-flags-n"
for OSCORE, and "fid-coap-option-kudos-x-flagbits"/
"fid-coap-option-kudos-x-m" for KUDOS. This will be exploited by the
new Field Length functions introduced in <xref target="field-length-functions"/>,
which can reference such a field, by its "entry-index", to determine
the length of another field (e.g. the Partial IV).</t>
      <t>KUDOS's "fid-coap-option-kudos-x-m" cannot be treated in the same
way as OSCORE's "fid-coap-option-oscore-flags-n" for this purpose.
The value "m" encodes the Nonce length in bytes minus one; equivalently,
the Nonce length is "m + 1". Since "fl-length-bytes" and
"fl-length-bits" directly use the value of the referenced entry as the
length, they cannot directly represent this relationship. KUDOS
therefore requires separate handling of this length transformation.</t>
      <t>"fid-coap-option" itself is kept "current": it is still used,
unchanged, as the base identity of these OSCORE-related and
KUDOS-related sub-field FIDs. Unlike the twenty per-option FIDs deprecated in the previous
subsection, they use "fid-coap-option" as a typing hierarchy for
parts of a single CoAP option (OSCORE), not as a stand-in for
an arbitrary CoAP option, and are therefore unaffected: they remain
"current".</t>
      <section anchor="oscore-field-length">
        <name>Field Length Functions</name>
        <t>This is what <xref target="oscore-kudos-fids"/> relies on: in the OSCORE Option
value, the flag-related fields for OSCORE and KUDOS are distinct and
split, so that its length indicator
("fid-coap-option-oscore-flags-n", "fid-coap-option-kudos-x-m") is
its own entry; "fl-length-bytes" or "fl-length-bits" can then use
that entry's "entry-index" to derive the length of the corresponding
Partial IV field. This works directly for OSCORE;
<xref target="oscore-kudos-fids"/> explains why the same does not hold for
KUDOS's Nonce.</t>
      </section>
      <section anchor="example-1-oscore-outer-header">
        <name>Example 1: OSCORE outer header</name>
        <t><xref target="fig-example-rule"/> shows an example SCHC Compression Rule (Rule ID
2, encoded on 5 bits, i.e. "00010") that compresses, in both
directions, the outer CoAP header of a CoAP/OSCORE message.</t>
        <t>The server is located on the Application side and the client on the
Device side. In OSCORE, the client's request carries an OSCORE
option with the security parameters, while the server's response
carries an empty OSCORE option; the Token links the response to its
request.</t>
        <t>The first column is new and not defined in RFC 8724 <xref target="RFC8724"/>: it
numbers the entries in the rule. The names in the other columns are
the ones defined in the YANG module, without their prefix ("fid-",
"fl-", "mo-", "cda-"), for better legibility.</t>
        <figure anchor="fig-example-rule">
          <name>Example Compression Rule for an Outer CoAP/OSCORE Header</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="560" viewBox="0 0 560 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,464" fill="none" stroke="black"/>
                <path d="M 48,32 L 48,464" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,464" fill="none" stroke="black"/>
                <path d="M 272,32 L 272,464" fill="none" stroke="black"/>
                <path d="M 312,32 L 312,464" fill="none" stroke="black"/>
                <path d="M 352,32 L 352,464" fill="none" stroke="black"/>
                <path d="M 392,32 L 392,464" fill="none" stroke="black"/>
                <path d="M 464,32 L 464,464" fill="none" stroke="black"/>
                <path d="M 552,32 L 552,464" fill="none" stroke="black"/>
                <path d="M 8,32 L 552,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 552,64" fill="none" stroke="black"/>
                <path d="M 8,464 L 552,464" fill="none" stroke="black"/>
                <g class="text">
                  <text x="24" y="52">#</text>
                  <text x="80" y="52">Field</text>
                  <text x="204" y="52">FL</text>
                  <text x="292" y="52">FP</text>
                  <text x="332" y="52">DI</text>
                  <text x="372" y="52">TV</text>
                  <text x="412" y="52">MO</text>
                  <text x="488" y="52">CDA</text>
                  <text x="24" y="84">0</text>
                  <text x="108" y="84">coap-version</text>
                  <text x="200" y="84">2</text>
                  <text x="288" y="84">1</text>
                  <text x="332" y="84">Bi</text>
                  <text x="372" y="84">01</text>
                  <text x="424" y="84">equal</text>
                  <text x="508" y="84">not-sent</text>
                  <text x="24" y="100">1</text>
                  <text x="96" y="100">coap-type</text>
                  <text x="200" y="100">2</text>
                  <text x="288" y="100">1</text>
                  <text x="332" y="100">Bi</text>
                  <text x="368" y="100">-</text>
                  <text x="428" y="100">ignore</text>
                  <text x="500" y="100">value-</text>
                  <text x="492" y="116">sent</text>
                  <text x="24" y="132">2</text>
                  <text x="92" y="132">coap-tkl</text>
                  <text x="200" y="132">4</text>
                  <text x="288" y="132">1</text>
                  <text x="332" y="132">Bi</text>
                  <text x="368" y="132">-</text>
                  <text x="428" y="132">ignore</text>
                  <text x="500" y="132">value-</text>
                  <text x="492" y="148">sent</text>
                  <text x="24" y="164">3</text>
                  <text x="96" y="164">coap-code</text>
                  <text x="200" y="164">8</text>
                  <text x="288" y="164">1</text>
                  <text x="332" y="164">Up</text>
                  <text x="372" y="164">02</text>
                  <text x="424" y="164">equal</text>
                  <text x="508" y="164">not-sent</text>
                  <text x="24" y="180">4</text>
                  <text x="96" y="180">coap-code</text>
                  <text x="200" y="180">8</text>
                  <text x="288" y="180">1</text>
                  <text x="332" y="180">Dw</text>
                  <text x="372" y="180">44</text>
                  <text x="424" y="180">equal</text>
                  <text x="508" y="180">not-sent</text>
                  <text x="24" y="196">5</text>
                  <text x="92" y="196">coap-mid</text>
                  <text x="204" y="196">16</text>
                  <text x="288" y="196">1</text>
                  <text x="332" y="196">Bi</text>
                  <text x="372" y="196">00</text>
                  <text x="428" y="196">ignore</text>
                  <text x="500" y="196">value-</text>
                  <text x="492" y="212">sent</text>
                  <text x="24" y="228">6</text>
                  <text x="100" y="228">coap-token</text>
                  <text x="224" y="228">length-</text>
                  <text x="288" y="228">1</text>
                  <text x="332" y="228">Bi</text>
                  <text x="368" y="228">-</text>
                  <text x="428" y="228">ignore</text>
                  <text x="500" y="228">value-</text>
                  <text x="228" y="244">bytes(2)</text>
                  <text x="492" y="244">sent</text>
                  <text x="24" y="260">7</text>
                  <text x="108" y="260">coap-option-</text>
                  <text x="200" y="260">5</text>
                  <text x="288" y="260">1</text>
                  <text x="332" y="260">Up</text>
                  <text x="372" y="260">01</text>
                  <text x="424" y="260">equal</text>
                  <text x="508" y="260">not-sent</text>
                  <text x="112" y="276">oscore-flags-</text>
                  <text x="92" y="292">flagbits</text>
                  <text x="24" y="308">8</text>
                  <text x="108" y="308">coap-option-</text>
                  <text x="200" y="308">3</text>
                  <text x="288" y="308">1</text>
                  <text x="332" y="308">Up</text>
                  <text x="372" y="308">01</text>
                  <text x="424" y="308">equal</text>
                  <text x="508" y="308">not-sent</text>
                  <text x="116" y="324">oscore-flags-n</text>
                  <text x="24" y="340">9</text>
                  <text x="108" y="340">coap-option-</text>
                  <text x="224" y="340">length-</text>
                  <text x="288" y="340">1</text>
                  <text x="332" y="340">Up</text>
                  <text x="368" y="340">-</text>
                  <text x="428" y="340">ignore</text>
                  <text x="500" y="340">value-</text>
                  <text x="100" y="356">oscore-piv</text>
                  <text x="228" y="356">bytes(8)</text>
                  <text x="492" y="356">sent</text>
                  <text x="28" y="372">10</text>
                  <text x="108" y="372">coap-option-</text>
                  <text x="200" y="372">0</text>
                  <text x="288" y="372">1</text>
                  <text x="332" y="372">Up</text>
                  <text x="368" y="372">-</text>
                  <text x="424" y="372">equal</text>
                  <text x="508" y="372">not-sent</text>
                  <text x="112" y="388">oscore-kidctx</text>
                  <text x="28" y="404">11</text>
                  <text x="108" y="404">coap-option-</text>
                  <text x="208" y="404">var</text>
                  <text x="288" y="404">1</text>
                  <text x="332" y="404">Up</text>
                  <text x="368" y="404">-</text>
                  <text x="428" y="404">ignore</text>
                  <text x="500" y="404">value-</text>
                  <text x="100" y="420">oscore-kid</text>
                  <text x="492" y="420">sent</text>
                  <text x="28" y="436">12</text>
                  <text x="96" y="436">space-id-</text>
                  <text x="200" y="436">0</text>
                  <text x="288" y="436">1</text>
                  <text x="332" y="436">Dw</text>
                  <text x="368" y="436">-</text>
                  <text x="424" y="436">equal</text>
                  <text x="508" y="436">not-sent</text>
                  <text x="88" y="452">coap(9)</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----+----------------+----------+----+----+----+--------+----------+
| #  | Field          | FL       | FP | DI | TV | MO     | CDA      |
+----+----------------+----------+----+----+----+--------+----------+
| 0  | coap-version   | 2        | 1  | Bi | 01 | equal  | not-sent |
| 1  | coap-type      | 2        | 1  | Bi | -  | ignore | value-   |
|    |                |          |    |    |    |        | sent     |
| 2  | coap-tkl       | 4        | 1  | Bi | -  | ignore | value-   |
|    |                |          |    |    |    |        | sent     |
| 3  | coap-code      | 8        | 1  | Up | 02 | equal  | not-sent |
| 4  | coap-code      | 8        | 1  | Dw | 44 | equal  | not-sent |
| 5  | coap-mid       | 16       | 1  | Bi | 00 | ignore | value-   |
|    |                |          |    |    |    |        | sent     |
| 6  | coap-token     | length-  | 1  | Bi | -  | ignore | value-   |
|    |                | bytes(2) |    |    |    |        | sent     |
| 7  | coap-option-   | 5        | 1  | Up | 01 | equal  | not-sent |
|    | oscore-flags-  |          |    |    |    |        |          |
|    | flagbits       |          |    |    |    |        |          |
| 8  | coap-option-   | 3        | 1  | Up | 01 | equal  | not-sent |
|    | oscore-flags-n |          |    |    |    |        |          |
| 9  | coap-option-   | length-  | 1  | Up | -  | ignore | value-   |
|    | oscore-piv     | bytes(8) |    |    |    |        | sent     |
| 10 | coap-option-   | 0        | 1  | Up | -  | equal  | not-sent |
|    | oscore-kidctx  |          |    |    |    |        |          |
| 11 | coap-option-   | var      | 1  | Up | -  | ignore | value-   |
|    | oscore-kid     |          |    |    |    |        | sent     |
| 12 | space-id-      | 0        | 1  | Dw | -  | equal  | not-sent |
|    | coap(9)        |          |    |    |    |        |          |
+----+----------------+----------+----+----+----+--------+----------+
]]></artwork>
          </artset>
        </figure>
        <t>This rule uses the new capabilities introduced above:</t>
        <ul spacing="normal">
          <li>
            <t>The Token field's length no longer uses the legacy
"fl-token-length" function; instead, "fl-length-bytes" is used,
with its parameter set to 2, referring to entry 2, "coap-tkl".</t>
          </li>
          <li>
            <t>The OSCORE option's content is split into sub-fields. Note that
the Flags field is itself split between "coap-option-oscore-flags-
flagbits" and "coap-option-oscore-flags-n", the latter carrying the
length of the Partial IV field.</t>
          </li>
          <li>
            <t>The Partial IV length is likewise given by "fl-length-bytes", this
time with its parameter set to 8, referring to entry 8,
"coap-option-oscore-flags-n".</t>
          </li>
          <li>
            <t>In the other direction, the OSCORE option is empty and is
compressed using a Universal Option, indicating option number 9.</t>
          </li>
        </ul>
        <t>TO BE DISCUSSED: the "h" flag is set to 0, meaning the KID Context
is normally absent; should entry 10, "coap-option-oscore-kidctx",
still appear in the rule in that case? When present, the KID
Context value is itself encoded as a length byte followed by the
context bytes. Should this document keep it as a single
"coap-option-oscore-kidctx" entry of variable length -- which would
send that length twice, once through SCHC's own variable-length
encoding and once through the length byte already embedded in the
OSCORE encoding -- or split it into two entries, a length indicator
and the context value, with the latter using "fl-length-bytes" to
point to the former?</t>
      </section>
    </section>
    <section anchor="variable-length-in-bits">
      <name>Variable Length in Bits</name>
      <t>"fl-variable-bits" generalizes RFC 8824's <xref target="RFC8824"/> "fl-variable"
to bit-level variable-length fields, the same way
<xref target="I-D.ietf-schc-8824-update"/>'s "var_bit" function does. RFC 8724
<xref target="RFC8724"/> requires the "MSB" matching operator's parameter to be a
multiple of 8 bits when applied to a byte-counted variable-length
field ("fl-variable"): the residue sent with the "LSB" action would
otherwise not be an integral number of bytes, and "fl-variable"'s
length prefix, itself byte-counted, could not express it.
"fl-variable-bits" removes that restriction by counting the
residue's length prefix in bits instead of bytes.</t>
      <t>The length prefix itself is encoded the same way as for
"fl-variable", following RFC 8724 <xref target="RFC8724"/>, Section 7.4.2: sizes
between 0 and 14 (in the unit defined by the FL -- bytes for
"fl-variable", bits for "fl-variable-bits") are encoded as a 4-bit
unsigned integer; sizes between 15 and 254 are encoded as 0b1111
followed by an 8-bit unsigned integer; larger sizes are encoded as
0xfff followed by a 16-bit unsigned integer. Only the counted unit
changes between the two functions, not the escape structure of the
length prefix.</t>
      <section anchor="example-non-byte-aligned-msb-residue">
        <name>Example, Non-Byte-Aligned MSB Residue</name>
        <t>The case "var_bit" and "fl-variable-bits" actually address is a
variable-length field, whose residue needs an explicit length
prefix. <xref target="I-D.ietf-schc-8824-update"/> itself has such an example, for
the OSCORE "kid" sub-field (entry "coap-option-oscore-kid" in
<xref target="fig-example-rule"/>, which instead sends it unmatched):
<xref target="fig-example-msb"/>. "msb(44)" matches the KID's most significant 44
bits against the 6-byte (48-bit) target value; only the remaining 4
bits  are sent with "lsb". "var_bit" (this
document's "fl-variable-bits") carries that 4-bit length in its
residue length prefix; RFC 8824's byte-counted "fl-variable" could
not.</t>
        <figure anchor="fig-example-msb">
          <name>Non-Byte-Aligned MSB Residue on a Variable-Length Field (adapted from I-D.ietf-schc-8824-update)</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="544" viewBox="0 0 544 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 144,32 L 144,112" fill="none" stroke="black"/>
                <path d="M 240,32 L 240,112" fill="none" stroke="black"/>
                <path d="M 280,32 L 280,112" fill="none" stroke="black"/>
                <path d="M 320,32 L 320,112" fill="none" stroke="black"/>
                <path d="M 408,32 L 408,112" fill="none" stroke="black"/>
                <path d="M 488,32 L 488,112" fill="none" stroke="black"/>
                <path d="M 536,32 L 536,112" fill="none" stroke="black"/>
                <path d="M 8,32 L 536,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 536,64" fill="none" stroke="black"/>
                <path d="M 8,112 L 536,112" fill="none" stroke="black"/>
                <g class="text">
                  <text x="40" y="52">Field</text>
                  <text x="164" y="52">FL</text>
                  <text x="260" y="52">FP</text>
                  <text x="300" y="52">DI</text>
                  <text x="340" y="52">TV</text>
                  <text x="428" y="52">MO</text>
                  <text x="512" y="52">CDA</text>
                  <text x="68" y="84">coap-option-</text>
                  <text x="192" y="84">variable-</text>
                  <text x="256" y="84">1</text>
                  <text x="300" y="84">Up</text>
                  <text x="364" y="84">0x636c69</text>
                  <text x="448" y="84">msb(44)</text>
                  <text x="512" y="84">lsb</text>
                  <text x="60" y="100">oscore-kid</text>
                  <text x="172" y="100">bits</text>
                  <text x="356" y="100">656e70</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----------------+-----------+----+----+----------+---------+-----+
| Field          | FL        | FP | DI | TV       | MO      | CDA |
+----------------+-----------+----+----+----------+---------+-----+
| coap-option-   | variable- | 1  | Up | 0x636c69 | msb(44) | lsb |
| oscore-kid     | bits      |    |    | 656e70   |         |     |
+----------------+-----------+----+----+----------+---------+-----+
]]></artwork>
          </artset>
        </figure>
      </section>
    </section>
    <section anchor="conclusion">
      <name>Conclusion</name>
      <t>This document proposes the following changes to the SCHC YANG data
model.</t>
      <t>The compression Rule entry structure of <xref target="RFC9363"/>, keyed by the
tuple (Field ID, Direction Indicator, position), is deprecated in
favor of a more flexible one. An entry is now keyed by a single
"entry-index", the list of entries is "ordered-by user", and a Field
ID can be replaced by a Universal Option, i.e. the pair (Space ID,
option number). Any option of a protocol can therefore be described
in a Rule without allocating a Field ID for it, which also makes the
twenty per-option CoAP Field IDs of <xref target="RFC9363"/> unnecessary: they are
deprecated in turn, and the pair that replaces each of them is given
in <xref target="tbl-coap-option-fids"/>. The OSCORE and KUDOS suboption Field IDs,
on the other hand, remain current: they describe the parts of a single
option rather than stand for an arbitrary one.</t>
      <t>An alternative, closer to the wire format, is defined in the
"ietf-schc-coap-syntactic" module (<xref target="syntactic-model"/>). It
decomposes an option into the three fields CoAP carries on the wire
(option delta, option length and option value) which keeps the
processing cost independent of the number of options a protocol
defines, at the price of three entries per option.</t>
      <t>Three new Field Length functions support these structures
(<xref target="field-length-functions"/>):</t>
      <ul spacing="normal">
        <li>
          <t>"fl-length-bytes", which takes the "entry-index" of the entry
carrying the length, expressed in bytes, and generalizes
"fl-token-length";</t>
        </li>
        <li>
          <t>"fl-length-bits", its bit-level equivalent;</t>
        </li>
        <li>
          <t>"fl-remaining", for the last entry of a Rule, whose residue runs
to the end of the compression residue and therefore needs no
explicit length prefix.</t>
        </li>
      </ul>
      <t>The full YANG module, with all the identities, leaves and lists
discussed here, is specified in <xref target="I-D.toutain-schc-rfc9363bis"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document does not change the SCHC security model: the security
considerations of <xref target="RFC8724"/> and <xref target="RFC9363"/> apply unchanged, and a
SCHC Context remains security sensitive, since the decompressor
rebuilds a header from it.</t>
      <t>Universal Options, and more so the syntactic representation, let a
Rule describe an option the implementation does not know, and
therefore elide and rebuild it on the sole basis of the Rule. This is
a reason to authenticate the source of a Rule modification, rather
than a new weakness of the compression scheme.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7252">
          <front>
            <title>The Constrained Application Protocol (CoAP)</title>
            <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2014"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
              <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7252"/>
          <seriesInfo name="DOI" value="10.17487/RFC7252"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="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="RFC8613">
          <front>
            <title>Object Security for Constrained RESTful Environments (OSCORE)</title>
            <author fullname="G. Selander" initials="G." surname="Selander"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="F. Palombini" initials="F." surname="Palombini"/>
            <author fullname="L. Seitz" initials="L." surname="Seitz"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE). OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t>
              <t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration. Therefore, this document updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8613"/>
          <seriesInfo name="DOI" value="10.17487/RFC8613"/>
        </reference>
        <reference anchor="I-D.ietf-core-oscore-key-update">
          <front>
            <title>Key Update for OSCORE (KUDOS)</title>
            <author fullname="Rikard Höglund" initials="R." surname="Höglund">
              <organization>RISE AB</organization>
            </author>
            <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
              <organization>RISE AB</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   Communications with the Constrained Application Protocol (CoAP) can
   be protected end-to-end at the application-layer by using the
   security protocol Object Security for Constrained RESTful
   Environments (OSCORE).  Under some circumstances, two CoAP endpoints
   need to update their OSCORE keying material before communications can
   securely continue, e.g., due to approaching key usage limits.  This
   document defines Key Update for OSCORE (KUDOS), a lightweight key
   update procedure that two CoAP endpoints can use to update their
   OSCORE keying material by establishing a new OSCORE Security Context.
   Accordingly, this document updates the use of the OSCORE flag bits in
   the CoAP OSCORE Option as well as the protection of CoAP response
   messages with OSCORE.  Also, it deprecates the key update procedure
   specified in Appendix B.2 of RFC 8613.  Therefore, this document
   updates RFC 8613.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-oscore-key-update-14"/>
        </reference>
        <reference anchor="I-D.ietf-schc-icmpv6-compression">
          <front>
            <title>Static Context Header Compression (SCHC) for the Internet Control Message Protocol (ICMPv6)</title>
            <author fullname="Dominique Barthel" initials="D." surname="Barthel">
         </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>IMT Atlantique</organization>
            </author>
            <date day="13" month="June" year="2025"/>
            <abstract>
              <t>   This document describes how the ICMPv6 protocol can be integrated
   into the SCHC architecture.  It extends the YANG Data Model with new
   field IDs specific to ICMPv6 headers.

   To enhance the compression of ICMPv6 error messages, the document
   also introduces two new Matching Operators and two new Compression
   Decompression Actions to manipulate the ICMPv6 payload.

   Finally, for constrained networks such as LPWAN, it introduces a
   proxy behavior, where a SCHC Core end-point may anticipate the device
   reaction to incorrect messages.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-icmpv6-compression-02"/>
        </reference>
        <reference anchor="I-D.toutain-schc-rfc9363bis">
          <front>
            <title>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC7641">
          <front>
            <title>Observing Resources in the Constrained Application Protocol (CoAP)</title>
            <author fullname="K. Hartke" initials="K." surname="Hartke"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful application protocol for constrained nodes and networks. The state of a resource on a CoAP server can change over time. This document specifies a simple protocol extension for CoAP that enables CoAP clients to "observe" resources, i.e., to retrieve a representation of a resource and keep this representation updated by the server over a period of time. The protocol follows a best-effort approach for sending new representations to clients and provides eventual consistency between the state observed by each client and the actual resource state at the server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7641"/>
          <seriesInfo name="DOI" value="10.17487/RFC7641"/>
        </reference>
        <reference anchor="RFC7959">
          <front>
            <title>Block-Wise Transfers in the Constrained Application Protocol (CoAP)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="Z. Shelby" initials="Z." role="editor" surname="Shelby"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>The Constrained Application Protocol (CoAP) is a RESTful transfer protocol for constrained nodes and networks. Basic CoAP messages work well for small payloads from sensors and actuators; however, applications will need to transfer larger payloads occasionally -- for instance, for firmware updates. In contrast to HTTP, where TCP does the grunt work of segmenting and resequencing, CoAP is based on datagram transports such as UDP or Datagram Transport Layer Security (DTLS). These transports only offer fragmentation, which is even more problematic in constrained nodes and networks, limiting the maximum size of resource representations that can practically be transferred.</t>
              <t>Instead of relying on IP fragmentation, this specification extends basic CoAP with a pair of "Block" options for transferring multiple blocks of information from a resource representation in multiple request-response pairs. In many important cases, the Block options enable a server to be truly stateless: the server can handle each block transfer separately, with no need for a connection setup or other server-side memory of previous block transfers. Essentially, the Block options provide a minimal way to transfer larger representations in a block-wise fashion.</t>
              <t>A CoAP implementation that does not support these options generally is limited in the size of the representations that can be exchanged, so there is an expectation that the Block options will be widely used in CoAP implementations. Therefore, this specification updates RFC 7252.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7959"/>
          <seriesInfo name="DOI" value="10.17487/RFC7959"/>
        </reference>
        <reference anchor="RFC7967">
          <front>
            <title>Constrained Application Protocol (CoAP) Option for No Server Response</title>
            <author fullname="A. Bhattacharyya" initials="A." surname="Bhattacharyya"/>
            <author fullname="S. Bandyopadhyay" initials="S." surname="Bandyopadhyay"/>
            <author fullname="A. Pal" initials="A." surname="Pal"/>
            <author fullname="T. Bose" initials="T." surname="Bose"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>There can be machine-to-machine (M2M) scenarios where server responses to client requests are redundant. This kind of open-loop exchange (with no response path from the server to the client) may be desired to minimize resource consumption in constrained systems while updating many resources simultaneously or performing high-frequency updates. CoAP already provides Non-confirmable (NON) messages that are not acknowledged by the recipient. However, the request/response semantics still require the server to respond with a status code indicating "the result of the attempt to understand and satisfy the request", per RFC 7252.</t>
              <t>This specification introduces a CoAP option called 'No-Response'. Using this option, the client can explicitly express to the server its disinterest in all responses against the particular request. This option also provides granular control to enable expression of disinterest to a particular response class or a combination of response classes. The server MAY decide to suppress the response by not transmitting it back to the client according to the value of the No-Response option in the request. This option may be effective for both unicast and multicast requests. This document also discusses a few examples of applications that benefit from this option.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7967"/>
          <seriesInfo name="DOI" value="10.17487/RFC7967"/>
        </reference>
        <reference anchor="RFC8407">
          <front>
            <title>Guidelines for Authors and Reviewers of Documents Containing YANG Data Models</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This memo provides guidelines for authors and reviewers of specifications containing YANG modules. Recommendations and procedures are defined, which are intended to increase interoperability and usability of Network Configuration Protocol (NETCONF) and RESTCONF protocol implementations that utilize YANG modules. This document obsoletes RFC 6087.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8407"/>
          <seriesInfo name="DOI" value="10.17487/RFC8407"/>
        </reference>
        <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="Iván Martínez" initials="I." surname="Martínez">
              <organization>IRISA</organization>
            </author>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <date day="26" month="July" year="2026"/>
            <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, and it 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 and UDP headers,
   this document applies SCHC to CoAP headers.  The CoAP header
   structure differs from that of IPv6 and UDP headers, since CoAP uses
   a flexible header with a variable number of options that are in turn
   of variable length.  The CoAP message format is asymmetric, i.e.,
   request messages have a header format different from that of response
   messages.  This specification gives guidance on applying SCHC to
   flexible headers and on leveraging the message format asymmetry for
   defining more efficient compression Rules.  This document replaces
   and obsoletes RFC 8824.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-8824-update-10"/>
        </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 773?>

<section anchor="syntactic-model">
      <name>YANG Data Model for Syntactic Compression</name>
      <t>This appendix defines the work in progress YANG Data Model for the
syntactic approach of <xref target="fig-synt-not-sent"/>, adding the three Field
IDs an option is decomposed into.</t>
      <sourcecode type="yang" name="ietf-schc-coap-syntactic@2025-03-21.yang" markers="true"><![CDATA[
<CODE BEGINS> file "ietf-schc-coap-syntactic@2025-03-21.yang"
module ietf-schc-coap-syntactic {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-schc-coap-syntactic";
  prefix schc-coap-syntactic;

  import ietf-schc {
      prefix ietf-schc;
  }

  organization
    "IETF Static Context Header Compression (schc) Working Group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/schc/about/>
     WG List:  <mailto:schc@ietf.org>
     Editor:   Laurent Toutain
       <mailto:laurent.toutain@imt-atlantique.fr>
     Editor:   Quentin Lampin
       <mailto:quentin.lampin@orange.com>";
  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 2025-03-21 {
    description
      "Initial version for RFC YYYY ";
    reference
      "RFC YYYY: OAM";
  }

  identity fid-coap-delta-types {
       base ietf-schc:fid-coap-base-type;
       description
         "test for new options";
       reference
         "RFC 7252 The Constrained Application Protocol (CoAP)";
     }

  identity fid-coap-length {
       base ietf-schc:fid-coap-base-type;
       description
         "test for new options";
       reference
         "RFC 7252 The Constrained Application Protocol (CoAP)";
     }

   identity fid-coap-value {
       base ietf-schc:fid-coap-base-type;
       description
         "test for new options";
       reference
         "RFC 7252 The Constrained Application Protocol (CoAP)";
     }
}
<CODE ENDS>
]]></sourcecode>
    </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>
      <t>The authors also thank Claude (Anthropic) for rewriting parts of
this document in more correct English and for checking its
consistency.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
pI6zGXllOp1ymmRC0Umm9k0ChQyqk0V4wsVoSeOkMo4TZS9BB/R0hqGY63xS
hb4RtFCge757TihbGMsOwQVeN9qk3rSrvJU4daYdMBWdula4UF6h7aCtMqEg
jZoeieevyZ1UIQzpS1w1z7doKOdoAEqNOuTUZKNQOeMuaeZk2SPbMmFusM0b
VLmmeYpt1L6u3URx8vcZOFgEN19XvkEbOQYtgVTaUI02xoCmKo/7LK4J77zp
lJQKQGZSKzWNuyVG+4k9QoXtNgAj8RX8Le+htjxNlqTotu2yQ2twahs+yV5s
/dSkXzmTJPc7FTUFFuBsfSbsTPTUrEIZVxpaX+mWMYAOtqztSHumI5zS+KZO
4xw9a834N/aqGg868H1S2AAUsm8zdOUg/eOtTRGQhei/eA7FXdTcD2ktsiwd
BLaVHRsPkjPbGgsUeb3g7ZLBiM6wCXkkEzKnghaJxgWYRmiOcSYuoLoUwjYk
/NTIeKcevIByLghexkaMAMsWtAGTHHQKNL4hkWfsQ8ADrhRk9GyCzbN4jUV+
wjnWl1VKqAxyDODfDNcM51WgMU3zOlEYcjcwX+E+oxSPEPJhNlQXGZrOFujK
9wxduEKSgLLK95iZXhPpkM2B3NVA1PMQHCRVpYlGN+TYqSyhJbl0ECc0RHP1
hdk33wAtFIEQ1Bjq1VWaLhlNDFuZ3CDgdFcPbD6Xc8Cg7PCneOZBE9YASxqX
1wCwU2eo1/dyWOu27/DrGPw2M9iI4G3sCyS/B7jbhp61EqaXEPkMfYKBZNlh
9SU/ZdkZr6EtBgGdz4B+e9uKrKdKVyJKE0NtgYkW7TjwclWxS64/85VxafbC
C/s4KyWg6D0qLhljjhqD9PAxA+ZTQ0v89uPR++1BwwQNfL+cZERc/HgIFgjp
TCI5tnDAkD7mH0hBr0uQ6JLFOJuvAFMEuBYXxeSg3VH1Nz8prAbOZM5GjuiQ
mfVJHmNrQc+zB8MketsDofwsQhJoG7jhgZf08PGNcTBxT0IaHRr7gztaxCjG
Bkvge6k5PIbt0JoAJnb7yMYQkmbxCXk7bNGDbXMcdYyWsXuwBMD8SU6rt5ED
Y5yhnqwjyJj4AgfLmmxe9ki6kB2r5TXOlc8GDLsTjRHtRBhbg06HgfismlSb
rDyMTMiGSbtOWbrRNjhpd5cNcvgGiESgGbRfebYtMMrL8kqRl8yzGhM0Y1Qc
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
AAA=

-->

</rfc>
