<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-schc-icmpv6-compression-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="SCHC ICMPv6 Compression">Static Context Header Compression (SCHC) for the Internet Control Message Protocol (ICMPv6)</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-schc-icmpv6-compression-03"/>
    <author initials="D." surname="Barthel" fullname="Dominique Barthel">
      <organization/>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>dominique.barthel@orange.com</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <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>laurent.toutain@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>
    <date year="2026" month="October" day="22"/>
    <area>Internet</area>
    <workgroup>schc Working Group</workgroup>
    <keyword>template</keyword>
    <abstract>
      <?line 47?>

<t>This document describes how the ICMPv6 protocol can be integrated into
the SCHC architecture. It extends the YANG Data Model with new field IDs
specific to ICMPv6 headers.</t>
      <t>To enhance the compression of ICMPv6 error messages, the document also
introduces two new Matching Operators and two new Compression
Decompression Actions to manipulate the ICMPv6 payload.</t>
      <t>Finally, for constrained networks such as LPWAN, it introduces a proxy
behavior, where a SCHC Core end-point may anticipate the device reaction
to incorrect messages.</t>
    </abstract>
  </front>
  <middle>
    <?line 61?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>ICMPv6 <xref target="RFC4443"/> is the companion protocol of IPv6. It carries
information about the state of the network, which both a SCHC Device and
a SCHC Application can benefit from.</t>
      <t>When applying SCHC compression to IPv6 networks, users expect to perform
control operations such as ping to ensure that devices are still active.
In the same way, ICMPv6 error messages can be helpful for the Device
which may adapt its behavior when the Application becomes unreachable.
The Application may also benefit from the ICMPv6 error message produced
by the SCHC entity when the compression is not possible.</t>
      <t>The ICMPv6
messages covered by this document are those defined in ICMPv6 protocol
<xref target="RFC4443"/>. The compression described in this document does not cover
other ICMPv6 messages, such as an extended format of the same messages
<xref target="RFC4884"/> and other messages used by the Neighbor Discovery Protocol
<xref target="RFC4861"/>.</t>
      <section anchor="icmpv6-messages">
        <name>ICMPv6 Messages</name>
        <t>ICMPv6 defines a generic message format, which is used to inform the
source of an IPv6 packets about errors during the packet delivery. It
also specifies messages used by the ping command to test connectivity
with a remote node.</t>
        <t><xref target="RFC4443"/> instantiates four such error messages:</t>
        <ul spacing="normal">
          <li>
            <t>Destination Unreachable (type = 1),</t>
          </li>
          <li>
            <t>Packet Too Big (type = 2),</t>
          </li>
          <li>
            <t>Time Exceeded (type = 3) and</t>
          </li>
          <li>
            <t>Parameter Problem (type = 4).</t>
          </li>
        </ul>
        <t><xref target="RFC4443"/> also defines two informational messages, the Echo Request
(type=128) and Echo Reply messages (type = 129), which provide support
for the ping application.</t>
        <t>This document describes recommended compression of ICMPv6/IPv6 messages
(including header fields and structured payload) and extends SCHC by
specifying new Field Identifiers for ICMPv6 and two MO and two CDA to
compress the ICMPv6 payload. This covers different scenarios:</t>
        <ul spacing="normal">
          <li>
            <t>ICMPv6 messages initiated by SCHC Devices. They can be sent in
their SCHC-compressed form, in ICMPv6 messages traffic. This includes
error messages, as well as informational echo request/reply traffic</t>
          </li>
          <li>
            <t>ICMPv6 error messages returned from the Internet after Device
transmission. The core SCHC forwards a compressed version of the error
message to the Device, including if necessary a compressed payload.</t>
          </li>
          <li>
            <t>Traffic coming from the Internet that would generate an error on the
Device: if it can detect the situation, the SCHC Core directly
responds with an ICMPv6 error message, acting as a surrogate to the
Device.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>This draft re-uses the Terminology defined in <xref target="RFC8724"/> and the
achitecture document.</t>
      <t>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
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>
      <ul spacing="normal">
        <li>
          <t>SCHC Core: SCHC End-Point located at the boundary of a regular IP
network and a network that applies SCHC compression and fragmentation</t>
        </li>
        <li>
          <t>SCHC Device: The other end of the SCHC instance formed with the SCHC
core.</t>
        </li>
        <li>
          <t>Application: entity sending packets to the SCHC Device or receiving
packets from the SCHC Device. The Application may be co-located with
the SCHC Core, but is usually located on the regular Internet.</t>
        </li>
        <li>
          <t>Regular Internet: Network location carrying uncompressed IPv6 packets.</t>
        </li>
      </ul>
    </section>
    <section anchor="use-cases">
      <name>Use cases</name>
      <t>In the following sections, we will describe at <xref target="basicICMPv6"/> ICMPv6
message compression for all ICMPv6 messages specified in <xref target="RFC4443"/>. We
will then extend this basic compression with a specific focus on the
following cases:</t>
      <ul spacing="normal">
        <li>
          <t>The Device is the originator of an Echo Request message, and therefore
the destination of the Echo Reply message. These messages are
compressed/decompressed by the device and the SCHC Core using SCHC
rules that match the ICMPv6 fields (see <xref target="DevicePings"/>).</t>
        </li>
        <li>
          <t>The Device should have sent an ICMP error message, mainly in response
to an incorrect incoming IPv6 message. In this case, as much as
possible, the SCHC Core should act on behalf of the Device and
originate the Unreachable ICMP Destination message, so that the Device
and the network are protected from this unwanted traffic (see
<xref target="ProxyErrMsg"/>).</t>
        </li>
        <li>
          <t>The Device is the destination of the ICMPv6 message, mainly in
response to a packet sent by the device to the network that generates
an error. In this case, we want the ICMPv6 message to reach the
Device, and this document describes in <xref target="ErrMsgCompr"/> what SCHC
compression should be applied. Since ICMPv6 error messages contain in
the payload the original message which has triggered the error, SCHC
can compress it using the rules in the reverse direction (see
<xref target="device-is-the-destination"/>).</t>
        </li>
      </ul>
    </section>
    <section anchor="basicICMPv6">
      <name>ICMPv6 compression</name>
      <t>This section defines ICMPv6 fields that can be compressed by SCHC.
<xref target="RFC4443"/> defines several formats with respect to the type of the
ICMPv6 message.</t>
      <t>From them, several fields can be extracted (the Field ID identities are
specified in the SCHC YANG data model of
<xref target="I-D.toutain-schc-rfc9363bis"/>):</t>
      <t>These fields are present in all the messages:</t>
      <ul spacing="normal">
        <li>
          <t>ICMPv6 Type indicates the fields present in the message.</t>
        </li>
        <li>
          <t>ICMPv6 Code is related to the ICMPv6 type and does not have an impact
on the message format.</t>
        </li>
        <li>
          <t>ICMPv6 Checksum covers the ICMPv6 message and part of the IPv6 header
to protect against errors. It is generally
reconstructed with the <tt>compute-*</tt> CDA and therefore is not
transmitted.</t>
        </li>
        <li>
          <t>ICMPv6 Payload is part of the ICMPv6 protocol and is not directly
originated from upper layers protocols, so this field may be
compressed by SCHC at the ICMPv6 level. In the ICMPv6 error message,
the payload can be compressed by SCHC compression rules, as it
contains the IPv6 message header responsible for the error. For Echo
Request and Echo Reply it contains a specific pattern to set the
message length.</t>
        </li>
      </ul>
      <t>The other fields depends of the message type:</t>
      <ul spacing="normal">
        <li>
          <t>ICMPv6 MTU is used by Packet Too Big message (type = 2) to carry the
MTU expected by a node rejecting the packet forwarding. This 32-bit
field carries an MTU that is at least the minimum IPv6 MTU (1280
bytes), so its upper bits are almost always constant. It can be
compressed with the MSB CDA, or with the LSB CDA if the Device is
known to send smaller packets, sending e.g. only 11 bits.</t>
        </li>
        <li>
          <t>ICMPv6 Pointer is used by Parameter Problem message to indicate the
