<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.21 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ipsecme-diet-esp-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.24.0 -->
  <front>
    <title abbrev="EHCP">ESP Header Compression Profile</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ipsecme-diet-esp-03"/>
    <author initials="D." surname="Migault" fullname="Daniel Migault">
      <organization>Ericsson</organization>
      <address>
        <email>daniel.migault@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Hatami" fullname="Maryam Hatami">
      <organization>Concordia University</organization>
      <address>
        <email>maryam.hatami@mail.concordia.ca</email>
      </address>
    </author>
    <author initials="S." surname="Céspedes" fullname="Sandra Céspedes">
      <organization>Concordia University</organization>
      <address>
        <email>sandra.cespedes@concordia.ca</email>
      </address>
    </author>
    <author initials="W." surname="Atwood" fullname="J. William Atwood">
      <organization>Concordia University</organization>
      <address>
        <email>william.atwood@concordia.ca</email>
      </address>
    </author>
    <author initials="T." surname="Guggemos" fullname="Tobias Guggemos">
      <organization>LMU</organization>
      <address>
        <email>guggemos@nm.ifi.lmu.de</email>
      </address>
    </author>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universitaet Bremen TZI</organization>
      <address>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="November" day="25"/>
    <area>Security</area>
    <workgroup>IPsecme</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 61?>

<t>The document specifies Diet-ESP, an ESP Header Compression Profile (EHCP) that compresses IPsec/ESP communications using Static Context Header Compression (SCHC).</t>
    </abstract>
  </front>
  <middle>
    <?line 68?>

<section anchor="requirements-notation">
      <name>Requirements notation</name>
      <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.
