<?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-toutain-schc-coreconf-management-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <?v3xml2rfc silence="Found SVG with width or height specified"?>
  <front>
    <title abbrev="SCHC for CoAP">CORECONF Rule management for SCHC</title>
    <seriesInfo name="Internet-Draft" value="draft-toutain-schc-coreconf-management-02"/>
    <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="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="J. A." surname="Fernandez" fullname="Javier A. Fernandez">
      <organization>IMT Atlantique</organization>
      <address>
        <postal>
          <street>CS 17607, 2 rue de la Chataigneraie</street>
          <city>Cesson-Sevigne Cedex</city>
          <code>35510</code>
          <country>France</country>
        </postal>
        <email>javier-alejandro.fernandez@imt-atlantique.fr</email>
      </address>
    </author>
    <author initials="M." surname="Dumay" fullname="Marion Dumay">
      <organization>Orange</organization>
      <address>
        <email>marion.dumay@orange.com</email>
      </address>
    </author>
    <author initials="S." surname="Sirohi" fullname="Samar Sirohi">
      <organization>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="30"/>
    <area>Internet</area>
    <workgroup>SCHC Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 78?>

<t>This document describes how CORECONF can be applied to SCHC for context and rule
set management between endpoints. It also defines a YANG module with an RPC to
duplicate an existing Rule and apply some modifications, and an RPC to reset the
Set of Rules to its initial content.</t>
    </abstract>
  </front>
  <middle>
    <?line 86?>

<section anchor="intro">
      <name>Introduction</name>
      <t><xref target="RFC8724"/> defines three types of Rules (compression, fragmentation and
no-compression) that form a Static Context, also called Set of Rules (SoR). The
Context is called static because the Rules are not modified when a packet is
compressed, decompressed, fragmented or reassembled.</t>
      <t>This document adds a fourth type of Rules, called management rules, which have
the power to add or delete Rules in the SoR. The nature of these Rules is
defined in the SCHC YANG Data Model of <xref target="I-D.toutain-schc-rfc9363bis"/> (module
revision 2026-10-27).</t>
      <t>This document focuses on the usage of the CoAP Management Interface (CORECONF)
to manage the SoR of a SCHC instance. CORECONF relies on <xref target="RFC9254"/>, which
defines how data modeled in YANG are serialized in CBOR, and on
<xref target="I-D.ietf-core-comi"/>, which defines the CoAP interface. The document also
specifies the compression Rules dedicated to the management traffic itself. They
make control and configuration exchanges more efficient and are distinct from
the compression applied to regular application data. Finally, it defines the
"ietf-schc-mgmt-basic" YANG module (<xref target="sec-yang-module"/>), which provides an RPC
to derive a Rule from an existing one and an RPC to reset the Set of Rules.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This document uses the following terms from <xref target="RFC8724"/>:</t>
      <dl>
        <dt>C/D:</dt>
        <dd>
          <t>SCHC Compressor/Decompressor, or SCHC Compression/Decompression.</t>
        </dd>
        <dt>F/R:</dt>
        <dd>
          <t>SCHC Fragmenter/Reassembler, or SCHC Fragmentation/Reassembly.</t>
        </dd>
      </dl>
      <t>It also uses the following terms, in addition to those defined in
<xref target="RFC8724"/>:</t>
      <dl>
        <dt>Deduplication:</dt>
        <dd>
          <t>The detection, by the recipient of a CoAP message, that this message is a copy
of one it has already received, identified by its Message ID and its source
endpoint within EXCHANGE_LIFETIME (<xref target="RFC7252"/>, Section 4.5). The copy is
answered with the same response, and the request it carries is not processed
again. The deduplication state is the information a node keeps for that
purpose: the Message IDs it has received and the responses it has sent.</t>
        </dd>
        <dt>Overlapping rule IDs:</dt>
        <dd>
          <t>Two different rule IDs overlap when one of them is a prefix of the other
(e.g. 110 and 110001): a SCHC packet built with the longer rule ID also
starts with the bits of the shorter one, so the two could not be parsed
without ambiguity. A new rule ID MUST NOT equal, or overlap, the rule ID
of an existing <tt>origin</tt>, <tt>valid</tt>, <tt>candidate</tt>, or <tt>invalid</tt> rule.</t>
        </dd>
      </dl>
    </section>
    <section anchor="applicability-statement">
      <name>Applicability statement</name>
      <section anchor="architecture">
        <name>Architecture</name>
        <t>SCHC instance management allows the two endpoints to modify the common SoR, by:</t>
        <ul spacing="normal">
          <li>
            <t>Adding a new rule.</t>
          </li>
          <li>
            <t>Removing an existing rule.</t>
          </li>
          <li>
            <t>Triggering Remote Procedural Calls (RPC) within the endpoints.</t>
          </li>
        </ul>
        <t>Because of propagation delays and of the possible loss of management messages,
both endpoints could temporarily hold different versions of a rule with the same
RuleID. Therefore, an existing rule MUST NOT be modified. To change a rule, a
new rule, with another RuleID, MUST be created, and the old one MAY then be
deleted, unless it is an <tt>origin</tt> rule (see <xref target="sec-rule-status"/>).</t>
        <t>A new type of traffic is defined called management traffic, which deals
exclusively with message exchanges concerning context and rule management.</t>
        <t>The rule management uses the CORECONF network management interface
<xref target="I-D.ietf-core-comi"/>, which is based on CoAP. In this context, management
traffic refers to the CORECONF messages exchanged between the endpoints to
configure or modify rule sets. The management traffic is transported as
SCHC-compressed packets, tagged with specific Rule IDs. These rules are the
management rules (M in Figure <xref target="Fig-SCHCManagement"/>). Management rules can be
either Compression Rules or No-Compression Rules. Only management rules are
permitted to modify the SoR.</t>
        <t>The management traffic uses its own IPv6 stack, distinct from regular
application traffic. See Section <xref target="sec-protocols"/> for more details.</t>
        <t>SCHC Packets using management rules MUST be encrypted either by the underlying
layer (for instance in a QUIC stream dedicated to management inside a QUIC
connection) or directly using OSCORE or DTLS.</t>
        <figure anchor="Fig-SCHCManagement">
          <name>Inband Management</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="520" viewBox="0 0 520 224" 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 8,192 L 8,208" fill="none" stroke="black"/>
                <path d="M 152,32 L 152,144" fill="none" stroke="black"/>
                <path d="M 296,32 L 296,144" fill="none" stroke="black"/>
                <path d="M 328,160 L 328,192" fill="none" stroke="black"/>
                <path d="M 360,160 L 360,192" fill="none" stroke="black"/>
                <path d="M 440,32 L 440,144" fill="none" stroke="black"/>
                <path d="M 440,192 L 440,208" fill="none" stroke="black"/>
                <path d="M 8,32 L 152,32" fill="none" stroke="black"/>
                <path d="M 296,32 L 440,32" fill="none" stroke="black"/>
                <path d="M 8,144 L 56,144" fill="none" stroke="black"/>
                <path d="M 120,144 L 192,144" fill="none" stroke="black"/>
                <path d="M 256,144 L 344,144" fill="none" stroke="black"/>
                <path d="M 408,144 L 440,144" fill="none" stroke="black"/>
                <path d="M 328,160 L 360,160" fill="none" stroke="black"/>
                <path d="M 208,176 L 320,176" fill="none" stroke="black"/>
                <path d="M 328,192 L 360,192" fill="none" stroke="black"/>
                <path d="M 116,72 L 140,72" fill="none" stroke="black"/>
                <path d="M 404,72 L 428,72" fill="none" stroke="black"/>
                <path d="M 116,104 L 140,104" fill="none" stroke="black"/>
                <path d="M 404,104 L 428,104" fill="none" stroke="black"/>
                <path d="M 396,168 L 420,168" fill="none" stroke="black"/>
                <path d="M 396,200 L 420,200" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="328,176 316,170.4 316,181.6" fill="black" transform="rotate(0,320,176)"/>
                <g class="text">
                  <text x="72" y="52">^</text>
                  <text x="360" y="52">^</text>
                  <text x="40" y="68">C/D</text>
                  <text x="76" y="68">!M</text>
                  <text x="364" y="68">!M</text>
                  <text x="108" y="84">+-[]&gt;[SoR]</text>
                  <text x="224" y="84">...</text>
                  <text x="396" y="84">+-[]&gt;[SoR]</text>
                  <text x="72" y="100">!</text>
                  <text x="112" y="100">[</text>
                  <text x="144" y="100">]</text>
                  <text x="360" y="100">!</text>
                  <text x="400" y="100">[</text>
                  <text x="432" y="100">]</text>
                  <text x="72" y="116">!</text>
                  <text x="360" y="116">!</text>
                  <text x="72" y="132">F/R</text>
                  <text x="360" y="132">F/R</text>
                  <text x="88" y="148">ins_id1</text>
                  <text x="224" y="148">ins_idi</text>
                  <text x="376" y="148">ins_idn</text>
                  <text x="8" y="164">.</text>
                  <text x="176" y="164">C/D</text>
                  <text x="208" y="164">!</text>
                  <text x="248" y="164">M</text>
                  <text x="440" y="164">.</text>
                  <text x="8" y="180">.</text>
                  <text x="344" y="180">Mng</text>
                  <text x="396" y="180">&lt;=&gt;[SoR]</text>
                  <text x="440" y="180">.</text>
                  <text x="208" y="196">F/R</text>
                  <text x="392" y="196">[</text>
                  <text x="424" y="196">]</text>
                  <text x="84" y="212">..................</text>
                  <text x="216" y="212">Discriminator</text>
                  <text x="356" y="212">....................</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+-----------------+                 +-----------------+
|       ^         |                 |       ^         |
|  C/D  !M    ___ |                 |       !M    ___ |
|       +-[]>[SoR]|       ...       |       +-[]>[SoR]|
|       !    [___]|                 |       !    [___]|
|       !         |                 |       !         |
|      F/R        |                 |      F/R        |
+------ins_id1----+-----ins_idi-----+------ins_idn----+         
.                   C/D  !    M         +---+    ___  .
.                        +------------->|Mng|<=>[SoR] .    
.                       F/R             +---+   [___] .
+.................. Discriminator ....................+
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="sec-coap-profile">
        <name>CoAP Profile</name>
        <t>Management requests MUST be protected against packet loss. It is RECOMMENDED to
use CONfirmable requests and no Token. If the management request is too large
regarding the MTU, SCHC Fragmentation SHOULD be used instead of the Block
option. As shown in <xref target="Fig-SCHCManagement"/> fragmentation can be common to
Management rules and other rules.</t>
      </section>
    </section>
    <section anchor="sec-rule-status">
      <name>Rule status</name>
      <t>In <xref target="RFC8724"/> and its associated Data Model in <xref target="RFC9363"/>, rules are
established when the SCHC instance is configured and are not modified
afterwards. These rules form the initial SoR. With management, rules can be
created and deleted while the instance is running. A new state is therefore
introduced for the rules, the "rule-status". It is used for the creation and the
deletion of rules, to preserve the atomicity of the SoR: both ends move together
from one version of the SoR to the next, and a rule is never used by one end
while the other end does not have it. The status is local to each node: each
node sets the status of its rules according to its own protocol state, so that
both nodes can have different statuses for the same rule during a creation or a
deletion.</t>
      <t>A rule can have several statuses (the state machine is summarized in
<xref target="sec-fsm"/>):</t>
      <ul spacing="normal">
        <li>
          <t><tt>origin</tt>: the rule belongs to the initial SoR, provisioned before the start
of the SCHC instance, including the management rules. It is used for C/D
and F/R as a <tt>valid</tt> rule, and behaves as a <tt>valid</tt> rule in the procedures
below, except that it cannot be modified or deleted: a deletion whose
target is an <tt>origin</tt> rule is refused with 4.03 Forbidden. It can be
duplicated (see <xref target="sec-duplicate-rule-rpc"/>), except the management rules.
The <tt>origin</tt> status is only set by provisioning, never by management, and
the <tt>origin</tt> rules are the only ones kept when the SoR is reset (see
<xref target="sec-reset-rpc"/>). Since they never change, they are always identical on
both ends.</t>
        </li>
        <li>
          <t><tt>valid</tt>: the rule belongs to the SoR and can be selected for compression or
fragmentation, and the SCHC PDUs carrying its rule ID are decompressed or
reassembled with it.</t>
        </li>
        <li>
          <t><tt>candidate</tt>: the rule has been created, but the other end has not validated it
yet. A SCHC PDU MUST NOT be generated with a <tt>candidate</tt> rule, neither for C/D
nor for F/R. A <tt>candidate</tt> rule becomes <tt>valid</tt> either if the management
message is positively acknowledged or the initiator receives a SCHC PDU with
the newly created rule ID (the acknowledgment has been lost). This PDU is
accepted and decoded as for a <tt>valid</tt> rule, since only an end that has
validated the rule can have generated it.</t>
        </li>
        <li>
          <t><tt>invalid</tt>: the rule has been deleted and the Guard period is running. The rule
cannot be used, a rule with the same ID cannot be created, and the SCHC PDUs
carrying its rule ID are dropped. The Guard period of the end that deletes the
rule starts when it receives the acknowledgement; the Guard period of the
other end starts when it receives the deletion. When the Guard period is over,
the rule ID becomes <tt>free</tt>.</t>
        </li>
        <li>
          <t><tt>free</tt>: the rule ID can be used to create a new rule. When the Guard period of
a deleted rule is over, the rule is either marked <tt>free</tt> in the SoR, or
removed from the SoR. A rule ID absent from the SoR is also <tt>free</tt>. A new rule
ID MUST NOT be equal to, a prefix of, or prefixed by the rule ID of an
<tt>origin</tt>, <tt>valid</tt>, <tt>candidate</tt> or <tt>invalid</tt> rule, since the SCHC packets could
not be parsed without ambiguity.</t>
        </li>
      </ul>
      <figure anchor="Fig-Rule-del">
        <name>Deleting and re-creating a rule</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="456" viewBox="0 0 456 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 88,120 L 88,184" fill="none" stroke="black"/>
              <path d="M 104,48 L 104,208" fill="none" stroke="black"/>
              <path d="M 104,256 L 104,320" fill="none" stroke="black"/>
              <path d="M 336,48 L 336,208" fill="none" stroke="black"/>
              <path d="M 336,256 L 336,320" fill="none" stroke="black"/>
              <path d="M 352,104 L 352,184" fill="none" stroke="black"/>
              <path d="M 240,64 L 328,64" fill="none" stroke="black"/>
              <path d="M 112,78 L 216,78" fill="none" stroke="black"/>
              <path d="M 112,82 L 216,82" fill="none" stroke="black"/>
              <path d="M 232,78 L 328,78" fill="none" stroke="black"/>
              <path d="M 232,82 L 328,82" fill="none" stroke="black"/>
              <path d="M 112,94 L 208,94" fill="none" stroke="black"/>
              <path d="M 112,98 L 208,98" fill="none" stroke="black"/>
              <path d="M 224,94 L 328,94" fill="none" stroke="black"/>
              <path d="M 224,98 L 328,98" fill="none" stroke="black"/>
              <path d="M 344,96 L 360,96" fill="none" stroke="black"/>
              <path d="M 80,112 L 96,112" fill="none" stroke="black"/>
              <path d="M 120,158 L 176,158" fill="none" stroke="black"/>
              <path d="M 120,162 L 176,162" fill="none" stroke="black"/>
              <path d="M 80,192 L 96,192" fill="none" stroke="black"/>
              <path d="M 344,192 L 360,192" fill="none" stroke="black"/>
              <path d="M 112,270 L 328,270" fill="none" stroke="black"/>
              <path d="M 112,274 L 328,274" fill="none" stroke="black"/>
              <path d="M 112,302 L 328,302" fill="none" stroke="black"/>
              <path d="M 112,306 L 328,306" fill="none" stroke="black"/>
              <path d="M 184,160 L 232,64" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="360,184 348,178.4 348,189.6" fill="black" transform="rotate(90,352,184)"/>
              <polygon class="arrowhead" points="336,272 324,266.4 324,277.6" fill="black" transform="rotate(0,328,272)"/>
              <polygon class="arrowhead" points="336,80 324,74.4 324,85.6" fill="black" transform="rotate(0,328,80)"/>
              <polygon class="arrowhead" points="120,304 108,298.4 108,309.6" fill="black" transform="rotate(180,112,304)"/>
              <polygon class="arrowhead" points="120,96 108,90.4 108,101.6" fill="black" transform="rotate(180,112,96)"/>
              <polygon class="arrowhead" points="96,184 84,178.4 84,189.6" fill="black" transform="rotate(90,88,184)"/>
              <g class="text">
                <text x="104" y="36">A</text>
                <text x="336" y="36">B</text>
                <text x="8" y="52">X</text>
                <text x="40" y="52">valid</text>
                <text x="352" y="52">X</text>
                <text x="384" y="52">valid</text>
                <text x="148" y="68">delete</text>
                <text x="372" y="68">SCHC</text>
                <text x="408" y="68">PDU</text>
                <text x="440" y="68">(X)</text>
                <text x="8" y="84">X</text>
                <text x="48" y="84">invalid</text>
                <text x="352" y="84">X</text>
                <text x="392" y="84">invalid</text>
                <text x="272" y="116">Ack</text>
                <text x="56" y="148">Guard</text>
                <text x="392" y="148">Guard</text>
                <text x="112" y="164">X</text>
                <text x="144" y="180">dropped</text>
                <text x="8" y="212">X</text>
                <text x="36" y="212">free</text>
                <text x="352" y="212">X</text>
                <text x="380" y="212">free</text>
                <text x="104" y="228">/</text>
                <text x="336" y="228">/</text>
                <text x="104" y="244">/</text>
                <text x="336" y="244">/</text>
                <text x="196" y="260">create</text>
                <text x="244" y="260">Rule</text>
                <text x="272" y="260">X</text>
                <text x="8" y="276">X</text>
                <text x="56" y="276">candidate</text>
                <text x="352" y="276">X</text>
                <text x="384" y="276">valid</text>
                <text x="8" y="308">X</text>
                <text x="40" y="308">valid</text>
                <text x="272" y="324">Ack</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
              A                            B
  X valid     |                            | X valid
              |  delete       /------------|  SCHC PDU (X)
  X invalid   |==============/============>| X invalid
              |<============/==============|---
           ---|            /      Ack      | |
            | |           /                | |
      Guard | |          /                 | |  Guard
            | |X========/                  | |
            v | dropped                    | v
           ---|                            |---
  X free      |                            | X free
              /                            /
              /                            /
              |        create Rule X       |
  X candidate |===========================>| X valid
              |                            | 
  X valid     |<===========================|
              |                   Ack      |
]]></artwork>
        </artset>
      </figure>
      <t><xref target="Fig-Rule-del"/> illustrates the deletion and the re-creation of rule X. Entity
