<?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.30 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ipsecme-diet-esp-10" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="EHCP">ESP Header Compression with Diet-ESP</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ipsecme-diet-esp-10"/>
    <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="2026" month="February" day="15"/>
    <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>In <xref target="fig-esp"/>, the Payload Data, ESP Padding, Pad Length, and Next Header compose the Cleartext ESP Packet (CTE) to be protected by encryption. The Authentication Coverage extends from SPI through Padding, while the Encryption Coverage applies to the Payload Data and optional Padding, Pad Length, and Next Header fields.</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 a standard uncompressed ESP packet is shown in <xref target="fig-esp"/>.</t>
      <figure anchor="fig-esp">
        <name>Top-Level Format of a standard ESP Packet. The ESP Data Payload, ESP Padding, Pad Length, and Next Header compose the Clear Text ESP Packet (CTE) to be protected by 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)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Sequence Number                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Payload Data (variable)                    |
~                                                               ~
|               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |     ESP Padding (0-255 bytes) |Pad Len|Nxt Hdr|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          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 resulting SCHC Packet 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>
        <t><xref target="fig-arch"/> depicts the incorporation of Diet-ESP compressors within the IPsec framework.</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        | 
|   (Outbound)           |               |    (Inbound)           |
+------------------------+               +------------------------+
========|=================================================^========
IPsec   |                                                 |
+------------------------+                                |
| SA lookup              |                                |
+------------------------+                                |
========|=================================================|========
ESP     |                                                 |
        |       +-------------------------------------+   |
        |       | Security Association                |   |                           
        |       |   - Attributes for Rule Derivation  |   |
        |       +-------------------------------------+   | 
        |       |  Derivation of the IIPC Rule,       |   |
        |       |   CTEC Rule, and EEC Rule           |   |
        |       +-------------------------------------+   | 
        |                                                 |
        v                                                 |            