position of a detected error in the original message. This 32-bit
field is the offset, in bytes from the start of the invoking
packet, of the octet where the error was detected. When the error is
in the fixed IPv6 header (Code 0, erroneous header field, or Code 1,
unrecognized Next Header, which points to octet 6), the value is
lower than 40 and 6 bits are enough with the LSB CDA. When the error
is in an extension header or an option (Code 2, unrecognized IPv6
option, always, or Codes 0 and 1 beyond octet 39), the value is
bounded by the size of the invoking packet, which an ICMPv6 error
message limits to the minimum IPv6 MTU, so 11 bits are enough. A
rule can use a mapping or the LSB CDA to cover the first case, and a
second rule the other one.</t>
        </li>
        <li>
          <t>ICMPv6 Identifier and ICMPv6 Sequence Number are used by ping echo
(type 128) and reply (type 129) messages.</t>
        </li>
      </ul>
      <t>Since the fields present in an ICMP message differ from one type to
another, it is not possible to use a single rule to compress all ICMP
messages. Examples of ICMP message compression Rules are given in
<xref target="parsing-payload"/>, <xref target="DevicePings"/> and <xref target="device-is-the-destination"/>.</t>
      <section anchor="new-fid">
        <name>New FID</name>
        <t>This document introduces eight new Field IDs for ICMPv6
<xref target="RFC4443"/>:</t>
        <ul spacing="normal">
          <li>
            <t><tt>fid-icmpv6-type</tt>, <tt>fid-icmpv6-code</tt>, <tt>fid-icmpv6-checksum</tt>:
present in every ICMPv6 message.</t>
          </li>
          <li>
            <t><tt>fid-icmpv6-mtu</tt>: present in the Packet Too Big message.</t>
          </li>
          <li>
            <t><tt>fid-icmpv6-pointer</tt>: present in the Parameter Problem message.</t>
          </li>
          <li>
            <t><tt>fid-icmpv6-identifier</tt>, <tt>fid-icmpv6-sequence</tt>: present in the
Echo Request/Reply message.</t>
          </li>
          <li>
            <t><tt>fid-icmpv6-payload</tt>: the data following the ICMPv6 header.</t>
          </li>
        </ul>
        <t>Two more generic Field IDs, not specific to ICMPv6, are defined
alongside them in the <tt>ietf-schc</tt> module
(<xref target="I-D.toutain-schc-rfc9363bis"/>). Being generic, they can be used
as-is when compressing other protocols:</t>
        <ul spacing="normal">
          <li>
            <t><tt>fid-unused</tt>: as its name suggests, used to skip an unused part of
a header. This matters when parsing and compression happen on the
fly, and reinforces the constraint that fields appear in the same
order as in the header. Setting its Target Value to 0, its
Matching Operator to <tt>ignore</tt>, and its Compression/Decompression
Action to <tt>not-sent</tt> is RECOMMENDED.</t>
          </li>
          <li>
            <t><tt>fid-payload</tt>: MUST be the last entry of the Rule, matching its
position as the packet's trailing payload, and uses the new
<tt>fl-remaining</tt> of <xref target="I-D.ietf-schc-universal-option"/>, which accepts any
length without prefixing the residue with one, since the last entry's
residue already runs to the end of the SCHC packet. With Matching
Operator <tt>ignore</tt> and Compression/Decompression Action
<tt>value-sent</tt>, it behaves exactly as the usual, implicit SCHC
behavior, where the payload simply follows the compression
residue. But it can also be used to intercept the payload:
Compression/Decompression Action <tt>not-sent</tt> then elides it, or
another CDA can apply a special treatment to compress it, instead
of sending it verbatim.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="parsing-payload">
      <name>Parsing the payload</name>
      <section anchor="invoking-packet-description-in-the-same-rule">
        <name>Invoking Packet Description in the Same Rule</name>
        <t>A first possibility is to
continue the compression process inside the ICMPv6 payload, instead
of matching it against a separate Rule. <xref target="fig-alt-icmpv6"/> shows the
resulting Rule. This solution requires creating a Rule for each
original packet format.</t>
        <t>The invoking header's Field Descriptors are distinct from the outer
header's, and are designed from the ICMPv6 message's point of view.</t>
        <t>Fields designed with an application or device role remain unchanged
(e.g. <tt>ipv6-deviid</tt> or <tt>udp-app-port</tt>), but the direction is
reversed during parsing. Field Position is also incremented if a field is repeated,
as for the IPv6 fields in the example.</t>
        <t>The compression mechanism MUST also include the port numbers: an
ICMPv6 error message exists to inform the source that a given flow
failed to reach its destination, and the port numbers are part of
that flow's identification. It is RECOMMENDED to be able to fully
reconstruct the Layer 4 header this way, not just the ports.</t>
        <table anchor="fig-alt-icmpv6">
          <name>ICMPv6 Rule Embedding the Invoking IPv6/UDP Header In Place</name>
          <thead>
            <tr>
              <th align="left">#</th>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left"> </td>
              <td align="left">
                <em>Outer IPv6 header</em></td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">0</td>
              <td align="left">ipv6-version</td>
              <td align="left">4</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">6</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">ipv6-trafficclass</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">ipv6-flowlabel</td>
              <td align="left">20</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">ipv6-payload-length</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">compute</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">ipv6-nextheader</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">58</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">ipv6-hoplimit</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">ipv6-hoplimit</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">ipv6-devprefix</td>
              <td align="left">64</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">aaaa::</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">ipv6-deviid</td>
              <td align="left">64</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">::zzzz</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">ipv6-appprefix</td>
              <td align="left">64</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">ipv6-appiid</td>
              <td align="left">64</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">
                <em>ICMPv6 header</em></td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">icmpv6-type</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">icmpv6-code</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">4</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">13</td>
              <td align="left">icmpv6-checksum</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">compute</td>
            </tr>
            <tr>
              <td align="left">14</td>
              <td align="left">unused</td>
              <td align="left">32</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">
                <em>Invoking (embedded) IPv6 header</em></td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">15</td>
              <td align="left">ipv6-version</td>
              <td align="left">4</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">6</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">16</td>
              <td align="left">ipv6-trafficclass</td>
              <td align="left">8</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">17</td>
              <td align="left">ipv6-flowlabel</td>
              <td align="left">20</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">18</td>
              <td align="left">ipv6-payload-length</td>
              <td align="left">16</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">compute</td>
            </tr>
            <tr>
              <td align="left">19</td>
              <td align="left">ipv6-nextheader</td>
              <td align="left">8</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">17</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">20</td>
              <td align="left">ipv6-hoplimit</td>
              <td align="left">8</td>
              <td align="left">2</td>
              <td align="left">Dw</td>
              <td align="left">1</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">21</td>
              <td align="left">ipv6-hoplimit</td>
              <td align="left">8</td>
              <td align="left">2</td>
              <td align="left">Up</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
            <tr>
              <td align="left">22</td>
              <td align="left">ipv6-devprefix</td>
              <td align="left">64</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">aaaa::</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">23</td>
              <td align="left">ipv6-deviid</td>
              <td align="left">64</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">::zzzz</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">24</td>
              <td align="left">ipv6-appprefix</td>
              <td align="left">64</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
            <tr>
              <td align="left">25</td>
              <td align="left">ipv6-appiid</td>
              <td align="left">64</td>
              <td align="left">2</td>
              <td align="left">Bi</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">
                <em>Invoking (embedded) UDP header</em></td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">26</td>
              <td align="left">udp-dev-port</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">5683</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
            </tr>
            <tr>
              <td align="left">27</td>
              <td align="left">udp-app-port</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
            </tr>
            <tr>
              <td align="left">28</td>
              <td align="left">udp-length</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">compute</td>
            </tr>
            <tr>
              <td align="left">29</td>
              <td align="left">udp-checksum</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">compute</td>
            </tr>
            <tr>
              <td align="left">30</td>
              <td align="left">payload</td>
              <td align="left">remaining</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">-</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
            </tr>
          </tbody>
        </table>
        <t>The <tt>unused</tt> entry skips the 32 bits following the Checksum.</t>
        <t>Note that the IPv6 fields of the invoking header are not sent as residue, but