A sends an acknowledged CoAP message to B to delete rule X. A marks the rule
<tt>invalid</tt> when it sends the request, but its Guard period starts only when it
receives the acknowledgement. B marks the rule <tt>invalid</tt> and starts its Guard
period when it receives the request. Meanwhile, B has sent a SCHC PDU built with
rule X before receiving the request. This PDU arrives at A during the Guard
period and is dropped, since rule X is <tt>invalid</tt>. When the Guard period is over,
rule X is <tt>free</tt> and can be created again, as shown by the last messages: A
creates X as <tt>candidate</tt>, B creates it as <tt>valid</tt>, and A validates it when it
receives the acknowledgement.</t>
      <t>The Guard period is used to avoid a SCHC PDU carrying a rule ID to appear at the
other end after the rule has been deleted and, possibly, re-created with another
content. Its duration is computed in <xref target="sec-guard-computation"/>.</t>
      <section anchor="rule-creation">
        <name>Rule creation</name>
        <t>Rule creation does not require a Guard period, and acknowledgement is
RECOMMENDED. Figure <xref target="Fig-Rule-creation"/> gives an example, where the
Acknowledgment is lost. Entity A sends a management message to create a new
rule. Since it is a new rule, the Guard period is not set and the new rule
becomes immediately <tt>valid</tt> on B. The Acknowledgement does not reach A, so the
rule stays in the <tt>candidate</tt> state, but the reception of a SCHC PDU carrying
the Rule ID X informs that the message has been correctly received by B. This
PDU is accepted and decoded, and X becomes <tt>valid</tt> in A.</t>
        <figure anchor="Fig-Rule-creation">
          <name>Creating a rule</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="416" viewBox="0 0 416 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 96,80 L 96,112" fill="none" stroke="black"/>
                <path d="M 112,48 L 112,144" fill="none" stroke="black"/>
                <path d="M 344,64 L 344,144" fill="none" stroke="black"/>
                <path d="M 120,62 L 336,62" fill="none" stroke="black"/>
                <path d="M 120,66 L 336,66" fill="none" stroke="black"/>
                <path d="M 200,78 L 336,78" fill="none" stroke="black"/>
                <path d="M 200,82 L 336,82" fill="none" stroke="black"/>
                <path d="M 120,112 L 336,112" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="344,64 332,58.4 332,69.6" fill="black" transform="rotate(0,336,64)"/>
                <polygon class="arrowhead" points="128,112 116,106.4 116,117.6" fill="black" transform="rotate(180,120,112)"/>
                <circle cx="96" cy="112" r="6" class="closeddot" fill="black"/>
                <g class="text">
                  <text x="112" y="36">A</text>
                  <text x="344" y="36">B</text>
                  <text x="8" y="52">X</text>
                  <text x="36" y="52">free</text>
                  <text x="8" y="68">X</text>
                  <text x="56" y="68">candidate</text>
                  <text x="360" y="68">X</text>
                  <text x="392" y="68">valid</text>
                  <text x="192" y="84">X</text>
                  <text x="64" y="100">Timer</text>
                  <text x="24" y="116">X</text>
                  <text x="56" y="116">valid</text>
                  <text x="240" y="132">X</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
              A                            B
 X free       |
 X candidate  |===========================>| X valid
            | |         X==================|
      Timer | |                            |   
   X valid  * |<---------------------------|   
              |               X            | 
              |                            | 

]]></artwork>
          </artset>
        </figure>
        <section anchor="sec-idempotent-creation">
          <name>Idempotent creation</name>
          <t>The acknowledgement of a creation may be lost without a SCHC PDU using the new
rule being sent, or the CoAP exchange may be abandoned by A. Then A cannot know
if B has created the rule, and the rule stays <tt>candidate</tt> on A. To recover, A
repeats the creation. If B does not immediately emit a SCHC PDU using the new
rule ID, A has no such indication either, and relies instead on the timer
shown in <xref target="Fig-Rule-creation"/> expiring before repeating the creation.</t>
          <t>SCHC rule IDs do not have a fixed length. Two different rule IDs overlap when
one of them is a prefix of the other: for instance, the rule IDs 110 and 110001
overlap, since a SCHC packet built with rule 110001 also starts with the bits of
rule 110, and could not be parsed without ambiguity. The rule IDs 110 and 111 do
not overlap. A rule ID that overlaps the rule ID of an existing rule cannot be
used for a new rule (see <tt>free</tt>).</t>
          <t>A creation is idempotent:</t>
          <ul spacing="normal">
            <li>
              <t>if the rule does not exist on B (<tt>free</tt>), B creates it as <tt>valid</tt> and
acknowledges it;</t>
            </li>
            <li>
              <t>if a <tt>valid</tt> rule with the same rule ID and exactly the same content already
exists on B, B does not change anything and sends the same positive
acknowledgement as for the first request;</t>
            </li>
            <li>
              <t>if a <tt>valid</tt> rule with the same rule ID but a different content exists on B,
or a rule whose rule ID overlaps (see <tt>free</tt>), B refuses the request with 4.09
Conflict;</t>
            </li>
            <li>
              <t>if the rule is <tt>candidate</tt> on B, the creations of both ends cross (see
<xref target="sec-simultaneous-creation"/>);</t>
            </li>
            <li>
              <t>if the rule ID is <tt>invalid</tt> on B, or overlaps an <tt>invalid</tt> rule ID (the Guard
period is running), B also refuses the request with 4.09 Conflict.</t>
            </li>
          </ul>
          <t>When the creation is refused with 4.09 Conflict, A gives up its <tt>candidate</tt>
rule, as described below, and may retry with another rule ID. Discarding the
<tt>candidate</tt> rule without deleting it would not be safe: a copy of the creation
sent in a previous CoAP exchange may still be in flight, and be accepted by B
when its Guard period is over, while A would no longer have the rule. The
deletion makes the rule <tt>invalid</tt> on both ends: a late copy of the creation is
either refused during the Guard period of B, or accepted before the deletion,
which then removes it. An answer is taken into account only if the rule is
still the <tt>candidate</tt> rule created by the request. Otherwise (the rule has been
validated by a SCHC PDU, replaced or deleted in the meantime), it is ignored.
<xref target="Fig-Rule-conflict"/> illustrates this with a retransmitted copy of the
creation that arrives late, after A has already deleted its <tt>candidate</tt> rule.</t>
          <figure anchor="Fig-Rule-conflict">
            <name>Late retransmitted creation refused after the candidate rule is deleted</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="488" viewBox="0 0 488 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 96,176 L 96,288" fill="none" stroke="black"/>
                  <path d="M 112,48 L 112,304" fill="none" stroke="black"/>
                  <path d="M 352,48 L 352,304" fill="none" stroke="black"/>
                  <path d="M 368,176 L 368,272" fill="none" stroke="black"/>
                  <path d="M 120,78 L 184,78" fill="none" stroke="black"/>
                  <path d="M 120,82 L 184,82" fill="none" stroke="black"/>
                  <path d="M 256,78 L 344,78" fill="none" stroke="black"/>
                  <path d="M 256,82 L 344,82" fill="none" stroke="black"/>
                  <path d="M 120,142 L 176,142" fill="none" stroke="black"/>
                  <path d="M 120,146 L 176,146" fill="none" stroke="black"/>
                  <path d="M 288,142 L 344,142" fill="none" stroke="black"/>
                  <path d="M 288,146 L 344,146" fill="none" stroke="black"/>
                  <path d="M 120,158 L 184,158" fill="none" stroke="black"/>
                  <path d="M 120,162 L 184,162" fill="none" stroke="black"/>
                  <path d="M 256,158 L 344,158" fill="none" stroke="black"/>
                  <path d="M 256,162 L 344,162" fill="none" stroke="black"/>
                  <path d="M 120,286 L 216,286" fill="none" stroke="black"/>
                  <path d="M 120,290 L 216,290" fill="none" stroke="black"/>
                  <path d="M 248,286 L 344,286" fill="none" stroke="black"/>
                  <path d="M 248,290 L 344,290" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="352,160 340,154.4 340,165.6" fill="black" transform="rotate(0,344,160)"/>
                  <polygon class="arrowhead" points="352,80 340,74.4 340,85.6" fill="black" transform="rotate(0,344,80)"/>
                  <polygon class="arrowhead" points="128,288 116,282.4 116,293.6" fill="black" transform="rotate(180,120,288)"/>
                  <polygon class="arrowhead" points="128,144 116,138.4 116,149.6" fill="black" transform="rotate(180,120,144)"/>
                  <polygon class="arrowhead" points="104,288 92,282.4 92,293.6" fill="black" transform="rotate(90,96,288)"/>
                  <g class="text">
                    <text x="112" y="36">A</text>
                    <text x="352" y="36">B</text>
                    <text x="120" y="52">-</text>
                    <text x="136" y="52">-</text>
                    <text x="152" y="52">+</text>
                    <text x="152" y="68">:</text>
                    <text x="8" y="84">X</text>
                    <text x="56" y="84">candidate</text>
                    <text x="220" y="84">create(X</text>
                    <text x="152" y="100">:</text>
                    <text x="156" y="116">(a</text>
                    <text x="224" y="116">retransmitted</text>
                    <text x="300" y="116">copy</text>
                    <text x="164" y="132">is</text>
                    <text x="200" y="132">still</text>
                    <text x="236" y="132">in</text>
                    <text x="280" y="132">flight)</text>
                    <text x="196" y="148">4.09</text>
                    <text x="252" y="148">Conflict</text>
                    <text x="8" y="164">X</text>
                    <text x="48" y="164">invalid</text>
                    <text x="220" y="164">delete(X</text>
                    <text x="368" y="164">X</text>
                    <text x="408" y="164">invalid</text>
                    <text x="152" y="180">:</text>
                    <text x="64" y="196">Guard</text>
                    <text x="152" y="196">:</text>
                    <text x="152" y="212">:</text>
                    <text x="232" y="212">retransmitted</text>
                    <text x="152" y="228">:</text>
                    <text x="232" y="228">create(X)</text>
                    <text x="152" y="244">+</text>
                    <text x="168" y="244">-</text>
                    <text x="184" y="244">-</text>
                    <text x="200" y="244">-</text>
                    <text x="216" y="244">-</text>
                    <text x="232" y="244">-</text>
                    <text x="248" y="244">-</text>
                    <text x="264" y="244">-</text>
                    <text x="280" y="244">-</text>
                    <text x="296" y="244">-</text>
                    <text x="312" y="244">-</text>
                    <text x="328" y="244">-</text>
                    <text x="344" y="244">&gt;</text>
                    <text x="412" y="260">refused:</text>
                    <text x="456" y="260">X</text>
                    <text x="400" y="276">still</text>
                    <text x="456" y="276">guarded</text>
                    <text x="232" y="292">Ack</text>
                    <text x="376" y="292">v</text>
                    <text x="8" y="308">X</text>
                    <text x="36" y="308">free</text>
                    <text x="368" y="308">X</text>
                    <text x="396" y="308">free</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
              A                             B
              |- - +                        |
              |    :                        |
 X candidate  |=========create(X)==========>|
              |    :                        |
              |    (a retransmitted copy    |
              |     is still in flight)     |
              |<=======4.09 Conflict========|
 X invalid    |=========delete(X)==========>| X invalid
            | |    :                        | |
      Guard | |    :                        | |
            | |    :   retransmitted        | |
            | |    :     create(X)          | |
            | |    + - - - - - - - - - - - >| |
            | |                             | | refused: X
            | |                             | | still guarded
            v |<============Ack=============|  v
 X free       |                             | X free
]]></artwork>
            </artset>
          </figure>
          <t>The initiator keeps the rule <tt>candidate</tt> and repeats the creation, with an
increasing delay, until it receives an answer. The creation stops as soon as the
rule is no longer <tt>candidate</tt>: validated by a SCHC PDU, replaced (see
<xref target="sec-simultaneous-creation"/>) or deleted. Repeating it afterwards could create
the rule again on the other end after its deletion. To give up a <tt>candidate</tt>
rule, A deletes it as any other rule (see <xref target="sec-rule-deletion"/>): the deletion
is also idempotent, so B answers positively even if it never received the
creation.</t>
          <t>The following example shows the creation of rule 9/4, where the acknowledgement
is lost and the rule is not used by B before A repeats the request:</t>
          <figure anchor="Fig-idempotent">
            <name>Idempotent creation after a lost acknowledgement</name>
            <artwork><![CDATA[
A -> B  REQ: iPATCH /c
        (Content-Format: application/yang-instances+cbor-seq)
        ["rule", 9, 4]: { "rule-nature": "nature-compression", ... }

A: rule 9/4 candidate.                    B: rule 9/4 free -> valid

B -> A  RES: 2.04 Changed                                   (lost)

A: CoAP exchange abandoned, rule 9/4 stays candidate

A -> B  REQ: iPATCH /c   (same content, new CoAP exchange)
        ["rule", 9, 4]: { "rule-nature": "nature-compression", ... }

        B: rule 9/4 already valid with the same content, no change

      
B -> A  RES: 2.04 Changed

A: rule 9/4 candidate -> valid
]]></artwork>
          </figure>
          <t>If the second request had a different content, B would answer 4.09 Conflict and
rule 9/4 would stay <tt>valid</tt> on B with its original content. A would give up its
<tt>candidate</tt> rule by deleting it, which also deletes rule 9/4 on B, and would
create the rule with the new content with another rule ID.</t>
        </section>
        <section anchor="sec-simultaneous-creation">
          <name>Simultaneous creation</name>
          <t>Both ends can create rules. They could choose the same rule ID at the same
time, or two rule IDs where one overlaps the other. To avoid it, the rule ID
space SHOULD be shared between both ends:</t>
          <ul spacing="normal">
            <li>
              <t>the rule IDs of the rules created by the Core start with a bit set to 0;</t>
            </li>
            <li>
              <t>the rule IDs of the rules created by the Device start with a bit set to 1.</t>
            </li>
          </ul>
          <t>With this convention, two rule IDs created by different ends are never equal,
nor the prefix of each other. It applies to the rules created with an iPATCH and
with the "duplicate-rule" RPC. The <tt>origin</tt> rules, provisioned before the start
of the SCHC instance, are not concerned: their rule IDs can be in both parts,
and are never <tt>free</tt>.</t>
          <t>If both creations still cross, for instance when this convention is not used,
