<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ipsecme-diet-esp-08" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="EHCP">ESP Header Compression with Diet-ESP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ipsecme-diet-esp-08"/>
    <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="D." surname="Liu" fullname="Daiying Liu">
      <organization>Ericsson</organization>
      <address>
        <email>harold.liu@ericsson.com</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="2025" month="July" day="07"/>
    <area>Security</area>
    <workgroup>IPsecme</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 66?>

<t>This document specifies Diet-ESP, a compression mechanism for control
information in IPsec/ESP communications. The compression uses Static Context Header Compression rules.</t>
    </abstract>
  </front>
  <middle>
    <?line 74?>

<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 Data, the ESP Trailer, and the Integrity Check Value (ICV). ESP has two modes of operation: Transport and Tunnel. In Transport mode, the ESP Payload Data 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 Data 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 ESP Payload Data, 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 Data 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, compression 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 Diet-ESP, a protocol that includes compression/decompression (C/D) of the various structures processed by ESP. The C/D uses Static Context Header Compression and Fragmentation (SCHC) rules <xref target="RFC8724"/>. The structure of an uncompressed ESP packet is shown in <xref target="fig-esp"/>.</t>
      <figure anchor="fig-esp">
        <name>Top-Level Format of an ESP Packet. The clear text ESP (CTE) Packet is protected with encryption.</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 Parameter Index (SPI)                  | ^Auth.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cove-