are used to check that the ICMPv6 packet is not rogue: an error
message whose invoking header does not match the Rule is not
decompressed.</t>
        <t>The result is compact: the payload is elided and the fields of the
invoking IPv6 header are not sent. They are nevertheless matched
against the Rule, which helps to validate that the ICMPv6 message
refers to a packet that really was exchanged with the Device.</t>
        <t>Compared to the solution compressing the invoking packet with its own
Rule (<xref target="newMO"/>), this one has the following advantages:</t>
        <ul spacing="normal">
          <li>
            <t>the residue contains a single RuleID, whereas the other solution
sends a second RuleID for the invoking packet;</t>
          </li>
          <li>
            <t>no length has to be sent to delimit the compressed invoking packet,
and no padding is needed between the two parts.</t>
          </li>
        </ul>
        <t>These advantages come at a cost: the Rule is longer, and since it
describes the complete stack, a Rule is needed for each original
packet format, where the other solution needs a single ICMPv6 Rule
for all of them.</t>
        <figure anchor="fig-alt-icmpv6-residue">
          <name>Residue Layout for that ICMPv6 Rule</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="80" width="448" viewBox="0 0 448 80" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
                <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
                <path d="M 440,32 L 440,64" fill="none" stroke="black"/>
                <path d="M 8,32 L 440,32" fill="none" stroke="black"/>
                <path d="M 8,64 L 440,64" fill="none" stroke="black"/>
                <g class="text">
                  <text x="52" y="52">RuleID</text>
                  <text x="236" y="52">IPv6/ICMPv6/IPv6/UDP</text>
                  <text x="352" y="52">residue</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+----------+------------------------------------------+
|  RuleID  |       IPv6/ICMPv6/IPv6/UDP residue       |
+----------+------------------------------------------+
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="newMO">
        <name>New Matching Operators and Compression/Decompression Actions</name>
        <t>Instead of describing the invoking packet in the same Rule, it can be
compressed with its own Rule. This document introduces two Matching
Operators and two Compression/Decompression Actions:</t>
        <ul spacing="normal">
          <li>
            <t><tt>mo-rule-match</tt>: returns true if the Target Value matches another
Rule, keeping the Up/Down direction.</t>
          </li>
          <li>
            <t><tt>mo-rev-rule-match</tt>: same as <tt>mo-rule-match</tt>, but reversing the
Up/Down direction.</t>
          </li>
          <li>
            <t><tt>cda-compress-sent</tt>: sends a compressed version of the Target
Value, using the matched Rule.</t>
          </li>
          <li>
            <t><tt>cda-rev-compress-sent</tt>: same as <tt>cda-compress-sent</tt>, using the
direction-reversed counterpart of the matched Rule.</t>
          </li>
        </ul>
        <t>The reversed forms exist because, per RFC 4443 <xref target="RFC4443"/>, an
ICMPv6 error message carries back as much as possible of the IPv6
packet that triggered it -- a packet that was sent in the opposite
direction from the error message itself. Compressing that embedded
copy therefore means matching it against, and generating its
residue from, a Rule for the reverse direction.</t>
        <section anchor="example-icmpv6-error-with-reverse-compression">
          <name>Example, ICMPv6 Error with Reverse Compression</name>
          <t><xref target="fig-example-icmpv6"/> gives a Rule for the "Time Exceeded" message,
prefixed with the outer IPv6
header carrying the ICMPv6 message itself (as in <xref target="fig-alt-icmpv6"/>
above): the Type and Code identify the error, the Checksum is
recomputed on decompression, the 32-bit "Unused" field mandated by
RFC 4443 <xref target="RFC4443"/> for this message is elided with <tt>fid-unused</tt>
(<xref target="new-fid"/>), and the Payload -- the offending IPv6 packet -- is
matched and compressed against its own (Up) Rule with
<tt>rev-rule-match</tt> and <tt>rev-compress-sent</tt>, instead of being sent in
full.</t>
          <table anchor="fig-example-icmpv6">
            <name>ICMPv6 Error Compressed Against a Reverse-Direction Rule</name>
            <thead>
              <tr>
                <th align="left">#</th>
                <th align="left">Field</th>
                <th align="left">FL</th>
                <th align="left">FP</th>
                <th align="left">DI</th>
                <th align="left">TV</th>
                <th align="left">MO</th>
                <th align="left">CDA</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <em>Outer IPv6 header</em></td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">0</td>
                <td align="left">ipv6-version</td>
                <td align="left">4</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">6</td>
                <td align="left">equal</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">1</td>
                <td align="left">ipv6-trafficclass</td>
                <td align="left">8</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">0</td>
                <td align="left">ignore</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">2</td>
                <td align="left">ipv6-flowlabel</td>
                <td align="left">20</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">0</td>
                <td align="left">ignore</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">3</td>
                <td align="left">ipv6-payload-length</td>
                <td align="left">16</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">-</td>
                <td align="left">ignore</td>
                <td align="left">compute</td>
              </tr>
              <tr>
                <td align="left">4</td>
                <td align="left">ipv6-nextheader</td>
                <td align="left">8</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">58</td>
                <td align="left">equal</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">5</td>
                <td align="left">ipv6-hoplimit</td>
                <td align="left">8</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">1</td>
                <td align="left">equal</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">6</td>
                <td align="left">ipv6-devprefix</td>
                <td align="left">64</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">aaaa::</td>
                <td align="left">equal</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">7</td>
                <td align="left">ipv6-deviid</td>
                <td align="left">64</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">::zzzz</td>
                <td align="left">equal</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">8</td>
                <td align="left">ipv6-appprefix</td>
                <td align="left">64</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">-</td>
                <td align="left">ignore</td>
                <td align="left">value-sent</td>
              </tr>
              <tr>
                <td align="left">9</td>
                <td align="left">ipv6-appiid</td>
                <td align="left">64</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">-</td>
                <td align="left">ignore</td>
                <td align="left">value-sent</td>
              </tr>
              <tr>
                <td align="left"> </td>
                <td align="left">
                  <em>ICMPv6 header</em></td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">10</td>
                <td align="left">icmpv6-type</td>
                <td align="left">8</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">3</td>
                <td align="left">equal</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">11</td>
                <td align="left">icmpv6-code</td>
                <td align="left">8</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">[0,1]</td>
                <td align="left">match-mapping</td>
                <td align="left">mapping-sent</td>
              </tr>
              <tr>
                <td align="left">12</td>
                <td align="left">icmpv6-checksum</td>
                <td align="left">16</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">-</td>
                <td align="left">ignore</td>
                <td align="left">compute</td>
              </tr>
              <tr>
                <td align="left">13</td>
                <td align="left">unused</td>
                <td align="left">32</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">0</td>
                <td align="left">ignore</td>
                <td align="left">not-sent</td>
              </tr>
              <tr>
                <td align="left">14</td>
                <td align="left">icmpv6-payload</td>
                <td align="left">variable-bits</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">0</td>
                <td align="left">rev-rule-match</td>
                <td align="left">rev-compress-sent</td>
              </tr>
            </tbody>
          </table>
          <t>The bytes following the <tt>unused</tt> entry are assigned to <tt>icmpv6-payload</tt> and
contain the original (invoking) header. If a Rule in the context
matches that payload, compression applies to it as well.</t>
          <t><xref target="fig-icmpv6-residue"/> shows the resulting residue: the RuleID of