the Device has priority:</t>
          <ul spacing="normal">
            <li>
              <t>the Device, receiving a creation for a rule ID that is <tt>candidate</tt> on the
Device, or that overlaps with such a rule ID, refuses it with 4.09 Conflict;</t>
            </li>
            <li>
              <t>the Core, receiving a creation for a rule ID that is <tt>candidate</tt> on the Core,
or that overlaps with such a rule ID, accepts it: the <tt>candidate</tt> rule of the
Core is discarded, and the received rule becomes <tt>valid</tt>. The Core stops its
own creation exchange, and the 4.09 Conflict sent by the Device for it is
ignored, since the rule is no longer the <tt>candidate</tt> rule created by the
request.</t>
            </li>
          </ul>
          <t>The Device has priority because retrying with another rule ID is less costly for
the Core than for a constrained Device.</t>
          <figure anchor="Fig-simultaneous">
            <name>Crossing creations of the same rule ID</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="456" viewBox="0 0 456 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 112,48 L 112,224" fill="none" stroke="black"/>
                  <path d="M 344,48 L 344,224" fill="none" stroke="black"/>
                  <path d="M 120,46 L 192,46" fill="none" stroke="black"/>
                  <path d="M 120,50 L 192,50" fill="none" stroke="black"/>
                  <path d="M 264,46 L 336,46" fill="none" stroke="black"/>
                  <path d="M 264,50 L 336,50" fill="none" stroke="black"/>
                  <path d="M 120,158 L 192,158" fill="none" stroke="black"/>
                  <path d="M 120,162 L 192,162" fill="none" stroke="black"/>
                  <path d="M 264,158 L 336,158" fill="none" stroke="black"/>
                  <path d="M 264,162 L 336,162" fill="none" stroke="black"/>
                  <path d="M 120,190 L 176,190" fill="none" stroke="black"/>
                  <path d="M 120,194 L 176,194" fill="none" stroke="black"/>
                  <path d="M 296,190 L 336,190" fill="none" stroke="black"/>
                  <path d="M 296,194 L 336,194" fill="none" stroke="black"/>
                  <path d="M 120,222 L 160,222" fill="none" stroke="black"/>
                  <path d="M 120,226 L 160,226" fill="none" stroke="black"/>
                  <path d="M 288,222 L 336,222" fill="none" stroke="black"/>
                  <path d="M 288,226 L 336,226" fill="none" stroke="black"/>
                  <path d="M 200,48 L 256,160" fill="none" stroke="black"/>
                  <path d="M 200,160 L 256,48" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="344,192 332,186.4 332,197.6" fill="black" transform="rotate(0,336,192)"/>
                  <polygon class="arrowhead" points="344,160 332,154.4 332,165.6" fill="black" transform="rotate(0,336,160)"/>
                  <polygon class="arrowhead" points="128,224 116,218.4 116,229.6" fill="black" transform="rotate(180,120,224)"/>
                  <polygon class="arrowhead" points="128,160 116,154.4 116,165.6" fill="black" transform="rotate(180,120,160)"/>
                  <g class="text">
                    <text x="108" y="36">Core</text>
                    <text x="340" y="36">Device</text>
                    <text x="8" y="52">X</text>
                    <text x="56" y="52">candidate</text>
                    <text x="360" y="52">X</text>
                    <text x="408" y="52">candidate</text>
                    <text x="52" y="68">(v1)</text>
                    <text x="404" y="68">(v2)</text>
                    <text x="148" y="84">create</text>
                    <text x="300" y="84">create</text>
                    <text x="148" y="100">v1</text>
                    <text x="300" y="100">v2</text>
                    <text x="8" y="164">X</text>
                    <text x="40" y="164">valid</text>
                    <text x="384" y="164">rejects</text>
                    <text x="428" y="164">v1</text>
                    <text x="52" y="180">(v2)</text>
                    <text x="204" y="196">2.04</text>
                    <text x="256" y="196">Changed</text>
                    <text x="360" y="196">X</text>
                    <text x="392" y="196">valid</text>
                    <text x="436" y="196">(v2)</text>
                    <text x="32" y="228">ignored</text>
                    <text x="188" y="228">4.09</text>
                    <text x="244" y="228">Conflict</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
            Core                        Device
 X candidate  |==========\      /==========| X candidate
     (v1)     |           \    /           |     (v2)
              | create     \  /    create  |
              |   v1        \/       v2    |
              |             /\             |
              |            /  \            |
              |           /    \           |
 X valid      |<=========/      \=========>| rejects v1
     (v2)     |                            |
              |======== 2.04 Changed =====>| X valid (v2)
              |                            |
 ignored      |<===== 4.09 Conflict =======|
]]></artwork>
            </artset>
          </figure>
          <t><xref target="Fig-simultaneous"/> shows two crossing creations of rule X. The Core and the
Device both create X as <tt>candidate</tt>, with different contents (v1 and v2). The
Device refuses the creation of the Core with 4.09 Conflict. The Core accepts the
creation of the Device: X becomes <tt>valid</tt> with the content v2 on the Core, which
acknowledges it. The Device validates X when it receives the acknowledgement,
and the 4.09 Conflict received by the Core is ignored. If the 4.09 Conflict
reaches the Core before the creation of the Device, the Core gives up its
<tt>candidate</tt> rule and deletes it (see <xref target="sec-idempotent-creation"/>). The creation
of the Device is then refused by the Core, or stopped by the deletion when it
reaches the Device: rule X is deleted on both ends, and each end may retry with
another rule ID.</t>
        </section>
      </section>
      <section anchor="sec-rule-deletion">
        <name>Rule deletion</name>
        <t>When a rule is deleted, it becomes <tt>invalid</tt> on both ends for a Guard period
(see <xref target="Fig-Rule-del"/>). During that period, a rule with the same ID cannot be
created, and the SCHC PDUs carrying the Rule ID are dropped. An <tt>origin</tt> rule
cannot be deleted: the deletion is refused with 4.03 Forbidden, and the rule
stays <tt>origin</tt> on both ends.</t>
        <t>The initiator marks the rule <tt>invalid</tt> when it sends the deletion, so that it
does not generate any more PDU with this rule. Its Guard period starts when it
receives the acknowledgement. If the deletion or its acknowledgement is lost and
the CoAP exchange is abandoned, the rule stays <tt>invalid</tt> on the initiator
without any running Guard period, and the initiator MUST repeat the deletion
until it receives the acknowledgement. In the meantime, the SCHC PDUs sent by
the other end with this rule ID are dropped.</t>
        <t>The deletion is idempotent: if the rule is already <tt>invalid</tt> or <tt>free</tt> on the
receiving end, the request is acknowledged as the first one. It nevertheless
(re)starts the Guard period of the rule, which becomes <tt>invalid</tt> again if it was
<tt>free</tt>, unless the receiving end is itself waiting for the acknowledgement of
its own deletion of this rule. A Guard period that turns out to be useless only
delays the reuse of the rule ID, while a missing one can lead both ends to
disagree on the SoR (see <xref target="sec-guard-computation"/>). A deletion received for a
<tt>candidate</tt> rule makes it <tt>invalid</tt>, as for a <tt>valid</tt> rule, and the creation
exchange in progress for this rule is stopped. The other end may have validated
the rule before deleting it, or the deletion may be a late copy of an older one;
in both cases, the rule can be created again after the Guard period.</t>
        <t>Management requests MUST be processed only once, as specified in <xref target="RFC7252"/>,
Section 4.5. That section lets a server redo an idempotent request instead of
just resending the same answer when it sees a duplicate; this does not apply
here, since redoing a creation or a deletion after the rule has since been
deleted and created again would not give the same result.</t>
      </section>
      <section anchor="sec-guard-computation">
        <name>Guard period computation</name>
        <t>The Guard period must be longer than the time a SCHC PDU built with the deleted
rule can stay in the network. Let L be the maximum lifetime of a SCHC PDU: the
maximum time between its emission by an end and its delivery (or discard) by the
other end, including the queueing in the underlying network and, for a
fragmentation rule, the time to deliver the last fragment. L depends on the
network and is a configuration parameter. Consider a rule X deleted by A at time
tA (A sends the request) and received by B at time tB, with tB &gt;= tA:</t>
        <ul spacing="normal">
          <li>
            <t>A does not generate any PDU with X after tA. The last PDU of A reaches B at
tA+L at the latest, that is at most L after the beginning of the Guard period
of B (tB). B drops it. A Guard period of B longer than L is therefore enough.</t>
          </li>
          <li>
            <t>B generates PDUs with X until tB. The last PDU of B reaches A at tB+L at the
latest. A receives the acknowledgement, sent after tB, at a time tA' &gt;= tB,
and starts its Guard period at tA'. A Guard period of A longer than L is
therefore enough, since tA'+L &gt;= tB+L.</t>
          </li>
        </ul>
        <t>A MUST start its Guard period when it receives the acknowledgement of the
deletion, not when it sends the deletion request: the request may be
retransmitted during MAX_TRANSMIT_SPAN (<xref target="RFC7252"/>) before B receives it and
stops using the rule, so starting the Guard period any earlier could let a
stale PDU from B arrive after it has already ended.</t>
        <t><xref target="Fig-Guard-timing"/> shows these two arguments, with the time going down (not to
scale). The single lines are SCHC PDUs and the double lines are the management
messages. A slanted line is a message in flight, which takes at most L. The
figure ends with B creating X again as soon as its Guard period is over, while
the Guard period of A is still running: A refuses the creation with 4.09
Conflict.</t>
        <figure anchor="Fig-Guard-timing">
          <name>Why a Guard period of L suffices on each end, and a creation refused during the Guard period of A</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="528" viewBox="0 0 528 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 128,184 L 128,280" fill="none" stroke="black"/>
                <path d="M 144,48 L 144,320" fill="none" stroke="black"/>
                <path d="M 384,48 L 384,320" fill="none" stroke="black"/>
                <path d="M 400,104 L 400,200" fill="none" stroke="black"/>
                <path d="M 152,64 L 224,64" fill="none" stroke="black"/>
                <path d="M 152,78 L 168,78" fill="none" stroke="black"/>
                <path d="M 152,82 L 168,82" fill="none" stroke="black"/>
                <path d="M 304,80 L 376,80" fill="none" stroke="black"/>
                <path d="M 184,94 L 240,94" fill="none" stroke="black"/>
                <path d="M 184,98 L 240,98" fill="none" stroke="black"/>
                <path d="M 256,94 L 280,94" fill="none" stroke="black"/>
                <path d="M 256,98 L 280,98" fill="none" stroke="black"/>
                <path d="M 296,94 L 376,94" fill="none" stroke="black"/>
                <path d="M 296,98 L 376,98" fill="none" stroke="black"/>
                <path d="M 392,96 L 408,96" fill="none" stroke="black"/>
                <path d="M 216,110 L 248,110" fill="none" stroke="black"/>
                <path d="M 216,114 L 248,114" fill="none" stroke="black"/>
                <path d="M 288,110 L 376,110" fill="none" stroke="black"/>
                <path d="M 288,114 L 376,114" fill="none" stroke="black"/>
                <path d="M 120,176 L 136,176" fill="none" stroke="black"/>
                <path d="M 152,174 L 176,174" fill="none" stroke="black"/>
                <path d="M 152,178 L 176,178" fill="none" stroke="black"/>
                <path d="M 296,176 L 376,176" fill="none" stroke="black"/>
                <path d="M 152,192 L 232,192" fill="none" stroke="black"/>
                <path d="M 392,208 L 408,208" fill="none" stroke="black"/>
                <path d="M 216,222 L 376,222" fill="none" stroke="black"/>
                <path d="M 216,226 L 376,226" fill="none" stroke="black"/>
                <path d="M 152,254 L 192,254" fill="none" stroke="black"/>
                <path d="M 152,258 L 192,258" fill="none" stroke="black"/>
                <path d="M 152,270 L 200,270" fill="none" stroke="black"/>
                <path d="M 152,274 L 200,274" fill="none" stroke="black"/>
                <path d="M 120,288 L 136,288" fill="none" stroke="black"/>
                <path d="M 224,302 L 376,302" fill="none" stroke="black"/>
                <path d="M 224,306 L 376,306" fill="none" stroke="black"/>
                <path d="M 208,272 L 216,288" fill="none" stroke="black"/>
                <path d="M 232,64 L 288,176" fill="none" stroke="black"/>
                <path d="M 184,160 L 208,112" fill="none" stroke="black"/>
                <path d="M 200,240 L 208,224" fill="none" stroke="black"/>
                <path d="M 240,192 L 296,80" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="408,200 396,194.4 396,205.6" fill="black" transform="rotate(90,400,200)"/>
                <polygon class="arrowhead" points="384,304 372,298.4 372,309.6" fill="black" transform="rotate(0,376,304)"/>
                <polygon class="arrowhead" points="384,176 372,170.4 372,181.6" fill="black" transform="rotate(0,376,176)"/>
                <polygon class="arrowhead" points="384,96 372,90.4 372,101.6" fill="black" transform="rotate(0,376,96)"/>
                <polygon class="arrowhead" points="160,256 148,250.4 148,261.6" fill="black" transform="rotate(180,152,256)"/>
                <polygon class="arrowhead" points="160,192 148,186.4 148,197.6" fill="black" transform="rotate(180,152,192)"/>
                <polygon class="arrowhead" points="160,176 148,170.4 148,181.6" fill="black" transform="rotate(180,152,176)"/>
                <polygon class="arrowhead" points="136,280 124,274.4 124,285.6" fill="black" transform="rotate(90,128,280)"/>
                <g class="text">
                  <text x="144" y="36">A</text>
                  <text x="384" y="36">B</text>
                  <text x="36" y="68">last</text>
                  <text x="84" y="68">PDU(X)</text>
                  <text x="12" y="84">tA</text>
                  <text x="72" y="84">delete(X)</text>
                  <text x="176" y="84">\</text>
                  <text x="412" y="84">last</text>
                  <text x="460" y="84">PDU(X)</text>
                  <text x="40" y="100">X</text>
                  <text x="80" y="100">invalid</text>
                  <text x="428" y="100">tB</text>
                  <text x="456" y="100">X</text>
                  <text x="496" y="100">invalid</text>
                  <text x="268" y="116">==</text>
                  <text x="452" y="148">Guard(B)</text>
                  <text x="428" y="164">&gt;=</text>
                  <text x="448" y="164">L</text>
                  <text x="56" y="180">tA'</text>
                  <text x="96" y="180">Ack</text>
                  <text x="448" y="180">dropped</text>
                  <text x="80" y="196">dropped</text>
                  <text x="84" y="228">Guard(A)</text>
                  <text x="400" y="228">X</text>
                  <text x="428" y="228">free</text>
                  <text x="60" y="244">&gt;=</text>
                  <text x="80" y="244">L</text>
                  <text x="264" y="244">create(X)</text>
                  <text x="400" y="244">X</text>
                  <text x="448" y="244">candidate</text>
                  <text x="260" y="292">4.09</text>
                  <text x="316" y="292">Conflict</text>
                  <text x="72" y="308">X</text>
                  <text x="100" y="308">free</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
                    A                             B
                    |                             |
     last PDU(X)    |----------\                  |
   tA  delete(X)    |===\       \      /----------| last PDU(X)
       X invalid    |    ========\====/==========>|--- tB  X invalid
                    |       /=====\==/============| |
                    |      /       \/             | |
                    |     /        /\             | |  Guard(B)
                    |    /        /  \            | |  >= L
        tA'  Ack ---|<===        /    \---------->| |  dropped
         dropped  | |<----------/                 | v
                  | |                             |---
         Guard(A) | |       /=====================| X free
         >= L     | |      /   create(X)          | X candidate
                  | |<=====                       |
                  v |=======\                     |
                 ---|        \   4.09 Conflict    |
           X free   |         ===================>|
                    |                             |
]]></artwork>
          </artset>
        </figure>
        <t>Both ends then use the same Guard period</t>
        <artwork><![CDATA[
G >= L
]]></artwork>
        <t>plus a margin for the clock drift. G does not depend on the number of
retransmissions of the CoAP deletion, since they happen before the Guard period
of A starts.</t>
        <t>This document gives no value for L, G and the CoAP transmission parameters: they
depend on the network, which can be a terrestrial LPWAN as well as an
interplanetary link. The CoAP transmission parameters are configured accordingly
(<xref target="RFC7252"/>, Section 4.8.1), with a MAX_LATENCY of at least L, and the values
derived from them, such as MAX_TRANSMIT_SPAN and EXCHANGE_LIFETIME, are the ones
used in this document.</t>
        <t>When both ends delete the same rule at the same time, each end keeps sending its