<?line -6?>
      </t>
    </section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>The Encapsulating Security Payload (ESP) <xref target="RFC4303"/> protocol is part of the IPsec <xref target="RFC4301"/> suite of protocols and can provide confidentiality, data origin authentication, integrity, anti-replay, and traffic flow confidentiality. The set of services ESP provides depends on the Security Association (SA) parameters negotiated between devices.</t>
      <t>An ESP packet is composed of the ESP Header, the ESP Payload, the ESP Trailer, and the Integrity Check Value (ICV). ESP has two modes of operation: Transport and Tunnel. In Transport mode, the ESP Payload consists of the payload of the original IP packet; the ESP Header is inserted after the original IP packet header. In Tunnel mode, commonly used for VPNs, the ESP Header is placed after an outer IP header and before the inner IP packet headers of the original datagram. This ensures both the original IP headers and payload are protected. Consequently, the ESP Payload field contains either the payload from the original IP packet or the fully-encapsulated IP packet, in transport mode or tunnel mode, respectively.</t>
      <t>The ESP Trailer, placed at the end of the encrypted payload, includes fields such as Padding and Pad Length to ensure proper alignment, and Next Header to indicate the protocol following the ESP header. The ICV, calculated over the ESP Header, ESP Payload, and ESP Trailer, is appended after the ESP Trailer to ensure packet integrity. For a simplified overview of ESP, readers are referred to Minimal ESP <xref target="RFC9333"/>.</t>
      <t>While ESP is effective in securing traffic, further optimization can reduce packet sizes, enhancing performance in networks with limited bandwidth. In such environments, reducing the size of transmitted packets is essential to improve efficiency. This document defines the ESP Header Compression Profile (EHCP), namely Diet-ESP, for compression/decompression (C/D) of IPsec/ESP <xref target="RFC4301"/> / <xref target="RFC4303"/> packets using the Static Context Header Compression and Fragmentation (SCHC) framework <xref target="RFC8724"/>. The structure of Diet-ESP is shown in <xref target="fig-esp"/>. Compression with SCHC is based on the use of a Set of Rules (SoR) used in a SCHC instance for C/D operations <xref target="I-D.ietf-schc-architecture"/>. One or more SoR constitute the SCHC Context. In the case of IPsec, the Context can be agreed via IKEv2 <xref target="RFC7296"/> and its specific extension <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>.</t>
      <t>As a result of the application of the same SoR, header values shared by the end-points do not need to be sent on the wire. At the receiver, header information is re-generated from the received compressed packet and the application of the proper SoR retrieved from the Context.</t>
      <figure anchor="fig-esp">
        <name>Top-Level Format of an ESP Packet</name>
        <artwork align="center"><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|               Security Parameters Index (SPI)                 | ^Int.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|                      Sequence Number                          | |ered
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|                    Payload Data* (variable)                   | |   ^
~                                                               ~ |   |
|                                                               | |Conf.
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|               |     Padding (0-255 bytes)                     | |ered*
+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |   |
|                               |  Pad Length   | Next Header   | v   v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|         Integrity Check Value-ICV   (variable)                |
~                                                               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>This document defines the ESP Header Compression profile (EHCP) Architecture with the application of SCHC at various layers of the IPsec stack---also called SCHC strata---as defined below:</t>
      <ol spacing="normal" type="1"><li>
          <t>Inner IP Compression (IIPC): The SoR used in this SCHC stratum apply directly to the headers of the inner IP packet. For example, in the case of a UDP packet with ports determined by the SA, fields such as UDP ports and checksums are typically compressed. If no compression of the inner packet is possible, the resulting SCHC packet contains the uncompressed IP packet, as per <xref section="7.2" sectionFormat="comma" target="RFC8724"/>.</t>
        </li>
        <li>
          <t>Clear Text ESP Compression (CTEC): This SCHC stratum contains SoR that compress the fields of the ESP Payload, right before being encrypted, as the encapsulated traffic in tunnel mode.</t>
        </li>
        <li>
          <t>Encrypted ESP Compression (EEC): This SCHC stratum contains SoR that compress the ESP fields that remain visible after encryption, that is, the ESP Header.</t>
        </li>
      </ol>
      <t>Note that the descriptions of the three SCHC strata provided in this document meet the general purpose of ESP. It is possible that in some deployments, the SCHC instances from different SCHC layers can be merged. Typically, a specific implementation may merge the compression of IIPC and CTEC layers.</t>
      <t>Each SoR indicates the ESP header fields to be matched by the rules. The SCHC instances define how the SCHC Context is initialized from the SA and generate the corresponding SCHC rules (i.e., RuleID, SCHC MAX_PACKET_SIZE, new SCHC Compression/Decompression Actions (CDA), and fragmentation). The appendix provides illustrative examples of applications of EHCP implemented with the OpenSCHC <xref target="OpenSCHC"/>.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>ESP Header Compression Profile (EHCP):</dt>
        <dd>
          <t>A method to reduce the size of ESP headers using predefined compression rules and contexts to improve efficiency.</t>
        </dd>
        <dt>ESP Trailer:</dt>
        <dd>
          <t>A set of fields added at the end of the ESP payload, including Padding, Pad Length, and Next Header, used to ensure alignment and indicate the next protocol.</t>
        </dd>
        <dt>SCHC Stratum:</dt>
        <dd>
          <t>Refers to the specific layer in the ESP packet structure where the Set of Rules of a SCHC instance are applied for compression and decompression.</t>
        </dd>
        <dt>Inner IP C/D (IIPC):</dt>
        <dd>
          <t>Expressed via the SCHC framework, IIPC compresses/decompresses the inner IP packet headers.</t>
        </dd>
        <dt>Clear Text ESP C/D (CTEC):</dt>
        <dd>
          <t>Expressed via the SCHC framework, CTEC compresses/decompresses all fields that will later be encrypted by ESP, which include the ESP Data and ESP Trailer.</t>
        </dd>
        <dt>Encrypted ESP C/D (EEC):</dt>
        <dd>
          <t>Expressed via the SCHC framework, EEC compresses/decompresses ESP fields that will not be encrypted by ESP.</t>
        </dd>
        <dt>Security Parameters Index (SPI):</dt>
        <dd>
          <t>As defined in <xref section="4.1" sectionFormat="comma" target="RFC4301"/>.</t>
        </dd>
        <dt>Sequence Number (SN):</dt>
        <dd>
          <t>As defined in <xref section="2.2" sectionFormat="comma" target="RFC4303"/>.</t>
        </dd>
        <dt>Static Context Header Compression (SCHC):</dt>
        <dd>
          <t>A framework for header compression designed for LPWANs, as defined in <xref target="RFC8724"/>.</t>
        </dd>
        <dt>Static Context Header Compression Rules (SCHC Rules):</dt>
        <dd>
          <t>As defined in <xref target="RFC8724"/>, Section 5.</t>
        </dd>
        <dt>RuleID:</dt>
        <dd>
          <t>A unique identifier for each SCHC rule, as defined in <xref target="RFC8724"/>, Section 5.1.</t>
        </dd>
        <dt>SCHC Context:</dt>
        <dd>
          <t>The set of rules shared between communicating entities, as defined in <xref target="RFC8724"/>, Section 5.3.</t>
        </dd>
        <dt>SCHC Parameters:</dt>
        <dd>
          <t>A set of predefined values used for SCHC compression and decompression, ensuring byte alignment and proper packet formatting based on the SCHC profile.</t>
        </dd>
        <dt>SCHC MAX_PACKET_SIZE:</dt>
        <dd>
          <t>The maximum size of a SCHC-compressed packet that can be transmitted without fragmentation.</t>
        </dd>
        <dt>Traffic Selector (TS):</dt>
        <dd>
          <t>A set of parameters (e.g., IP address range, port range, and protocol) used to define which traffic should be protected by a specific Security Association (SA).</t>
        </dd>
      </dl>
      <t>It is assumed that the reader is familiar with other SCHC terminology defined in <xref target="RFC8376"/>, <xref target="RFC8724"/>, and <xref target="I-D.ietf-schc-architecture"/>.</t>
    </section>
    <section anchor="schc-integration-into-the-ipsec-stack">
      <name>SCHC Integration into the IPsec Stack</name>
      <t>The main principle of the ESP Header Compression Profile (EHCP) is to avoid sending information that has already been shared by the peers. Different profiles and technologies, such as those defined by <xref target="RFC4301"/> and <xref target="RFC4303"/>, ensure that ESP can be tailored to various network requirements and security policies. However, ESP is not optimized for bandwidth efficiency because it has been designed as a general-purpose protocol. EHCP aims to address this by leveraging a profile, expressed via the SCHC architecture, to optimize the ESP header sizes for better efficiency in constrained environments.</t>
      <t><xref target="fig-arch"/> illustrates the integration of SCHC into the IPsec stack, detailing the different layers and components involved in the compression and decompression processes. The diagram is divided into two entities, each representing an endpoint of a communication link.</t>
      <t>Rules for compression are derived from parameters associated with the Security Association (SA) and agreed upon via IKEv2 <xref target="RFC7296"/>, as well as specific compression parameters designated as Attributes for Rules Generation (AfRG) (see <xref target="sec-afrg"/>). These AfRGs are also agreed upon via IKEv2 in <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>.</t>
      <t>Upon establishing the SA, Diet-ESP uses the AfRGs listed in <xref target="tab-ehc-ctx-esp"/> for derivation of the SoR applicable to each SCHC stratum. The collection of rules are then used for the SCHC Context initialization. The reference column in <xref target="tab-ehc-ctx-esp"/> indicates the source where the parameter value is defined. The C/D column specifies in which of the SCHC strata the parameter is being used.</t>
      <t>EHCP defines three SCHC strata for compression: Inner IP Compression (IIPC), Clear Text ESP Compression (CTEC), and Encrypted ESP Compression (EEC). The compression operations for each stratum are described in <xref target="sec-iipc"/>, <xref target="sec-ctec"/>, and <xref target="sec-eec"/>.</t>
      <t>EHCP essentially limits the scope of the compression to the inner IP headers and specific fields such as ports and checksums of transports like UDP, UDP-Lite, TCP, SCTP.  Further and more specific compression profiles may be defined in the future to cover compression of headers of different upper layer protocols.</t>
      <t>At the receiver endpoint, the decompression of the inbound packet follows a reverse process. First, the Encrypted ESP C/D (EEC) decompresses the encrypted ESP header fields. After the ESP packet is decrypted, the Clear Text ESP C/D (CTEC) decompresses the Clear Text fields of the ESP packet.</t>
      <t>Note that implementations MAY differ from the architectural description but it is assumed that the outputs will be the same.</t>
      <figure anchor="fig-arch">
        <name>SCHC Integration into the IPsec Stack. Packets are described for IPsec in tunnel mode. C designates the Compressed header for the fields inside. IIP refers to the Inner IP packet, EH refers to the ESP Header, and ET refers to the ESP Trailer. The labels “SCHC (IIPC: Compress Inner IP),” “SCHC (CTEC: Compress Trailer),” and “SCHC (EEC: Compress ESP Header)” are added to indicate that different SCHC instances are applied at the IIPC, CTEC, and EEC layers, respectively.</name>
        <artwork align="center"><![CDATA[
                 +--------------------------------+ 
                 | ESP Header Compression Context |
                 |   - Security Association       |
                 |   - Additional Parameters      |
                 +--------------------------------+    
                                 |        
Endpoint                         |                 Endpoint
                                 |
+-----------------+              |                +-----------------+
| Inner IP packet |              |                | Inner IP packet |
+-----------------+              |                +-----------------+
| SCHC(IIP + UDP  |              |                | SCHC(IIP + UDP  |
| or ...)         |+--------IIPC layer-----------+|  or ...)        |
+-----------------+          C {IIP}              +-----------------+
| ESP             |              |                | ESP             |
| (Encapsulation) |              |                | (unwrapping)    |
+-----------------+              |                +-----------------+
| SCHC            |              v                |  SCHC           |
| (ESP Payload)   |+--------- CTEC layer --------+| (ESP Payload)   |
+-----------------+      EH, C {C {IIP}, ET}      +-----------------+
| ESP             |              |                | ESP             |
| (Encryption)    |              |                | (decryption)    |
+-----------------+              v                +-----------------+ 
| SCHC(ESP Header)|+--------- EEC layer ---------+| SCHC(ESP Header)|    
+-----------------+  IP, C {EH, C {C {IIP},  ET}} +-----------------+
| IPv6 + ESP      |                               | IPv6 + ESP      |    
+-----------------+                               +-----------------+
|  L2             |                               |  L2             |
+-----------------+                               +-----------------+
]]></artwork>
      </figure>
      <section anchor="schc-parameters-for-diet-esp">
        <name>SCHC Parameters for Diet-ESP</name>
        <t>A SCHC compressed packet is always in the form:</t>
        <figure anchor="tab-diet-esp-compressed-header-format">
          <name>Diet-ESP Compressed Header Format</name>
          <artwork align="center"><![CDATA[
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+---------...----------+~~~~~~~~~+---------------+
|   RuleID    | Compression Residue  | Payload | SCHC padding  | 
+-+-+-+-+-+-+-+---------...----------+~~~~~~~~~+---------------+
|-------- Compressed Header ---------|         |-- as needed --|
]]></artwork>
        </figure>
        <t>The SCHC Profile for Diet-ESP is defined as follows:</t>
        <dl>
          <dt>RuleID:</dt>
          <dd>
            <t>The RuleID is a unique identifier for each SCHC rule. It is included in packets to ensure the receiver applies the correct decompression rule, maintaining consistency in packet processing. Note that the Rule ID does not need to be explicitly agreed upon and can be defined independently by each party. The RuleID in Diet-ESP is expressed as 1 byte.</t>
          </dd>
          <dt>Maximum Packet Size:</dt>
          <dd>
            <t>MAX_PACKET_SIZE is determined by the specific IPsec ESP configuration and the underlying transport, but it is typically aligned with the network’s MTU. The size constraints are optimized based on the available link capacity and negotiated parameters between endpoints.</t>
          </dd>
          <dt>SCHC Padding:</dt>
          <dd>
            <t>Padding in SCHC is used to align data to a specific boundary (typically byte-aligned or 8-bit aligned) to meet the requirements of the underlying link layer protocol or encryption algorithm. Padding bits are often zero or follow a pattern but do not contain significant data. In Diet-ESP, the SCHC padding is added in the CTEC strata to align the packet for encryption.</t>
          </dd>
        </dl>
        <t>The resulting IP/ESP packet size is variable. In some networks, the packet will require fragmentation before transmission over the wire. Fragmentation is out of the scope of this document since it is dependent on the layer 2 technology.</t>
        <t><xref target="tab-diet-esp-compressed-pck"/> illustrates how the final compressed packet looks when using SCHC compression for ESP headers in the Diet-ESP profile.</t>
        <figure anchor="tab-diet-esp-compressed-pck">
          <name>Diet-ESP Compressed Packet Format with SCHC</name>
          <artwork align="center"><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  SCHC EEC Header (EEC stratum)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|                 SCHC CTEC Header (CTEC stratum)               | ^
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                 SCHC IIP Header (IIPC stratum)                | |
+---------------------------------------------------------------+ En-
|               Inner IP Payload Data* (variable)               | cry-
~                                                               ~ pted
|                                                               | |  
+---------------------------------------------------------------+ |
|                       SCHC CTEC Padding                       | v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|                                                               |
|                             ICV                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
      </section>
      <section anchor="set-of-rules-sor-for-diet-esp">
        <name>Set of Rules (SoR) for Diet-ESP</name>
        <t>SCHC SoR are predefined sets of instructions that specify how to compress and decompress the header fields of an ESP packet. The identification of a particular SoR will follow the specification in <xref target="I-D.ietf-schc-architecture"/>.</t>
        <t>Similarly to the SA, Rules are directional and the Direction Indicator (DI) is set to Up for outbound SA and Down for inbound SA. Each Rule also contains a Field Position parameter that is set to 1, unless specified otherwise.</t>
      </section>
      <section anchor="sec-afrg">
        <name>Attributes for Rules Generation</name>
        <t>The list of attributes for the Rules Generation (AfRG) is shown in <xref target="tab-ehc-ctx-esp"/>. These attributes are used to express the various compressions that operate at the IIPC, CTEC, and EEC layers.</t>
        <t>The compression of the Inner IP Packet is based on the attributes that are derived from the negotiated Traffic Selectors TSi/TSr, as described in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>. The Traffic Selectors may result in a quite complex expression, and this specification restricts that complexity. In particular, Diet-ESP restricts the Traffic Selector to a single type of IP address (i.e., IPv4 or IPv6), a single protocol (such as UDP, TCP, or not relevant), a single port range, and multiple DSCP numbers. Such simplification corresponds to the expression of an individual Traffic Selector Payload <xref section="3.13.1" sectionFormat="comma" target="RFC7296"/>.</t>
        <t>The ability to derive the EHCP Context for the IIPC from the agreed Traffic Selectors is indicated by the variable iipc_profile.</t>
        <table anchor="tab-ehc-ctx-esp">
          <name>EHCP related parameters</name>
          <thead>
            <tr>
              <th align="left">EHC Context</th>
              <th align="left">Possible Values</th>
              <th align="left">Reference</th>
              <th align="left">C / D</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">iipc_profile</td>
              <td align="left">"diet-esp", "uncompress"</td>
              <td align="left">ThisRFC</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">dscp_cda</td>
              <td align="left">"uncompress", "lower", "sa"</td>
              <td align="left">ThisRFC</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ecn_cda</td>
              <td align="left">"uncompress", "lower"</td>
              <td align="left">ThisRFC</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">flow_label_cda</td>
              <td align="left">"uncompress", "lower",</td>
              <td align="left">ThisRFC</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">"generated", "zero"</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ts_ip_version</td>
              <td align="left">"IPv4-only IPv6-only"</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ts_ip_src_start</td>
              <td align="left">IP4 or IPv6 address</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ts_ip_src_end</td>
              <td align="left">IP4 or IPv6 address</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ts_ip_dst_start</td>
              <td align="left">IPv4 or IPv6 address</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ts_ip_dst_end</td>
              <td align="left">IPv4 or IPv6 address</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ts_proto</td>
              <td align="left">TCP, UDP, UDP-Lite, SCTP,</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">ANY, ...</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ts_port_src_start</td>
              <td align="left">Port number</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ts_port_src_end</td>
              <td align="left">Port number</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ts_port_dst_start</td>
              <td align="left">Port number</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ts_port_dst_end</td>
              <td align="left">Port number</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">dscp_list</td>
              <td align="left">list of DSCP numbers</td>
              <td align="left">RFCYYYY</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">alignment</td>
              <td align="left">"8 bit", "16 bit", "32 bit"</td>
              <td align="left">ThisRFC</td>
              <td align="left">CTEC</td>
            </tr>
            <tr>
              <td align="left"> </td>
              <td align="left">"64 bit"</td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="left">ipsec_mode</td>
              <td align="left">"Tunnel", "Transport"</td>
              <td align="left">RFC4301</td>
              <td align="left">CTEC</td>
            </tr>
            <tr>
              <td align="left">tunnel_ip</td>
              <td align="left">IPv6 address</td>
              <td align="left">RFC4301</td>
              <td align="left">CTEC</td>
            </tr>
            <tr>
              <td align="left">esp_encr</td>
              <td align="left">ESP Encryption Algorithm</td>
              <td align="left">RFC4301</td>
              <td align="left">CTEC</td>
            </tr>
            <tr>
              <td align="left">esp_spi</td>
              <td align="left">ESP SPI</td>
              <td align="left">RFC4301</td>
              <td align="left">EEC</td>
            </tr>
            <tr>
              <td align="left">esp_spi_lsb</td>
              <td align="left">0-32</td>
              <td align="left">ThisRFC</td>
              <td align="left">EEC</td>
            </tr>
            <tr>
              <td align="left">esp_sn</td>
              <td align="left">ESP Sequence Number</td>
              <td align="left">RFC4301</td>
              <td align="left">EEC</td>
            </tr>
            <tr>
              <td align="left">esp_sn_lsb</td>
              <td align="left">0-64</td>
              <td align="left">ThisRFC</td>
              <td align="left">EEC</td>
            </tr>
          </tbody>
        </table>
        <t>Any parameter starting with "ts_" is associated with the Traffic Selectors of the SA. The notation is introduced by this specification but the definition of the parameters is in <xref target="RFC4301"/> and <xref target="RFC7296"/>.</t>
        <t>This specification limits the expression of the Traffic Selector to be of the form (IP source range, IP destination range, Port source range, Port destination range, Protocol ID list, DSCP list). This limits the original flexibility of the expression of TS, but provides sufficient flexibility.</t>
        <t>The details of each parameter are the following:</t>
        <dl>
          <dt>iipc_profile:</dt>
          <dd>
            <t>designates the profile used by IIPC. When set to "uncompress" IIPC is not performed. This specification describes IIPC that corresponds to the "diet-esp" profile.</t>
          </dd>
          <dt>flow_label_cda:</dt>
          <dd>
            <t>indicates how the Flow Label field of the inner IPv6 packet or the Identification field of the inner IPv4 packet is compressed / decompressed - See <xref target="sec-cda"/> for more information. In a nutshell, "uncompress" indicates that Flow Label (resp. Identification) are not compressed. "lower" indicates the value is read from the outer IP header - eventually with some adaptations when inner IP packet and outer IP packets have different versions. "generated" indicates that the field is generated by the receiving party. In that case, the decompressed value may take a different value compared to its original value. "zero" indicates the field is set to zero.</t>
          </dd>
          <dt>dscp_cda:</dt>
          <dd>
            <t>indicates how the DSCP values of the inner IP packet are generated. (See flow_label_cda). "sa" indicates, compression is performed according to the DSCP values agreed by the SA (dscp_list).</t>
          </dd>
          <dt>ecn_cda:</dt>
          <dd>
            <t>indicates how the ECN values of the inner IP packet are generated. (See flow_label_cda).</t>
          </dd>
          <dt>ts_ip_version:</dt>
          <dd>
            <t>designates the IP version of the Traffic Selectors and its value is set  to "IPv4-only" when only IPv4 IP addresses are considered and to "IPv6-only" when only IPv6 addresses are considered.