the ICMPv6 message, followed by its own compression residue, then a
length for the variable-length structure, the RuleID of the Rule
that compresses the original header, that Rule's compression
residue, the remaining, uncompressed payload, and, since this
concludes the SCHC packet, the final padding bits (<xref target="RFC8724"/>) that
must bring it to a byte boundary, since "Length" here counts bytes,
not bits: spanning the inner RuleID, header residue, and payload
together, it is typically well above the 14-byte escape threshold
(<xref target="I-D.ietf-schc-universal-option"/>), so counting it in bytes keeps that
length prefix itself compact.</t>
          <figure anchor="fig-icmpv6-residue">
            <name>Residue Layout for an ICMPv6 Error Compressing an Embedded, Compressed Header</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="568" viewBox="0 0 568 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,48 L 8,112" fill="none" stroke="black"/>
                  <path d="M 88,48 L 88,112" fill="none" stroke="black"/>
                  <path d="M 168,48 L 168,112" fill="none" stroke="black"/>
                  <path d="M 240,32 L 240,112" fill="none" stroke="black"/>
                  <path d="M 320,48 L 320,112" fill="none" stroke="black"/>
                  <path d="M 400,48 L 400,112" fill="none" stroke="black"/>
                  <path d="M 480,48 L 480,112" fill="none" stroke="black"/>
                  <path d="M 560,32 L 560,112" fill="none" stroke="black"/>
                  <path d="M 248,32 L 368,32" fill="none" stroke="black"/>
                  <path d="M 424,32 L 552,32" fill="none" stroke="black"/>
                  <path d="M 8,48 L 560,48" fill="none" stroke="black"/>
                  <path d="M 8,112 L 560,112" fill="none" stroke="black"/>
                  <g class="text">
                    <text x="396" y="36">Length</text>
                    <text x="44" y="68">RuleID</text>
                    <text x="120" y="68">IPv6/</text>
                    <text x="204" y="68">Length</text>
                    <text x="276" y="68">RuleID</text>
                    <text x="352" y="68">IPv6/</text>
                    <text x="440" y="68">Payload</text>
                    <text x="520" y="68">Padding</text>
                    <text x="48" y="84">(outer)</text>
                    <text x="124" y="84">ICMPv6</text>
                    <text x="280" y="84">(inner)</text>
                    <text x="344" y="84">UDP</text>
                    <text x="128" y="100">residue</text>
                    <text x="360" y="100">residue</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                             |----------------Length-----------------|
+---------+---------+--------+---------+---------+---------+---------+
| RuleID  | IPv6/   | Length | RuleID  | IPv6/   | Payload | Padding |
| (outer) | ICMPv6  |        | (inner) | UDP     |         |         |
|         | residue |        |         | residue |         |         |
+---------+---------+--------+---------+---------+---------+---------+
]]></artwork>
            </artset>
          </figure>
        </section>
      </section>
    </section>
    <section anchor="DevicePings">
      <name>Device does a ping</name>
      <t>A Device may send an Echo Request message to check the availability of
the network and the host running the Application.</t>
      <t>If a ping Echo Request is generated by a Device, then SCHC compression
applies.</t>
      <t>The format of an ICMPv6 Echo Request message is described in
<xref target="Fig-ICMPv6-Echo-Request"/>, with Type=128 and Code=0.</t>
      <figure anchor="Fig-ICMPv6-Echo-Request">
        <name>ICMPv6 Echo Request message format</name>
        <artwork><![CDATA[
       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Type      |     Code      |          Checksum             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           Identifier          |        Sequence Number        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Data ...
      +-+-+-+-+-
]]></artwork>
      </figure>
      <t>If we assume that one rule will be devoted to compressing Echo Request
messages, then the Type and Code are known in the rule to be 128 and 0
and can therefore be elided with the not-sent CDA.</t>
      <t><xref target="RFC4443"/> states that the identifier and sequence number are meant to
"help in matching Echo Responses to this Echo Request" and that they
"may be zero". Data are "zero or more bytes of arbitrary data".</t>
      <t>For constrained devices or networks, we recommend that the Identifier be
zero, the Sequence Number be a counter on 3 bits, and the Data be zero
bytes (absent). Therefore, Identifier is elided with the not-sent CDA,
Sequence Number is transmitted on 3 bits with the LSB CDA and no Data is
transmitted.</t>
      <t>The data part is defined in the rule through the ICMPv6 Payload field.
The payload can be sent as a residue with a value-sent. It is also
possible to elide the data by setting them in the Target Value and use a
not-sent CDA.</t>
      <t>When the destination receives the Echo Request message, it will respond
with an Echo Reply message. This message bears the same format as the
Echo Request message but with Type = 129 (see
<xref target="Fig-ICMPv6-Echo-Request"/>).</t>
      <t><xref target="RFC4443"/> states that the Identifier, Sequence Number, and Data fields
of the Echo Reply message shall contain the same values as the invoking
Echo Request message. Therefore, a rule shall be used similar to that
used for compressing the Echo Request message.</t>
      <section anchor="rule-example">
        <name>Rule example</name>
        <t>The following rule gives an example of a SCHC compression. The type can
be elided if the direction is taken into account. Identifier is ignored
and generated as 0 at decompression. This implies that only one single
ping can be launched at any given time on a device. Finally, only the
least significant 8 bits of the sequence number are sent on the LPWAN,
allowing a serie of 255 consecutive pings.</t>
        <table anchor="Fig-ping-up">
          <name>Example of compression rule for a ping from the device</name>
          <thead>
            <tr>
              <th align="left">#</th>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent bits</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-9</td>
              <td align="left">
                <em>IPv6 headers description</em></td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">icmpv6-type</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Up</td>
              <td align="left">128</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">icmpv6-type</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">129</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">icmpv6-code</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">13</td>
              <td align="left">icmpv6-checksum</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left"> </td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">14</td>
              <td align="left">icmpv6-identifier</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">15</td>
              <td align="left">icmpv6-sequence</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">MSB(13)</td>
              <td align="left">LSB</td>
              <td align="left">3</td>
            </tr>
            <tr>
              <td align="left">16</td>
              <td align="left">icmpv6-payload</td>
              <td align="left">remaining</td>
              <td align="left">1</td>
              <td align="left">Bi</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">data*8</td>
            </tr>
          </tbody>
        </table>
        <t>The transmission cost of the Echo Request message is therefore the size
of the Rule Id + 3 bits and the data size increased of the Payload
residue size. The rule ID Length can be chosen to avoid adding padding.</t>
      </section>
    </section>
    <section anchor="action">
      <name>Device is pinged</name>
      <t>If a Device is pinged, a Rule similar to the one described in the
previous section can be used, but it may be more efficient to delegate
the answer to the SCHC Core.</t>
      <t>Selecting a compression Rule triggers compression and sends the
resulting SCHC Packet to the other end.</t>
      <t>We introduce a new element called <tt>action</tt> for the Rule. An Action
can change that behavior: the Rule is still selected through its MO
results, but the incoming packet is forwarded to a procedure defined in
the <tt>action</tt>. Since the Rule is then used only for the selection, the
Compression/Decompression Actions of its entries do not matter and are
set to <tt>not-sent</tt>.</t>
      <t>The motivating example is an ICMPv6 <xref target="RFC4443"/> Echo Request sent to
a Device. The Device receives the compressed message and answers
with an Echo Reply, but propagating the Echo Request over the LPWAN
costs two messages on a constrained link, and the Identifier and
Sequence Number fields compress poorly when the sender is unaware of
the compression scheme. The Action <tt>action-proxy-ping</tt> avoids that
traffic: the core SCHC C/D answers the Echo Request on behalf of the
Device.</t>
      <t>The Action takes a parameter, in seconds, giving the interval during
which the Device is considered active. During this interval, the
proxy echoes the ping requests; after it, they are discarded. The
parameter is carried in <tt>action-value</tt>, a list reusing the Target
Value structure, so an Action may take several arguments.</t>
      <t><xref target="fig-action-rule"/> shows a compression Rule for pinging a Device,