deletion request until it is acknowledged, possibly after the Guard period of
the other end has started. These requests are not covered by the computation
above. A late copy could reach an end that has already created the rule again,
and make it <tt>invalid</tt> there, while the creation has already reached the other
end. This is why every received deletion restarts the Guard period (see
<xref target="sec-rule-deletion"/>): the copies of an earlier exchange are then sent before
the restart, and the copies of the acknowledged exchange are removed by the
deduplication.</t>
        <t>Without crossing deletions, the Guard period of A ends at least as late as the
one of B. A creation initiated by A therefore reaches a B whose Guard period is
over. A creation initiated by B may arrive when the Guard period of A is still
running, and be refused with 4.09 Conflict (see <xref target="sec-idempotent-creation"/> and
the end of <xref target="Fig-Guard-timing"/>).
The Guard period of A ends at most MAX_TRANSMIT_SPAN + 2L after the one of B:
the acknowledgement of the deletion may be lost, and the deletion repeated
during MAX_TRANSMIT_SPAN (<xref target="RFC7252"/>), while the deduplication prevents these
copies from restarting the Guard period of B. To avoid such a refusal, a rule ID
SHOULD NOT be used for a new rule before MAX_TRANSMIT_SPAN + 2L after the end of
its Guard period: the Guard period of the other end is then over too.</t>
        <t>This document recommends not reusing a deleted rule ID immediately: the Guard
period then becomes transparent to management, since no new rule is ever
confused with a stale PDU of the deleted one.</t>
      </section>
      <section anchor="sec-restart">
        <name>Restart of a node</name>
        <t>Management changes the SoR while the SCHC instance is running. A restart can
therefore make the two ends disagree on the SoR, and what a node does after a
restart depends on whether it keeps the rules and their status in a stable
memory. The <tt>origin</tt> rules are not concerned, since they are part of the initial
SoR.</t>
        <t>Whatever the memory of the rules, the deduplication state of CoAP (see
<xref target="sec-rule-deletion"/>) is usually lost during a restart, so that a copy of a
management request sent before the restart could be processed again. If this
state is not kept in a stable memory, the end MUST silently discard the
management requests during EXCHANGE_LIFETIME (<xref target="RFC7252"/>) after the restart, as
if it had not restarted yet, so that the copies sent before the restart are no
longer in flight when it processes requests again. For the other end, this
cannot be distinguished from a loss: the CoAP exchange is abandoned and the
request is repeated later, a rule being created stays <tt>candidate</tt>, and a rule
being deleted stays <tt>invalid</tt>. When OSCORE is used, its replay window is
recovered after a restart as described in Appendix B.1.2 of <xref target="RFC8613"/>.</t>
        <section anchor="sec-restart-stable">
          <name>Node with a stable memory</name>
          <t>The rules and their status SHOULD be stored in a stable memory, which survives a
restart. When the rules are kept, after a restart:</t>
          <ul spacing="normal">
            <li>
              <t>a <tt>candidate</tt> rule stays <tt>candidate</tt>, and the creation is repeated;</t>
            </li>
            <li>
              <t>an <tt>invalid</tt> rule whose deletion has not been acknowledged stays <tt>invalid</tt>,
and the deletion is repeated;</t>
            </li>
            <li>
              <t>an <tt>invalid</tt> rule whose Guard period had started begins a new, complete Guard
period, since the time spent during the restart is unknown. A longer Guard
period is always safe: a creation received during this period is refused with
4.09 Conflict, and the other end deletes its <tt>candidate</tt> rule (see
<xref target="sec-idempotent-creation"/>).</t>
            </li>
          </ul>
        </section>
        <section anchor="sec-restart-stateless">
          <name>Stateless node</name>
          <t>A node without stable memory loses, when it restarts, the rules created or
deleted by management, while the other end still uses them, and an <tt>invalid</tt>
rule would be considered as <tt>free</tt> before the end of its Guard period. It has
only its <tt>origin</tt> rules: it SHOULD then reset the SoR with the "reset-context"
RPC (see <xref target="sec-reset-rpc"/>), before any other management request, so that both
ends come back to the same SoR.</t>
        </section>
      </section>
    </section>
    <section anchor="management-messages">
      <name>Management messages</name>
      <section anchor="sec-mgmt-stack">
        <name>Management Protocol Stack</name>
        <t>The management messages are carried by a protocol stack dedicated to management,
independent of the stack used by the application traffic (<xref target="Fig-mgmt-stack"/>).
No other traffic uses this stack.</t>
        <figure anchor="Fig-mgmt-stack">
          <name>Protocol stack of the management messages</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="480" viewBox="0 0 480 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,48 L 8,288" fill="none" stroke="black"/>
                <path d="M 168,48 L 168,288" fill="none" stroke="black"/>
                <path d="M 312,48 L 312,288" fill="none" stroke="black"/>
                <path d="M 472,48 L 472,288" fill="none" stroke="black"/>
                <path d="M 8,48 L 168,48" fill="none" stroke="black"/>
                <path d="M 312,48 L 472,48" fill="none" stroke="black"/>
                <path d="M 8,80 L 168,80" fill="none" stroke="black"/>
                <path d="M 312,80 L 472,80" fill="none" stroke="black"/>
                <path d="M 8,144 L 168,144" fill="none" stroke="black"/>
                <path d="M 312,144 L 472,144" fill="none" stroke="black"/>
                <path d="M 8,176 L 168,176" fill="none" stroke="black"/>
                <path d="M 312,176 L 472,176" fill="none" stroke="black"/>
                <path d="M 8,208 L 168,208" fill="none" stroke="black"/>
                <path d="M 312,208 L 472,208" fill="none" stroke="black"/>
                <path d="M 8,256 L 168,256" fill="none" stroke="black"/>
                <path d="M 312,256 L 472,256" fill="none" stroke="black"/>
                <path d="M 176,272 L 304,272" fill="none" stroke="black"/>
                <path d="M 8,288 L 168,288" fill="none" stroke="black"/>
                <path d="M 312,288 L 472,288" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="312,272 300,266.4 300,277.6" fill="black" transform="rotate(0,304,272)"/>
                <polygon class="arrowhead" points="184,272 172,266.4 172,277.6" fill="black" transform="rotate(180,176,272)"/>
                <g class="text">
                  <text x="52" y="36">Device</text>
                  <text x="120" y="36">(fe80::1)</text>
                  <text x="356" y="36">Core/App</text>
                  <text x="432" y="36">(fe80::2)</text>
                  <text x="84" y="68">CORECONF</text>
                  <text x="388" y="68">CORECONF</text>
                  <text x="52" y="100">CoAP</text>
                  <text x="104" y="100">(inner)</text>
                  <text x="356" y="100">CoAP</text>
                  <text x="408" y="100">(inner)</text>
                  <text x="32" y="116">-</text>
                  <text x="48" y="116">-</text>
                  <text x="84" y="116">OSCORE</text>
                  <text x="120" y="116">-</text>
                  <text x="136" y="116">-</text>
                  <text x="236" y="116">optional</text>
                  <text x="336" y="116">-</text>
                  <text x="352" y="116">-</text>
                  <text x="388" y="116">OSCORE</text>
                  <text x="424" y="116">-</text>
                  <text x="440" y="116">-</text>
                  <text x="52" y="132">CoAP</text>
                  <text x="104" y="132">(outer)</text>
                  <text x="356" y="132">CoAP</text>
                  <text x="408" y="132">(outer)</text>
                  <text x="88" y="164">UDP</text>
                  <text x="392" y="164">UDP</text>
                  <text x="84" y="196">IPv6</text>
                  <text x="388" y="196">IPv6</text>
                  <text x="84" y="228">SCHC</text>
                  <text x="388" y="228">SCHC</text>
                  <text x="60" y="244">management</text>
                  <text x="128" y="244">rules</text>
                  <text x="364" y="244">management</text>
                  <text x="432" y="244">rules</text>
                  <text x="84" y="276">L2</text>
                  <text x="388" y="276">L2</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
     Device (fe80::1)                     Core/App (fe80::2)
  +-------------------+                 +-------------------+
  |     CORECONF      |                 |     CORECONF      |
  +-------------------+                 +-------------------+
  |   CoAP (inner)    |                 |   CoAP (inner)    |
  |  - - OSCORE - -   |    optional     |  - - OSCORE - -   |
  |   CoAP (outer)    |                 |   CoAP (outer)    |
  +-------------------+                 +-------------------+
  |        UDP        |                 |        UDP        |
  +-------------------+                 +-------------------+
  |       IPv6        |                 |       IPv6        |
  +-------------------+                 +-------------------+
  |       SCHC        |                 |       SCHC        |
  | management rules  |                 | management rules  |
  +-------------------+                 +-------------------+
  |        L2         |<--------------->|        L2         |
  +-------------------+                 +-------------------+
]]></artwork>
          </artset>
        </figure>
        <ul spacing="normal">
          <li>
            <t>IPv6 <xref target="RFC8200"/>: the management traffic does not use the same interface as
the application. Each node of the SCHC instance includes a second IPv6
stack, used only for management. Only two link-local addresses are allowed on this stack:
<tt>fe80::1</tt> for the Device and <tt>fe80::2</tt> for the Core, on the application side (see
<xref target="sec-protocols"/>). These IPv6 packets are only exchanged between the two
nodes of the SCHC instance and are never forwarded outside of it. They are
compressed with the management rules and, when they are larger than the MTU of
the underlying network, fragmented with SCHC fragmentation.</t>
          </li>
          <li>
            <t>UDP <xref target="RFC0768"/>: the CoAP server uses port 5683 and the CoAP client port 3865
(see <xref target="sec-protocols"/>).</t>
          </li>
          <li>
            <t>CoAP <xref target="RFC7252"/>: both nodes are CoAP clients and servers, so that each node
can initiate a management operation. The requests are Confirmable, and their
deduplication is required by the rule status procedures (see
<xref target="sec-coap-profile"/> and <xref target="sec-rule-deletion"/>). A node MUST NOT send a
management request on a rule before it has received the response to its
previous request on the same rule ID, or on an overlapping rule ID, or
abandoned this request. The rule status procedures rely on this order.
Requests on different rules can be sent without waiting for each other, within
the limit of NSTART (<xref target="RFC7252"/>, Section 4.7), the maximum number of requests
sent to a node and still waiting for a response. Its default value is 1, and
it can be increased by configuration when the underlying network allows it.</t>
          </li>
          <li>
            <t>OSCORE <xref target="RFC8613"/>: when the underlying network does not protect the
management traffic, the CoAP messages MAY be protected with OSCORE between
both nodes. OSCORE encrypts the inner CoAP message (code, most options and
payload) and carries it in an outer CoAP message. The outer code is POST for
the requests and 2.04 Changed for the responses, and the outer message
contains an OSCORE option. The management rules then compress the outer CoAP
header. The replay protection of OSCORE complements the CoAP deduplication,
including after a restart (see <xref target="sec-restart"/>).</t>
          </li>
          <li>
            <t>CORECONF <xref target="I-D.ietf-core-comi"/>: the SoR is a datastore structured by the SCHC