Practically, when IKEv2 is used, it means that the agreed TSi or TSr results only in a mutually exclusive combination of TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE payloads.</t>
          </dd>
          <dt>ts_ip_src_start:</dt>
          <dd>
            <t>designates the starting value range of source IP addresses of the inner packet and has the same meaning as the Starting Address field of the Traffic Selector payload defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
          </dd>
          <dt>ts_ip_src_end:</dt>
          <dd>
            <t>designates the high end value range of source IP addresses of the inner packet and has the same meaning as the Ending Address field of the Traffic Selector payload defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
          </dd>
          <dt>ts_port_src_start:</dt>
          <dd>
            <t>designates the starting value of the port range of the inner packet and has the same meaning as the Start Port field of the Traffic Selector payload defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
          </dd>
          <dt>ts_port_src_end:</dt>
          <dd>
            <t>designates the starting value of the port range of the inner packet and has the same meaning as the End Port field of the Traffic Selector payload defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
          </dd>
        </dl>
        <t>IP addresses and ports are defined as a range and compressed using the LSB.
For a range defined by start and end values, msb( start, end ) is defined as the function that returns the MSB that remains unchanged while the value evolves between start and end.
Similarly, lsb( start, end ) is defined as the function that returns the LSB that changes while the value evolves between start and end. 
Finally, len( x ) is defined as the function that returns the number of bits of the bit array x.</t>
        <dl>
          <dt>ts_proto:</dt>
          <dd>
            <t>designates the list of Protocol ID field, whose meaning is defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>. This profile considers the specific protocols values "TCP", "UDP", "UDP-Lite", "SCTP" and "ANY". "ANY" designates any possible values as defined in <xref section="3.13" sectionFormat="comma" target="RFC5996"/>.</t>
          </dd>
          <dt>dscp_list:</dt>
          <dd>
            <t>designates the list of DSCP values with the same meaning as the List of DSCP Values defined in <xref target="I-D.mglt-ipsecme-dscp-np"/>. These are not Traffic Selectors, but the compression mandates that the packets take one of these listed DSCP values.</t>
          </dd>
          <dt>alignment:</dt>
          <dd>
            <t>indicates the byte alignement supported by the OS for the ESP extension. By default, the alignment is 32 bit for IPv6, but some systems may also support an 8 bit alignment. Note that when a block cipher such as AES-CCM is used, a 128 bit alignment is overwritten by the block size.</t>
          </dd>
          <dt>ipsec_mode:</dt>
          <dd>
            <t>designates the IPsec mode defined in <xref target="RFC4301"/>. In this document, the possible values are "tunnel" for the Tunnel mode and "transport" for the Transport mode.</t>
          </dd>
          <dt>tunnel_ip:</dt>
          <dd>
            <t>designates the IP address of the tunnel defined in <xref target="RFC4301"/>.