with the identity short names used in the Field and CDA columns. The
Action applies to the Rule as a whole, and is therefore shown above its
entries.</t>
      <figure anchor="fig-action-rule">
        <name>Example Compression Rule for a Ping to a Device</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="256" width="520" viewBox="0 0 520 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,240" fill="none" stroke="black"/>
              <path d="M 48,64 L 48,96" fill="none" stroke="black"/>
              <path d="M 48,128 L 48,240" fill="none" stroke="black"/>
              <path d="M 184,64 L 184,96" fill="none" stroke="black"/>
              <path d="M 184,128 L 184,240" fill="none" stroke="black"/>
              <path d="M 224,32 L 224,104" fill="none" stroke="black"/>
              <path d="M 224,120 L 224,240" fill="none" stroke="black"/>
              <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
              <path d="M 264,128 L 264,240" fill="none" stroke="black"/>
              <path d="M 304,64 L 304,96" fill="none" stroke="black"/>
              <path d="M 304,128 L 304,240" fill="none" stroke="black"/>
              <path d="M 344,64 L 344,96" fill="none" stroke="black"/>
              <path d="M 344,128 L 344,240" fill="none" stroke="black"/>
              <path d="M 424,64 L 424,96" fill="none" stroke="black"/>
              <path d="M 424,128 L 424,240" fill="none" stroke="black"/>
              <path d="M 512,64 L 512,240" fill="none" stroke="black"/>
              <path d="M 8,32 L 224,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 512,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 512,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 512,128" fill="none" stroke="black"/>
              <path d="M 8,240 L 512,240" fill="none" stroke="black"/>
              <path class="jump" d="M 224,120 C 218,120 218,104 224,104" fill="none" stroke="black"/>
              <g class="text">
                <text x="48" y="52">Action:</text>
                <text x="144" y="52">proxy-ping(300)</text>
                <text x="24" y="84">#</text>
                <text x="80" y="84">Field</text>
                <text x="204" y="84">FL</text>
                <text x="244" y="84">FP</text>
                <text x="284" y="84">DI</text>
                <text x="324" y="84">TV</text>
                <text x="364" y="84">MO</text>
                <text x="448" y="84">CDA</text>
                <text x="36" y="116">IPv6</text>
                <text x="88" y="116">Headers</text>
                <text x="168" y="116">description</text>
                <text x="260" y="116">omitted)</text>
                <text x="28" y="148">10</text>
                <text x="104" y="148">icmpv6-type</text>
                <text x="200" y="148">8</text>
                <text x="240" y="148">1</text>
                <text x="284" y="148">Dw</text>
                <text x="328" y="148">128</text>
                <text x="376" y="148">equal</text>
                <text x="468" y="148">not-sent</text>
                <text x="28" y="164">11</text>
                <text x="104" y="164">icmpv6-code</text>
                <text x="200" y="164">8</text>
                <text x="240" y="164">1</text>
                <text x="284" y="164">Bi</text>
                <text x="320" y="164">0</text>
                <text x="376" y="164">equal</text>
                <text x="468" y="164">not-sent</text>
                <text x="28" y="180">12</text>
                <text x="88" y="180">icmpv6-</text>
                <text x="204" y="180">16</text>
                <text x="240" y="180">1</text>
                <text x="284" y="180">Bi</text>
                <text x="320" y="180">-</text>
                <text x="380" y="180">ignore</text>
                <text x="468" y="180">not-sent</text>
                <text x="100" y="196">identifier</text>
                <text x="28" y="212">13</text>
                <text x="88" y="212">icmpv6-</text>
                <text x="204" y="212">16</text>
                <text x="240" y="212">1</text>
                <text x="284" y="212">Bi</text>
                <text x="320" y="212">0</text>
                <text x="384" y="212">MSB(24)</text>
                <text x="468" y="212">not-sent</text>
                <text x="92" y="228">sequence</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------------------------+
| Action: proxy-ping(300)  |
+----+----------------+----+----+----+----+---------+----------+
| #  | Field          | FL | FP | DI | TV | MO      | CDA      |
+----+----------------+----+----+----+----+---------+----------+
| IPv6 Headers description (omitted)                           |
+----+----------------+----+----+----+----+---------+----------+
| 10 | icmpv6-type    | 8  | 1  | Dw | 128| equal   | not-sent |
| 11 | icmpv6-code    | 8  | 1  | Bi | 0  | equal   | not-sent |
| 12 | icmpv6-        | 16 | 1  | Bi | -  | ignore  | not-sent |
|    | identifier     |    |    |    |    |         |          |
| 13 | icmpv6-        | 16 | 1  | Bi | 0  | MSB(24) | not-sent |
|    | sequence       |    |    |    |    |         |          |
+----+----------------+----+----+----+----+---------+----------+
]]></artwork>
        </artset>
      </figure>
      <t>In the data model, the Action is added to the compression Rule
itself, as a sibling of its entries, and not to a single entry:</t>
      <ul spacing="normal">
        <li>
          <t><tt>action</tt>: an identityref to <tt>action-type</tt>, defaulting to
<tt>action-forward</tt>. Being optional and defaulted, a Rule that does
not carry it behaves exactly as in RFC 8724 <xref target="RFC8724"/>.</t>
        </li>
        <li>
          <t><tt>action-value</tt>: the Action's arguments, a list based on the Target
Value structure, as for Matching Operator and
Compression/Decompression Action arguments.</t>
        </li>
      </ul>
      <t>The corresponding new identities are:</t>
      <ul spacing="normal">
        <li>
          <t><tt>action-base-type</tt>: base identity for the Action applied to a
packet matching a compression Rule.</t>
        </li>
        <li>
          <t><tt>action-forward</tt>: the default, where the packet is handed over to
the lower layer, as specified in RFC 8724 <xref target="RFC8724"/>.</t>
        </li>
        <li>
          <t><tt>action-proxy-ping</tt>: the packet is processed locally by a ping
proxy, which answers the Echo Request on behalf of the Device.</t>
        </li>
      </ul>
    </section>
    <section anchor="ProxyErrMsg">
      <name>Device is the source of an ICMPv6 error message</name>
      <t>As stated in <xref target="RFC4443"/>, a node should generate an ICMPv6 message in
response to an IPv6 packet that is malformed or which cannot be
processed due to some incorrect field value.</t>
      <t>The general intent of this document is to spare both the Device and the
LPWAN network this un-necessary traffic. The incorrect packets should be
caught at the SCHC Core and the ICMPv6 notification should be sent back
from there.</t>
      <figure anchor="Fig-ICMPv6-up">
        <name>Example of ICMPv6 error message sent back to the Internet</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="192" width="512" viewBox="0 0 512 192" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 24,64 L 24,160" fill="none" stroke="black"/>
              <path d="M 120,64 L 120,160" fill="none" stroke="black"/>
              <path d="M 224,64 L 224,160" fill="none" stroke="black"/>
              <path d="M 456,64 L 456,160" fill="none" stroke="black"/>
              <path d="M 232,80 L 448,80" fill="none" stroke="black"/>
              <path d="M 232,112 L 448,112" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="456,112 444,106.4 444,117.6" fill="black" transform="rotate(0,448,112)"/>
              <polygon class="arrowhead" points="240,80 228,74.4 228,85.6" fill="black" transform="rotate(180,232,80)"/>
              <g class="text">
                <text x="28" y="36">Device</text>
                <text x="120" y="36">NGW</text>
                <text x="188" y="36">SCHC</text>
                <text x="228" y="36">Core</text>
                <text x="436" y="36">Internet</text>
                <text x="492" y="36">Host</text>
                <text x="304" y="68">Destination</text>
                <text x="388" y="68">Port=XXX</text>
                <text x="260" y="132">ICMPv6</text>
                <text x="308" y="132">Port</text>
                <text x="376" y="132">Unreachable</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
     Device       NGW     SCHC Core                    Internet Host

       |           |            |    Destination Port=XXX    |
       |           |            |<---------------------------|
       |           |            |                            |
       |           |            |--------------------------->|
       |           |            | ICMPv6 Port Unreachable    |
       |           |            |                            |
       |           |            |                            |
]]></artwork>
        </artset>
      </figure>
      <t><xref target="Fig-ICMPv6-up"/> shows an example of an IPv6 packet trying to reach a
Device.</t>
      <t>Let's assume that no rule matches the incoming packet (i.e. there is no
co-compression rule)</t>
      <t>Instead of sending the packet over the LPWAN and having this packet
rejected by the Device, the SCHC Core issues an ICMPv6 error message
"Destination Unreachable" (Type 1) with Code 1 ("Port Unreachable") on
behalf of the Device.</t>
      <t>In that case the SCHC C/D MAY act as a router (i.e. it MUST have a
routable IPv6 address to generate an ICMPv6 message). When compressing a
packet containing an IPv6 header, no compression rules are found and:</t>
      <ul spacing="normal">
        <li>
          <t>if the incoming packet contains some extension headers and no SCHC