+------------------------+               +------------------------+
| IIPC:                  |               | IIPC:                  |
| |C(Header)|Payload|    |               | DC(C(Header))|Payload| |
+------------------------+               +------------------------+ 
| Formation of           |               | Extraction of          |
| Clear Text ESP Packet  |               | Data Payload           |
+------------------------+               +------------------------+
| CTEC:                  |               | CTEC:                  |
| |C(Header)|            |               | |C(Header)|            |     
|   Payload|C(ET)|       |               |   Payload|DC(C(ET))|   |               
+------------------------+               +------------------------+
| Encryption             |               | Decryption             |
+------------------------+               +------------------------+
| Formation of           |               | Parsing                |
| Encrypted ESP Packet   |               | 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>
        <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 Derivation (AfRD) (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 AfRD contained within the SA, the IIPC pre-processes the the IIP and separates it into Header and Payload. Only the Header is sent for compression. 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, which is derived from the AfRD of the SA, allows 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 that has been derived from the AfRD of the SA, is 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 AfRD to ascertain the EEC Rule and proceeds to decompress the EE. The ESP verifies the signature prior to decryption. Following this, the decompressor applies the CTEC Rule derived from the AfRD of the SA, allowing for the subsequent decompression. Finally, ESP extracts the Data Payload from the CTE packet, retrieves the IIPC Rule 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>
      </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 Derivation (AfRD) (see <xref target="sec-afrg"/> for a more detailed description). These AfRDs are negotiated through IKEv2 <xref target="RFC7296"/>, and in such cases, they are likely already included in the SA. Any additional missing AfRDs 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>
      <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  | 
+-+-+-+-+-+-+-+---------...----------+~~~~~~~~~+---------------+
|----------- SCHC 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 Rules Derivation</name>
        <t>The list of attributes for Rules Derivation (AfRD) 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 AfRD are established between peers. Instead, such negotiations are addressed in <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>. However, the AfRD can be classified into two distinct categories. The first category encompasses AfRD that are negotiated through a specific IKEv2 extension tailored for the negotiation of AfRD linked to a particular profile, the Diet-ESP profile in this context. The AfRD referenced in <xref target="tab-ehc-ctx-esp"/> in this category are: the DSCP Action dscp_action, the ECN Action ecn_action, the Flow Label Action flow_label_action, 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 AfRD that are negotiated through IKEv2 exchanges or extensions that are not specifically designed for compression purposes. This category includes AfRD 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 AfRD 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 AfRD 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 AfRD 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 AfRDs 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 AfRD 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"/> MAY be 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 Derivation (AfRD) 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_action</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_action</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_action</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_action:</dt>
          <dd>
            <t>indicates the Flow Label Action, 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_action:</dt>
          <dd>
            <t>indicates the DSCP Action, 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_action:</dt>
          <dd>
            <t>indicates ECN Action, 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>In Diet-ESP compression, fields such as IP addresses and port numbers are split into a stable prefix and a variable suffix. The stable part is captured in the rule as the Target Value (TV), expressed with prefix_bits(start, end). The Matching Operator MO = MSB(x) verifies that the most significant x bits of the Field Value (FV) match this prefix. When the match succeeds, the Compression/Decompression Action CDA = LSB transmits only the remaining low-order bits (FL - x), where FL is the full field length in bits.</t>
        <t>Formally, the operation of MO = MSB(x) is defined as: 
<tt>(FV &amp; (((1 &lt;&lt; x) - 1) &lt;&lt; (FL - x))) == (TV &amp; (((1 &lt;&lt; x) - 1) &lt;&lt; (FL - x)))</tt></t>
        <t>where FL is the total field length in bits. The parameter x is computed as:</t>
        <t><tt>x = FL - prefix_bits_length</tt></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 AfRD discussed in <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 <tt>flow_label_action</tt> is set to lower, which results in <tt>MO = ignore</tt> and <tt>CDA = compute-*</tt>, indicating the value is derived from the outer header. The <tt>dscp_action</tt> is set to <tt>*not_compressed*</tt>, corresponding to <tt>MO = ignore</tt> and <tt>CDA = value-sent</tt>, meaning the DSCP field is transmitted in full. IPv6 address and port fields are compressed using the MSB/LSB strategy, where the <tt>MO = MSB(x)</tt> checks whether the most significant <tt>x</tt> bits of the Field Value (<tt>FV</tt>) equal the rule's Target Value (<tt>TV</tt>), and transmits only the variable suffix (<tt>FL - x</tt> bits).</t>
      <t>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 (<tt>flow_label_action = lower</tt>).</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">prefix_bits<br/>(ts_ip_src_start, ts_ip_src_end)</td>
                <td align="left">MSB(x)</td>
                <td align="left">LSB</td>
                <td align="left">FL-x</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">prefix_bits<br/>(ts_ip_dst_start, ts_ip_dst_end)</td>
                <td align="left">MSB(x)</td>
                <td align="left">LSB</td>
                <td align="left">FL-x</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">prefix_bits<br/>(ts_port_src_start, ts_port_src_end)</td>
                <td align="left">MSB(x)</td>
                <td align="left">LSB</td>
                <td align="left">FL-x</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">prefix_bits<br/>(ts_port_dst_start, ts_port_dst_end)</td>
                <td align="left">MSB(x)</td>
                <td align="left">LSB</td>
                <td align="left">FL-x</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 (<tt>CDA = compute-*</tt>).</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 Clear Text ESP Packet 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(8) 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(x)</td>
                <td align="left">LSB</td>
                <td align="left">FL - x</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(x)</td>
                <td align="left">LSB</td>
                <td align="left">FL - x</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_action = 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_action = lower</tt>), so it is not sent. The Flow Label is removed from transmission by setting a target value of 0 (<tt>flow_label_action = 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">
          <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">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(x)</td>
              <td align="left">LSB</td>
              <td align="left">FL - x</td>
            </tr>
            <tr>
              <td align="left">SN</td>
              <td align="left">MSB(x)</td>
              <td align="left">LSB</td>
              <td align="left">FL - x</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> in the AfRD.</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"/> to <xref target="tab-diet-esp-ruleEE-4"/> demonstrate a mixed strategy. The Flow Label is generated at the decompressor side and not transmitted, after following the attribute <tt>flow_label_action = generated</tt>, which results in <tt>MO = ignore</tt> and <tt>CDA = compute-*</tt>. The ECN field is derived from the outer header, while the DSCP field is transmitted as-is (<tt>dscp_action = 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(x)</td>
              <td align="left">LSB</td>
              <td align="left">x</td>
            </tr>
            <tr>
              <td align="left">SN</td>
              <td align="left">MSB(x)</td>
              <td align="left">LSB</td>
              <td align="left">x</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 the <tt>iipc_profile</tt> attribute is set to <tt>"iipc_not_compressed"</tt>, the inner IP Packet (IIP) is not compressed.  When <tt>iipc_profile</tt> is set to <tt>"iipc_diet-esp"</tt>, IIPC proceeds with the compression.  The Header fields subject to compression depend on the encapsulation mode. When <tt>ipsec_mode</tt> is set to <tt>"tunnel"</tt>, all Header fields of the IIP structure are subject to compression. <tt>ts_ip_version</tt> 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 <tt>ipsec_mode</tt> is set to <tt>"transport"</tt>, 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 SCHC compression. The division between Header and Payload can only occur because all the Header fields are of a fixed size. By construction, the compression process applies the defined rule to the Header, resulting in a SCHC Packet (refer to <xref target="fig-diet-esp-schc-pre-post-processing"/>) that features a Rule ID, a Compression Residue, a Padding field, and an empty SCHC Payload field.</t>
        <figure anchor="fig-diet-esp-schc-pre-post-processing">
          <name>CTEC packet construction</name>
          <artwork align="center"><![CDATA[
                            Original Packet
                    +-+-+---+-------+---------------+
                    |       IP      |    UDP/TCP    |     
                    +------+------------------------+
                    ~          Payload              ~
                    +-------------------------------+
                       /                         \     
                      /      Pre-processing       \  
       (Header)      v    (Header)                 v        
    +-+-+---+--------+--------------+   +--------------------+
    |       IP       |    TCP/UDP   |   ~       Payload      ~ 
    +-+-+---+--------+--------------+   +--------------------+
                    |                                   |     
                    v                                   |     
              SCHC Compression                          |     
    0 1 .. 6 7|<------ s bits ----->|<-0..7 bits->      |     
    +-----+---+--------...----------+------------+      |     
    | Rule ID | Compression Residue |   Padding  |      |     
    +-----+---+--------...----------+------------+      |     
                    |                                   |
                    v                                   |
                SCHC Packet                             |
                    |          Post-processing          |
                    +-----------------------------------+
                                     |     
                                     v      
                 +-------+------+------+--------+------+-----+       
    ESP Payload  |      SCHC Packet    |        Payload      |            
                 +-------+------+------+--------+------+-----+      
    ESP Trailer  |  ESP Padding |  Pad Length   | Next Header|      
                 +-------+------+------+--------+------+-----+
]]></artwork>
        </figure>
        <t>Ultimately, a post-processing phase merges the SCHC Packet with the Payload. Note that the resulting SCHC packet is byte-aligned.</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 prefix_bits( 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_ip_version, 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_action value:</t>
          <ul spacing="normal">
            <li>
              <t>If dscp_action 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_action 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_action 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_action value:</t>
          <ul spacing="normal">
            <li>
              <t>If ecn_action 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_action 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_action value:</t>
          <ul spacing="normal">
            <li>
              <t>If flow_label_action 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_action 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_action 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_action 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  prefix_bits(ts_ip_src_start, ts_ip_src_end) or prefix_bits(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. (Refer to <xref target="fig-diet-esp-schc-pre-post-processing"/>, after post-processing.)</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 "8 bit", 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 "8 bit" 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 be 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 Action Value | Reference |
+----------------------+-----------+
| "not_compressed"     | ThisRFC   |
| "generated"          | ThisRFC   |
| "lower"              | ThisRFC   |
| "zero"               | ThisRFC   |
]]></artwork>
      <artwork><![CDATA[
| DSCP Action Value       | Reference |
+----------------------+-----------+
| "not_compressed"     | ThisRFC   |
| "lower"              | ThisRFC   |
| "sa"                 | ThisRFC   |
]]></artwork>
      <artwork><![CDATA[
| ECN Action 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-06" 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="21" month="August" year="2025"/>
            <abstract>
              <t>This document describes an IKEv2 extension for Header Compression to agree on Attributes for Rule Derivation. 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-06"/>
        </reference>
        <reference anchor="I-D.mglt-ipsecme-dscp-np" target="https://datatracker.ietf.org/doc/html/draft-mglt-ipsecme-dscp-np-04" 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="8" month="October" 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-04"/>
        </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-05" 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="17" month="October" year="2025"/>
            <abstract>
              <t>This document defines the SCHC architecture.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-schc-architecture-05"/>
        </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 798?>

<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 Derivation (AfRD), 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-derivation-afrd">
          <name>Attributes for Rule Derivation (AfRD)</name>
          <t>The SCHC rules for Tunnel Mode are derived from the following AfRD:</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 Action: Lower</t>
            </li>
            <li>
              <t>ECN Action: 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-derivation-afrd-1">
          <name>Attributes for Rule Derivation (AfRD)</name>
          <t>The SCHC rules for Transport Mode are derived from the following AfRD:</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:
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

-->

</rfc>