This field is only applicable when the Tunnel mode is used.
That IP address can be an IPv4 or IPv6 address.</t>
          </dd>
          <dt>esp_encr:</dt>
          <dd>
            <t>designates the encryption algorithm used. For the purpose of compression it is RECOMMENDED to use algorithms that already compresse their IV <xref target="RFC8750"/>.</t>
          </dd>
          <dt>esp_spi:</dt>
          <dd>
            <t>designates the Security Policy Index defined in <xref target="RFC4301"/>.</t>
          </dd>
          <dt>esp_spi_lsb:</dt>
          <dd>
            <t>designates the LSB to be considered for the compressed SPI. A value of 32 for esp_spi_lsb will leave the SPI unchanged.</t>
          </dd>
          <dt>esp_sn:</dt>
          <dd>
            <t>designates the Sequence Number (SN) field defined in <xref target="RFC4301"/>.</t>
          </dd>
          <dt>esp_sn_lsb:</dt>
          <dd>
            <t>designates the LSB to be considered for the compressed SN and is defined by this specification. It works similarly to esp_spi_lsb.</t>
          </dd>
        </dl>
        <section anchor="sec-cda">
          <name>Compression/Decompression Actions in Diet-ESP</name>
          <t>In addition to the Compression/Decompression Actions (CDAs) defined in <xref section="7.4" sectionFormat="comma" target="RFC8724"/>, this specification uses the CDAs presented in <xref target="tab-cda"/>. These CDAs are either a refinement of the compute- * CDA or the result of a combined CDA.</t>
          <table anchor="tab-cda">
            <name>EHCP ESP related parameter</name>
            <thead>
              <tr>
                <th align="left">Action</th>
                <th align="left">Compression</th>
                <th align="left">Decompression</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">lower</td>
                <td align="left">elided</td>
                <td align="left">Get from lower layer</td>
              </tr>
              <tr>
                <td align="left">generated (Flow Label)</td>
                <td align="left">elided</td>
                <td align="left">Compute flow label</td>
              </tr>
              <tr>
                <td align="left">checksum</td>
                <td align="left">elided</td>
                <td align="left">Compute checksum</td>
              </tr>
              <tr>
                <td align="left">ESP padding</td>
                <td align="left">elided</td>
                <td align="left">Compute padding</td>
              </tr>
              <tr>
                <td align="left">hop limit</td>
                <td align="left">elided</td>
                <td align="left">Get from lower layer</td>
              </tr>
              <tr>
                <td align="left">SCHC padding</td>
                <td align="left">send</td>
                <td align="left">Compute padding</td>
              </tr>
            </tbody>
          </table>
          <dl>
            <dt>lower:</dt>
            <dd>
              <t>is only used in a Tunnel mode and indicates that the fields of the inner IP packet header are generated from the corresponding fields of the Tunnel IP header fields. This CDA can be used for the DSCP, ECN, and IPv6 Flow Label (resp. IPv4 identification) fields.</t>
            </dd>
            <dt>generated:</dt>
            <dd>
              <t>indicates that a brand new Flow Label/Identification field is generated following <xref target="RFC6437"/>, <xref target="RFC6864"/>.</t>
            </dd>
            <dt>checksum:</dt>
            <dd>
              <t>indicates that a checksum is computed accordingly. Typically, the checksum CDA has a different implementation for IPv4, UDP, TCP,...</t>
            </dd>
            <dt>ESP padding:</dt>
            <dd>
              <t>indicates that the ESP padding bytes are generated accordingly.</t>
            </dd>
            <dt>hop limit:</dt>
            <dd>
              <t>indicates that the hop limit is derived from the outer IPv6 header.</t>
            </dd>
            <dt>SCHC padding:</dt>
            <dd>
              <t>indicates that the SCHC padding bits are generated accordingly.</t>
            </dd>
          </dl>
        </section>
      </section>
    </section>
    <section anchor="schc-compression-for-ipsec-in-tunnel-mode">
      <name>SCHC Compression for IPsec in Tunnel mode</name>
      <section anchor="sec-iipc">
        <name>Inner IP Compression (IIPC)</name>
        <t>When iipc_profile is set to "uncompress", the packet is uncompressed. 
When iipc_profile is set to "diet-esp", IIPC proceeds to the compression of the inner IP Packet composed of an IP Header and an IP Payload.
The compression of the inner IP Payload is described in <xref target="sec-payload"/>.<br/>
The IP Header is compressed when ipsec_mode is set to "Tunnel" and left uncompressed otherwise. ts_ip_version determines how the IPv6 Header (resp. the IPv4 header) is compressed - see <xref target="sec-inner-ip6"/> (resp. <xref target="sec-inner-ip4"/>).</t>
        <section anchor="sec-payload">
          <name>Inner IP Payload Compression</name>
          <t>The compression only affects UDP, UDP-Lite, TCP or SCTP packets and the type of packet is determined by the IP header.</t>
          <t>For UDP, UDP-Lite, TCP and SCTP packets, source ports, destination ports, and checksums are compressed. 