Rule covers this case, a parameter problem may be generated
(type 4),</t>
        </li>
        <li>
          <t>no rule contains the IPv6 device address found in the incoming packet,
a no route to destination ICMPv6 message (type 0, code 3) may be
generated,</t>
        </li>
        <li>
          <t>a device IPv6 address is found, but no port matches, a port
unreachable ICMPv6 message (type 0, code 4) may be generated,</t>
        </li>
        <li>
          <t>if the incoming packet is too large for any of the fragmentation
rules, an ICMPv6 Message Too big MAY be generated with the largest
size allowed by the fragmentation rules.</t>
        </li>
      </ul>
    </section>
    <section anchor="device-is-the-destination">
      <name>Device is the destination of an ICMPv6 error message</name>
      <t>In this situation, a Device has been configured to send information to a
server on the Internet. If this server becomes no longer accessible, an
ICMPv6 message will be generated back towards the Device by either an
intermediate router or the destination. This information can be useful
to the Device, for example, for reducing the reporting rate in case of
periodic reporting of data.</t>
      <t>Therefore, the ICMPv6 error message should reach the Device. The data
inside this error message includes the packet at the origin of the
error. It should be compressed by the SCHC Core, but in the reverse
direction. The MOs and CDAs defined in <xref target="newMO"/> perform this
operation.</t>
      <figure anchor="Fig-ICMPv6-down">
        <name>Example of ICMPv6 error message sent back to the Device</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 24,64 L 24,176" fill="none" stroke="black"/>
              <path d="M 120,96 L 120,128" fill="none" stroke="black"/>
              <path d="M 224,64 L 224,176" fill="none" stroke="black"/>
              <path d="M 456,64 L 456,176" fill="none" stroke="black"/>
              <path d="M 32,96 Q 34,92.8 36,96 Q 38,99.2 40,96 Q 42,92.8 44,96 Q 46,99.2 48,96 Q 50,92.8 52,96 Q 54,99.2 56,96 Q 58,92.8 60,96 Q 62,99.2 64,96 Q 66,92.8 68,96 Q 70,99.2 72,96 Q 74,92.8 76,96 Q 78,99.2 80,96 Q 82,92.8 84,96 Q 86,99.2 88,96 Q 90,92.8 92,96 Q 94,99.2 96,96 Q 98,92.8 100,96 Q 102,99.2 104,96 Q 106,92.8 108,96 Q 110,99.2 112,96 " fill="none" stroke="black"/>
              <path d="M 128,96 L 216,96" fill="none" stroke="black"/>
              <path d="M 232,96 L 400,96" fill="none" stroke="black"/>
              <path d="M 232,112 L 400,112" fill="none" stroke="black"/>
              <path d="M 32,128 Q 34,124.8 36,128 Q 38,131.2 40,128 Q 42,124.8 44,128 Q 46,131.2 48,128 Q 50,124.8 52,128 Q 54,131.2 56,128 Q 58,124.8 60,128 Q 62,131.2 64,128 Q 66,124.8 68,128 Q 70,131.2 72,128 Q 74,124.8 76,128 Q 78,131.2 80,128 Q 82,124.8 84,128 Q 86,131.2 88,128 Q 90,124.8 92,128 Q 94,131.2 96,128 Q 98,124.8 100,128 Q 102,131.2 104,128 Q 106,124.8 108,128 Q 110,131.2 112,128 " fill="none" stroke="black"/>
              <path d="M 128,128 L 216,128" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="240,112 228,106.4 228,117.6" fill="black" transform="rotate(180,232,112)"/>
              <polygon class="arrowhead" points="224,96 212,90.4 212,101.6" fill="black" transform="rotate(0,216,96)"/>
              <polygon class="arrowhead" points="40,128 28,122.4 28,133.6" fill="black" transform="rotate(180,32,128)"/>
              <g class="text">
                <text x="28" y="36">Device</text>
                <text x="120" y="36">NGW</text>
                <text x="188" y="36">SCHC</text>
                <text x="228" y="36">Core</text>
                <text x="436" y="36">Internet</text>
                <text x="500" y="36">Server</text>
                <text x="120" y="68">|</text>
                <text x="52" y="84">SCHC</text>
                <text x="116" y="84">compressed</text>
                <text x="180" y="84">IPv6</text>
                <text x="408" y="100">X</text>
                <text x="260" y="132">ICMPv6</text>
                <text x="308" y="132">Host</text>
                <text x="376" y="132">unreachable</text>
                <text x="44" y="148">SCHC</text>
                <text x="108" y="148">compressed</text>
                <text x="180" y="148">ICMPv6</text>
                <text x="268" y="148">payload:</text>
                <text x="324" y="148">IPv6</text>
                <text x="372" y="148">packet</text>
                <text x="60" y="164">payload:</text>
                <text x="140" y="164">compressed</text>
                <text x="204" y="164">IPv6</text>
                <text x="120" y="180">|</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
     Device       NGW     SCHC Core                    Internet Server

       |           |            |                            |
       | SCHC compressed IPv6   |                            |
       |~~~~~~~~~~~|----------->|----------------------X     |
       |           |            |<---------------------      |
       |<~~~~~~~~~~|------------| ICMPv6 Host unreachable    |
       |SCHC compressed ICMPv6  | payload: IPv6 packet       |
       |payload: compressed IPv6|                            |
       |           |            |                            |
]]></artwork>
        </artset>
      </figure>
      <t><xref target="Fig-ICMPv6-down"/> illustrates this behavior. The ICMPv6 error message
is compressed as described in <xref target="ErrMsgCompr"/> and forwarded over the
LPWAN to the Device.</t>
      <t>The SCHC returning message contains the SCHC residue of the ICMPv6
message and MAY contain the compressed original message contained in the
ICMP message. The compression can be done by the SCHC Core by reversing
the direction as if this message was issued by the device.</t>
      <section anchor="ErrMsgCompr">
        <name>Example of ICMPv6 error message compression.</name>
        <t>The ICMPv6 error messages defined in <xref target="RFC4443"/> contain the fields
shown in <xref target="Fig-ICMP-error"/>.</t>
        <figure anchor="Fig-ICMP-error">
          <name>ICMPv6 Error Message format</name>
          <artwork><![CDATA[
       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     Type      |     Code      |          Checksum             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           Value/Unused                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                    As much of invoking packet                 |
      +                as possible without the ICMPv6 packet          +
      |                exceeding the minimum IPv6 MTU                 |
]]></artwork>
        </figure>
        <t><xref target="RFC4443"/> states that Type can take the values 1 to 4, and Code can be
set to values between 0 and 6. Value is unused for the Destination
Unreachable and Time Exceeded messages. It contains the MTU for the
Packet Too Big message and a pointer to the byte causing the error for
the Parameter Error message.</t>
        <t>The payload is viewed as a field. An unsued field MUST not appear in the
compressoin rules.</t>
        <t>The source address of the message SHOULD be <tt>ignore</tt>, since it can be
initiated by any router on the path.</t>
        <t>The following generic rule can therefore be used to compress all ICMPv6
error messages as defined today. More specific rules can also be defined
to achieve better compression of some error messages.</t>
        <t>The Type field can be associated with a matching list [1, 2, 3, 4] and
is therefore compressed to 2 bits. Code can be reduced to 3 bits using
the LSB CDA. Compression of the Value field for the Packet Too Big
message is discussed in <xref target="basicICMPv6"/>.</t>
        <t>The first rule example <xref target="Fig-icmp-error1"/> just sends the ICMP type and