|                      Sequence Number                          | |rage
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|                 ESP Data Payload (variable)                   | |   ^
~  Higher Layer Message (transport) or IP datagram (tunnel)     ~ |   |
|                                                               | |Encr.
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cove-
|               |     ESP Padding (0-255 bytes)                 | |rage
+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |   |
|                               |  Pad Length   | Next Header   | v   v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|         Integrity Check Value-ICV   (variable)                |
~                                                               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <section anchor="sec-3c">
        <name>The Three Compressors Described in this Specification</name>
        <t>The document outlines the three compressors utilized in Diet-ESP, which are detailed as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Inner IP Compression (IIPC): The original packet to be protected by ESP, namely, the Inner IP packet (IIP), is split into a Header subject to compression and a Payload (see <xref target="sec-schc-ipsec-integration"/> for more details). The process in the IIPC pertains to the compression and decompression of fields of the Header of the IIP. For outbound packets, after IIPC, ESP incorporates the compressed Header and the (unaltered) Payload of the IIP into the ESP Data Payload of a Clear Text ESP packet (CTE) (refer to <xref target="fig-esp"/>). In the case of inbound packets, decompression occurs after the compressed Header is retrieved from the ESP Payload Data within the CTE.</t>
          </li>
          <li>
            <t>Clear Text ESP Compression (CTEC): This process pertains to the compression and decompression of the segment of the ESP packet that is covered by encryption. This encompasses the ESP Data Payload and the ESP Trailer, which includes the Padding, Pad Length, and Next Header fields, as illustrated in <xref target="fig-esp"/>. For the CTEC stage, only these three ESP Trailer fields are eligible for compression. For outbound packets, ESP subsequently encrypts the compressed CTE packet. For inbound packets, decompression takes place following the decryption process of the ESP.</t>
          </li>
          <li>
            <t>Encrypted ESP Compression (EEC): This process pertains to the compression and decompression of the Encrypted ESP packet (EE), which consists of the ESP Header, the encrypted payload, and the Integrity Check Value (ICV). Since neither the encrypted payload nor the ICV can be compressed, only the ESP Header, specifically the SPI and SN fields, is subject to compression.</t>
          </li>
        </ol>
      </section>
      <section anchor="the-scope-of-schc-in-this-specification">
        <name>The Scope of SCHC in this Specification</name>
        <t>SCHC <xref target="RFC8724"/> offers a mechanism for header compression as well as an optional fragmentation feature. SCHC facilitates the compression and decompression of headers by utilizing a common context that may encompass multiple Rules. Each Rule is designed to correspond with specific values or ranges of values within the header fields. When a Rule is successfully matched, the corresponding header fields are substituted with the Rule ID and the Compression Residue. The Compression Residue for the packet header is the concatenation of the non-empty residues for each field of the header. The Compression Residue is directly followed by the packet payload and an optional padding to ensure byte alignment.</t>
        <t>This document utilizes SCHC as a practical means to illustrate the capability to compress and decompress a structured payload. It is important to note that any elements of SCHC that pertain to aspects other than compression or decompression, such as fragmentation, fall outside the purview of this document. The reference to SCHC herein is solely for descriptive purposes related to compression and decompression, and it is not anticipated that the general SCHC framework will be integrated into the ESP implementation. The structured payloads addressed in this specification pertain to internal structures managed by ESP for the processing of an IP packet. Consequently, the compression and decompression processes outlined in this document represent supplementary steps for the ESP stack in handling the ESP packet.</t>
      </section>
      <section anchor="diet-esp-rules-and-context">
        <name>Diet-ESP Rules and Context</name>
        <t>In IPsec, the process of encryption or decryption between IPsec peers necessitates a common context known as a Security Association (SA). More broadly, the SA encompasses all essential parameters required by the ESP to handle both inbound and outbound packets. SAs are unidirectional. Furthermore, IPsec can link both outbound and inbound IP packets to the SA through Traffic Selectors (TS) or Security Parameter Index (SPI). This capability allows IPsec to uniquely associate outbound and inbound packets with a specific context (SA), which contains all pertinent information for IPsec processing.</t>
        <t>This document adopts a comparable methodology for compression and decompression, ensuring that the SA includes all necessary parameters to create the Rules applicable for compressing or decompressing each structured payload. The Rule associated with each structured payload is generated based on specific parameters referred to in this document as Attributes for Rule Generation (AfRG) (see <xref target="sec-afrg"/> for a more detailed description). These AfRGs are negotiated through IKEv2 <xref target="RFC7296"/>, and in such cases, they are likely already included in the SA. Any additional missing AfRGs are negotiated via <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt>ESP Header Compression:</dt>
        <dd>
          <t>A method to reduce the size of ESP headers and trailer 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>Inner IP C/D (IIPC):</dt>
        <dd>
          <t>Process that compresses/decompresses the inner IP packet headers.</t>
        </dd>
        <dt>Clear Text ESP C/D (CTEC):</dt>
        <dd>
          <t>Process that compresses/decompresses all fields that will later be encrypted by ESP, which include the ESP Data Payload and ESP Trailer.</t>
        </dd>
        <dt>Encrypted ESP C/D (EEC):</dt>
        <dd>
          <t>Process that compresses/decompresses ESP fields not encrypted by ESP.</t>
        </dd>
        <dt>Security Parameter 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"/></t>
        </dd>
        <dt>RuleID:</dt>
        <dd>
          <t>A unique identifier for each Rule part of the Diet-ESP context.</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>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 eventually <xref target="I-D.ietf-schc-architecture"/>.</t>
    </section>
    <section anchor="sec-schc-ipsec-integration">
      <name>Diet-ESP Integration into the IPsec Stack</name>
      <t><xref target="fig-arch"/> depicts the incorporation of Diet-ESP within the IPsec framework.</t>
      <t>IPsec requires that both endpoints agree on a shared context known as the Security Association (SA). This SA is established via IKEv2 and encompasses all Attributes for Rule Generation (AfRG) (refer to <xref target="sec-afrg"/>) essential for formulating the Rules for each compressor defined in <xref target="sec-3c"/>, specifically the Inner IP packet Compressor (IIPC), the Clear Text ESP Compressor (CTEC), and the Encrypted ESP Compressor (EEC).</t>
      <t>When an Inner IP packet (IIP) is received, IPsec identifies the SA linked to that packet. Upon the ESP determining the IIPC Rule from the AfRG contained within the SA, the IIPC separates the IIP into Header and Payload, and compresses the Header. The compressed Header is composed of RuleID, Compressed Residue, and an optional padding field. The original Payload of the IIP is then appended after the compressed Header, resulting in an IIPC packet with format |C(Header)|Payload| where C(.) indicates compression. Subsequently, ESP constructs the Clear Text ESP packet (CTE). The CTEC Rule is derived from the AfRG of the SA, allowing for the compression of the CTE, resulting in a CTEC packet with format |C(Header)|Payload|C(ET)| where ET represents the ESP Trailer. Then, ESP encrypts the ESP Data Payload, computes the Integrity Check Value (ICV), and forms the Encrypted ESP packet (EE) formatted as |EH|E{C(Header)|Payload|C(ET)}|ICV|, where EH represents the ESP Header and E{.} indicates encryption. The EEC Rule is derived from the AfRG of the SA, and then utilized to compress the EE, resulting in an EEC packet with format |C(EH)|E{C(Header)|Payload|C(ET)}|ICV|. The resulting compressed ESP packet is integrated into an IP packet and transmitted as outbound traffic.</t>
      <t>For inbound traffic, the endpoint extracts the Security Parameter Index (SPI) from the compressed EE, along with any other selectors from the packet, to conduct a lookup for the SA. As outlined in <xref target="sec-sec"/>, since the SPI is derived from a potentially compressed ESP Header, there may be instances where the endpoint must explore multiple options, potentially leading to several lookups or, in the worst-case scenario, multiple signature verifications (see <xref target="sec-sec"/> for a more detailed discussion).</t>
      <t>Once the SA is retrieved, the ESP accesses the AfRG to ascertain the EEC Rule and proceeds to decompress the EE. The ESP verifies the signature prior to decryption. Following this, the CTEC Rule is derived from the AfRG of the SA, allowing for the subsequent decompression. Finally, ESP extracts the Data Payload from the CTE packet, retrieves the IIPC Rule from the AfRG of the SA, and decompresses the Header.</t>
      <t>Note that implementations MAY differ from the architectural description but it is assumed that the output 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(.) and DC(.) designate compression/decompression for the fields inside, and E{.} designates encryption. IIP refers to the Inner IP packet, EH refers to the ESP Header, and ET refers to the ESP Trailer. IIPC, CTEC and EEC respectively designate the Inner IP Compressor, the Clear Text ESP Compressor, and the Encrypted ESP Compressor.</name>
        <artwork align="center"><![CDATA[
Endpoint                                 Endpoint
+------------------------+               +------------------------+
| Inner IP packet        |               | Inner IP packet        | 
+------------------------+               +------------------------+
========|=================================================^========
IPsec   |                                                 |
+------------------------+                                |
| SA lookup              |                                |
+------------------------+                                |
========|=================================================|========
ESP     |                                                 |
        |       +-------------------------------------+   |
        |       | Security Association                |   |                           
        |       |   - Attributes for Rule Generation  |   |
        |       +-------------------------------------+   | 
        |       |  Generation of the IIPC Rule,       |   |
        |       |   CTEC Rule, and EEC Rule           |   |
        |       +-------------------------------------+   | 
        |                                                 |
        v                                                 |            
+------------------------+               +------------------------+
| IIPC:                  |               | IIPC:                  |
| |C(Header)|Payload|    |               | DC(Header)|Payload     |
+------------------------+               +------------------------+ 
| Formation of           |               | Extraction of          |
| Clear Text ESP         |               | Data Payload           |
+------------------------+               +------------------------+
| CTEC:                  |               | CTEC:                  |
| |C(Header)|            |               | DC(|C(Header)|         |     
|   Payload|C(ET)|       |               |   Payload|C(ET)|)      |
+------------------------+               +------------------------+
| Encryption             |               | Decryption             |
+------------------------+               +------------------------+
| Formation of           |               | Parsing                |
| Encrypted ESP          |               | Encrypted ESP          |
+------------------------+               +------------------------+
| EEC:                   |               | EEC:                   |  
| |C(EH)|E{C(Header)|    |               | DC(C(EH)|E{C(Header)| |
|   Payload|C(ET)}|ICV|  |               |   Payload|C(ET)}|ICV|) |
+------------------------+               +------------------------+
        |                                | SA lookup              |
        |                                +------------------------+
========|=================================================^========
        |                                                 |
        v                                                 | 
Outbound Traffic                                  Inbound Traffic 
]]></artwork>
      </figure>
      <section anchor="schc-parameters-for-diet-esp">
        <name>SCHC Parameters for Diet-ESP</name>
        <t>The SCHC Packet <xref target="RFC8724"/> is always in the form:</t>
        <figure anchor="fig-schc-compressed-packet-format">
          <name>SCHC Packet</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 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. Furthermore, <xref target="RFC8724"/> indicates that the way the RuleID is sent is left open to the profile specification. The RuleID in Diet-ESP is expressed as 1 byte but it can be elided as there is a unique Rule determined for the compressors. The 1 byte may be used in future implementations to support multiple flows over the same SA.</t>
        <t>SCHC padding in SCHC serves the purpose of aligning data to a designated boundary, which is typically byte-aligned or aligned to 8 bits. This document presumes that this field is not utilized in CET and EEC. This document outlines a simpler form of padding for byte-alignment, as detailed in section <xref target="sec-iipc"/>. Such alignment is essential to ensure that encryption is applied to data that is byte-aligned. The rationale for employing a padding method other than SCHC Padding is to accommodate the length of the compressed ESP Payload Data.</t>
        <t>Another variable required for the C/D in Diet-ESP is the Maximum Packet Size (MAX_PACKET_SIZE) 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>
      </section>
      <section anchor="sec-afrg">
        <name>Attributes for Rule Generation</name>
        <t>The list of attributes for the Rule 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.</t>
        <t>As outlined in <xref target="sec-schc-ipsec-integration"/>, this specification does not detail the process by which the AfRG are established between peers. Instead, such negotiations are addressed in <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>. However, the AfRG can be classified into two distinct categories. The first category encompasses AfRG that are negotiated through a specific IKEv2 extension tailored for the negotiation of AfRG linked to a particular profile, the Diet-ESP profile in this context. The AfRG referenced in <xref target="tab-ehc-ctx-esp"/> in this category are: the DSCP Compression/Decompression Action (CDA) dscp_cda, the ECN CDA ecn_cda, the Flow Label CDA flow_label_cda, the ESP alignment alignment, the ESP SPI Least Significant Bits (LSB) esp_spi_lsb, and the ESP Sequence Number LSB esp_sn_lsb.</t>
        <t>The second category pertains to AfRG that are negotiated through IKEv2 exchanges or extensions that are not specifically designed for compression purposes. This category includes AfRG associated with TS, as identified in <xref target="tab-ehc-ctx-esp"/>, which are the TS IP Version ts_ip_version, the TS IP Source Start ts_ip_src_start, the TS IP Source End ts_ip_src_end, the TS IP Destination Start ts_ip_dst_start, the TS IP Destination End ts_ip_dst_end, the TS Protocol ts_proto, the TS Port Source Start ts_port_src_start, the TS Port Source End ts_port_src_end, the TS Port Destination Start ts_port_dst_start, and the  TS Port Destination End ts_port_dst_end. These AfRG are derived from the Traffic Selectors established through TSi/TSr payloads during the IKEv2 CREATE_CHILD_SA exchange, as described in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>. The AfRG IPsec Mode designated as ipsec_mode in <xref target="tab-ehc-ctx-esp"/> is determined by the presence or absence of the USE_TRANSPORT_MODE Notify Payload during the CREATE_CHILD_SA exchange, as detailed in <xref section="1.3.1" sectionFormat="comma" target="RFC7296"/>. The AfRG Tunnel IP designated as tunnel_ip in <xref target="tab-ehc-ctx-esp"/> is obtained from the IP address of the IKE messages exchanged during the CREATE_CHILD_SA process, as noted in <xref section="1.1.3" sectionFormat="comma" target="RFC7296"/>. The AfRGs designated as ESP Encryption Algorithm esp_encr and ESP Security Parameter Index (SPI) esp_spi in <xref target="tab-ehc-ctx-esp"/> are established through the SAi2/SAr2 payloads during the CREATE_CHILD_SA exchange, while the AfRG designated as ESP Sequence Number esp_sn in <xref target="tab-ehc-ctx-esp"/> is initialized upon the creation of the Child SA and incremented for each subsequent ESP message. The DSCP values identified as dscp_list in <xref target="tab-ehc-ctx-esp"/> are established through the DSCP Notify Payload <xref target="I-D.mglt-ipsecme-dscp-np"/>.</t>
        <t>The ability to derive the IIP Compressor Rules for the internal IP packet from the agreed Traffic Selectors is indicated by the variable iipc_profile.</t>
        <table anchor="tab-ehc-ctx-esp">
          <name>Attributes for Rule Generation (AfRG) to generate IIPC, CTEC and EEC Rules in Diet-ESP</name>
          <thead>
            <tr>
              <th align="left">Variable</th>
              <th align="left">Possible Values</th>
              <th align="left">Reference</th>
              <th align="left">Compressor</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">iipc_profile</td>
              <td align="left">"iipc_diet-esp", "iipc_not_compressed"</td>
              <td align="left">ThisRFC</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">dscp_cda</td>
              <td align="left">"not_compressed", "lower", "sa"</td>
              <td align="left">ThisRFC</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">ecn_cda</td>
              <td align="left">"not_compressed", "lower"</td>
              <td align="left">ThisRFC</td>
              <td align="left">IIPC</td>
            </tr>
            <tr>
              <td align="left">flow_label_cda</td>
              <td align="left">"not_compressed", "lower", "generated", "zero"</td>
              <td align="left">ThisRFC</td>
              <td align="left">IIPC</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">IPv4 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">IPv4 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, ANY, ...</td>
              <td align="left">RFC7296</td>
              <td align="left">IIPC</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", "64 bit"</td>
              <td align="left">ThisRFC</td>
              <td align="left">CTEC</td>
            </tr>
            <tr>
              <td align="left">esp_trailer</td>
              <td align="left">"Mandatory", "Optional"</td>
              <td align="left">ThisRFC</td>
              <td align="left">CTEC</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">IPv4 or 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-32</td>
              <td align="left">ThisRFC</td>
              <td align="left">EEC</td>
            </tr>
          </tbody>
        </table>
        <t>Any variable starting with "ts_" is associated with the Traffic Selectors (TSi/TSr) of the SA. 