For source port (resp. destination port) only the least significant bits are sent. FL is set to 16 bits,  TV is set to msb( ts_port_src_start, ts_port_src_end ) ( resp. ts_port_dst_start, ts_port_dst_end ), MO is set to "MSB" and CDA to "LSB". 
The checksum is elided, FL is set to 16 bits, TV is not set, MO is set to "ignore" and CDA is set to "checksum". 
This may result in decompressing a zero-checksum UDP packet with a valid checksum, but this has no impact as a valid checksum is universally accepted.</t>
          <t>For UDP or UDP-Lite the length field is elided. FL is set to 16, TV is not set, MO is set to "ignore".</t>
        </section>
        <section anchor="sec-inner-ip6">
          <name>Inner IPv6 Header Compression</name>
          <t>The version field is elided, FL is set to 3, TV is set to ts_ipversion, MO is set to "equal" and CDA is set to "not-sent".</t>
          <t>Traffic Class is composed of the 6 bit DSCP and 2 bit ECN.
The compression of DSCP and ECN are defined independently.</t>
          <t>DSCP values are compressed according to the dscp_cda value:</t>
          <ul spacing="normal">
            <li>
              <t>If dscp_cda is set to "uncompress", the DSCP values are included in the inner IP header. FL is set to 6 bits, TV is not set, MO is set to "ignore", CDA is set to "sent-value".</t>
            </li>
            <li>
              <t>If dscp_cda is set to "lower", the DSCP field is elided and its value is copied from the Tunnel IP header. FL is set to 6 bits, TV is not set, MO is set to "ignore", CDA is set to "lower".</t>
            </li>
            <li>
              <t>If dscp_cda is set to "sa", DSCP is compressed according to the DSCP values of the SA. If dscp_list contains a single element, the DSCP is elided, FL is set to 6 bits, TV is set to dscp_list[0], MO is set to "equal" and CDA is set to "not-sent". If dscp_list contains more than one DSCP value, FL is set to 6 bits, TV is set to dscp_list, MO is set to "match-mapping" and the CDA is set to "mapping-sent". 
For ECN, FL is set to 2 bits, TV is not set, MO is set to ignore and CDA is set to "value-sent".</t>
            </li>
          </ul>
          <t>ECN values are compressed according to the ecn_cda value:</t>
          <ul spacing="normal">
            <li>
              <t>If ecn_cda is set to "uncompress", the ECN field is included in the inner IP header. FL is set to 2 bits, TV is not set, MO is set to "ignore", CDA is set to "sent-value".</t>
            </li>
            <li>
              <t>If ecn_cda is set to "lower", the ECN value is elided and the ECN value is copied in the outer IP header. FL is set to 2 bits, TV is not set, MO is set to "ignore", CDA is set to "lower".</t>
            </li>
          </ul>
          <t>Flow label is compressed according to the flow_label_cda value:</t>
          <ul spacing="normal">
            <li>
              <t>If flow_label_cda is set to "uncompress", the Flow label is included in the IPv6 Header. FL is set to 20 bits, TV is not set, MO is set to "ignore", and CDA is set to "sent-value".</t>
            </li>
            <li>
              <t>If flow_label_cda is set to "lower", the Flow Label is elided and read from the outer IP Header (See <xref target="sec-cda"/>). FL is set to 20 bits, TV is not set, MO is set to "ignore", and CDA is set to "lower". If the outer IP header is an IPv4 header, only the 16 LSB of the Flow Label are inserted into the IPv4 Header. At the decompression, the 4 MSB of the Flow Label are set to 0.</t>
            </li>
            <li>
              <t>If flow_label_cda is set to "generated", the Flow Label is elided and the Flow Label is then re-generated at the decompression (See <xref target="sec-cda"/>). The resulting Flow Label differs from the initial value. FL is set to 20, TV is not set, MO is set to "ignore" and CDA is set to "generated".</t>
            </li>
            <li>
              <t>If flow_label_cda is set to "zero", the Flow Label is elided and set to 0 at decompression. A 0 value indicates no flow label is present. Fl is set to 20 bits, TV is set to 0, MO is set to "equal" and CDA is set to "not-sent".</t>
            </li>
          </ul>
          <t>Payload Length is elided and determined from the Tunnel IP Header Payload Length as well as the decompressed Payload. FL is set to 16 bits, TV is not set, MO is set to "ignore", CDA is set to "lower".</t>
          <t>Next Header is compressed according to ts_proto:</t>
          <ul spacing="normal">
            <li>
              <t>If ts_proto is the single value 0, Next Header is not compressed. FL is set to 8 bits, TV is not set, MO is set to "ignore", CDA is set to "sent-value".</t>
            </li>
            <li>
              <t>If ts_proto is a single non zero value, Next Header is compressed. FL is set to 8 bits, TV is set to ts_proto, MO is set to "equal" and CDA is set to "not-sent".</t>
            </li>
          </ul>
          <t>The IPv6 Hop Limit is read from the Tunnel IP Header Hop Limit. FL is set to 8 bits, TV is not set, MO is set to "ignore" and CDA is set to "lower."</t>
          <t>The source and destination IPv6 addresses are compressed using MSB. 
In both cases, FL is set to 128, TV is respectively set to  msb(ts_ip_src_start, ts_ip_src_ed) or msb(ts_ip_dst_start, ts_ip_dst_end), the MO is set to "MSB," and the CDA is set to "LSB."</t>
        </section>
        <section anchor="sec-inner-ip4">
          <name>Inner IPv4 Header Compression</name>
          <t>The fields Version, DSCP, ECN, Source Address and Destination Address are compressed as described for IPv6 in <xref target="sec-inner-ip6"/>.
The field Total Length (16 bits) is compressed similarly to the IPv6 field Payload Length. The field Identification (16 bits) is compressed similarly to the IPv6 field Flow Label. If the IP Header is an IPv6 Header, the Identification is placed as the LSB of the IPv6 Header and the 4 remaining MSB are set to 0.  The field Time to Live is compressed similarly to the IPv6 Hop Limit field. The Protocol field is compressed similarly to the last IPv6 Next Header field.</t>
          <t>IHL is uncompressed, FL is set to 4 bits, TV is not set, MO is set to ignore and CDA is set to "value-sent".</t>
          <t>The IPv4 Header checksum is elided.
FL is set to 16, TV is omitted, MO is set to "ignore," and CDA is set to "checksum."</t>
        </section>
      </section>
      <section anchor="sec-byte-align">
        <name>ESP Data Byte alignment</name>
        <t>SCHC operates on bits, while protocols like ESP expect payloads to be aligned to byte boundaries (8-bit alignment). To ensure this, we apply a padding by appending the SCHC_padding bits and the SCHC_padding_len. SCHC_padding_len is encoded over 3 bits to encode the values 0-7. SCHC_padding is randomly generated. Let's call the complementing bits, the bits that are needed to have a byte boundary. If the complementing bits are less than or equal to 2 bits, the padding will result in adding an extra byte.</t>
      </section>
      <section anchor="sec-ctec">
        <name>Clear Text ESP Compression (CTEC)</name>
        <t>The Clear Text ESP Compression is applied to compress the unencrypted ESP fields, including the ESP Payload Data and the Next Header field, which indicates the type of the inner packet.</t>
        <t>SCHC Compression efficiently compresses the Next Header field, reducing overhead and aligning the packet to byte boundaries using SCHC Padding. After this, the SCHC Pad Length field is added. If required by the encryption algorithm, additional ESP Padding and Pad Length fields are introduced to ensure the packet fits the specified encryption block size.</t>
        <t>In tunnel mode, the Next Header field is elided as the inner IP packet (either IPv4 or IPv6) is determined by the Traffic Selector, which is expressed by a single Traffic Selector Payload in the SA.</t>
        <t>The ESP Padding and Pad Length fields are reduced by the SCHC compression rule. This process minimizes the size of the Clear Text ESP packet by eliminating unnecessary padding, while maintaining proper alignment for transmission. The ESP Padding and Pad Length may differ from the decompressed versions due to alignment requirements, which depend on the maximum of the encryption block alignment or the IPv6 Header alignment (32 bits). Since the padding is stripped by the IPsec process, these differences do not impact packet processing. This is expressed as FL is defined by the type that is to (Pad Length + 1 ) * 8 bits, TV is unset, MO is set to "ignore" and CDA is set to padding.</t>
      </section>
      <section anchor="sec-eec">
        <name>Encrypted ESP Compression (EEC)</name>
        <t>SPI is compressed to its LSB.