code as residue to the device.</t>
        <table anchor="Fig-icmp-error1">
          <name>Example of compression rule for a ICMP error to a device</name>
          <thead>
            <tr>
              <th align="left">#</th>
              <th align="left">Field</th>
              <th align="left">FL</th>
              <th align="left">FP</th>
              <th align="left">DI</th>
              <th align="left">TV</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent bits</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0-9</td>
              <td align="left">
                <em>IPv6 headers description</em></td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">icmpv6-type</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">3</td>
              <td align="left">equal</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">11</td>
              <td align="left">icmpv6-code</td>
              <td align="left">8</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">[0, 1]</td>
              <td align="left">match-mapping</td>
              <td align="left">mapping-sent</td>
              <td align="left">1</td>
            </tr>
            <tr>
              <td align="left">12</td>
              <td align="left">icmpv6-checksum</td>
              <td align="left">16</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left"> </td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">13</td>
              <td align="left">unused</td>
              <td align="left">32</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">14</td>
              <td align="left">icmpv6-payload</td>
              <td align="left">remaining</td>
              <td align="left">1</td>
              <td align="left">Dw</td>
              <td align="left">0</td>
              <td align="left">ignore</td>
              <td align="left">not-sent</td>
              <td align="left">0</td>
            </tr>
          </tbody>
        </table>
        <t>The compression of the offending packet in the reverse direction relies
on the <tt>rev-rule-match</tt> MO and the <tt>rev-compress-sent</tt> CDA defined in
<xref target="newMO"/>. Used with the <tt>not-sent</tt> CDA, <tt>rev-rule-match</tt> only checks
that a Rule matches the payload, which is then elided, so the residue
still contains only the ICMPv6 type and code. Used with
<tt>rev-compress-sent</tt>, the offending packet is compressed and sent as
residue, as detailed in <xref target="fig-example-icmpv6"/> and its residue layout
(<xref target="fig-icmpv6-residue"/>).</t>
      </section>
    </section>
    <section anchor="yang-tree">
      <name>YANG Data Model Extensions</name>
      <t>This document extends the SCHC YANG Data Model of <xref target="RFC9363"/>. The
complete YANG module, including all the identities and the leaves
listed below, is found in <xref target="I-D.toutain-schc-rfc9363bis"/>. This
section only lists the elements related to this document.</t>
      <t>The new Field IDs, all based on <tt>fid-icmpv6-base-type</tt> for the ICMPv6
ones (<xref target="new-fid"/>):</t>
      <ul spacing="normal">
        <li>
          <t><tt>fid-icmpv6-type</tt>, <tt>fid-icmpv6-code</tt>, <tt>fid-icmpv6-checksum</tt>,
<tt>fid-icmpv6-mtu</tt>, <tt>fid-icmpv6-pointer</tt>, <tt>fid-icmpv6-identifier</tt>,
<tt>fid-icmpv6-sequence</tt>: the fields of the ICMPv6 header.</t>
        </li>
        <li>
          <t><tt>fid-icmpv6-payload</tt>: the ICMPv6 payload, parsed as a specific field.</t>
        </li>
        <li>
          <t><tt>fid-unused</tt>: skips an unused part of a header.</t>
        </li>
        <li>
          <t><tt>fid-payload</tt>: the trailing payload of the packet, which uses the
<tt>fl-remaining</tt> Field Length function of
<xref target="I-D.ietf-schc-universal-option"/>.</t>
        </li>
      </ul>
      <t>The new Matching Operators (<xref target="newMO"/>):</t>
      <ul spacing="normal">
        <li>
          <t><tt>mo-rev-rule-match</tt>: the value contained in the Field Value matches a
Rule. The direction used for matching is the opposite of the incoming
message: UP becomes DOWN and DOWN becomes UP. This MO can be used to
test if the Payload contained in the ICMPv6 message matches a Rule.
This means that the original packet, at the origin of the ICMPv6
message, may have been generated from the SCHC decompression.</t>
        </li>
        <li>
          <t><tt>mo-rule-match</tt>: the value contained in the Target Value matches a
Rule. The direction is the one of the incoming message. This MO is
not used for ICMPv6 messages, but since it can be used in other
situations, it has been included in the Data Model.</t>
        </li>
      </ul>
      <t>The new Compression/Decompression Actions (<xref target="newMO"/>). The Field Value
may be compressed by a Rule. The result SHOULD be included in the SCHC
message as a variable length residue. It contains the Rule ID used by
the compression, the residue, the payload and some padding bits, since
the variable length in it is in bytes.</t>
      <ul spacing="normal">
        <li>
          <t><tt>cda-rev-compress-sent</tt>: the direction used for compression is the
opposite of the incoming message: UP becomes DOWN and DOWN becomes UP.</t>
        </li>
        <li>
          <t><tt>cda-compress-sent</tt>: the direction used for compression is the same
as for the incoming message.</t>
        </li>
      </ul>
      <t>The new elements of the Rule and the Action identities (<xref target="action"/>):</t>
      <ul spacing="normal">
        <li>
          <t><tt>action</tt> and <tt>action-value</tt>: leaves of the compression Rule, as
siblings of its entries, giving the Action and its arguments.</t>
        </li>
        <li>
          <t><tt>action-base-type</tt>, <tt>action-forward</tt>, <tt>action-proxy-ping</tt>: the
identities of the Actions.</t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security considerations</name>
      <t>flood the return path with ICMP error messages.</t>
      <t>When the invoking packet is described in the same Rule
(<xref target="parsing-payload"/>), the IPv6 fields of the invoking header are not
sent, but are used to check that the ICMPv6 packet is not rogue: an
error message whose invoking header does not match the Rule is not
decompressed.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The following people have been co-authors of precursor versions of this
draft. Their contribution is deeply appreciated and acknowledged.</t>
      <ul spacing="normal">
        <li>
          <t>Arunprabhu Kandasamy (Acklio)</t>
        </li>
        <li>
          <t>Diego Dujovne (Universidad Diego Portales)</t>
        </li>
        <li>
          <t>Juan Carlos Zuniga (Cisco)</t>
        </li>
      </ul>
    </section>
    <section anchor="changes">
      <name>Changes</name>
      <ul spacing="normal">
        <li>
          <t>ICMPv6 MTU (<xref target="basicICMPv6"/>): added a remark on compressing the MTU
with the MSB/LSB CDA (the LSB example of the Packet Too Big Value
field had disappeared from <xref target="device-is-the-destination"/>).</t>
        </li>
        <li>
          <t><xref target="device-is-the-destination"/>: the sentence on sending the Value
field on 11 bits was replaced by a reference to <xref target="basicICMPv6"/>.</t>
        </li>
        <li>
          <t><xref target="parsing-payload"/>: the subsection describing the invoking packet in
the same Rule now comes before the new MOs and CDAs.
The subsection title was changed from "Describing the Invoking
Packet in the Same Rule" to "Invoking Packet Description in the
Same Rule".</t>
        </li>
        <li>
          <t><xref target="parsing-payload"/>: added a note after <xref target="fig-alt-icmpv6"/> stating that
the invoking IPv6 fields are not sent but are used to detect rogue
ICMPv6 packets.</t>
        </li>
        <li>
          <t>Throughout: YANG identifiers in the text are now typeset as code (backticks),
so they appear in a monospaced font in the PDF/HTML versions, instead of being
written between double quotes. The typo "rev-rule match" is corrected to
<tt>rev-rule-match</tt>.</t>
        </li>
        <li>
          <t>ICMPv6 Pointer (<xref target="basicICMPv6"/>): added a remark on compressing the
Pointer: 6 bits with the LSB CDA for errors in the fixed IPv6 header
(value lower than 40), up to 11 bits for errors in extension headers
or options.</t>
        </li>
        <li>
          <t><xref target="security-considerations"/>: added the same note on the invoking IPv6 fields
used to detect rogue ICMPv6 packets.</t>
        </li>
        <li>
          <t><xref target="parsing-payload"/>: the sentence stating that the in-place description of the
invoking packet requires a Rule for each original packet format was moved
from the end of the subsection to its introduction.</t>
        </li>
        <li>
          <t><xref target="parsing-payload"/>: rewrote the paragraph following <xref target="fig-alt-icmpv6"/> (it
said the result "should be better", which no longer follows the other
solution) and added objective arguments comparing the two solutions.</t>
        </li>
        <li>
          <t><xref target="parsing-payload"/>: the note on the <tt>unused</tt> entry was moved from the second
example (<xref target="fig-example-icmpv6"/>) to the first one (<xref target="fig-alt-icmpv6"/>).</t>
        </li>
        <li>
          <t><xref target="newMO"/>: the list of the new MOs and CDAs was merged with their