YANG Data Model (<xref target="I-D.toutain-schc-rfc9363bis"/>), whose data nodes are
identified by SIDs and encoded in CBOR <xref target="RFC9254"/>. The rules are read with
FETCH, iPATCH, and the operations on the SoR are RPCs invoked with POST (see
<xref target="sec-rpcs"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="coreconf-interface">
        <name>CORECONF Interface</name>
        <t><xref target="RFC9363"/> defines a YANG Data Model for SCHC Rules, updated by
<xref target="I-D.toutain-schc-rfc9363bis"/> (module revision 2026-10-27). This document uses
the updated model. SCHC Instance Management MUST use FETCH to read a rule and
iPATCH to create a full rule or delete a rule, and RPCs to generate specific rules depending
on RPC parameters, such as the RPCs of the "<tt>ietf-schc-mgmt-basic</tt>" module
(<xref target="sec-yang-module"/>).</t>
        <t>Management rules have to be marked in a way that allows quickly identifying
which rules in a SoR are responsible for management. Therefore, a
"<tt>nature-management</tt>" Rule nature is defined, and the "management" feature enables
it. A management Rule uses the compression Rule structure, but only the
"<tt>entry-universal</tt>" list supports management Rules: the deprecated "entry" list
does not. Compression needs to be available and activated to do management.</t>
        <t>The technical choices of the management protocol stack (<xref target="sec-mgmt-stack"/>)
allow the management rules to compress the management traffic very efficiently
(see <xref target="sec-protocols"/>), since most of the header fields are known in advance:</t>
        <ul spacing="normal">
          <li>
            <t>the IPv6 addresses are fixed (fe80::1 for the Device and fe80::2 for the
Core), as are the other fields of the IPv6 header (version, traffic class,
flow label, next header and hop limit). They are not sent, and the payload
length is computed;</t>
          </li>
          <li>
            <t>the UDP ports are fixed (5683 for the CoAP server and 3865 for the CoAP
client). They are not sent, and the UDP length and checksum are computed;</t>
          </li>
          <li>
            <t>the CoAP requests only use three methods (FETCH, iPATCH and POST), so that
their code is sent as a short index with a mapping. The type (Confirmable for
the requests, Acknowledgement for the responses), the Token length (no Token),
and the Uri-Path and Content-Format options have fixed values and are not
sent. Only the least significant bits of the Message ID are sent;</t>
          </li>
          <li>
            <t>when OSCORE is used, the outer code is always POST for the requests and 2.04
Changed for the responses, and is not sent either.</t>
          </li>
        </ul>
        <t>A management message is therefore reduced to the Rule ID, a few bits of CoAP
header and the CORECONF payload.</t>
        <section anchor="rule-status-and-guard-period">
          <name>Rule Status and Guard Period</name>
          <t>The "<tt>rule-status</tt>" leaf is managed locally by each node, which rewrites it
according to the protocol state of the rule (see <xref target="sec-rule-status"/> and
<xref target="sec-fsm"/>). It is never set by the other node: a value received in the
creation of a rule is ignored, and a request whose target is "rule-status" is
refused as any modification of a rule (see <xref target="sec-ipatch"/>). In particular, a
node never gets an <tt>origin</tt> rule from the other node. It can be read with FETCH,
for instance to check the state of the rules after a restart.</t>
          <t>The duration of the Guard period is not a property of a single rule. It is
carried by the "guard-period" container of the top-level "context" container, a
sibling of "schc", present when the "management" feature is supported. It
contains the two leaves "ticks-duration" and "ticks-numbers", and applies to the
whole SCHC context.</t>
        </section>
        <section anchor="yang-tree-representation">
          <name>YANG tree representation</name>
          <t>The YANG tree represents the Rule structure as defined in
<xref target="I-D.toutain-schc-rfc9363bis"/>. The deprecated "compression" case (entries
keyed by "field-id", "field-position" and "direction-indicator") is not used for
management and is not shown:</t>
          <figure anchor="Fig-tree">
            <name>YANG Data Model used for CORECONF</name>
            <artwork><![CDATA[
module: ietf-schc
  +--rw context {management}?
  |  +--rw guard-period
  |     +--rw ticks-duration?   uint8
  |     +--rw ticks-numbers?    uint16
  +--rw schc
     +--rw rule* [rule-id-value rule-id-length]
        +--rw rule-id-value     uint32
        +--rw rule-id-length    uint8
        +--rw rule-nature       nature-type
        +--rw rule-status?      status-type {management}?
        +--rw (nature)?
           +--:(fragmentation) {fragmentation}?
           | ...
           +--:(compression-universal) {compression or management}?
              +--rw entry-universal* [entry-index]
              |  ...
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="set-of-rules-editing">
        <name>Set of Rules Editing</name>
        <t>For clarity reasons, this document uses YANG identifiers, written in quotes and
in a fixed-width font, instead of SID values. Each entry in the YANG tree has a
corresponding SID number. Each level of the hierarchy is accessible through one
or several keys. For example, to access the hierarchy under "<tt>rule</tt>",
"<tt>rule-id-value</tt>" and "<tt>rule-id-length</tt>" must be specified.</t>
        <section anchor="fetch">
          <name>FETCH</name>
          <t>As mentioned in <xref target="I-D.ietf-core-comi"/>, FETCH requests are used to retrieve at
least one instance-value.</t>
          <t>Example: Fetching the field-id, TV, MO and CDA of the entry 0 (fid-ipv6-version)
from Rule 6/3.</t>
          <artwork><![CDATA[
REQ: FETCH /c
     (Content-Format: application/yang-identifiers+cbor-seq)
["field-id",           6, 3, 0],
["target-value",       6, 3, 0],
["matching-operator",  6, 3, 0],
["comp-decomp-action", 6, 3, 0]

RES: 2.05 Content
     (Content-Format: application/yang-instances+cbor-seq)
{
  {"field-id"           : "fid-ipv6-version"},
  {"target-value"       : [{"index" : 0, "value" : h"06"}]},
  {"matching-operator"  : "mo-equal"},
  {"comp-decomp-action" : "cda-not-sent"}
}
]]></artwork>
        </section>
        <section anchor="sec-ipatch">
          <name>iPATCH</name>
          <t>iPATCH can only be used to create a complete rule or to delete a rule. It is
forbidden to modify, add or delete an element of an existing rule (an entry, a
Target Value, a Matching Operator, etc.), since a rule cannot be changed without
changing its rule ID (see <xref target="sec-rule-status"/>). The creation and the deletion
follow the rule status procedures (<xref target="sec-rule-status"/>).</t>
          <section anchor="creating-a-rule">
            <name>Creating a rule</name>
            <t>The target of the iPATCH request is the rule, identified by its keys
"<tt>rule-id-value</tt>" and "<tt>rule-id-length</tt>", and the value is the complete rule:
its nature and all its entries. The model requires that the indices of the lists
of the rule ("<tt>entry-index</tt>" and "<tt>index</tt>") be strictly incremental. CORECONF
does not enforce it; it relies on the node that builds the rule. If the rule
already exists, the request follows the idempotent creation (see
<xref target="sec-idempotent-creation"/>). The "<tt>rule-status</tt>" of the rule is not part of the
request: if it is present, it is ignored, since each node sets the status of its
rules according to its own protocol state.</t>
            <t>Example: creation of Rule 9/4, whose first entry is the IPv6 Version.</t>
            <artwork><![CDATA[
  REQ: iPATCH /c
       (Content-Format: application/yang-instances+cbor-seq)
  {
    ["rule", 9, 4] : {
        "rule-nature" : "nature-compression",
        "entry-universal" : [
          { "entry-index"         : 0,
            "field-id"            : "fid-ipv6-version",
            "field-length"        : 4,
            "field-position"      : 1,
            "direction-indicator" : "di-bidirectional",
            "target-value"        : [{"index" : 0, "value" : h"06"}],
            "matching-operator"   : "mo-equal",
            "comp-decomp-action"  : "cda-not-sent" },
          ...
        ]
    }
  }

  RES: 2.04 Changed
]]></artwork>
          </section>
          <section anchor="deleting-a-rule">
            <name>Deleting a rule</name>
            <t>The target of the iPATCH request is the rule, and the value is null.</t>
            <t>Example: deletion of Rule 7/8.</t>
            <artwork><![CDATA[
  REQ: iPATCH /c
       (Content-Format: application/yang-instances+cbor-seq)
  {
    ["rule", 7, 8]: null
  }

  RES: 2.04 Changed
]]></artwork>
            <t>An <tt>origin</tt> rule, such as a management rule, cannot be deleted: a deletion whose
target is an <tt>origin</tt> rule is refused with 4.03 Forbidden.</t>
            <t>Deleting the top-level object (<tt>ietf-schc:schc</tt>) is refused with 4.03 Forbidden.
To return to the initial SoR, a node uses the "reset-context" RPC (see
<xref target="sec-reset-rpc"/>), which keeps the <tt>origin</tt> rules, so that the management of
the SCHC instance remains possible.</t>
          </section>
          <section anchor="forbidden-requests">
            <name>Forbidden requests</name>
            <t>A node receiving an iPATCH request whose target is an element of a rule, such as
an entry, a leaf or a list element, MUST refuse it with 4.03 Forbidden, whether
this element exists or not.</t>
            <t>Examples:</t>
            <ul spacing="normal">
              <li>
                <t>Change of the Matching Operator and the CDA of the entry 0 of Rule 6/3:</t>
              </li>
            </ul>
            <artwork><![CDATA[
  REQ: iPATCH /c
       (Content-Format: application/yang-instances+cbor-seq)
  {
    ["entry-universal", 6, 3, 0] : {
        {"delta_matching-operator": "mo-ignore"},
        {"delta_comp-decomp-action": "cda-value-sent"}
    }
  }

  RES: 4.03 Forbidden
]]></artwork>
            <ul spacing="normal">
              <li>
                <t>Addition of a Target Value to the entry 3 of Rule 0/3:</t>
              </li>
            </ul>
            <artwork><![CDATA[
  REQ: iPATCH /c
       (Content-Format: application/yang-instances+cbor-seq)
  {
    ["target-value", 0, 3, 3] : [
        {delta_index : 0, delta_value : h"50"}
    ]
  }

  RES: 4.03 Forbidden
]]></artwork>
            <ul spacing="normal">
              <li>
                <t>Deletion of the "<tt>rule-id-value</tt>" key of Rule 0/3:</t>
              </li>
            </ul>
            <artwork><![CDATA[
  REQ: iPATCH /c
       (Content-Format: application/yang-instances+cbor-seq)
  {
    ["rule-id-value", 0, 3]: null
  }

  RES: 4.03 Forbidden
]]></artwork>
          </section>
        </section>
        <section anchor="sec-post-method">
          <name>RPC invocation (POST)</name>
          <t>As described in <xref target="I-D.ietf-core-comi"/>, the POST CoAP method is used to trigger
Remote Procedure Calls (RPC) and other actions within a SCHC endpoint. Thus, a
POST message can be sent to invoke a specific RPC on the remote endpoint.
Details of the supported RPCs and their behavior are defined in Section
<xref target="sec-rpcs"/>.</t>
          <t>This document defines the "<tt>duplicate-rule</tt>" and "<tt>reset-context</tt>" RPCs, in the
"<tt>ietf-schc-mgmt-basic</tt>" YANG module (<xref target="sec-yang-module"/>). Other RPCs, adapted to
the traffic in order to optimize the rule management for its patterns, may be
defined by other documents, in other YANG modules.</t>
          <t>The input parameters of an RPC acting on some rules MUST provide the rule IDs of
the rules on which the RPC is applied, so that both nodes know the rules
concerned by the rule status procedures (<xref target="sec-rule-status"/>). An RPC acting on
all the rules that are not <tt>origin</tt>, such as "reset-context", has no rule ID in
its input. The output of the RPC MUST provide a status summarizing the execution
of the RPC.</t>
          <t>RPCs and actions are defined in a YANG Data Model with optional associated
inputs and outputs. The request payload contains the RPC input map, if any. The
response payload contains the corresponding output map, if any.</t>
        </section>
      </section>
      <section anchor="management-errors">
        <name>Management Errors</name>
        <t>There are different levels of error detection:</t>
        <ul spacing="normal">
          <li>
            <t>CORECONF Errors: these errors are directly generated at the CORECONF-managed
context level. For instance, retrieving a value with a wrong key.</t>
          </li>
          <li>
            <t>YANG validation errors: the data model does not conform with constraints such
as "must" or "mandatory". This check is optional, since it may require a lot
of resources on a device.</t>
          </li>
          <li>
            <t>SCHC errors: errors on the Data Model that cannot be detected at the YANG
level. For example, overlapping rule IDs.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-rpcs">
      <name>RPCs</name>
      <t>A YANG "RPC" is an operation that may be invoked within a SCHC endpoint and
triggers a specified behavior. Within the context of rule management, RPCs are
used to perform actions on the set of rules and may also be used for other
operations, such as rebooting the remote device endpoint.</t>
      <t>Each RPC resource has specific inputs and outputs, and may be invoked remotely
via a POST CoAP message, as described in Section <xref target="sec-post-method"/>.</t>
      <section anchor="sec-duplicate-rule-rpc">
        <name>Duplicate Rule</name>
        <t>To add a new rule, instead of using the iPATCH method with a full rule
definition (especially when the new rule is similar to an existing one), the
RECOMMENDED approach is to use the <tt>duplicate-rule</tt> RPC. This operation copies
an existing rule ("from") into a new rule ("to"), and can optionally include an
iPATCH sequence specifying modifications to apply to the duplicated rule. The
output returns a status, an enumeration conveying the result of the operation:
"success-with-validation" (0), "success-not-validated" (1),
"to-rule-already-exists" (-1), "from-rule-not-found" (-2) or "invalid-ipatch"
(-3).</t>
        <t>The "from" rule can be an <tt>origin</tt> rule, except a management rule: this is the
usual way to specialize a generic rule of the initial SoR. The new rule is
created as any rule created by management (see <xref target="sec-rule-status"/>), and is
never an <tt>origin</tt> rule.</t>
        <t>Represented as a tree:</t>
        <artwork><![CDATA[
module: ietf-schc-mgmt-basic

  rpcs:
    +---x duplicate-rule {schc:management}?
       +---w input
       |  +---w from
       |  |  +---w rule-id-value?    uint32
       |  |  +---w rule-id-length?   uint8
       |  +---w to
       |  |  +---w rule-id-value?    uint32
       |  |  +---w rule-id-length?   uint8
       |  +---w ipatch-sequence?   binary
       +--ro output
          +--ro status?   enumeration
]]></artwork>
        <t>This mechanism reduces management overhead and addresses the issue of adapting
to variable application traffic. For example, a SCHC instance may begin with a
generic rule with low compression rate, but progressively make rule duplications
to make more specialized rules that better match the observed traffic patterns,
acheiving higher compression rates and thus adapting the rule set dynamically to
the session characteristics.</t>
        <t>Example:</t>
        <ul spacing="normal">
          <li>
            <t>Representation with identifiers for clarity. Delta-encoded SIDs are used in a
real request. In the <tt>ipatch-sequence</tt>, 14 is the <tt>entry-index</tt> of the
target entry in the new Rule, and 0 is the <tt>index</tt> of its target value.</t>
          </li>
        </ul>
        <artwork><![CDATA[
REQ:  POST </c>
      (Content-Format: application/yang-instances+cbor-seq)

{
  "/ietf-schc-mgmt-basic:duplicate-rule":
  {
    "input/from/rule-id-value": 8,
    "input/from/rule-id-length": 4,
    "input/to/rule-id-value": 9,
    "input/to/rule-id-length": 4,
    "input/ipatch-sequence":
      [
        "/ietf-schc:schc/rule/entry-universal/target-value/value", 14, 0,
      ]: b"\x14\x00"
  }
}

RES:  2.04 Changed
      (Content-Format: application/yang-instances+cbor-seq)

{
  "/ietf-schc-mgmt-basic:duplicate-rule":
  {
    "output/status": "success-with-validation",
  }
}
]]></artwork>
        <section anchor="error-handling">
          <name>Error Handling</name>
          <t>The <tt>duplicate-rule</tt> operation SHALL be atomic. If an error occurs during either
stage of the process (rule duplication or subsequent modification through the
iPATCH sequence) the SCHC endpoint MUST revert any partial changes to restore
the previous state. The RPC output MUST indicate the failure with one of the
negative status values ("to-rule-already-exists", "from-rule-not-found" or
"invalid-ipatch"), to signal that the duplication did not take place as
requested. The precise error code and diagnostic message are
implementation-dependent but SHOULD provide enough context for the management
entity to identify the cause of failure.</t>
        </section>
      </section>
      <section anchor="sec-reset-rpc">
        <name>Reset Context</name>
        <t>The "reset-context" RPC brings the SoR of both nodes back to its initial
content: only the <tt>origin</tt> rules are kept, and all the rules created by
management are removed. It has no input, and its output is a status.</t>
        <t>Represented as a tree:</t>
        <artwork><![CDATA[
module: ietf-schc-mgmt-basic

  rpcs:
    +---x reset-context {schc:management}?
       +--ro output
          +--ro status?   enumeration
]]></artwork>
        <t>The reset applies to every rule that is not <tt>origin</tt>, whatever its status, and
to every rule ID that is not the rule ID of an <tt>origin</tt> rule, even if it is
absent from the SoR. It follows the deletion procedure (<xref target="sec-rule-deletion"/>):</t>
        <ul spacing="normal">
          <li>
            <t>the node that invokes the RPC applies the reset when it sends the request:
these rules and rule IDs become <tt>invalid</tt>, its creations and deletions in
progress are stopped, and its Guard period starts when it receives the
response;</t>
          </li>
          <li>
            <t>the node that receives the request applies the reset at the reception: these
rules and rule IDs become <tt>invalid</tt>, its creations in progress are stopped,
its Guard period starts, and it answers 2.04 Changed with the "success"
status. If it is itself waiting for the acknowledgement of its own deletion or
reset, its Guard period starts when it receives this acknowledgement;</t>
          </li>
          <li>
            <t>during the Guard period, a creation is refused with 4.09 Conflict (see
<xref target="sec-idempotent-creation"/>), and the SCHC PDUs carrying a rule ID that is not
the rule ID of an <tt>origin</tt> rule are dropped. When the Guard period is over,
these rule IDs become <tt>free</tt>: the SoR only contains the <tt>origin</tt> rules;</t>
          </li>
          <li>
            <t>the <tt>origin</tt> rules are not affected and remain usable during the whole
procedure, since they are identical on both nodes. In particular, the
management traffic, compressed with the management rules, is not
interrupted.</t>
          </li>
        </ul>
        <t>A reset concerns all the rule IDs: a node does not send it while another
management request of this node is in progress, and does not send another
management request before the reset is acknowledged. As a deletion, the reset is
idempotent: the node repeats the request until it receives the response, a copy
of the request is removed by the deduplication (<xref target="sec-rule-deletion"/>), and two
crossing resets lead to the same SoR.</t>
        <t>Applying the reset on the invoking node only when it receives the response would
not be safe. The other node, which has already applied the reset, could create a
rule whose creation reaches the invoking node before the response: the invoking
node would accept it, then remove it when the response arrives, while the rule
stays <tt>valid</tt> on the other node. Applying the reset when the request is sent
makes the invoking node refuse such a creation with 4.09 Conflict, and the other
node then deletes its <tt>candidate</tt> rule (see <xref target="sec-idempotent-creation"/>).</t>
        <t>Example:</t>
        <artwork><![CDATA[
REQ:  POST </c>
      (Content-Format: application/yang-instances+cbor-seq)

{
  "/ietf-schc-mgmt-basic:reset-context": null
}

RES:  2.04 Changed
      (Content-Format: application/yang-instances+cbor-seq)

{
  "/ietf-schc-mgmt-basic:reset-context":
  {
    "output/status": "success"
  }
}
]]></artwork>
        <t>A node that is not allowed to reset the SoR of the other node refuses the
request with 4.03 Forbidden.</t>
      </section>
    </section>
    <section anchor="sec-protocols">
      <name>Protocol Stack</name>
      <t>The management inside the instance has its own IPv6 stack, independent of the
application traffic. IPv6/UDP/CoAP is used to allow the implementation of the
CORECONF interface. No other kind of traffic is allowed.</t>
      <t>The end-point acting as a Device has the IPv6 address fe80::1/64 and the other
end, the Core, is assigned the address fe80::2/64.</t>
      <t>Both endpoints implement CoAP client and server capabilities, that is, both
endpoints are capable of sending requests and processing responses. The server
uses port 5683 and the client 3865.</t>
      <section anchor="sec-mgmt-rules">
        <name>Management Compression Rules</name>
        <t>To enable CORECONF-based context and rule management over SCHC, a set of
dedicated management rules is defined. These rules are used exclusively for
management traffic, that is, packets exchanged between SCHC endpoints for the
purpose of managing rules, not for application data transfer.</t>
        <t>This specification introduces four rules, allowing bidirectional operation and
fine control over management capabilities. Each rule defines the compression
behavior for management messages in its direction, distinguishing between
requests and responses.</t>
        <ul spacing="normal">
          <li>
            <t>M1: the requests sent by the Device (Uplink), and their responses carrying a
payload (Downlink).</t>
          </li>
          <li>
            <t>M2: the responses without payload to the requests sent by the Device
(Downlink).</t>
          </li>
          <li>
            <t>M3: mirrors M1 for the requests sent by the Core (Downlink), and their
responses carrying a payload (Uplink).</t>
          </li>
          <li>
            <t>M4: mirrors M2 for the responses without payload to the requests sent by the
Core (Uplink).</t>
          </li>
        </ul>
        <t>Implementations MAY choose to support only a subset of these rules, depending on
their operational or security requirements. For instance, an implementation may
include only M3 and M4 to permit management operations exclusively from one
endpoint, effectively preventing unsolicited management requests in the other
direction. In this sense, the absence of some management rules in the SoR
implicitly acts as a policy mechanism or safeguard for rule management
operations.</t>
        <t>Management rules are protected elements within the SoR. They define the
operation of the management channel itself: they are <tt>origin</tt> rules (see
<xref target="sec-rule-status"/>), which cannot be modified or deleted, and in addition they
MUST NOT be duplicated. Any attempt to apply a modification, duplication or
deletion request to a management rule MUST result in a 4.03 Forbidden error
response. This restriction ensures the integrity and stability of the SCHC
management process, which is not interrupted by a reset of the SoR
(<xref target="sec-reset-rpc"/>).</t>
        <t>The four management rules are given in <xref target="sec-mgmt-rules-tables"/>.</t>
      </section>
    </section>
    <section anchor="oscore">
      <name>OSCORE</name>
      <section anchor="compression-rules">
        <name>Compression Rules</name>
      </section>
    </section>
    <section anchor="dtls">
      <name>DTLS</name>
      <section anchor="compression-rules-1">
        <name>Compression Rules</name>
      </section>
    </section>
    <section anchor="sec-yang-module">
      <name>YANG Module</name>
      <t>The "ietf-schc" module, including the "management" feature, the "rule-status"
leaf and the "context" container, is defined in <xref target="I-D.toutain-schc-rfc9363bis"/>
(revision 2026-10-27). This document defines the "ietf-schc-mgmt-basic" module,
which imports it and defines the "duplicate-rule" RPC
(<xref target="sec-duplicate-rule-rpc"/>) and the "reset-context" RPC (<xref target="sec-reset-rpc"/>).
The RPCs are only available when the "management" feature of "ietf-schc" is
supported.</t>
      <t>The tree of the module, following the notation of <xref target="RFC8340"/>, is:</t>
      <figure anchor="Fig-tree-rpc">
        <name>Tree of the ietf-schc-mgmt-basic YANG module</name>
        <artwork><![CDATA[
module: ietf-schc-mgmt-basic

  rpcs:
    +---x duplicate-rule {schc:management}?
    |  +---w input
    |  |  +---w from
    |  |  |  +---w rule-id-value?    uint32
    |  |  |  +---w rule-id-length?   uint8
    |  |  +---w to
    |  |  |  +---w rule-id-value?    uint32
    |  |  |  +---w rule-id-length?   uint8
    |  |  +---w ipatch-sequence?   binary
    |  +--ro output
    |     +--ro status?   enumeration
    +---x reset-context {schc:management}?
       +--ro output
          +--ro status?   enumeration
]]></artwork>
      </figure>
      <figure anchor="Fig-yang-mgmt">
        <name>ietf-schc-mgmt-basic YANG Module</name>
        <sourcecode type="yang" name="ietf-schc-mgmt-basic@2026-10-29.yang" markers="true"><![CDATA[
module ietf-schc-mgmt-basic {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-schc-mgmt-basic";
  prefix schc-bmgmt;

  import ietf-schc {
    prefix schc;
    reference
      "draft-toutain-schc-rfc9363bis A YANG Data Model for Static
       Context Header Compression (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>";
  description
    "Copyright (c) 2026 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 Revised 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 defines the basic management operations of the
     SCHC Rules with CORECONF: the 'duplicate-rule' and
     'reset-context' RPCs.";

  revision 2026-10-29 {
    description
      "Initial version, with the 'duplicate-rule' RPC moved from the
       'ietf-schc' module, and the 'reset-context' RPC.";
    reference
      "draft-toutain-schc-coreconf-management CORECONF Rule
       management for SCHC";
  }

  rpc duplicate-rule {
    if-feature "schc:management";
    description
      "Duplicate an existing Rule, given by 'from', into a new Rule,
       given by 'to', which does not exist yet. The new Rule may be
       updated with the CORECONF iPATCH payload carried in
       'ipatch-sequence' before it is added to the Set of Rules.
       The 'from' Rule can be an origin Rule, except a management
       Rule. The new Rule is created as any Rule created by
       management, and is never an origin Rule.";
    input {
      container from {
        description
          "Rule ID of the existing Rule to duplicate.";
        uses schc:rule-id-type;
      }
      container to {
        description
          "Rule ID of the new Rule.";
        uses schc:rule-id-type;
      }
      leaf ipatch-sequence {
        type binary;
        description
          "CBOR sequence of a CORECONF iPATCH payload, applied to the
           new Rule before it is added. This parameter is optional;
           when it is absent, the new Rule is an exact copy.";
      }
    }
    output {
      leaf status {
        type enumeration {
          enum success-with-validation {
            value 0;
            description
              "The new Rule has been created and validated.";
          }
          enum success-not-validated {
            value 1;
            description
              "The new Rule has been created, but not validated
               yet.";
          }
          enum to-rule-already-exists {
            value -1;
            description
              "The Rule ID given by 'to' already exists.";
          }
          enum from-rule-not-found {
            value -2;
            description
              "The Rule ID given by 'from' does not exist.";
          }
          enum invalid-ipatch {
            value -3;
            description
              "The 'ipatch-sequence' cannot be applied to the new
               Rule.";
          }
        }
        description
          "Result of the duplication. A negative value indicates that
           the duplication did not take place.";
      }
    }
  }

  rpc reset-context {
    if-feature "schc:management";
    description
      "Reset the Set of Rules to its initial content: only the
       origin Rules are kept. Every other Rule, whatever its status,
       becomes invalid, and its RuleID becomes free when the guard
       period is over. The node that invokes the RPC applies the
       reset when it sends the request, the node that receives it
       applies the reset when it receives the request.";
    output {
      leaf status {
        type enumeration {
          enum success {
            value 0;
            description
              "The reset has been applied.";
          }
        }
        description
          "Result of the reset. A reset that cannot be applied is
           refused with a CoAP error code.";
      }
    }
  }
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="sec-security">
      <name>Security Considerations</name>
      <t>The management of the SoR is restricted to the management rules, and the SCHC
Packets using them MUST be protected by the underlying layer, OSCORE, or DTLS
(<xref target="sec-mgmt-stack"/>). The <tt>origin</tt> rules, including the management rules,
cannot be modified or deleted, and the management rules cannot be duplicated
(<xref target="sec-rule-status"/>, <xref target="sec-mgmt-rules"/>). The <tt>origin</tt> status is only set by
provisioning: a node cannot make a rule permanent on the other node.</t>
      <t>The "ietf-schc-mgmt-basic" YANG module defines two RPCs that change the SoR:</t>
      <ul spacing="normal">
        <li>
          <t>"duplicate-rule" creates a Rule. Creating a Rule changes the way the packets
are compressed, decompressed, fragmented, and reassembled, and an
unauthorized invocation could disturb or redirect the traffic of the Device;</t>
        </li>
        <li>
          <t>"reset-context" removes all the Rules created by management. An unauthorized
or repeated invocation would prevent the use of these Rules, and degrade the
compression to the <tt>origin</tt> rules, but cannot remove the management rules.</t>
        </li>
      </ul>
      <t>These RPCs are only invoked through the management rules, and their access
SHOULD be restricted to the authorized management nodes, for instance using the
NETCONF Access Control Model <xref target="RFC8341"/> or an equivalent mechanism.</t>
    </section>
    <section anchor="sec-iana">
      <name>IANA Considerations</name>
      <section anchor="uri-registration">
        <name>URI Registration</name>
        <t>IANA is requested to register the following URI in the "ns" subregistry of the
"IETF XML Registry" <xref target="RFC3688"/>:</t>
        <dl>
          <dt>URI:</dt>
          <dd>
            <t>urn:ietf:params:xml:ns:yang:ietf-schc-mgmt-basic</t>
          </dd>
          <dt>Registrant Contact:</dt>
          <dd>
            <t>The IESG.</t>
          </dd>
          <dt>XML:</dt>
          <dd>
            <t>N/A; the requested URI is an XML namespace.</t>
          </dd>
        </dl>
      </section>
      <section anchor="yang-module-name-registration">
        <name>YANG Module Name Registration</name>
        <t>IANA is requested to register the following YANG module in the "YANG Module
Names" registry <xref target="RFC6020"/>:</t>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t>ietf-schc-mgmt-basic</t>
          </dd>
          <dt>Namespace:</dt>
          <dd>
            <t>urn:ietf:params:xml:ns:yang:ietf-schc-mgmt-basic</t>
          </dd>
          <dt>Prefix:</dt>
          <dd>
            <t>schc-bmgmt</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>RFC XXXX</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </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>
        <reference anchor="I-D.toutain-schc-rfc9363bis">
          <front>
            <title>A YANG Data Model for Static Context Header Compression (SCHC)</title>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Acklio</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>Institut MINES TELECOM; IMT Atlantique</organization>
            </author>
            <date day="30" month="October" year="2026"/>
            <abstract>
              <t>   This document describes a YANG data model for the Static Context
   Header Compression (SCHC) compression and fragmentation Rules.

   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.

   This document updates the SCHC data model defined in RFC 9363 to take
   into account the evolution of SCHC usages.  It introduces a flexible
   way to describe protocol options, such as the CoAP options, and
   includes the identifiers needed for the compression of ICMPv6 and
   features for the management of the Rules.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-toutain-schc-rfc9363bis-00"/>
        </reference>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="I-D.ietf-core-comi">
          <front>
            <title>CoAP Management Interface (CORECONF)</title>
            <author fullname="Michel Veillette" initials="M." surname="Veillette">
              <organization>Trilliant Networks Inc.</organization>
            </author>
            <author fullname="Peter Van der Stok" initials="P." surname="Van der Stok">
              <organization>consultant</organization>
            </author>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Andy Bierman" initials="A." surname="Bierman">
              <organization>YumaWorks</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document describes a network management interface for
   constrained devices and networks, called CoAP Management Interface
   (CORECONF).  The Constrained Application Protocol (CoAP) is used to
   access datastore and data node resources specified in YANG, or SMIv2
   converted to YANG.  CORECONF uses the YANG to CBOR mapping and
   converts YANG identifier strings to numeric identifiers for payload
   size reduction.  CORECONF extends the set of YANG based protocols,
   NETCONF and RESTCONF, with the capability to manage constrained
   devices and networks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-comi-21"/>
        </reference>
        <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="RFC0768">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC768"/>
        </reference>
        <reference anchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <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-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="I-D.toutain-schc-sid-allocation">
          <front>
            <title>SCHC Sid Allocation</title>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <author fullname="Laurent Toutain" initials="L." surname="Toutain">
              <organization>Institut MINES TELECOM; IMT Atlantique</organization>
            </author>
            <date day="7" month="July" year="2023"/>
            <abstract>
              <t>   YANG SID (Schema Item iDentifier) is a method to identify YANG items
   in constrained environments.  The YANG Data Model for SCHC needs to
   use smaller values and reduce the distance between two sections to
   minimize deltas' size and assure header compression performance.
   Keeping compact values for SCHC can be done when data and identity
   are differentiated.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-toutain-schc-sid-allocation-01"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8341">
          <front>
            <title>Network Configuration Access Control Model</title>
            <author fullname="A. Bierman" initials="A." surname="Bierman"/>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability. There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content. This document defines such an access control model.</t>
              <t>This document obsoletes RFC 6536.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="91"/>
          <seriesInfo name="RFC" value="8341"/>
          <seriesInfo name="DOI" value="10.17487/RFC8341"/>
        </reference>
      </references>
    </references>
    <?line 1466?>

<section anchor="sec-mgmt-rules-tables">
      <name>Management Rules</name>
      <t>This appendix gives the four management rules described in <xref target="sec-mgmt-rules"/>.
They follow the management protocol stack (<xref target="sec-mgmt-stack"/>):</t>
      <ul spacing="normal">
        <li>
          <t>the Device has the IPv6 address fe80::1 and the Core the address fe80::2;</t>
        </li>
        <li>
          <t>the CoAP server uses the UDP port 5683 and the CoAP client the port 3865. In
the exchanges initiated by the Device (M1 and M2), its port is 3865; in those
initiated by the Core (M3 and M4), the port of the Device is 5683;</t>
        </li>
        <li>
          <t>the requests are Confirmable and have no Token. They use the methods FETCH,
iPATCH and POST on the datastore resource "c". The responses are piggybacked
in the Acknowledgement, and the error responses have no payload;</t>
        </li>
        <li>
          <t>OSCORE is not used.</t>
        </li>
      </ul>
      <t>In the tables, "ids" stands for the Content-Format
application/yang-identifiers+cbor-seq (FETCH requests), and "inst" for
application/yang-instances+cbor-seq (iPATCH and POST requests, and responses
carrying a payload). The CoAP codes are given as numbers: 2 (POST), 5 (FETCH), 7
(iPATCH), 68 (2.04 Changed), 69 (2.05 Content), 128 (4.00 Bad Request), 129
(4.01 Unauthorized), 131 (4.03 Forbidden), 132 (4.04 Not Found), 137 (4.09
Conflict) and 160 (5.00 Internal Server Error).</t>
      <figure anchor="Fig-M1">
        <name>Management Rule 1</name>
        <artwork><![CDATA[
 +---------------------------------------------------------------------+
 |RuleID M1                                                            |
 +-------------------+--+--+--+-------------+-------------+------------+
 |        FID        |FL|FP|DI|     TV      |     MO      |    CDA     |
 +-------------------+--+--+--+-------------+-------------+------------+
 |IPv6 Version       |4 |1 |Bi|6            |equal        |not-sent    |
 |IPv6 Traffic Class |8 |1 |Bi|1            |equal        |not-sent    |
 |IPv6 Flow Label    |20|1 |Bi|144470       |equal        |not-sent    |
 |IPv6 Length        |16|1 |Bi|             |ignore       |compute-*   |
 |IPv6 Next Header   |8 |1 |Bi|17           |equal        |not-sent    |
 |IPv6 Hop Limit     |8 |1 |Bi|64           |equal        |not-sent    |
 |IPv6 DevPrefix     |64|1 |Bi|fe80::/64    |equal        |not-sent    |
 |IPv6 DevIID        |64|1 |Bi|::1          |equal        |not-sent    |
 |IPv6 AppPrefix     |64|1 |Bi|fe80::/64    |equal        |not-sent    |
 |IPv6 AppIID        |64|1 |Bi|::2          |equal        |not-sent    |
 +===================+==+==+==+=============+=============+============+
 |UDP DevPort        |16|1 |Bi|3865         |equal        |not-sent    |
 |UDP AppPort        |16|1 |Bi|5683         |equal        |not-sent    |
 |UDP Length         |16|1 |Bi|             |ignore       |compute-*   |
 |UDP Checksum       |16|1 |Bi|             |ignore       |compute-*   |
 +===================+==+==+==+=============+=============+============+
 |CoAP Version       |2 |1 |Bi|1            |equal        |not-sent    |
 |CoAP Type          |2 |1 |Up|0            |equal        |not-sent    |
 |CoAP Type          |2 |1 |Dw|2            |equal        |not-sent    |
 |CoAP TKL           |4 |1 |Bi|0            |equal        |not-sent    |
 |CoAP Code          |8 |1 |Up|[2, 5, 7]    |match-mapping|mapping-sent|
 |CoAP Code          |8 |1 |Dw|[68, 69]     |match-mapping|mapping-sent|
 |CoAP MID           |16|1 |Bi|0            |MSB(9)       |LSB         |
 |CoAP Uri-Path      |8 |1 |Up|c            |equal        |not-sent    |
 |CoAP Content-Format|8 |1 |Up|[ids, inst]  |match-mapping|mapping-sent|
 |CoAP Content-Format|8 |1 |Dw|inst         |equal        |not-sent    |
 +===================+==+==+==+=============+=============+============+
]]></artwork>
      </figure>
      <figure anchor="Fig-M2">
        <name>Management Rule 2</name>
        <artwork><![CDATA[
 +---------------------------------------------------------------------+
 |RuleID M2                                                            |
 +-------------------+--+--+--+-------------+-------------+------------+
 |        FID        |FL|FP|DI|     TV      |     MO      |    CDA     |
 +-------------------+--+--+--+-------------+-------------+------------+
 |IPv6 Version       |4 |1 |Bi|6            |equal        |not-sent    |
 |IPv6 Traffic Class |8 |1 |Bi|1            |equal        |not-sent    |
 |IPv6 Flow Label    |20|1 |Bi|144470       |equal        |not-sent    |
 |IPv6 Length        |16|1 |Bi|             |ignore       |compute-*   |
 |IPv6 Next Header   |8 |1 |Bi|17           |equal        |not-sent    |
 |IPv6 Hop Limit     |8 |1 |Bi|64           |equal        |not-sent    |
 |IPv6 DevPrefix     |64|1 |Bi|fe80::/64    |equal        |not-sent    |
 |IPv6 DevIID        |64|1 |Bi|::1          |equal        |not-sent    |
 |IPv6 AppPrefix     |64|1 |Bi|fe80::/64    |equal        |not-sent    |
 |IPv6 AppIID        |64|1 |Bi|::2          |equal        |not-sent    |
 +===================+==+==+==+=============+=============+============+
 |UDP DevPort        |16|1 |Bi|3865         |equal        |not-sent    |
 |UDP AppPort        |16|1 |Bi|5683         |equal        |not-sent    |
 |UDP Length         |16|1 |Bi|             |ignore       |compute-*   |
 |UDP Checksum       |16|1 |Bi|             |ignore       |compute-*   |
 +===================+==+==+==+=============+=============+============+
 |CoAP Version       |2 |1 |Bi|1            |equal        |not-sent    |
 |CoAP Type          |2 |1 |Dw|2            |equal        |not-sent    |
 |CoAP TKL           |4 |1 |Bi|0            |equal        |not-sent    |
 |CoAP Code          |8 |1 |Dw|[68, 128,    |match-mapping|mapping-sent|
 |                   |  |  |  | 129, 131,   |             |            |
 |                   |  |  |  | 132, 137,   |             |            |
 |                   |  |  |  | 160]        |             |            |
 |CoAP MID           |16|1 |Bi|0            |MSB(9)       |LSB         |
 +===================+==+==+==+=============+=============+============+
]]></artwork>
      </figure>
      <figure anchor="Fig-M3">
        <name>Management Rule 3</name>
        <artwork><![CDATA[
 +---------------------------------------------------------------------+
 |RuleID M3                                                            |
 +-------------------+--+--+--+-------------+-------------+------------+
 |        FID        |FL|FP|DI|     TV      |     MO      |    CDA     |
 +-------------------+--+--+--+-------------+-------------+------------+
 |IPv6 Version       |4 |1 |Bi|6            |equal        |not-sent    |
 |IPv6 Traffic Class |8 |1 |Bi|1            |equal        |not-sent    |
 |IPv6 Flow Label    |20|1 |Bi|144470       |equal        |not-sent    |
 |IPv6 Length        |16|1 |Bi|             |ignore       |compute-*   |
 |IPv6 Next Header   |8 |1 |Bi|17           |equal        |not-sent    |
 |IPv6 Hop Limit     |8 |1 |Bi|64           |equal        |not-sent    |
 |IPv6 DevPrefix     |64|1 |Bi|fe80::/64    |equal        |not-sent    |
 |IPv6 DevIID        |64|1 |Bi|::1          |equal        |not-sent    |
 |IPv6 AppPrefix     |64|1 |Bi|fe80::/64    |equal        |not-sent    |
 |IPv6 AppIID        |64|1 |Bi|::2          |equal        |not-sent    |
 +===================+==+==+==+=============+=============+============+
 |UDP DevPort        |16|1 |Bi|5683         |equal        |not-sent    |
 |UDP AppPort        |16|1 |Bi|3865         |equal        |not-sent    |
 |UDP Length         |16|1 |Bi|             |ignore       |compute-*   |
 |UDP Checksum       |16|1 |Bi|             |ignore       |compute-*   |
 +===================+==+==+==+=============+=============+============+
 |CoAP Version       |2 |1 |Bi|1            |equal        |not-sent    |
 |CoAP Type          |2 |1 |Dw|0            |equal        |not-sent    |
 |CoAP Type          |2 |1 |Up|2            |equal        |not-sent    |
 |CoAP TKL           |4 |1 |Bi|0            |equal        |not-sent    |
 |CoAP Code          |8 |1 |Dw|[2, 5, 7]    |match-mapping|mapping-sent|
 |CoAP Code          |8 |1 |Up|[68, 69]     |match-mapping|mapping-sent|
 |CoAP MID           |16|1 |Bi|0            |MSB(9)       |LSB         |
 |CoAP Uri-Path      |8 |1 |Dw|c            |equal        |not-sent    |
 |CoAP Content-Format|8 |1 |Dw|[ids, inst]  |match-mapping|mapping-sent|
 |CoAP Content-Format|8 |1 |Up|inst         |equal        |not-sent    |
 +===================+==+==+==+=============+=============+============+
]]></artwork>
      </figure>
      <figure anchor="Fig-M4">
        <name>Management Rule 4</name>
        <artwork><![CDATA[
 +---------------------------------------------------------------------+
 |RuleID M4                                                            |
 +-------------------+--+--+--+-------------+-------------+------------+
 |        FID        |FL|FP|DI|     TV      |     MO      |    CDA     |
 +-------------------+--+--+--+-------------+-------------+------------+
 |IPv6 Version       |4 |1 |Bi|6            |equal        |not-sent    |
 |IPv6 Traffic Class |8 |1 |Bi|1            |equal        |not-sent    |
 |IPv6 Flow Label    |20|1 |Bi|144470       |equal        |not-sent    |
 |IPv6 Length        |16|1 |Bi|             |ignore       |compute-*   |
 |IPv6 Next Header   |8 |1 |Bi|17           |equal        |not-sent    |
 |IPv6 Hop Limit     |8 |1 |Bi|64           |equal        |not-sent    |
 |IPv6 DevPrefix     |64|1 |Bi|fe80::/64    |equal        |not-sent    |
 |IPv6 DevIID        |64|1 |Bi|::1          |equal        |not-sent    |
 |IPv6 AppPrefix     |64|1 |Bi|fe80::/64    |equal        |not-sent    |
 |IPv6 AppIID        |64|1 |Bi|::2          |equal        |not-sent    |
 +===================+==+==+==+=============+=============+============+
 |UDP DevPort        |16|1 |Bi|5683         |equal        |not-sent    |
 |UDP AppPort        |16|1 |Bi|3865         |equal        |not-sent    |
 |UDP Length         |16|1 |Bi|             |ignore       |compute-*   |
 |UDP Checksum       |16|1 |Bi|             |ignore       |compute-*   |
 +===================+==+==+==+=============+=============+============+
 |CoAP Version       |2 |1 |Bi|1            |equal        |not-sent    |
 |CoAP Type          |2 |1 |Up|2            |equal        |not-sent    |
 |CoAP TKL           |4 |1 |Bi|0            |equal        |not-sent    |
 |CoAP Code          |8 |1 |Up|[68, 128,    |match-mapping|mapping-sent|
 |                   |  |  |  | 129, 131,   |             |            |
 |                   |  |  |  | 132, 137,   |             |            |
 |                   |  |  |  | 160]        |             |            |
 |CoAP MID           |16|1 |Bi|0            |MSB(9)       |LSB         |
 +===================+==+==+==+=============+=============+============+
]]></artwork>
      </figure>
    </section>
    <section anchor="sec-fsm">
      <name>Rule Status State Machine</name>
      <t><xref target="Fig-fsm"/> summarizes the statuses of a rule on one node, and the transitions
described in <xref target="sec-rule-status"/>. The <tt>invalid</tt> status has two phases: the Guard
period is either waiting for the acknowledgement of the deletion sent by this
node, or running. The <tt>origin</tt> status is not shown: an <tt>origin</tt> rule is set by
provisioning and never changes status.</t>
      <figure anchor="Fig-fsm">
        <name>Rule status state machine on one node</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="448" viewBox="0 0 448 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,192 L 8,256" fill="none" stroke="black"/>
              <path d="M 24,64 L 24,128" fill="none" stroke="black"/>
              <path d="M 40,136 L 40,184" fill="none" stroke="black"/>
              <path d="M 56,32 L 56,56" fill="none" stroke="black"/>
              <path d="M 72,136 L 72,184" fill="none" stroke="black"/>
              <path d="M 96,64 L 96,128" fill="none" stroke="black"/>
              <path d="M 184,64 L 184,128" fill="none" stroke="black"/>
              <path d="M 184,264 L 184,288" fill="none" stroke="black"/>
              <path d="M 200,136 L 200,184" fill="none" stroke="black"/>
              <path d="M 216,264 L 216,288" fill="none" stroke="black"/>
              <path d="M 240,136 L 240,160" fill="none" stroke="black"/>
              <path d="M 264,136 L 264,160" fill="none" stroke="black"/>
              <path d="M 280,64 L 280,128" fill="none" stroke="black"/>
              <path d="M 360,64 L 360,128" fill="none" stroke="black"/>
              <path d="M 392,32 L 392,56" fill="none" stroke="black"/>
              <path d="M 392,136 L 392,184" fill="none" stroke="black"/>
              <path d="M 432,64 L 432,128" fill="none" stroke="black"/>
              <path d="M 440,192 L 440,256" fill="none" stroke="black"/>
              <path d="M 56,32 L 216,32" fill="none" stroke="black"/>
              <path d="M 256,32 L 392,32" fill="none" stroke="black"/>
              <path d="M 24,64 L 96,64" fill="none" stroke="black"/>
              <path d="M 184,64 L 280,64" fill="none" stroke="black"/>
              <path d="M 360,64 L 432,64" fill="none" stroke="black"/>
              <path d="M 104,80 L 176,80" fill="none" stroke="black"/>
              <path d="M 288,80 L 352,80" fill="none" stroke="black"/>
              <path d="M 24,128 L 96,128" fill="none" stroke="black"/>
              <path d="M 184,128 L 280,128" fill="none" stroke="black"/>
              <path d="M 360,128 L 432,128" fill="none" stroke="black"/>
              <path d="M 240,160 L 264,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 440,192" fill="none" stroke="black"/>
              <path d="M 8,256 L 440,256" fill="none" stroke="black"/>
              <path d="M 184,288 L 216,288" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="400,184 388,178.4 388,189.6" fill="black" transform="rotate(90,392,184)"/>
              <polygon class="arrowhead" points="400,56 388,50.4 388,61.6" fill="black" transform="rotate(90,392,56)"/>
              <polygon class="arrowhead" points="360,80 348,74.4 348,85.6" fill="black" transform="rotate(0,352,80)"/>
              <polygon class="arrowhead" points="248,136 236,130.4 236,141.6" fill="black" transform="rotate(270,240,136)"/>
              <polygon class="arrowhead" points="224,264 212,258.4 212,269.6" fill="black" transform="rotate(270,216,264)"/>
              <polygon class="arrowhead" points="208,184 196,178.4 196,189.6" fill="black" transform="rotate(90,200,184)"/>
              <polygon class="arrowhead" points="184,80 172,74.4 172,85.6" fill="black" transform="rotate(0,176,80)"/>
              <polygon class="arrowhead" points="80,136 68,130.4 68,141.6" fill="black" transform="rotate(270,72,136)"/>
              <polygon class="arrowhead" points="48,184 36,178.4 36,189.6" fill="black" transform="rotate(90,40,184)"/>
              <g class="text">
                <text x="236" y="36">T2</text>
                <text x="140" y="68">T1</text>
                <text x="316" y="68">T4</text>
                <text x="60" y="100">free</text>
                <text x="232" y="100">candidate</text>
                <text x="392" y="100">valid</text>
                <text x="20" y="164">T7</text>
                <text x="92" y="164">T8</text>
                <text x="180" y="164">T5</text>
                <text x="284" y="164">T3</text>
                <text x="412" y="164">T6</text>
                <text x="40" y="212">guard</text>
                <text x="96" y="212">waiting</text>
                <text x="144" y="212">for</text>
                <text x="176" y="212">ack</text>
                <text x="216" y="228">invalid</text>
                <text x="40" y="244">guard</text>
                <text x="96" y="244">running</text>
                <text x="236" y="292">T9</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
              +-------------------- T2 -----------------+
              |                                         v
          +--------+    T1    +-----------+   T4    +--------+
          |        |--------->|           |-------->|        |
          |  free  |          | candidate |         | valid  |
          |        |          |           |         |        |
          +--------+          +-----------+         +--------+
            |   ^               |    ^  |               |
         T7 |   | T8         T5 |    +--+ T3            | T6
            v   |               v                       v
        +-----------------------------------------------------+
        | guard waiting for ack                               |
        |                      invalid                        |
        | guard running                                       |
        +-----------------------------------------------------+
                              |   ^
                              +---+ T9
]]></artwork>
        </artset>
      </figure>
      <ul spacing="normal">
        <li>
          <t>T1, <tt>free</tt> to <tt>candidate</tt>: the node decides to create a rule, with a rule ID in
its part of the rule ID space (see <xref target="sec-simultaneous-creation"/>) that does
not overlap an existing rule ID. A rule ID whose Guard period has just ended
SHOULD NOT be chosen (see <xref target="sec-guard-computation"/>). It sends the creation.</t>
        </li>
        <li>
          <t>T2, <tt>free</tt> to <tt>valid</tt>: a creation is received. The node answers 2.04 Changed.</t>
        </li>
        <li>
          <t>T3, <tt>candidate</tt> to <tt>candidate</tt>: the CoAP exchange is abandoned, in particular
when the other end restarts (see <xref target="sec-restart"/>), or the node restarts. The
creation is repeated later, with an increasing delay. A Device that receives a
creation for this rule ID answers 4.09 Conflict.</t>
        </li>
        <li>
          <t>T4, <tt>candidate</tt> to <tt>valid</tt>: 2.04 Changed is received for the creation, a SCHC
PDU carrying the rule ID is received and decoded, or, on the Core only, a
creation of the same rule ID is received from the Device. In the last case,
the received rule replaces the <tt>candidate</tt> one, and the Core answers 2.04
Changed. In all cases, the creation stops.</t>
        </li>
        <li>
          <t>T5, <tt>candidate</tt> to <tt>invalid</tt>: a deletion is received (the Guard period starts,
the creation stops, the node answers 2.04 Changed), or the node gives up the
rule, in particular when 4.09 Conflict is received for the creation, and
sends a deletion (the Guard period waits for the acknowledgement).</t>
        </li>
        <li>
          <t>T6, <tt>valid</tt> to <tt>invalid</tt>: the node sends a deletion (the Guard period waits for
the acknowledgement), or receives one (the Guard period starts, the node
answers 2.04 Changed).</t>
        </li>
        <li>
          <t>T7, <tt>free</tt> to <tt>invalid</tt>: a deletion is received for a free rule ID. The Guard
period starts, and the node answers 2.04 Changed.</t>
        </li>
        <li>
          <t>T8, <tt>invalid</tt> to <tt>free</tt>: the Guard period is over. The rule is marked <tt>free</tt>
or removed from the SoR.</t>
        </li>
        <li>
          <t>T9, <tt>invalid</tt> to <tt>invalid</tt>:
          </t>
          <ul spacing="normal">
            <li>
              <t>2.04 Changed is received for the deletion sent by the node: the Guard period
starts;</t>
            </li>
            <li>
              <t>the CoAP exchange of the deletion is abandoned, or the node restarts while
waiting for the acknowledgement: the deletion is repeated;</t>
            </li>
            <li>
              <t>a deletion is received: the node answers 2.04 Changed, and the Guard period
restarts, unless it is waiting for the acknowledgement of the deletion sent
by the node;</t>
            </li>
            <li>
              <t>a creation is received: the node answers 4.09 Conflict;</t>
            </li>
            <li>
              <t>the node restarts while the Guard period is running: a new, complete Guard
period starts.</t>
            </li>
          </ul>
        </li>
        <li>
          <t>T10, any status except <tt>origin</tt> to <tt>invalid</tt> (not shown in the figure): the
node sends a reset (the Guard period waits for the acknowledgement), or
receives one (the Guard period starts, the node answers 2.04 Changed), see
<xref target="sec-reset-rpc"/>. This also applies to a rule ID absent from the SoR.</t>
        </li>
      </ul>
      <t>The following events do not change the status:</t>
      <ul spacing="normal">
        <li>
          <t><tt>origin</tt>: a SCHC PDU carrying the rule ID is decoded with the rule. A deletion
is answered 4.03 Forbidden. A creation is answered as for a <tt>valid</tt> rule. A
reset does not change it.</t>
        </li>
        <li>
          <t><tt>valid</tt>: a SCHC PDU carrying the rule ID is decoded with the rule. A creation
with the same content is answered 2.04 Changed, a creation with a different
content or an overlapping rule ID is answered 4.09 Conflict.</t>
        </li>
        <li>
          <t><tt>candidate</tt>: no SCHC PDU is generated with the rule. An answer that does not
correspond to the creation of the current <tt>candidate</tt> rule is ignored.</t>
        </li>
        <li>
          <t><tt>free</tt> and <tt>invalid</tt>: a SCHC PDU carrying the rule ID is dropped.</t>
        </li>
      </ul>
    </section>
    <section anchor="changes">
      <name>Changes</name>
      <ul spacing="normal">
        <li>
          <t><xref target="Fig-tree"/>: the YANG tree is the one of <xref target="I-D.toutain-schc-rfc9363bis"/>
(module revision 2026-10-27). The "entry" list keyed by "field-id",
"field-position" and "direction-indicator" is replaced by "entry-universal",
keyed by "entry-index"; "action" and "action-value" are added; the "context"
container is added.</t>
        </li>
        <li>
          <t>"Rule Status and Guard Period": "rule-status" is now defined (identityref
"status-type", "status-valid", "status-candidate", "status-invalid" and
"status-free") under the "management" feature, and the guard period duration
is described by "context/guard-period".</t>
        </li>
        <li>
          <t>"Management Rule Nature": the "nature-management" nature uses the
"entry-universal" list only.</t>
        </li>
        <li>
          <t>"Set of Rules Editing", FETCH and iPATCH examples: the keys "field-id",
"field-position" and "direction-indicator" are replaced by the "entry-index";
entries created by iPATCH carry their mandatory leaves.</t>
        </li>
        <li>
          <t>"Entry-index optimization" replaces "Universal-options optimization", since
the universal options are part of the "entry-universal" list.</t>
        </li>
        <li>
          <t>"Duplicate Rule": the status is an enumeration, the example uses an
"entry-index", and the YANG fragment of the annex is aligned with the module.</t>
        </li>
        <li>
          <t>"YANG Module": the module is moved from the appendix to the body of the
document, after the RPCs section. The RPCs section no longer says that the
definition of the RPCs is out of scope: this document defines
"duplicate-rule", other documents may define other RPCs. The abstract, the
introduction and "YANG Data Model" mention the module.</t>
        </li>
        <li>
          <t>"Restart of a node": the Echo option is removed; without a stable
deduplication state, the requests are answered with 5.03 during
EXCHANGE_LIFETIME.</t>
        </li>
        <li>
          <t>"Applicability statement": to change a rule, a new rule with another RuleID
is created, and the old one may then be deleted (instead of deleting the
rule and creating a new one).</t>
        </li>
        <li>
          <t>New "Security Considerations" and "IANA Considerations" sections: protection
of the management traffic and of the "duplicate-rule" RPC, registration of
the namespace URI and of the module name. References to RFC 2119, RFC 8174,
RFC 3688, RFC 6020, RFC 7950 and RFC 8340 are added.</t>
        </li>
        <li>
          <t>"Idempotent creation": definition of overlapping rule IDs, which do not have a
fixed length: one is a prefix of the other, as 110 and 110001.</t>
        </li>
        <li>
          <t>"Rule status": a <tt>valid</tt> rule can be selected for compression or
fragmentation, and the SCHC PDUs carrying its rule ID are decompressed or
reassembled with it.</t>
        </li>
        <li>
          <t>New <tt>origin</tt> status (<xref target="sec-rule-status"/>): the rules of the initial SoR,
including the management rules, are <tt>origin</tt> rules. They are used as <tt>valid</tt>
rules, cannot be modified or deleted (4.03 Forbidden), can be duplicated
except the management rules, and are the only rules kept by a reset. The
status is only set by provisioning, and is the default of "rule-status"
("status-origin", derived from "status-valid"). "Rule Status and Guard
Period", "Simultaneous creation", "Rule deletion", "Restart of a node" and the
state machine (<xref target="sec-fsm"/>) are updated accordingly.</t>
        </li>
        <li>
          <t>New "reset-context" RPC (<xref target="sec-reset-rpc"/>): it replaces the factory reset by
the deletion of the top-level object, which is now refused with 4.03
Forbidden. The invoking node applies the reset when it sends the request, the
other node when it receives it; all the rule IDs that are not <tt>origin</tt> become
<tt>invalid</tt> for a Guard period. Applying it only at the reception of the
response leads both nodes to disagree on the SoR. An end that restarts without
its rules should reset the SoR.</t>
        </li>
        <li>
          <t>The YANG module is named "ietf-schc-mgmt-basic" (prefix "schc-bmgmt"), for
the basic management operations, and contains both RPCs; IANA and Security
Considerations are updated.</t>
        </li>
        <li>
          <t>"Idempotent creation": a creation received during the Guard period is
refused with 4.09 Conflict again, instead of 5.03 Service Unavailable. On
4.09 Conflict, whatever its cause, the creator gives up its <tt>candidate</tt> rule
by deleting it, and may retry with another rule ID: the deletion makes the
rule <tt>invalid</tt> on both ends, so that a late copy of the creation cannot
create it again. "Guard period computation": the Guard periods of both ends
do not end at the same time, and a rule ID SHOULD NOT be used for a new rule
before MAX_TRANSMIT_SPAN + 2L after the end of its Guard period.
"Simultaneous creation", "Restart of a node", "reset-context" and the state
machine (<xref target="sec-fsm"/>) are updated: the transition from <tt>candidate</tt> to <tt>free</tt>
is removed, and the transitions are renumbered.</t>
        </li>
        <li>
          <t>"Restart of a node": without a stable deduplication state, the management
requests are silently discarded during EXCHANGE_LIFETIME after the restart,
instead of being answered with 5.03 Service Unavailable; the other end repeats
them as after a loss. 5.03 Service Unavailable is no longer used, and is
removed from the codes of the management rules M2 and M4.</t>
        </li>
        <li>
          <t>"Guard period computation": the numerical examples (G of 30 s, CoAP
transmission span of 45 s) are removed. L, G and the CoAP transmission
parameters depend on the network, possibly an interplanetary link; the CoAP
transmission parameters are configured accordingly, with a MAX_LATENCY of at
least L.</t>
        </li>
        <li>
          <t>The refusal of a request on a management rule is a 4.03 Forbidden response
instead of an Unauthorized one.</t>
        </li>
        <li>
          <t>"YANG Module" appendix (was "YANG DM"): the "duplicate-rule" RPC is no longer
in the "ietf-schc" module of <xref target="I-D.toutain-schc-rfc9363bis"/>; it is defined in
the new "ietf-schc-mgmt-basic" module of this document, which imports
"ietf-schc" and makes the RPC depend on its "management" feature. The
descriptions of the RPC and of its status values are completed. The CORECONF
examples use the "/ietf-schc-mgmt-basic:duplicate-rule" path.</t>
        </li>
        <li>
          <t>"Example CORECONF usage in Python": the YANG requests use the
"entry-universal" paths; the SID values and CBOR encodings, which depend on
the SID file of the new module revision, have been removed and have to be
regenerated.</t>
        </li>
        <li>
          <t>Samar Sirohi added as co-author.</t>
        </li>
        <li>
          <t>WARNING comments ("WARNING (modify)") mark the places that still describe the
modification of an existing rule, which is no longer allowed.</t>
        </li>
        <li>
          <t>"Rule status": added the list of the statuses a rule can have (valid,
candidate, invalid and free).</t>
        </li>
        <li>
          <t>"Rule status": the Guard period of the initiator of a deletion starts when it
receives the acknowledgement (not when it sends the request), and
<xref target="Fig-Rule-del"/> is updated. A PDU received with a <tt>candidate</tt> rule ID is now
accepted and validates the rule, instead of being dropped.</t>
        </li>
        <li>
          <t>"Rule creation": added the idempotent creation (<xref target="sec-idempotent-creation"/>)
with an example, the typos were fixed, and the title of <xref target="Fig-Rule-creation"/>
was corrected.</t>
        </li>
        <li>
          <t>"Rule deletion": the deletion is idempotent, and is repeated until it is
acknowledged.</t>
        </li>
        <li>
          <t>"Guard period computation" (<xref target="sec-guard-computation"/>) added. <xref target="RFC7252"/>
added to the references.</t>
        </li>
        <li>
          <t>"Rule status": new "Simultaneous creation" subsection
(<xref target="sec-simultaneous-creation"/>): the rule ID space is shared between the Core
(first bit 0) and the Device (first bit 1), and the Device has priority when
two creations cross. A creation received during the Guard period is answered
with 5.03 Service Unavailable instead of 4.09 Conflict. A deletion received
for a <tt>candidate</tt> rule makes it <tt>invalid</tt>. A creation stops as soon as the
rule is no longer <tt>candidate</tt>, and an answer is only taken into account for
the <tt>candidate</tt> rule it was sent for. Management requests must be
deduplicated. A new rule ID must not overlap an existing one. The alignment of
the "X free" label in <xref target="Fig-Rule-creation"/> was fixed.</t>
        </li>
        <li>
          <t>New appendix "Rule Status State Machine" (<xref target="sec-fsm"/>), summarizing the
statuses and transitions of a rule.</t>
        </li>
        <li>
          <t>"Rule deletion": every received deletion (re)starts the Guard period, even if
the rule is already <tt>invalid</tt> or <tt>free</tt>, to cover crossing deletions.</t>
        </li>
        <li>
          <t>"Management Protocol Stack" (<xref target="sec-mgmt-stack"/>) added: IPv6, UDP, CoAP with
optional OSCORE, and CORECONF. <xref target="RFC0768"/>, <xref target="RFC8200"/> and <xref target="RFC8613"/> are
normative references.</t>
        </li>
        <li>
          <t>"M Rules" replaced by "management rules" in the text and in
<xref target="Fig-mgmt-stack"/>; the four management rules keep their names M1 to M4.</t>
        </li>
        <li>
          <t>"YANG Data Model": added a paragraph explaining how the fixed elements of the
management protocol stack (addresses, ports, CoAP methods and options) make
the management traffic very compressible.</t>
        </li>
        <li>
          <t>"Set of Rules Editing": the YANG identifiers are written in quotes and in a
fixed-width font.</t>
        </li>
        <li>
          <t>"Management Errors" moved to the end of the "Management messages" section.</t>
        </li>
        <li>
          <t>"iPATCH": iPATCH can only create a complete rule or delete a rule; the
modification, addition or deletion of an element of an existing rule is
refused with 4.03 Forbidden. The examples of modification were replaced by
examples of creation, deletion and refused requests, and the Content-Format of
the iPATCH requests was corrected (application/yang-instances+cbor-seq).</t>
        </li>
        <li>
          <t>"rule-status" is managed locally by each node according to its protocol state:
it is never set by the other node, a value received in a creation is ignored,
and it can be read with FETCH.</t>
        </li>
        <li>
          <t>"Deleting a rule": the management rules cannot be deleted; deleting the
top-level object deletes all the other rules, each one following the deletion
procedure, and keeps the management rules. The "Management Compression Rules"
section now also refuses the deletion of a management rule.</t>
        </li>
        <li>
          <t>"Deleting a rule": deleting the top-level object is now a factory reset, which
restores the set of rules present at the start of the SCHC instance.</t>
        </li>
        <li>
          <t>The "POST" subsection of "CoAP Methods" is renamed "RPC invocation (POST)".</t>
        </li>
        <li>
          <t>"RPC invocation (POST)": the definition of the RPCs is out of the scope of the
document, they may be defined in other YANG Data Models, and "duplicate-rule"
is given as an illustration. The input of an RPC acting on rules must provide
their rule IDs, and its output a status.</t>
        </li>
        <li>
          <t>"RPC statements": "duplicate-rule" illustrates the use of RPCs, other RPCs may
be defined in other documents for specific traffic patterns.</t>
        </li>
        <li>
          <t>The RPCs are now a section of their own (<xref target="sec-rpcs"/>), after "Management
messages": its introduction gathers the general rules on the RPCs, and "RPC
invocation (POST)" only describes the use of CoAP.</t>
        </li>
        <li>
          <t>The tables of the management rules M1 to M4 are moved to an appendix
(<xref target="sec-mgmt-rules-tables"/>) and adapted to the management protocol stack:
DevIID ::1 and AppIID ::2, ports of the Device swapped in M3 and M4, Uri-Path
only in the requests, two Content-Formats for the requests, 2.04 Changed added
to the responses with a payload, and 4.03, 4.09 and 5.03 added to the
responses without payload. The description of M1 to M4 is clarified.</t>
        </li>
        <li>
          <t>Acknowledgments: Claude was used to validate the protocol used to modify the
SoR.</t>
        </li>
        <li>
          <t>The 5.03 Service Unavailable responses carry no Max-Age option, so that they
can be compressed by the management rules M2 and M4.</t>
        </li>
        <li>
          <t>"Restart of a node" (<xref target="sec-restart"/>) added: the rules and their status should
be kept in a stable memory, the Guard period of an <tt>invalid</tt> rule restarts
after a restart, and the freshness of the management requests is checked when
the deduplication state is lost. <xref target="RFC8613"/> and RFC 9175 added to the
informative references.</t>
        </li>
        <li>
          <t>Introduction: now starts with the three Rule types of <xref target="RFC8724"/> and the new
management Rules, which <xref target="I-D.toutain-schc-rfc9363bis"/> introduces in the YANG
Data Model.</t>
        </li>
        <li>
          <t>Corentin Banier moved from the authors to the acknowledgments, and the SCHC
Chair and Claude were added to the acknowledgments.</t>
        </li>
        <li>
          <t>Reference to <xref target="I-D.toutain-schc-rfc9363bis"/> added, and to the
universal-option draft removed.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors sincerely thank Corentin Banier for his contributions to this work.</t>
      <t>This work has been supported by the SCHC Chair from IMT Atlantique and Afnic.</t>
      <t>The authors also thank Claude (Anthropic) for rewriting parts of this document
in more correct English, for checking its consistency with the YANG data model,
and for validating the protocol used to modify the SoR (see <xref target="sec-rule-status"/>)
with a systematic exploration of a bounded model of this protocol.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+29aXvbRpYo/B2/oi7zwVIbpBbvdHemaclOdF/L9khyx/Ok
PTFEghLaJMABQMlqS/e3v2etBQC1JO7cfp4bTY8jkYVC1alTZ1/6/X50NjQP
oqjO6lk6NDtvD17uvH3zyhwsZ6mZJ3lyks7TvDbTojSHOz/uRMnxcZnCM/gH
fbpTjN5Fk2KcJ3OYYFIm07pfF8s6yfJ+NT4d98dFmY6LfNp30/U3t6NsUQ5N
XS6rentz8xl8EJ09+DKfbZfT8TAypspmaT5O8de+eVUs84k5/NsP5jyrT+Gf
CfwL7z5Ns5PT2lSLdJxNs3QSRUmZJkOzl9dpmad1dH4iK/2pKD9n+Yn5oSyW
i+jzuRvT38UlR+OkHpqqnkTV8nieVVVW5PXFAna09/LoVRSNiwk8PjTLetp/
Cq9Z1qdFiYvDn77hzY/yxOxneXK8LAv5ysAy4bGdIq+WszrJa/t5VZdpCu88
WKZmkpqDNM/Tyn47zuoLeCytqiLvH6Zn2Umeui+LCbztwaNHW5veZ8u8LuGZ
V2UCcLOfp/Mkmw0NgH4uK/vrCX40GBfzxvJfJ8sSz/qITy/cwd7+kRnVM9hB
9j/LtLWLnUOz9eTx5pPYbJuSdzRLzM5pAjPB0sskS6/dG/w5Sb+0d/jk8W13
KKsfyOr/ms3rfmIXPJiWjd3+7+QsS0szGphXgAdJPkn/+W+x49uf6T9oB/1k
lv4Dll8Wg6lu5MbN7yclILjZXc6Ti3DXb+FVJ61XzWn8YILj/1rQkA4EOkxg
nDnMyuI0uxMsV0LQQvlfjDy08gGvvAN4UZQX5TypszMiSAevdra3tp7Jr0+3
njyUXx88fvpUfn28ub0pvz559kh/ffpkW8c+e/D4Af66198dBPQSCCB+d5xV
OnL70UMdmaVAgJCiwj/zTF+w/Whbft188lhX8BToqv76eOtBMMNscZ7k/aQc
n2Z1Oq7h5nQupcomgF6zAogjHP8wyvJpAw5PHzyEl0Rw8fBc4LPDl69fDU3v
Z/iu/wF+PvaiqN/vm+QYDjsZ11F0dJpVBhjGkhjLJK3GZXacVua0OHf8Z5zk
5jg1yWIxA7pu6sIxHOAldfqlBpI2AbSZpVGV1j6rOk7r8zTNTZpPFkWW19XA
7MHoWVXAy6YZUFmTmP8avfnBzIsJsjniKfC+g3c78KJosoR3wo5T/Cz9klU1
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
Led0i/rKQfT/A1/8MUM6ZAEA

-->

</rfc>