FL is set to 32 bits, TV is not set, MO is set to "MSB( 4 - esp_spi_lsb)" and CDA is set to "LSB".</t>
        <t>If the esp_encr considers implicit IV <xref target="RFC8750"/>, Sequence Numbers are not compressed. Otherwise, SN are compressed to their LSB similarly to the SPI. 
FL is set to 32 bits, TV is not set, MO is set to "MSB( 4 - esp_spi_lsb)" and CDA is set to "LSB".</t>
        <t>Note that the use of implicit IV always results in a better compression as a 64 bit IV to be sent while compression of the SN alone results at best in a reduction of 32 bits.</t>
        <t>The IPv6 Next Header field or the IPv4 Protocol field that contains the "ESP" value is changed to "SCHC".</t>
      </section>
    </section>
    <section anchor="schc-compression-for-ipsec-in-transport-mode">
      <name>SCHC Compression for IPsec in Transport mode</name>
      <t>The transport mode mostly differs from the Tunnel mode in that the IP header of the packet is not encrypted. As a result, the IP Payload is compressed as described in <xref target="sec-payload"/>. The IP header is not compressed. The byte alignment of the Compressed Payload is performed as described in <xref target="sec-byte-align"/>. The Clear Text ESP Compression is performed as described in <xref target="sec-ctec"/> except for the Next Header Field, which is compressed as described in <xref target="sec-inner-ip6"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>We request the IANA to create a new registry for the IIPC Profile</t>
      <artwork><![CDATA[
| IIPC Profile value | Reference |
+--------------------+-----------+
| "uncompress"       | ThisRFC   |
| "diet-esp"         | ThisRFC   |
]]></artwork>
      <t>We request IANA to create the following registries for the "diet-esp" IIPC Profile.</t>
      <artwork><![CDATA[
| Flow Label CDA Value | Reference |
+----------------------+-----------+
| "uncompress"         | ThisRFC   |
| "generated"          | ThisRFC   |
| "lower"              | ThisRFC   |
| "zero"               | ThisRFC   |
]]></artwork>
      <artwork><![CDATA[
| DSCP CDA Value       | Reference |
+----------------------+-----------+
| "uncompress"         | ThisRFC   |
| "lower"              | ThisRFC   |
| "sa"                 | ThisRFC   |
]]></artwork>
      <artwork><![CDATA[
| ECN CDA Value       | Reference |
+----------------------+-----------+
| "uncompress"         | ThisRFC   |
| "lower"              | ThisRFC   |
]]></artwork>
      <artwork><![CDATA[
| Alignment            | Reference |
+----------------------+-----------+
| "8 bit"              | ThisRFC   |
| "16 bit"             | ThisRFC   |
| "32 bit"             | ThisRFC   |
| "64 bit"             | ThisRFC   |
]]></artwork>
      <artwork><![CDATA[
| IPsec mode Value     | Reference |
+----------------------+-----------+
| "Tunnel"             | ThisRFC   |
| "Transport"          | ThisRFC   |
]]></artwork>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>There are no specific considerations associated with the profile other than the security considerations of ESP <xref target="RFC4303"/> and those of SCHC <xref target="RFC8724"/>.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We would like to thank Laurent Toutain for his guidance on SCHC. Robert Moskowitz for inspiring the name "Diet-ESP" from Diet-HIP. The authors would like to acknowledge the support from Mitacs through the Mitacs Accelerate program.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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="RFC4303" target="https://www.rfc-editor.org/info/rfc4303" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4303.xml">
          <front>
            <title>IP Encapsulating Security Payload (ESP)</title>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document describes an updated version of the Encapsulating Security Payload (ESP) protocol, which is designed to provide a mix of security services in IPv4 and IPv6. ESP is used to provide confidentiality, data origin authentication, connectionless integrity, an anti-replay service (a form of partial sequence integrity), and limited traffic flow confidentiality. This document obsoletes RFC 2406 (November 1998). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4303"/>
          <seriesInfo name="DOI" value="10.17487/RFC4303"/>
        </reference>
        <reference anchor="RFC4301" target="https://www.rfc-editor.org/info/rfc4301" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4301.xml">
          <front>
            <title>Security Architecture for the Internet Protocol</title>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <author fullname="K. Seo" initials="K." surname="Seo"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document describes an updated version of the "Security Architecture for IP", which is designed to provide security services for traffic at the IP layer. This document obsoletes RFC 2401 (November 1998). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4301"/>
          <seriesInfo name="DOI" value="10.17487/RFC4301"/>
        </reference>
        <reference anchor="RFC8724" target="https://www.rfc-editor.org/info/rfc8724" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8724.xml">
          <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="I-D.ietf-schc-architecture" target="https://datatracker.ietf.org/doc/html/draft-ietf-schc-architecture-02" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-schc-architecture.xml">
          <front>
            <title>Static Context Header Compression (SCHC) Architecture</title>
            <author fullname="Alexander Pelov" initials="A." surname="Pelov">
              <organization>IMT Atlantique</organization>
            </author>
            <author fullname="Pascal Thubert" initials="P." surname="Thubert"/>
            <author fullname="Ana Minaburo" initials="A." surname="Minaburo">
              <organization>Consultant</organization>
            </author>
            <date day="11" month="April" year="2024"/>
            <abstract>
              <t>This document defines the SCHC architecture.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-architecture-02"/>
        </reference>
        <reference anchor="RFC7296" target="https://www.rfc-editor.org/info/rfc7296" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="I-D.ietf-ipsecme-ikev2-diet-esp-extension" target="https://datatracker.ietf.org/api/v1/doc/document/draft-ietf-ipsecme-ikev2-diet-esp-extension/" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ipsecme-ikev2-diet-esp-extension.xml">
          <front>
            <title>Internet Key Exchange version 2 (IKEv2) extension for Header Compression Profile (HCP)</title>
            <author fullname="Daniel Migault"/>
            <author fullname="Tobias Guggemos"/>
            <author fullname="David Schinazi"/>
            <author fullname="J. William Atwood"/>
            <author fullname="Daiying Liu"/>
            <author fullname="Stere Preda"/>
            <author fullname="Maryam Hatami"/>
            <author fullname="Sandra Céspedes"/>
            <date day="21" month="November" year="2024"/>
            <abstract>
              <t>This document describes an IKEv2 extension for Header Compression to
   agree on Attributes for Rules Generation.  This extension defines the
   necessary registries for the ESP Header Compression Profile (EHCP)
   Diet-ESP.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-ipsecme-ikev2-diet-esp-extension-02"/>
        </reference>
        <reference anchor="RFC8376" target="https://www.rfc-editor.org/info/rfc8376" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8376.xml">
          <front>
            <title>Low-Power Wide Area Network (LPWAN) Overview</title>
            <author fullname="S. Farrell" initials="S." role="editor" surname="Farrell"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>Low-Power Wide Area Networks (LPWANs) are wireless technologies with characteristics such as large coverage areas, low bandwidth, possibly very small packet and application-layer data sizes, and long battery life operation. This memo is an informational overview of the set of LPWAN technologies being considered in the IETF and of the gaps that exist between the needs of those technologies and the goal of running IP in LPWANs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8376"/>
          <seriesInfo name="DOI" value="10.17487/RFC8376"/>
        </reference>
        <reference anchor="RFC5996" target="https://www.rfc-editor.org/info/rfc5996" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5996.xml">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <date month="September" year="2010"/>
            <abstract>
              <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document replaces and updates RFC 4306, and includes all of the clarifications from RFC 4718. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5996"/>
          <seriesInfo name="DOI" value="10.17487/RFC5996"/>
        </reference>
        <reference anchor="RFC8750" target="https://www.rfc-editor.org/info/rfc8750" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8750.xml">
          <front>
            <title>Implicit Initialization Vector (IV) for Counter-Based Ciphers in Encapsulating Security Payload (ESP)</title>
            <author fullname="D. Migault" initials="D." surname="Migault"/>
            <author fullname="T. Guggemos" initials="T." surname="Guggemos"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>Encapsulating Security Payload (ESP) sends an initialization vector (IV) in each packet. The size of the IV depends on the applied transform and is usually 8 or 16 octets for the transforms defined at the time this document was written. When used with IPsec, some algorithms, such as AES-GCM, AES-CCM, and ChaCha20-Poly1305, take the IV to generate a nonce that is used as an input parameter for encrypting and decrypting. This IV must be unique but can be predictable. As a result, the value provided in the ESP Sequence Number (SN) can be used instead to generate the nonce. This avoids sending the IV itself and saves 8 octets per packet in the case of AES-GCM, AES-CCM, and ChaCha20-Poly1305. This document describes how to do this.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8750"/>
          <seriesInfo name="DOI" value="10.17487/RFC8750"/>
        </reference>
        <reference anchor="RFC6437" target="https://www.rfc-editor.org/info/rfc6437" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6437.xml">
          <front>
            <title>IPv6 Flow Label Specification</title>
            <author fullname="S. Amante" initials="S." surname="Amante"/>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="S. Jiang" initials="S." surname="Jiang"/>
            <author fullname="J. Rajahalme" initials="J." surname="Rajahalme"/>
            <date month="November" year="2011"/>
            <abstract>
              <t>This document specifies the IPv6 Flow Label field and the minimum requirements for IPv6 nodes labeling flows, IPv6 nodes forwarding labeled packets, and flow state establishment methods. Even when mentioned as examples of possible uses of the flow labeling, more detailed requirements for specific use cases are out of the scope for this document.</t>
              <t>The usage of the Flow Label field enables efficient IPv6 flow classification based only on IPv6 main header fields in fixed positions. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6437"/>
          <seriesInfo name="DOI" value="10.17487/RFC6437"/>
        </reference>
        <reference anchor="RFC6864" target="https://www.rfc-editor.org/info/rfc6864" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6864.xml">
          <front>
            <title>Updated Specification of the IPv4 ID Field</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>The IPv4 Identification (ID) field enables fragmentation and reassembly and, as currently specified, is required to be unique within the maximum lifetime for all datagrams with a given source address/destination address/protocol tuple. If enforced, this uniqueness requirement would limit all connections to 6.4 Mbps for typical datagram sizes. Because individual connections commonly exceed this speed, it is clear that existing systems violate the current specification. This document updates the specification of the IPv4 ID field in RFCs 791, 1122, and 2003 to more closely reflect current practice and to more closely match IPv6 so that the field's value is defined only when a datagram is actually fragmented. It also discusses the impact of these changes on how datagrams are used. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6864"/>
          <seriesInfo name="DOI" value="10.17487/RFC6864"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OpenSCHC" target="https://github.com/openschc">
          <front>
            <title>OpenSCHC a Python open-source implementation of SCHC (Static Context Header Compression) RFC8724</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC9333" target="https://www.rfc-editor.org/info/rfc9333" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9333.xml">
          <front>
            <title>Minimal IP Encapsulating Security Payload (ESP)</title>
            <author fullname="D. Migault" initials="D." surname="Migault"/>
            <author fullname="T. Guggemos" initials="T." surname="Guggemos"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>This document describes the minimal properties that an IP Encapsulating Security Payload (ESP) implementation needs to meet to remain interoperable with the standard ESP as defined in RFC 4303. Such a minimal version of ESP is not intended to become a replacement of ESP in RFC 4303. Instead, a minimal implementation is expected to be optimized for constrained environments while remaining interoperable with implementations of ESP. In addition, this document provides some considerations for implementing minimal ESP in a constrained environment, such as limiting the number of flash writes, handling frequent wakeup and sleep states, limiting wakeup time, and reducing the use of random generation.</t>
              <t>This document does not update or modify RFC 4303. It provides a compact description of how to implement the minimal version of that protocol. RFC 4303 remains the authoritative description.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9333"/>
          <seriesInfo name="DOI" value="10.17487/RFC9333"/>
        </reference>
        <reference anchor="I-D.mglt-ipsecme-dscp-np" target="https://datatracker.ietf.org/doc/html/draft-mglt-ipsecme-dscp-np-01" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.mglt-ipsecme-dscp-np.xml">
          <front>
            <title>Differentiated Services Field Codepoints Internet Key Exchange version 2 Notification</title>
            <author fullname="Daniel Migault" initials="D." surname="Migault">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Joel M. Halpern" initials="J. M." surname="Halpern">
              <organization>Ericsson</organization>
            </author>
            <author fullname="U. Parkholm" initials="U." surname="Parkholm">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Daiying Liu" initials="D." surname="Liu">
              <organization>Ericsson</organization>
            </author>
            <date day="3" month="July" year="2024"/>
            <abstract>
              <t>IPsec supports "classifier" mechanism to send traffic with specific Differentiated Services Field Codepoints (DSCP) over different tunnels. However, such classification is not explicitly notified to the other peer. This document specifies the DSCP Notification Payload, which, in a CREATE_CHILD_SA Exchange, explicitly mentions which DSCP code points will be tunneled in the newly created tunnel.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mglt-ipsecme-dscp-np-01"/>
        </reference>
      </references>
    </references>
    <?line 613?>