The notation is introduced by this specification but the definitions of the variables are in <xref target="RFC4301"/> and <xref target="RFC7296"/>.</t>
        <t>The Traffic Selectors may result in a quite complex expression, and this specification restricts that complexity. 
This specification restricts the resulting TSi/TSr to a single type of IP address (IPv4 or IPv6), a single protocol (e.g., UDP, TCP, or ANY), a single port range for source and destination. This specification presumes that the Traffic Selectors can be articulated as a result of CREATE_CHILD_SA with only one Traffic Selector <xref section="3.13.1" sectionFormat="comma" target="RFC7296"/> in both TSi and TSr payloads (as described in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>). The TS Type MUST be either TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE.</t>
        <t>Let the resulting Traffic Selectors TSi/TSr be expressed via the Traffic Selector structure defined in <xref section="3.13.1" sectionFormat="comma" target="RFC7296"/>. We designate the local TS the TS - either TSi or TSr - sent by the local peer. Conversely we designate as remote TS the TS - either TSi or TSr - sent by the remote peer.</t>
        <t>The details of each parameter are the following:</t>
        <dl>
          <dt>iipc_profile:</dt>
          <dd>
            <t>designates the behavior of the IIPC layer. When set to "iipc_not_compressed" IIPC is not performed. This specification describes IIPC that corresponds to the "iipc_diet-esp" profile.</t>
          </dd>
          <dt>flow_label_cda:</dt>
          <dd>
            <t>indicates the Flow Label CDA, that is 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, "not_compressed" indicates that Flow Label (resp. Identification) is not compressed and the field is sent as-is using value-sent. "lower" ( using compute-* ) 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. This field is computed from the outer IP header using compute-* ( MO: ignore, CDA: compute-* )."generated" indicates the value is re-generated at the decompressor side ( CDA: compute-* ). In that case, the decompressed value may take a different value compared to its original value. "zero" indicates the field is removed by matching against a target value of 0 (MO: equal, CDA: not-sent).
See <xref target="sec-cda"/> for further details on the applied CDA logic.</t>
          </dd>
          <dt>dscp_cda:</dt>
          <dd>
            <t>indicates the DSCP CDA, that is how the DSCP values of the inner IP packet are compressed / decompressed - See <xref target="sec-cda"/> for more information. In a nutshell, "not_compressed" indicates that DSCP 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 ( compute-* ). "sa" indicates that compression is performed according to the pre-negotioated list of DSCP values (dscp_list) agreed by the SA, using SCHC's MO and index (CDA).
See <xref target="sec-cda"/> for rule examples.</t>
          </dd>
          <dt>ecn_cda:</dt>
          <dd>
            <t>indicates ECN CDA, that is how the ECN values of the inner IP packet are compressed / decompressed - See <xref target="sec-cda"/> for more information. In a nutshell, "not_compressed" indicates that DSCP are not compressed. "lower" indicates the value is read from the outer IP header using compute-* (eventually with some adaptations when inner IP packet and outer IP packets have different versions).</t>
          </dd>
          <dt>ts_ip_version:</dt>
          <dd>
            <t>designates the TS IP version. 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. If TS Type of the resulting TSi/TSr is set to TS_IPV4_ADDR_RANGE, ts_ip_version takes the value "IPv4-only". Respectively, if TS Type is set to TS_IPV6_ADDR_RANGE, ts_ip_version is set to "IPv6-only".</t>
          </dd>
          <dt>ts_ip_src_start:</dt>
          <dd>
            <t>designates the TS IP Source Start, that is the starting value range of source IP addresses of the inner packet and has the same meaning as the Starting Address field of the local TS.</t>
          </dd>
          <dt>ts_ip_src_end:</dt>
          <dd>
            <t>designates TS IP Source End, that is 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 local TS.</t>
          </dd>
          <dt>ts_ip_dst_start:</dt>
          <dd>
            <t>designates the TS IP Destination Start, that is the starting value range of destination IP addresses of the inner packet and has the same meaning as the Starting Address field of the remote TS.</t>
          </dd>
          <dt>ts_ip_dst_end:</dt>
          <dd>
            <t>designates the TS IP Destination End, that is the high end value range of destination IP addresses of the inner packet and has the same meaning as the Ending Address field of the remote TS.</t>
          </dd>
          <dt>ts_proto:</dt>
          <dd>
            <t>designates the TS Protocol, that is the Protocol ID of the resulting TSi/TSr. This profile considers the specific protocol values "TCP", "UDP", "UDP-Lite", "SCTP", and "ANY". The representation of "ANY" is given in <xref section="4.4.4.2" sectionFormat="comma" target="RFC4301"/>.</t>
          </dd>
          <dt>ts_port_src_start:</dt>
          <dd>
            <t>designates the TS Port Source Start, that is the the starting value of the source port range of the inner packet and has the same meaning as the Start Port field of the local TS.</t>
          </dd>
          <dt>ts_port_src_end:</dt>
          <dd>
            <t>designates the TS Port Source End, that is the high end value range of the source port range of the inner packet and has the same meaning as the End Port field of the local TS.</t>
          </dd>
          <dt>ts_port_dst_start:</dt>
          <dd>
            <t>designates TS Port Destination Start, that is the starting value of the destination port range of the inner packet and has the same meaning as the Start Port field of the remote TS.</t>
          </dd>
          <dt>ts_port_dst_end:</dt>
          <dd>
            <t>designates TS Port Destination End, that is the high end value range of the destination port range of the inner packet and has the same meaning as the End Port field of the remote TS.</t>
          </dd>
        </dl>
        <t>IP addresses and ports are defined as a range and compressed using the Least Significant Bits (LSB).