descriptions, with one item per identifier.</t>
        </li>
        <li>
          <t><xref target="basicICMPv6"/>, <xref target="DevicePings"/>: the remark that the Checksum is
reconstructed with the <tt>compute-*</tt> CDA was moved from the ping section to the
description of the ICMPv6 Checksum field.</t>
        </li>
        <li>
          <t><xref target="ProxyErrMsg"/>: the Parameter Problem case now states that the incoming
packet contains extension headers that no SCHC Rule covers.</t>
        </li>
        <li>
          <t><xref target="device-is-the-destination"/>: removed the duplicate explanation of
<tt>rev-rule-match</tt> and the second and third rule examples
(<tt>Fig-icmp-error2</tt>, <tt>Fig-icmp-error3</tt>), now covered by <xref target="newMO"/> and
<xref target="fig-example-icmpv6"/>, which are referenced instead.</t>
        </li>
        <li>
          <t><xref target="action"/> ("Device is pinged"): new section copied from <xref target="I-D.toutain-schc-rfc9363bis"/>, describing the
Action of a Rule (<tt>action</tt>, <tt>action-value</tt>, <tt>action-forward</tt>,
<tt>action-proxy-ping</tt>) with the ping proxy example; the reference to the
entry-index column and short names of the other draft was reworded, and the
reference to the draft-barthel-lpwan-oam-schc draft was removed.</t>
        </li>
        <li>
          <t><xref target="action"/>: the section now starts by stating that a Rule similar to the one of
<xref target="DevicePings"/> can be used, but that it may be more efficient to delegate
the answer to the SCHC Core.</t>
        </li>
        <li>
          <t><xref target="action"/>: added the sentence introducing the new <tt>action</tt> element of the Rule.</t>
        </li>
        <li>
          <t><xref target="action"/>: in <xref target="fig-action-rule"/>, the Echo Request Type is written 128 (it was 80,
its hexadecimal value) and the Code and Sequence Number target values 0, like the
other tables; the paragraph layout was cleaned up.</t>
        </li>
        <li>
          <t><xref target="yang-tree"/>: the section was renamed "YANG Data Model Extensions" and now
lists every YANG element related to this document (Field IDs, MOs, CDAs,
Action), stating that the complete module is in <xref target="I-D.toutain-schc-rfc9363bis"/>.</t>
        </li>
        <li>
          <t>Authors: added Marion Dumay as the last co-author.</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="I-D.ietf-schc-universal-option">
        <front>
          <title>Options representation in SCHC YANG Data Models</title>
          <author fullname="Quentin Lampin" initials="Q." surname="Lampin">
            <organization>Orange</organization>
          </author>
          <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
            <organization>Consultant</organization>
          </author>
          <author fullname="Marco Tiloca" initials="M." surname="Tiloca">
            <organization>RISE AB</organization>
          </author>
          <author fullname="Laurent Toutain" initials="L." surname="Toutain">
            <organization>IMT Atlantique</organization>
          </author>
          <author fullname="Samar Sirohi" initials="S." surname="Sirohi">
            <organization>Institut MINES TELECOM; IMT Atlantique</organization>
          </author>
          <date day="22" month="October" year="2026"/>
          <abstract>
            <t>   Keeping option identifiers in SCHC Rules simplifies interoperability
   and the evolution of SCHC compression when a protocol introduces
   options that the current SCHC implementation does not know.  This
   document explains why the Field Identifiers (FIDs) defined for CoAP
   options in RFC 9363 do not scale: a FID must be allocated,
   standardized and implemented for each option a protocol defines,
   before any Rule can describe that option.  It presents an evolution
   of the compression Rule defined in RFC 9363, in which an entry refers
   to an option by the pair (option space, option number), called a
   Universal Option, and in which entries are indexed, ordered and can
   reference one another.  It also presents a data model dedicated to
   CoAP, which processes options directly from the option number carried
   in the message, instead of mapping each option to a FID of its own.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-schc-universal-option-02"/>
      </reference>
      <reference anchor="I-D.toutain-schc-rfc9363bis">
        <front>
          <title>*** BROKEN REFERENCE ***</title>
          <author>
            <organization/>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC4443">
        <front>
          <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
          <author fullname="A. Conta" initials="A." surname="Conta"/>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta"/>
          <date month="March" year="2006"/>
          <abstract>
            <t>This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol). ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6). [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="STD" value="89"/>
        <seriesInfo name="RFC" value="4443"/>
        <seriesInfo name="DOI" value="10.17487/RFC4443"/>
      </reference>
      <reference anchor="RFC4861">
        <front>
          <title>Neighbor Discovery for IP version 6 (IPv6)</title>
          <author fullname="T. Narten" initials="T." surname="Narten"/>
          <author fullname="E. Nordmark" initials="E." surname="Nordmark"/>
          <author fullname="W. Simpson" initials="W." surname="Simpson"/>
          <author fullname="H. Soliman" initials="H." surname="Soliman"/>
          <date month="September" year="2007"/>
          <abstract>
            <t>This document specifies the Neighbor Discovery protocol for IP Version 6. IPv6 nodes on the same link use Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers, and to maintain reachability information about the paths to active neighbors. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4861"/>
        <seriesInfo name="DOI" value="10.17487/RFC4861"/>
      </reference>
      <reference anchor="RFC4884">
        <front>
          <title>Extended ICMP to Support Multi-Part Messages</title>
          <author fullname="R. Bonica" initials="R." surname="Bonica"/>
          <author fullname="D. Gan" initials="D." surname="Gan"/>
          <author fullname="D. Tappan" initials="D." surname="Tappan"/>
          <author fullname="C. Pignataro" initials="C." surname="Pignataro"/>
          <date month="April" year="2007"/>
          <abstract>
            <t>This document redefines selected ICMP messages to support multi-part operation. A multi-part ICMP message carries all of the information that ICMP messages carried previously, as well as additional information that applications may require.</t>
            <t>Multi-part messages are supported by an ICMP extension structure. The extension structure is situated at the end of the ICMP message. It includes an extension header followed by one or more extension objects. Each extension object contains an object header and object payload. All object headers share a common format.</t>
            <t>This document further redefines the above mentioned ICMP messages by specifying a length attribute. All of the currently defined ICMP messages to which an extension structure can be appended include an "original datagram" field. The "original datagram" field contains the initial octets of the datagram that elicited the ICMP error message. Although the original datagram field is of variable length, the ICMP message does not include a field that specifies its length. Therefore, in order to facilitate message parsing, this document allocates eight previously reserved bits to reflect the length of the "original datagram" field.</t>
            <t>The proposed modifications change the requirements for ICMP compliance. The impact of these changes on compliant implementations is discussed, and new requirements for future implementations are presented.</t>
            <t>This memo updates RFC 792 and RFC 4443. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="4884"/>
        <seriesInfo name="DOI" value="10.17487/RFC4884"/>
      </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="RFC8724">
        <front>
          <title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
          <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
          <author fullname="L. Toutain" initials="L." surname="Toutain"/>
          <author fullname="C. Gomez" initials="C." surname="Gomez"/>
          <author fullname="D. Barthel" initials="D." surname="Barthel"/>
          <author fullname="JC. Zuniga" initials="JC." surname="Zuniga"/>
          <date month="April" year="2020"/>
          <abstract>
            <t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t>
            <t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t>
            <t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t>
            <t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8724"/>
        <seriesInfo name="DOI" value="10.17487/RFC8724"/>
      </reference>
      <reference anchor="RFC9363">
        <front>
          <title>A YANG Data Model for Static Context Header Compression (SCHC)</title>
          <author fullname="A. Minaburo" initials="A." surname="Minaburo"/>
          <author fullname="L. Toutain" initials="L." surname="Toutain"/>
          <date month="March" year="2023"/>
          <abstract>
            <t>This document describes a YANG data model for the Static Context Header Compression (SCHC) compression and fragmentation Rules.</t>
            <t>This document formalizes the description of the Rules for better interoperability between SCHC instances either to exchange a set of Rules or to modify the parameters of some Rules.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9363"/>
        <seriesInfo name="DOI" value="10.17487/RFC9363"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