<section anchor="appendix">
      <name>Appendix</name>
      <t>This appendix provides the details of the SCHC rules defined for Diet-ESP compression, alongside an explanation and an example outcome.</t>
      <section anchor="json-representation-of-schc-rules-for-diet-esp-header-compression">
        <name>JSON Representation of SCHC Rules for Diet-ESP Header Compression</name>
        <t>The JSON file defines a set of rules within the SCHC_Context that are used for compressing and decompressing ESP headers. Each rule has a RuleID, a Description, and a set of Fields. Each field specifies how a particular part of the packet should be handled during compression or decompression. Note that the RuleID can be set by the user in any numeric order.
The rules include all the compression_levels, including IIPC, CTEC, and EEC as defined in the Terminology section.</t>
        <sourcecode type="json"><![CDATA[
[
  {
    "RuleIDValue": 1,
    "RuleIDLength": 8,
    "Compression": [
      {
        "FID": "ESP.SPI",
        "TV": 5,
        "MO": "equal",
        "CDA": "not-sent"
      },
      {
        "FID": "ESP.SEQ",
        "TV": 1,
        "MO": "MSB",
        "MO.VAL": 16,
        "CDA": "LSB"
      }
    ]
  },
  {
    "RuleIDValue": 2,
    "RuleIDLength": 8,
    "Compression": [
      {
        "FID": "UDP.DEV_PORT",
        "TV": 123,
        "MO": "MSB",
        "MO.VAL": 12,
        "CDA": "LSB"
      },
      {
        "FID": "UDP.APP_PORT",
        "TV": 4567,
        "MO": "MSB",
        "MO.VAL": 12,
        "CDA": "LSB"
      },
      {
        "FID": "UDP.LEN",
        "TV": 0,
        "MO": "ignore",
        "CDA": "compute-length"
      },
      {
        "FID": "UDP.CKSUM",
        "TV": 0,
        "MO": "ignore",
        "CDA": "compute-checksum"
      }
    ]
  },
  {
    "RuleIDValue": 0,
    "RuleIDLength": 0,
    "schc_header": [
      {
        "FID": "SCHC.NXT",
        "TV": [17, 50, 41],
        "MO": "match-mapping",
        "CDA": "mapping-sent"
      }
    ]
  },
  {
    "RuleIDValue": 4,
    "RuleIDLength": 8,
    "Compression": [
      {
        "FID": "IPV6.DEV_PREFIX",
        "TV": "ff02::5678",
        "MO": "equal",
        "CDA": "value-sent"
      },
      {
        "FID": "IPV6.APP_PREFIX",
        "TV": "2001:db8::1000",
        "MO": "equal",
        "CDA": "value-sent"
      }
    ]
  },
  {
    "RuleIDValue": 5,
    "RuleIDLength": 8,
    "Compression": [
      {
        "FID": "ESP.NXT",
        "TV": 41,
        "MO": "equal",
        "CDA": "not-sent"
      }
    ]
  }
]

]]></sourcecode>
      </section>
      <section anchor="example-outcome">
        <name>Example Outcome</name>
        <section anchor="input-packet">
          <name>Input Packet</name>
          <t>The following packet undergoes processing based on the SCHC Diet-ESP profile:</t>
          <ul spacing="normal">
            <li>
              <t><strong>IPv6 Header</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>Source Address</tt>: <tt>2001:db8::1000</tt></t>
                </li>
                <li>
                  <t><tt>Destination Address</tt>: <tt>ff02::5678</tt></t>
                </li>
                <li>
                  <t>Other attributes include <tt>Payload Length: 18</tt>, <tt>Next Header: UDP</tt>, and <tt>Hop Limit: 64</tt>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>UDP Header</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>Source Port</tt>: <tt>123</tt></t>
                </li>
                <li>
                  <t><tt>Destination Port</tt>: <tt>4567</tt></t>
                </li>
                <li>
                  <t><tt>Length</tt>: <tt>18</tt></t>
                </li>
                <li>
                  <t><tt>Checksum</tt>: <tt>0x6bc9</tt></t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Payload</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>10 bytes sample Data: <tt>b'U\xe2(\x88\xbf\xf9\xd91\x08\xc5'</tt></t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="compression-process">
          <name>Compression Process</name>
          <ol spacing="normal" type="1"><li>
              <t><strong>UDP Header Compression</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Initial size: <tt>8 bytes</tt>.</t>
                </li>
                <li>
                  <t>Compressed using the UDP-specific rules from the Diet-ESP profile.</t>
                </li>
                <li>
                  <t>Ports are encoded as LSB fields, reducing the size to <tt>2 bytes</tt>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>IPv6 Header Compression</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Initial size: <tt>40 bytes</tt>.</t>
                </li>
                <li>
                  <t>Source and destination addresses are compressed using value-sent rules based on matching prefixes.</t>
                </li>
                <li>
                  <t>Final compressed size: <tt>17 bytes</tt>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>ESP Header Compression</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Initial size: <tt>12 bytes</tt>.</t>
                </li>
                <li>
                  <t>SPI is not transmitted (<tt>not-sent</tt> CDA), and SEQ is compressed using the LSB technique.</t>
                </li>
                <li>
                  <t>Final compressed size: <tt>2 bytes</tt>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>ESP Clear Text Compression</strong>:  </t>
              <ul spacing="normal">
                <li>
                  <t>The ESP.NXT field (Next Header) is compressed using the match-mapping CDA:
Rule: The ESP.NXT value is matched to a single value (41 for the IPv6 Next Header).
CDA: mapping-sent is used to send only the mapped index.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Payload Handling</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The payload is not compressed. Further compression may be possible with additional SCHC rules.</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="decompression-process">
          <name>Decompression Process</name>
          <t>The decompression reverses the steps:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>ESP Header Reconstruction</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>SPI is restored using the fixed value from the rule (TV=5).</t>
                </li>
                <li>
                  <t>SEQ is reconstructed from the LSB field.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>ESP Clear Text Reconstruction</strong>:  </t>
              <ul spacing="normal">
                <li>
                  <t>The ESP.NXT field is restored using the mapping-sent rule, where the value 41 (Next Header for IPv6) is retrieved from the mapping.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>UDP Header Reconstruction</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Ports are restored using the compressed LSB values.</t>
                </li>
                <li>
                  <t>Length and checksum fields are calculated using compute-length and compute-checksum CDA.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>IPv6 Header Reconstruction</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Prefixes are restored using the value-sent fields in the rule.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Payload Restoration</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The payload is directly restored, as it was not compressed.</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
        <section anchor="final-output-packet">
          <name>Final Output Packet</name>
          <t>After reconstruction, the packet is identical to the original input:</t>
          <ul spacing="normal">
            <li>
              <t><strong>IPv6 Header</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>Source Address</tt>: <tt>2001:db8::1000</tt></t>
                </li>
                <li>
                  <t><tt>Destination Address</tt>: <tt>ff02::5678</tt></t>
                </li>
                <li>
                  <t><tt>Payload Length</tt>: <tt>18</tt></t>
                </li>
                <li>
                  <t><tt>Next Header</tt>: <tt>UDP</tt></t>
                </li>
                <li>
                  <t><tt>Hop Limit</tt>: <tt>64</tt>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>UDP Header</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>Source Port</tt>: <tt>123</tt></t>
                </li>
                <li>
                  <t><tt>Destination Port</tt>: <tt>4567</tt></t>
                </li>
                <li>
                  <t><tt>Length</tt>: <tt>18</tt></t>
                </li>
                <li>
                  <t><tt>Checksum</tt>: <tt>0x6bc9</tt>.</t>
                </li>
              </ul>
            </li>
            <li>
              <t><strong>Payload</strong>:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Data: <tt>b'U\xe2(\x88\xbf\xf9\xd91\x08\xc5'</tt>.</t>
                </li>
              </ul>
            </li>
          </ul>
          <t>This example demonstrates the efficiency and accuracy of the Diet-ESP profile when applied to compress and decompress network packets.</t>
          <ul spacing="normal">
            <li>
              <t><strong>Efficiency</strong>: The SCHC rules reduce packet overhead:
              </t>
              <ul spacing="normal">
                <li>
                  <t>The UDP header is compressed from <tt>8 bytes</tt> to <tt>2 bytes</tt>.</t>
                </li>
                <li>
                  <t>The IPv6 header is reduced from <tt>40 bytes</tt> to <tt>17 bytes</tt>.</t>
                </li>
                <li>
                  <t>The ESP header size is decreased from <tt>12 bytes</tt> to <tt>2 bytes</tt>.</t>
                </li>
                <li>
                  <t>The ESP.NXT field is eliminated from transmission (<tt>1 byte</tt> reduction).</t>
                </li>
              </ul>
              <t>
These reductions are particularly beneficial in constrained environments such as Low-Power Wide-Area Networks (LPWANs).</t>
            </li>
            <li>
              <t><strong>Accuracy</strong>: The decompression process fully reconstructs the original packet, ensuring no loss of information.</t>
            </li>
            <li>
              <t><strong>Applicability</strong>: By leveraging these rules, the Diet-ESP profile addresses the challenges of transmitting data efficiently in constrained networks, optimizing bandwidth utilization while retaining compatibility with standard protocols.</t>
            </li>
          </ul>
        </section>
        <section anchor="github-repository-diet-esp-schc-implementation">
          <name>GitHub Repository: Diet-ESP SCHC Implementation</name>
          <t>The source code for the implementation of the Diet-ESP profile, including the compression and decompression logic using the SCHC rules, is available on GitHub. Access the code at the following link:</t>
          <t>GitHub Repository: <eref target="https://github.com/mglt/pyesp/tree/master/examples/draft-diet-esp.py">Diet-ESP SCHC Implementation</eref></t>
          <t>This repository contains the rule definitions, examples, and source code for implementing and testing the Diet-ESP profile. Refer to the README file for setup instructions and usage guidelines.</t>
        </section>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
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
2MMe53VynlJACrhIgTrN/wHRgePm9LYAAA==

-->

</rfc>