For a range defined by start and end values, msb( start, end ) is defined as the function that returns the Most Significant Bits (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>dscp_list:</dt>
          <dd>
            <t>designates the list of DSCP values associated to the inner traffic - see for example <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>designates the ESP alignment as defined by <xref target="RFC4303"/>.</t>
          </dd>
          <dt>esp_trailer:</dt>
          <dd>
            <t>When configured to "Mandatory," it signifies that the implementation requires the ESP Trailer to include a Next Header and a Pad Len field, as outlined in <xref target="RFC4303"/>. This requirement primarily aims to ensure compatibility with current hardware implementations of ESP, as detailed in <xref target="RFC4303"/>. Conversely, if set to "Optional," it indicates that the implementation is capable of supporting the compression of the ESP Trailer.</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 Tunnel 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 ESP Encryption Algorithm - also designated as Transform 1 in <xref section="3.3.2" sectionFormat="comma" target="RFC7296"/>. The algorithm is needed to determine whether the ESP Payload Data needs to be aligned to some predefined block size and if the ESP Pad Length and Padding fields can be compressed.  For the purpose of compression it is RECOMMENDED to use algorithms that already compressed their IV <xref target="RFC8750"/>.</t>
          </dd>
          <dt>esp_spi:</dt>
          <dd>
            <t>designates the Security Parameter 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 ESP 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. It works similarly to ESP SPI LSB (see esp_spi_lsb).</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sec-cda">
      <name>Examples of Diet-ESP SCHC Rule Tables</name>
      <t>The tables in this section provide examples of SCHC compression rules for Diet-ESP in IPsec. The Compression/Decompression Actions (CDAs), derived from the AfRG discussed in Section <xref target="sec-afrg"/>, specify how various IPv6, UDP/TCP, and ESP header fields are compressed and decompressed,</t>
      <t><xref target="tab-diet-esp-rule-iipc"/>, <xref target="tab-diet-esp-rule-ctec"/>, and <xref target="tab-diet-esp-rule-eec"/> collectively represent an example configuration for Diet-ESP compression, where each compressor stage applies its own dedicated rule as per <xref target="RFC8724"/> Section 7.2. In <xref target="tab-diet-esp-rule-iipc"/>, the field flow_label_cda is set to lower, which results in MO = ignore and CDA = compute-*, indicating the value is derived from the outer header. The dscp_cda is set to not_compressed, corresponding to MO = ignore and CDA = value-sent, meaning the DSCP field is transmitted in full. IPv6 address and port fields are compressed using the MSB/LSB strategy, where the MO = MSB(n) matches the stable prefix, and CDA = LSB transmits only the variable bits. The ESP-related fields, including padding and alignment, are compressed using a separate rule in <xref target="tab-diet-esp-rule-ctec"/>, while the ESP SPI and Sequence Number are compressed independently using the rule in <xref target="tab-diet-esp-rule-eec"/>. Each rule includes only the fields visible and relevant to its corresponding compression stage.</t>
      <section anchor="diet-esp-with-inner-ip-and-udptcp-header-compression">
        <name>Diet-ESP with Inner IP and UDP/TCP Header Compression</name>
        <section anchor="inner-ip-compression-iipc-rule">
          <name>Inner IP Compression (IIPC) Rule</name>
          <t>This rule defines the compression behavior for the IIPC, which operates before ESP encapsulation and encryption. The example handles all fields from the inner IPv6 and transport layer headers (e.g., UDP, TCP, SCTP) that are visible at this stage.</t>
          <t>Version, Next Header, and Payload Length are elided or derived based on known values or outer headers.</t>
          <t>Traffic Class fields (DSCP and ECN) are partially elided or transmitted depending on their CDA.</t>
          <t>Flow Label is computed from the outer header (flow_label_cda = lower).</t>
          <t>Source/Destination Addresses and Ports are compressed using MSB/LSB strategy based on Traffic Selectors.</t>
          <t>Checksum and UDP Length are elided and computed at the decompressor.</t>
          <table anchor="tab-diet-esp-rule-iipc">
            <name>IIPC Rule: Compression of Inner IP and Transport Headers</name>
            <thead>
              <tr>
                <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">Version</td>
                <td align="left">3</td>
                <td align="left">1</td>
                <td align="left">Bi</td>
                <td align="left">ts_ipversion</td>
                <td align="left">equal</td>
                <td align="left">not-sent</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">DSCP</td>
                <td align="left">6</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>
                <td align="left">6</td>
              </tr>
              <tr>
                <td align="left">ECN</td>
                <td align="left">2</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>
                <td align="left">2</td>
              </tr>
              <tr>
                <td align="left">Flow Label</td>
                <td align="left">20</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">0</td>
              </tr>
              <tr>
                <td align="left">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>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Next Header</td>
                <td align="left">8</td>
                <td align="left">1</td>
                <td align="left">Bi</td>
                <td align="left">ts_proto</td>
                <td align="left">equal</td>
                <td align="left">not-sent</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Hop Limit</td>
                <td align="left">8</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">0</td>
              </tr>
              <tr>
                <td align="left">Source Address</td>
                <td align="left">128</td>
                <td align="left">1</td>
                <td align="left">Bi</td>
                <td align="left">msb(src_start, src_end)</td>
                <td align="left">MSB(64)</td>
                <td align="left">LSB</td>
                <td align="left">64</td>
              </tr>
              <tr>
                <td align="left">Destination Address</td>
                <td align="left">128</td>
                <td align="left">1</td>
                <td align="left">Bi</td>
                <td align="left">msb(dst_start, dst_end)</td>
                <td align="left">MSB(64)</td>
                <td align="left">LSB</td>
                <td align="left">64</td>
              </tr>
              <tr>
                <td align="left">Source Port (UDP/TCP)</td>
                <td align="left">16</td>
                <td align="left">1</td>
                <td align="left">Bi</td>
                <td align="left">msb(src_port_start, end)</td>
                <td align="left">MSB(8)</td>
                <td align="left">LSB</td>
                <td align="left">8</td>
              </tr>
              <tr>
                <td align="left">Destination Port (UDP/TCP)</td>
                <td align="left">16</td>
                <td align="left">1</td>
                <td align="left">Bi</td>
                <td align="left">msb(dst_port_start, end)</td>
                <td align="left">MSB(8)</td>
                <td align="left">LSB</td>
                <td align="left">8</td>
              </tr>
              <tr>
                <td align="left">Checksum</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>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">UDP 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>
                <td align="left">0</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="clear-text-esp-compression-ctec-rule">
          <name>Clear Text ESP Compression (CTEC) Rule</name>
          <t>This rule is used by the CTEC compressor, which processes ESP-specific fields just before encryption. These fields primarily deal with formatting and alignment.</t>
          <t>ESP Padding is used to ensure that the ESP payload aligns to the encryption algorithm's block size or protocol requirements. It is not sent and is instead calculated (compute-*).</t>
          <t>Byte Alignment ensures that the SCHC packet respects the alignment required by ESP and IPv6 extension header parsing (e.g., 64-bit alignment).</t>
          <t>These fields are handled separately because they are relevant only at the ESP construction stage and are not part of the inner packet or ESP header fields.</t>
          <table anchor="tab-diet-esp-rule-ctec">
            <name>CTEC Rule: ESP Trailer and Alignment Compression</name>
            <thead>
              <tr>
                <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">ESP Padding</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">-</td>
                <td align="left">ignore</td>
                <td align="left">compute-*</td>
                <td align="left">0</td>
              </tr>
              <tr>
                <td align="left">Byte Alignment</td>
                <td align="left">8</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>
                <td align="left">0</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="encrypted-esp-compression-eec-rule">
          <name>Encrypted ESP Compression (EEC) Rule</name>
          <t>This rule focuses on compressing the ESP header fields that are still visible post-encryption. These fields are typically stable over a session and can be compressed without compromising lookup reliability or replay protection.</t>
          <t>SPI (Security Parameter Index) and Sequence Number (SN) are compressed using the Least Significant Bits (LSB) approach.</t>
          <t>MSB(24) signifies that only 8 bits of variation need to be sent (leaving 24 fixed bits).</t>
          <table anchor="tab-diet-esp-rule-eec">
            <name>EEC Rule: ESP SPI and Sequence Number Compression</name>
            <thead>
              <tr>
                <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">SPI</td>
                <td align="left">32</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">-</td>
                <td align="left">MSB(24)</td>
                <td align="left">LSB</td>
                <td align="left">8</td>
              </tr>
              <tr>
                <td align="left">SN</td>
                <td align="left">32</td>
                <td align="left">1</td>
                <td align="left">Dw</td>
                <td align="left">-</td>
                <td align="left">MSB(24)</td>
                <td align="left">LSB</td>
                <td align="left">8</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="sa-based-dscp-compression-with-zeroed-flow-label">
        <name>SA-Based DSCP Compression with Zeroed Flow Label</name>
        <t><xref target="tab-diet-esp-ruleIIP-2"/>, <xref target="tab-diet-esp-ruleCTEC-2"/>, and <xref target="tab-diet-esp-ruleEE-2"/> illustrate rule examples where the DSCP field is compressed using a pre-negotiated Security Association (SA) list. Here, <tt>dscp_cda = sa</tt> results in <tt>MO = match-mapping</tt> and <tt>CDA = index</tt>, meaning the field value is matched from a list and only the index is sent. The ECN field is computed from the outer header (<tt>ecn_cda = lower</tt>), so it is not sent. The Flow Label is removed from transmission by setting a target value of 0 (<tt>flow_label_cda = zero</tt>), which results in <tt>MO = equal</tt> and <tt>CDA = not-sent</tt>.</t>
        <table anchor="tab-diet-esp-ruleIIP-2">
          <name>Example of Diet-ESP IIPC Rule table where the DSCP field is compressed using a pre-negotiated Security Association (SA) list</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DSCP</td>
              <td align="left">match-mapping</td>
              <td align="left">index</td>
              <td align="left">3</td>
            </tr>
            <tr>
              <td align="left">ECN</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Flow Label</td>
              <td align="left">equal (TV=0)</td>
              <td align="left">not-sent</td>
              <td align="left">0</td>
            </tr>
          </tbody>
        </table>
        <table anchor="tab-diet-esp-ruleCTEC-2">
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ESP Padding</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Byte Alignment</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
          </tbody>
        </table>
        <table anchor="tab-diet-esp-ruleEE-2">
          <name>Example of Diet-ESP EEC Rule table where the DSCP field is compressed using a pre-negotiated Security Association (SA) list</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SPI</td>
              <td align="left">MSB(24)</td>
              <td align="left">LSB</td>
              <td align="left">8</td>
            </tr>
            <tr>
              <td align="left">SN</td>
              <td align="left">MSB(24)</td>
              <td align="left">LSB</td>
              <td align="left">8</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="full-header-transmission-without-compression">
        <name>Full Header Transmission Without Compression</name>
        <t><xref target="tab-diet-esp-ruleIIP-3"/>, <xref target="tab-diet-esp-ruleCTEC-3"/>, and <xref target="tab-diet-esp-ruleEE-3"/> show a configuration disabling all compression mechanisms. Every field is transmitted in full using <tt>MO = ignore</tt> and <tt>CDA = value-sent</tt>, which is the result of setting each <tt>_cda</tt> attribute to <tt>not_compressed</tt>.</t>
        <table anchor="tab-diet-esp-ruleIIP-3">
          <name>Example of Diet-ESP IIPC Rule table with all compression mechanisms disabled</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DSCP</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">6</td>
            </tr>
            <tr>
              <td align="left">ECN</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">2</td>
            </tr>
            <tr>
              <td align="left">Flow Label</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">20</td>
            </tr>
            <tr>
              <td align="left">Payload Length</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">16</td>
            </tr>
            <tr>
              <td align="left">Hop Limit</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">8</td>
            </tr>
          </tbody>
        </table>
        <table anchor="tab-diet-esp-ruleCTEC-3">
          <name>Example of Diet-ESP IIPC Rule table with all compression mechanisms disabled</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ESP Padding</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Byte Alignment</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
          </tbody>
        </table>
        <table anchor="tab-diet-esp-ruleEE-3">
          <name>Example of Diet-ESP EEC Rule table with all compression mechanisms disabled</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SPI</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">32</td>
            </tr>
            <tr>
              <td align="left">SN</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">32</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="mixed-compression-strategy">
        <name>Mixed Compression Strategy</name>
        <t><xref target="tab-diet-esp-ruleIIP-4"/>, <xref target="tab-diet-esp-ruleEE-4"/> demonstrate a mixed strategy. The Flow Label is generated at the decompressor side and not transmitted (<tt>flow_label_cda = generated</tt> results in <tt>MO = ignore</tt>, <tt>CDA = compute-*</tt>). The ECN field is again derived from the outer header, while the DSCP field is transmitted as-is (<tt>dscp_cda = not_compressed</tt>).</t>
        <table anchor="tab-diet-esp-ruleIIP-4">
          <name>Example of Diet-ESP IIPC Rule table with a mixed strategy</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DSCP</td>
              <td align="left">ignore</td>
              <td align="left">value-sent</td>
              <td align="left">6</td>
            </tr>
            <tr>
              <td align="left">ECN</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Flow Label</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
          </tbody>
        </table>
        <table anchor="tab-diet-esp-ruleCTEC-4">
          <name>Example of Diet-ESP IIPC Rule table with a mixed strategy</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ESP Padding</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
            <tr>
              <td align="left">Byte Alignment</td>
              <td align="left">ignore</td>
              <td align="left">compute-*</td>
              <td align="left">0</td>
            </tr>
          </tbody>
        </table>
        <table anchor="tab-diet-esp-ruleEE-4">
          <name>Example of Diet-ESP EEC Rule table with a mixed strategy</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">MO</th>
              <th align="left">CDA</th>
              <th align="left">Sent [bits]</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">SPI</td>
              <td align="left">MSB(28)</td>
              <td align="left">LSB</td>
              <td align="left">4</td>
            </tr>
            <tr>
              <td align="left">SN</td>
              <td align="left">MSB(28)</td>
              <td align="left">LSB</td>
              <td align="left">4</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="diet-esp-for-ipsec-in-tunnel-mode">
      <name>Diet-ESP for IPsec in Tunnel Mode</name>
      <section anchor="sec-iipc">
        <name>Inner IP Compression (IIPC)</name>
        <t>When iipc_profile is set to "iipc_not_compressed", the inner IP Packet (IIP) is not compressed.  When iipc_profile is set to "iipc_diet-esp", IIPC proceeds with the compression.  The Header fields subject to compression depend on the encapsulation mode. When ipsec_mode is set to "Tunnel", all Header fields of the IIP structure are subject to compression. 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"/>). Conversely, when ipsec_mode is set to "Transport", the compression applies only to Header fields other than the IPv4 or IPv6 header fields. This means that the IPv4 and IPv6 headers remain uncompressed, while other Header fields within the IIP structure are subject to compression.</t>
        <t>Note that the SCHC packet illustrated in <xref target="fig-schc-compressed-packet-format"/> appends the padding at the end of the SCHC Packet. This approach presents notable challenges, including handling a Payload that lacks byte alignment. Furthermore, the absence of a specified Payload length would necessitate the inclusion of the padding length within the padding itself, which would require a particular padding construction akin to that utilized by the ESP Padding, thereby posing difficulties for hardware implementations.</t>
        <t>To address these issues, IIPC uses a pre-processing phase where the IIP is divided into two segments: the Header and the Payload and only the Header is considered as the candidate structure for compression. By construction, the compression process applies the defined rule to the Header, resulting in a SCHC Packet (refer to <xref target="fig-schc-compressed-packet-format"/>) that features an empty SCHC Payload field, with a padding field positioned after the Compression Residue. Ultimately, a post-processing phase merges the SCHC Packet with the Payload, allowing the compressor to produce an IIPC packet in the format outlined in <xref target="fig-diet-esp-compressed-header-format"/>.</t>
        <figure anchor="fig-diet-esp-compressed-header-format">
          <name>Packet format after IIPC compression</name>
          <artwork align="center"><![CDATA[
 0 1 2 3 4 5 6 7|<---- s bits ------->|<-0..7 bits->|<---n bytes--->|
+-+-+-+-+-+-+-+-+---------...---------+~~~~~~~~~~~~~+---------------+
|   RuleID      | Compression Residue |   padding   | Payload       |
+-+-+-+-+-+-+-+-+---------...---------+~~~~~~~~~~~~~+---------------+
|-------- Compressed Header ----------|--as needed--|
]]></artwork>
        </figure>
        <t>It is important to observe that the resulting packet is byte-aligned. Additionally, the division between Header and Payload can only occur because all the Header fields are of a fixed size.</t>
        <section anchor="sec-payload">
          <name>Compression of the Inner IP payload</name>
          <t>This section describes the compression of the inner IP payload. The compression described herein only affects UDP, UDP-Lite, TCP or SCTP segments. The type of segment is specified in the IP header.</t>
          <t>For UDP, UDP-Lite, TCP and SCTP segments, 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>Compression of the Inner IPv6 header</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 "not_compressed", 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 "not_compressed", 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 "not_compressed", 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 (using compute-*(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 (using compute-*) 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>Compression of the Inner IPv4 header</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 tunnel 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>The Internet Header Length (IHL) is not compressed, 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-ctec">
        <name>Clear Text ESP Compression (CTEC)</name>
        <t>Once the Inner IP Packet has undergone compression as outlined in <xref target="sec-iipc"/>, the resulting compressed packet comprises a specific number of bytes. To construct the Clear Text ESP Packet, it is necessary to ascertain the ESP Payload Data, the Next Header, the ESP Pad Length, and the ESP Padding fields.</t>
        <t>When esp_trailer is set to "Mandatory", the Next Header and the ESP Pad Length fields are present. Such requirement is usually expected to remain compatible with hardware implementations of ESP. The ESP Pad Length value is determined to meet the required alignment. When alignment is set to "8bit", Pad Length is set to 0 and the Padding field is empty.</t>
        <t>Conversely, when esp_trailer is set to "Optional", the Next Header Pad Length and Padding are generated as follows:</t>
        <t>In transport mode, the IP header of the inner packet remains not compressed during the IIPC phase, and the ESP Payload Data is derived from the inner packet. Conversely, in tunnel mode, the ESP Payload Data encompasses the entirety of the packet generated by the IIPC.</t>
        <t>In transport mode, the Next Header field is obtained from either the inner IP header or the Security Association, as specified in <xref target="sec-inner-ip4"/> or <xref target="sec-inner-ip6"/>. In tunnel mode, the Next Header is elided, as it is determined by ts_ip_version. FL is set to 8 bit, TV is set to IPv4 or IPv6 depending on ts_ip_version, MO is set to "equal" and CDA is set to "not-sent".</t>
        <t>The ESP Pad Length and ESP Padding fields are omitted only when ESP alignment has been selected to "8bit" and esp_encr does not necessitate a specific block size alignment, or if that block size is one byte. This is represented by setting FL to (Pad Length + 1) * 8 bits, leaving TV unset, configuring MO to "ignore," and designating CDA as padding. The ESP Padding and ESP Pad Length may vary from their decompressed counterparts. However, since the IPsec process removes the padding, these variations do not affect packet processing. When esp_encr requires a specific block size, the ESP Pad Length and ESP Padding fields remain not compressed.</t>
      </section>
      <section anchor="sec-eec">
        <name>Encrypted ESP Compression (EEC)</name>
        <t>Once the Clear Text Packet has undergone compression as outlined in <xref target="sec-ctec"/>, the resulting CTEC is encrypted. The header fields once the encrypted ESP packet is formed are the SPI and SN. To facilitate the processes of compression and decompression, this specification requires that the compressed ESP Header is byte-aligned. This requirement is satisfied by ensuring that the sum of esp_spi_lsb and esp_sn_lsb MUST be a multiple of 8.</t>
        <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>SN is compressed to its LSB, similarly to the SPI. 
FL is set to 32 bits, TV is not set, MO is set to "MSB( 4 - esp_sn_lsb)" and CDA is set to "LSB".</t>
      </section>
    </section>
    <section anchor="diet-esp-compression-for-ipsec-in-transport-mode">
      <name>Diet-ESP 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-iipc"/>. 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 |
+-----------------------+-----------+
| "iipc_not_compressed" | ThisRFC   |
| "iipc_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 |
+----------------------+-----------+
| "not_compressed"     | ThisRFC   |
| "generated"          | ThisRFC   |
| "lower"              | ThisRFC   |
| "zero"               | ThisRFC   |
]]></artwork>
      <artwork><![CDATA[
| DSCP CDA Value       | Reference |
+----------------------+-----------+
| "not_compressed"     | ThisRFC   |
| "lower"              | ThisRFC   |
| "sa"                 | ThisRFC   |
]]></artwork>
      <artwork><![CDATA[
| ECN CDA Value       | Reference |
+---------------------+-----------+
| "not_compressed"    | 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="sec-sec">
      <name>Security Considerations</name>
      <t>The security considerations encompass those outlined in ESP <xref target="RFC4303"/> as well as those pertaining to SCHC <xref target="RFC8724"/>.</t>
      <t>When employing ESP <xref target="RFC4303"/> in Tunnel Mode, the complete inner IP packet is safeguarded against man-in-the-middle attacks through cryptographic means, rendering it virtually impossible for an attacker to alter any fields associated with either the inner IP header or the inner IP payload. This level of protection is achieved by configuring the Flow Label CDA Value to "not_compressed", the DSCP CDA Value to either "not_compressed" or "sa", and the ECN CDA Value to "not_compressed".</t>
      <t>However, this protection is compromised if the Flow Label CDA Value, DSCP CDA Value, or ECN CDA Values are set to "lower." In such cases, the values from the inner packet for the respective fields will be derived from the outer IP header, leaving these fields unprotected. It is important to note that even the Authentication Header <xref target="RFC4302"/> does not provide protection for these fields. When associated with a CDA value of "lower," the level of protection is akin to that provided in Transport mode. This vulnerability could be exploited by an attacker within an untrusted domain, potentially disrupting load balancing strategies that rely on the Flow Label <xref target="RFC6438"/><xref target="RFC6437"/>. More broadly, when the Flow Label CDA Value is set to "lower," the relevant Flow Label Security Considerations from <xref target="RFC6437"/> apply. Additionally, an attacker may manipulate the DSCP values to diminish the priority of specific packets, resulting in packets from the same flow having varying priorities, traversing different paths, and introducing additional latency to applications, thereby facilitating DDoS attacks. Consequently, these fields remain unprotected and are susceptible to modification during transmission, which may also be regarded as an acceptable risk.</t>
      <t>When the Flow Label CDA Value is designated as "generated" or "zero," an attacker is unable to exploit the Flow Label field in any manner. The inner packet received is anticipated to possess a Flow Label distinct from that of the original encapsulated packet. However, the Flow Label is assigned by the receiving gateway. When the value is set to "zero," it is known, whereas when it is designated as "generated," it must be produced in accordance with the specifications outlined in <xref target="RFC6437"/>.</t>
      <t>The DSCP CDA Value is assigned as "sa" when DSCP values are linked to Security Associations (SAs), but it should not be utilized when all DSCP values are encompassed within a single SA. In such instances, "not_compressed" is recommended.</t>
      <t>The encryption algorithm must adhere to the guidelines provided in <xref target="RFC8221"/> to guarantee contemporary cryptographic protection.</t>
      <t>The least significant bits (LSB) of the ESP Security Parameter Index (SPI) determine the number of bits allocated to the SPI. An acceptable value for LSB must ensure that the peer possesses a sufficient number of SPIs, which is contingent upon the implementation of the SA lookup employed. If a peer relies solely on the SPI fields for SA lookup, then the number of LSB to consider must be sufficiently large to include the number of SPIs. 
A peer may compress its SPIs differently, in which case a incoming packet may have its SPI compressed to X bits while another packet may have its SPI compressed to Y bits. The operator must be cognizant that if multiple LSB values are permissible for each type of SA lookup, then multiple SA lookups and signature verifications may be required. It is advisable for a peer to ascertain the LSB associated with an incoming packet in a deterministic manner.</t>
      <t>The ESP SN LSB must be established in a manner that allows the receiving peer to clearly ascertain the sequence number of the IPsec packet. If this requirement is not met, it will lead to an invalid signature verification, resulting in the rejection of the packet. Furthermore, the LSB should have the capacity to accommodate the maximum number of packets that may be in transit simultaneously. This approach will guarantee that the last packet received is correctly linked to the corresponding sequence number.</t>
      <t>The ESP extension for IPv6 (and similarly for IPv4) requires a 64-bit (or 32-bit) alignment. Choosing alternative alignment values may result in a packet that fails to comply with this alignment requirement, potentially leading to rejection. The necessity for such alignment in IPv6 extensions arises from the fact that the length field in an IPv6 header extension is defined in terms of 64-bit words, making proper alignment essential for accurate packet parsing. Parsing of ESP does not present complications, as it is compatible with IPv6; the ESP extension is processed exclusively by the terminal IPsec peers and not by intermediary nodes. Furthermore, the ESP extension lacks a dedicated length field. Instead, its length is determined by the IPv6 header Length field, which is measured in bytes, along with the starting position of the ESP header extension. Consequently, it remains entirely feasible to parse an ESP extension that is not aligned to 64 bits. The same principle is applicable to IPv4.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>We extend our gratitude to Laurent Toutain, Ana Carolina Minaburo, Pascal Thubert, and Alexandre Pelov for their guidance on SCHC and their valuable insights concerning the implementation of OpenSCHC <xref target="OpenSCHC"/>. Additionally, we express our appreciation to Robert Moskowitz for his inspiration in coining the term "Diet-ESP," derived from Diet-HIP, as well as to Samita Chakrabart, Tero Kivinen, Michael Richardson, and Valery Smyslov for their enduring support. The authors also wish to acknowledge the assistance provided by 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="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/doc/html/draft-ietf-ipsecme-ikev2-diet-esp-extension-05" 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" initials="D." surname="Migault">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Maryam Hatami" initials="M." surname="Hatami">
              <organization>Concordia University</organization>
            </author>
            <author fullname="Daiying Liu" initials="D." surname="Liu">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Stere Preda" initials="S." surname="Preda">
              <organization>Ericsson</organization>
            </author>
            <author fullname="J. William Atwood" initials="J. W." surname="Atwood">
              <organization>Concordia University</organization>
            </author>
            <author fullname="Sandra Cespedes" initials="S." surname="Cespedes">
              <organization>Concordia University</organization>
            </author>
            <author fullname="Tobias Guggemos" initials="T." surname="Guggemos">
              <organization>LMU</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <date day="16" month="March" year="2025"/>
            <abstract>
              <t>This document describes an IKEv2 extension for Header Compression to agree on Attributes for Rule 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-05"/>
        </reference>
        <reference anchor="I-D.mglt-ipsecme-dscp-np" target="https://datatracker.ietf.org/doc/html/draft-mglt-ipsecme-dscp-np-03" 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="Stere Preda" initials="S." surname="Preda">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Daiying Liu" initials="D." surname="Liu">
              <organization>Ericsson</organization>
            </author>
            <author fullname="U. Parkholm" initials="U." surname="Parkholm">
              <organization>Ericsson</organization>
            </author>
            <date day="30" month="March" year="2025"/>
            <abstract>
              <t>This document outlines the DSCP Notification Payload, which, during a CREATE_CHILD_SA Exchange, explicitly indicates the DSCP code points that will be encapsulated in the newly established tunnel. This document updates RFC 4301.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mglt-ipsecme-dscp-np-03"/>
        </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="RFC8221" target="https://www.rfc-editor.org/info/rfc8221" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8221.xml">
          <front>
            <title>Cryptographic Algorithm Implementation Requirements and Usage Guidance for Encapsulating Security Payload (ESP) and Authentication Header (AH)</title>
            <author fullname="P. Wouters" initials="P." surname="Wouters"/>
            <author fullname="D. Migault" initials="D." surname="Migault"/>
            <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This document replaces RFC 7321, "Cryptographic Algorithm Implementation Requirements and Usage Guidance for Encapsulating Security Payload (ESP) and Authentication Header (AH)". The goal of this document is to enable ESP and AH to benefit from cryptography that is up to date while making IPsec interoperable.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8221"/>
          <seriesInfo name="DOI" value="10.17487/RFC8221"/>
        </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)</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="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="I-D.ietf-schc-architecture" target="https://datatracker.ietf.org/doc/html/draft-ietf-schc-architecture-04" 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="6" month="February" year="2025"/>
            <abstract>
              <t>This document defines the SCHC architecture.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-architecture-04"/>
        </reference>
        <reference anchor="RFC4302" target="https://www.rfc-editor.org/info/rfc4302" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4302.xml">
          <front>
            <title>IP Authentication Header</title>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document describes an updated version of the IP Authentication Header (AH), which is designed to provide authentication services in IPv4 and IPv6. This document obsoletes RFC 2402 (November 1998). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4302"/>
          <seriesInfo name="DOI" value="10.17487/RFC4302"/>
        </reference>
        <reference anchor="RFC6438" target="https://www.rfc-editor.org/info/rfc6438" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6438.xml">
          <front>
            <title>Using the IPv6 Flow Label for Equal Cost Multipath Routing and Link Aggregation in Tunnels</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="S. Amante" initials="S." surname="Amante"/>
            <date month="November" year="2011"/>
            <abstract>
              <t>The IPv6 flow label has certain restrictions on its use. This document describes how those restrictions apply when using the flow label for load balancing by equal cost multipath routing and for link aggregation, particularly for IP-in-IPv6 tunneled traffic. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6438"/>
          <seriesInfo name="DOI" value="10.17487/RFC6438"/>
        </reference>
      </references>
    </references>
    <?line 761?>

<section anchor="examples-of-diet-esp">
      <name>Examples of Diet-ESP</name>
      <t>This appendix provides the details of the SCHC rules defined for Diet-ESP compression, alongside an explanation and illustrative examples for both Tunnel and Transport modes.</t>
      <section anchor="tunnel-mode">
        <name>Tunnel Mode</name>
        <t>This section provides a structured example of how Diet-ESP operates in Tunnel Mode. The example includes Attributes for Rule Generation (AfRG), SCHC rules, the Inner IP packet (IIP), the compression process, and the decompression process.</t>
        <section anchor="json-representation-in-tunnel-mode">
          <name>Json Representation in Tunnel Mode</name>
          <t>In Tunnel Mode, the full inner IP packet is compressed before ESP encapsulation, with each compression stage applying its own dedicated SCHC rule. The "iipc_diet-esp" profile activates the IIPC rule to compress the inner IPv6 and transport headers. The CTEC rule compresses ESP trailer-related fields such as padding and alignment. The EEC rule handles compression of the ESP SPI and Sequence Number, which are part of the outer ESP header and visible post-encryption.</t>
          <t>The separation into three rules ensures modularity and clarity:</t>
          <t>IIPC Rule: compresses source/destination IP addresses using MSB/LSB, compresses ports using LSB, and elides predictable fields like Next Header and Length.</t>
          <t>CTEC Rule: elides padding and enforces alignment constraints.</t>
          <t>EEC Rule: compresses ESP SPI and Sequence Number using LSB with an MSB match.</t>
          <sourcecode type="json"><![CDATA[
{
  "iipc_rule": {
    "RuleID": 1,
    "fields": [
      {
        "FID": "ts_ip_src_start",
        "FL": 128,
        "TV": "2001:db8::1234",
        "MO": "MSB",
        "CDA": "LSB"
      },
      {
        "FID": "ts_ip_dst_start",
        "FL": 128,
        "TV": "2001:db8::5678",
        "MO": "MSB",
        "CDA": "LSB"
      },
      {
        "FID": "IPv6.NextHeader",
        "FL": 8,
        "TV": 17,
        "MO": "equal",
        "CDA": "not-sent"
      },
      {
        "FID": "ts_port_src_start",
        "FL": 16,
        "TV": 5001,
        "MO": "MSB",
        "CDA": "LSB"
      },
      {
        "FID": "ts_port_dst_start",
        "FL": 16,
        "TV": 4500,
        "MO": "MSB",
        "CDA": "LSB"
      },
      {
        "FID": "UDP.Length",
        "FL": 16,
        "MO": "ignore",
        "CDA": "compute-length"
      },
      {
        "FID": "UDP.Checksum",
        "FL": 16,
        "MO": "ignore",
        "CDA": "checksum"
      }
    ]
  },

  "ctec_rule": {
    "RuleID": 2,
    "fields": [
      {
        "FID": "ESP.Padding",
        "FL": 8,
        "MO": "ignore",
        "CDA": "compute-padding"
      },
      {
        "FID": "alignment",
        "FL": 8,
        "TV": "64 bit",
        "MO": "equal",
        "CDA": "not-sent"
      }
    ]
  },

  "eec_rule": {
    "RuleID": 3,
    "fields": [
      {
        "FID": "esp_spi",
        "FL": 32,
        "MO": "MSB(24)",
        "CDA": "LSB"
      },
      {
        "FID": "esp_sn",
        "FL": 32,
        "MO": "MSB(24)",
        "CDA": "LSB"
      }
    ]
  }
}

]]></sourcecode>
        </section>
        <section anchor="attributes-for-rule-generation-afrg">
          <name>Attributes for Rule Generation (AfRG)</name>
          <t>The SCHC rules for Tunnel Mode are derived from the following AfRG:</t>
          <ul spacing="normal">
            <li>
              <t>IPsec Mode: Tunnel</t>
            </li>
            <li>
              <t>Traffic Selector IP Version: IPv6-only</t>
            </li>
            <li>
              <t>Traffic Selector Source Address: 2001:db8::1234</t>
            </li>
            <li>
              <t>Traffic Selector Destination Address: 2001:db8::5678</t>
            </li>
            <li>
              <t>DSCP CDA: Lower</t>
            </li>
            <li>
              <t>ECN CDA: Lower</t>
            </li>
            <li>
              <t>ESP SPI Compression: LSB</t>
            </li>
            <li>
              <t>ESP SN Compression: LSB</t>
            </li>
          </ul>
        </section>
        <section anchor="inner-ip-packet-iip">
          <name>Inner IP Packet (IIP)</name>
          <t>The original packet (IIP), before compression consists of:</t>
          <ul spacing="normal">
            <li>
              <t>IPv6 Source Address: 2001:db8::1234</t>
            </li>
            <li>
              <t>IPv6 Destination Address: 2001:db8::5678</t>
            </li>
            <li>
              <t>UDP Source Port: 5001</t>
            </li>
            <li>
              <t>UDP Destination Port: 4500</t>
            </li>
            <li>
              <t>UDP Length: 16 bytes</t>
            </li>
            <li>
              <t>Payload Data</t>
            </li>
          </ul>
        </section>
        <section anchor="diet-esp-compression">
          <name>Diet-ESP Compression</name>
          <t>The rules for the IIPC, CTEC, and EEC layers are defined as IIPC to compress IPv6 headers and UDP headers, CTEC to compress ESP Trailer fields, and EEC to compress ESP SPI and Sequence Number.
Each compressor applies the rule selected by the SA as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>IIPC: UDP Header Compression
              </t>
              <ul spacing="normal">
                <li>
                  <t>UDP ports are compressed using the LSB technique.</t>
                </li>
                <li>
                  <t>UDP Length is removed (computed at decompression).</t>
                </li>
                <li>
                  <t>UDP Checksum is omitted.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>IIPC: IPv6 Header Compression
              </t>
              <ul spacing="normal">
                <li>
                  <t>Source and Destination Addresses are compressed using MSB.</t>
                </li>
                <li>
                  <t>Next Header field is omitted.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>CTEC: ESP Trailer Compression
              </t>
              <ul spacing="normal">
                <li>
                  <t>Pad Length and Padding are omitted.</t>
                </li>
                <li>
                  <t>Next Header is omitted.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>EEC: ESP Header Compression
              </t>
              <ul spacing="normal">
                <li>
                  <t>SPI and SN are compressed using LSB.</t>
                </li>
                <li>
                  <t>Compressed Packet Output</t>
                </li>
              </ul>
            </li>
          </ol>
          <t>The final compressed packet consists of an EEC packet with a compressed ESP header, a compressed IIP Header, and the payload.</t>
        </section>
        <section anchor="diet-esp-decompression">
          <name>Diet-ESP Decompression</name>
          <t>The decompression process reverses these steps:</t>
          <ol spacing="normal" type="1"><li>
              <t>EEC: ESP Header Decompression
              </t>
              <ul spacing="normal">
                <li>
                  <t>SPI and SN are reconstructed using the LSB values.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>CTEC: ESP Trailer Decompression (Optional)</t>
            </li>
            <li>
              <t>IIPC: IPv6 Header Decompression
              </t>
              <ul spacing="normal">
                <li>
                  <t>ESP Next Header and Padding fields are restored.</t>
                </li>
                <li>
                  <t>IPv6 Source and Destination Addresses are restored.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>IIPC: UDP Header Decompression
              </t>
              <ul spacing="normal">
                <li>
                  <t>UDP ports are restored using the decompressed LSB values.</t>
                </li>
                <li>
                  <t>UDP Length and Checksum are recalculated.</t>
                </li>
              </ul>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="transport-mode">
        <name>Transport Mode</name>
        <t>This section follows the same structure as Tunnel Mode but applies to Transport Mode, where the IP header remains not compressed.</t>
        <section anchor="json-representation-in-transport-mode">
          <name>Json Representation in Transport Mode</name>
          <t>In Transport Mode, the inner IP header is not compressed, and only the UDP header fields (within the inner payload) and the ESP headers are subject to compression. Following the correct SCHC rule structure, the compression logic is split across three rules:</t>
          <t>The IIPC rule compresses UDP Source and Destination Ports using LSB and elides the Length and Checksum fields using compute-* and checksum CDAs.</t>
          <t>The CTEC rule compresses ESP trailer fields such as Padding and Next Header, and ensures byte alignment.</t>
          <t>The EEC rule compresses the ESP SPI and Sequence Number using the LSB approach.</t>
          <t>Since the inner IP header is retained in Transport Mode, the IP Source and Destination Addresses are not compressed but instead transmitted in full.</t>
          <sourcecode type="json"><![CDATA[
{
  "iipc_rule": {
    "RuleID": 1,
    "fields": [
      {
        "FID": "ts_port_src_start",
        "FL": 16,
        "TV": 1234,
        "MO": "MSB",
        "CDA": "LSB"
      },
      {
        "FID": "ts_port_dst_start",
        "FL": 16,
        "TV": 5678,
        "MO": "MSB",
        "CDA": "LSB"
      },
      {
        "FID": "UDP.Length",
        "FL": 16,
        "MO": "ignore",
        "CDA": "compute-length"
      },
      {
        "FID": "UDP.Checksum",
        "FL": 16,
        "MO": "ignore",
        "CDA": "checksum"
      }
    ]
  },

  "ctec_rule": {
    "RuleID": 2,
    "fields": [
      {
        "FID": "ESP.Padding",
        "FL": 8,
        "MO": "ignore",
        "CDA": "compute-padding"
      },
      {
        "FID": "ESP.NextHeader",
        "FL": 8,
        "TV": 17,
        "MO": "equal",
        "CDA": "not-sent"
      },
      {
        "FID": "alignment",
        "FL": 8,
        "TV": "64 bit",
        "MO": "equal",
        "CDA": "not-sent"
      }
    ]
  },

  "eec_rule": {
    "RuleID": 3,
    "fields": [
      {
        "FID": "esp_spi",
        "FL": 32,
        "MO": "MSB(24)",
        "CDA": "LSB"
      },
      {
        "FID": "esp_sn",
        "FL": 32,
        "MO": "MSB(24)",
        "CDA": "LSB"
      }
    ]
  }
}
]]></sourcecode>
        </section>
        <section anchor="attributes-for-rule-generation-afrg-1">
          <name>Attributes for Rule Generation (AfRG)</name>
          <t>The SCHC rules for Transport Mode are derived from the following AfRG:</t>
          <ul spacing="normal">
            <li>
              <t>IPsec Mode: Transport</t>
            </li>
            <li>
              <t>Traffic Selector IP Version: IPv6-only</t>
            </li>
            <li>
              <t>Traffic Selector Source Address: 2001:db8::1001</t>
            </li>
            <li>
              <t>Traffic Selector Destination Address: 2001:db8::2002</t>
            </li>
            <li>
              <t>DSCP CDA: Lower</t>
            </li>
            <li>
              <t>ECN CDA: Lower</t>
            </li>
            <li>
              <t>ESP SPI Compression: LSB</t>
            </li>
            <li>
              <t>ESP SN Compression: LSB</t>
            </li>
          </ul>
        </section>
        <section anchor="inner-ip-packet-iip-1">
          <name>Inner IP Packet (IIP)</name>
          <t>The original packet before compression consists of:</t>
          <ul spacing="normal">
            <li>
              <t>IPv6 Source Address: 2001:db8::1001</t>
            </li>
            <li>
              <t>IPv6 Destination Address: 2001:db8::2002</t>
            </li>
            <li>
              <t>UDP Source Port: 1234</t>
            </li>
            <li>
              <t>UDP Destination Port: 5678</t>
            </li>
            <li>
              <t>UDP Length: 18 bytes</t>
            </li>
            <li>
              <t>ESP Payload Data</t>
            </li>
          </ul>
        </section>
        <section anchor="diet-esp-compression-1">
          <name>Diet-ESP Compression</name>
          <ol spacing="normal" type="1"><li>
              <t>IIPC: UDP Header Compression
              </t>
              <ul spacing="normal">
                <li>
                  <t>UDP ports are compressed using the LSB technique.</t>
                </li>
                <li>
                  <t>UDP Length is removed (computed at decompression).</t>
                </li>
                <li>
                  <t>UDP Checksum is omitted.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>CTEC: ESP Trailer Compression
              </t>
              <ul spacing="normal">
                <li>
                  <t>Pad Length and Padding are omitted.</t>
                </li>
                <li>
                  <t>Next Header is omitted.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>EEC: ESP Header Compression
              </t>
              <ul spacing="normal">
                <li>
                  <t>SPI and SN are compressed using LSB.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>Compressed Packet Output</t>
            </li>
          </ol>
          <t>The final compressed packet consists of the compressed ESP header, IIPC compressed data, and payload.</t>
        </section>
        <section anchor="diet-esp-decompression-1">
          <name>Diet-ESP Decompression</name>
          <t>The decompression process mirrors the compression steps, restoring SPI, SN, UDP headers, ESP Next Header, and Padding fields.</t>
        </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:
H4sIAAAAAAAAA+1923bcyJHge30Flv0wLLuqJJG0WuZMj80m2S2OdeGK7PbY
lkcCUSAJCwXUAChSbFH9Lfu6v7H7Yxu3zIxMAFVFiWrP7Ax9rCZxSURGRkbG
Pcbj8aDJmjzdjQ5PjqOnaTxNq2i/nM2rtK6zsoius+YyOsjSZgwPDOKzsyq9
goef7h8PpmVSxDN4dVrF580YnjkfZ/M6TWbpeIpvpPV8/PDJIJtXu1FTLepm
6+HD3z7cGsRVGu9GJ2myqLLmZnB9sRsdHdN7g3fX8HvRpFUB7x/guIMkbnaj
upkO6gbem8H9w9PvBoN5tjuIoqZMdqObtIZf67KCB85r+/fNzP05iBfNZVnh
K/gzlv9GUVbAEweT59lFvMgbe5kndhAXWZpH4c2yAogPqyyp67KwV9NZnOWA
DHpnMuN3fp/KY5OknHV//Pkkeho38SwLPv48rm7iWXiPvr1fFklZTbM4+qHI
rtKqRjQGcMzo9cklvf57vAYgyGuTJO6G5WQS7f/f/13P0ymhUINzEhewzh23
14aophEmScoD/L4LnCjyAYr+OIn2muuynAbg/Msk+mOW5xlgKLi/NjzX/P4k
pvc7wQnJJHqWLVo0kt1kxYV3ZymBXMZVmU8nebZYgzhOJ9H3i4uLdFaG63Fa
nmVx3b5L3372/Ifwsxfy4O+L2SQ7zyb5bDGZplH3Z/cn0bdlNYuLIvjqflzV
TVq07tJXLarjtIm+rdIZPHj656MQkiQ+K3/f/JRN4KXuzyOmT5LLrIh/CncF
4Psqm7bvEgDfl+VFnkbPnu23dmUtL0yQTf3+QvbDbDDIinOcSwOgI3d4OU+L
k/2n+8wpNNdo4uoiBVZ02TTzevfBgwvgjIszHORBCS/BBxJ+jvmpGSiKo+Mb
GKWI8KlxXS6qJI2y2TxH/DTwYbx1HtGzmyd4IUHybdL3TQdDHg4Gg/F4HMVn
wA7jpBkMTi+zOgJevMDhIthbCSxvWlumPQIIEsXRZ2lyCTyqnkUwcbhTNECP
Dg3wRFYwP36AZwK8OlsUWUK36kl0epl6wy1q+NZKsKNqkaf1ZDAQ8GfZdJqn
g8FXUfQq/fdFRsTS1NGLkjGC00qjd+lNdA17so42nv9wcrox4v9GL17S768O
/+cPR68OD/D3k6d7z57ZXwbyxMnTlz88O3C/uTf3Xz5/fvjigF+Gq5F3abDx
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

-->

</rfc>
