<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.22 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC4303 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4303.xml">
<!ENTITY RFC4301 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4301.xml">
<!ENTITY RFC8724 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8724.xml">
<!ENTITY RFC7296 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
<!ENTITY I-D.ietf-ipsecme-ikev2-diet-esp-extension SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-ipsecme-ikev2-diet-esp-extension.xml">
<!ENTITY I-D.mglt-ipsecme-dscp-np SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.mglt-ipsecme-dscp-np.xml">
<!ENTITY RFC8750 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8750.xml">
<!ENTITY RFC6437 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6437.xml">
<!ENTITY RFC8221 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8221.xml">
<!ENTITY RFC9333 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9333.xml">
<!ENTITY RFC8376 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8376.xml">
<!ENTITY I-D.ietf-schc-architecture SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-schc-architecture.xml">
<!ENTITY RFC4302 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4302.xml">
<!ENTITY RFC6438 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6438.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-ipsecme-diet-esp-07" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="EHCP">ESP Header Compression with Diet-ESP</title>

    <author initials="D." surname="Migault" fullname="Daniel Migault">
      <organization>Ericsson</organization>
      <address>
        <email>daniel.migault@ericsson.com</email>
      </address>
    </author>
    <author initials="M." surname="Hatami" fullname="Maryam Hatami">
      <organization>Concordia University</organization>
      <address>
        <email>maryam.hatami@mail.concordia.ca</email>
      </address>
    </author>
    <author initials="S." surname="Céspedes" fullname="Sandra Céspedes">
      <organization>Concordia University</organization>
      <address>
        <email>sandra.cespedes@concordia.ca</email>
      </address>
    </author>
    <author initials="W." surname="Atwood" fullname="J. William Atwood">
      <organization>Concordia University</organization>
      <address>
        <email>william.atwood@concordia.ca</email>
      </address>
    </author>
    <author initials="D." surname="Liu" fullname="Daiying Liu">
      <organization>Ericsson</organization>
      <address>
        <email>harold.liu@ericsson.com</email>
      </address>
    </author>
    <author initials="T." surname="Guggemos" fullname="Tobias Guggemos">
      <organization>LMU</organization>
      <address>
        <email>guggemos@nm.ifi.lmu.de</email>
      </address>
    </author>
    <author initials="C." surname="Bormann" fullname="Carsten Bormann">
      <organization>Universitaet Bremen TZI</organization>
      <address>
        <email>cabo@tzi.org</email>
      </address>
    </author>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>

    <date year="2025" month="April" day="07"/>

    <area>Security</area>
    <workgroup>IPsecme</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 66?>

<t>This document specifies Diet-ESP, a compression mechanism for control information in IPsec/ESP communications. The compression is expressed through the Static Context Header Compression architecture.</t>



    </abstract>



  </front>

  <middle>


<?line 74?>

<section anchor="requirements-notation"><name>Requirements Notation</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?></t>

</section>
<section anchor="introduction"><name>Introduction</name>

<t>The Encapsulating Security Payload (ESP) <xref target="RFC4303"/> protocol is part of the IPsec <xref target="RFC4301"/> suite of protocols and can provide confidentiality, data origin authentication, integrity, anti-replay, and traffic flow confidentiality. The set of services ESP provides depends on the Security Association (SA) parameters negotiated between devices.</t>

<t>An ESP packet is composed of the ESP Header, the ESP Payload Data, the ESP Trailer, and the Integrity Check Value (ICV). ESP has two modes of operation: Transport and Tunnel. In Transport mode, the ESP Payload Data consists of the payload of the original IP packet; the ESP Header is inserted after the original IP packet header. In Tunnel mode, commonly used for VPNs, the ESP Header is placed after an outer IP header and before the inner IP packet headers of the original datagram. This ensures both the original IP headers and payload are protected. Consequently, the ESP Data Payload field contains either the payload from the original IP packet or the fully-encapsulated IP packet, in transport mode or tunnel mode, respectively.</t>

<t>The ESP Trailer, placed at the end of the ESP Payload Data, includes fields such as Padding and Pad Length to ensure proper alignment, and Next Header to indicate the protocol following the ESP header. The ICV, calculated over the ESP Header, ESP Data Payload, and ESP Trailer, is appended after the ESP Trailer to ensure packet integrity. For a simplified overview of ESP, readers are referred to Minimal ESP <xref target="RFC9333"/>.</t>

<t>While ESP is effective in securing traffic, compression can reduce packet sizes, enhancing performance in networks with limited bandwidth. In such environments, reducing the size of transmitted packets is essential to improve efficiency. This document defines Diet-ESP, a protocol that includes compression/decompression (C/D) of the various structures processed by ESP. These C/D are expressed through the Static Context Header Compression and Fragmentation (SCHC) framework <xref target="RFC8724"/>. The structure of the ESP packet to be compressed is shown in <xref target="fig-esp"/>.</t>

<figure title="Top-Level Format of an ESP Packet" anchor="fig-esp"><artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|               Security Parameter Index (SPI)                  | ^Auth.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cove-
|                      Sequence Number                          | |rage
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|                 ESP Data Payload (variable)                   | |   ^
~  Higher Layer Message (transport) or IP datagram (tunnel)     ~ |   |
|                                                               | |Encr.
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cove-
|               |     ESP Padding (0-255 bytes)                 | |rage
+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |   |
|                               |  Pad Length   | Next Header   | v   v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|         Integrity Check Value-ICV   (variable)                |
~                                                               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<section anchor="sec-3c"><name>The Three Compressors Described in this Specification</name>

<t>The document outlines the three compressors utilized in Diet-ESP, which are detailed as follows:</t>

<t><list style="numbers" type="1">
  <t>Inner IP Compression (IIPC): The original packet to be protected by ESP, namely, the Inner IP packet (IIP), is split into a Header subject to compression and a Payload (see <xref target="sec-schc-ipsec-integration"/> for more details). The process in the IIPC pertains to the compression and decompression of fields of the Header of the IIP. For outbound packets, after IIPC, ESP incorporates the compressed Header and the (unaltered) Payload of the IIP into the ESP Data Payload of a Clear Text ESP packet (CTE) (refer to <xref target="fig-esp"/>). In the case of inbound packets, decompression occurs after the compressed Header is retrieved from the ESP Payload Data within the CTE.</t>
  <t>Clear Text ESP Compression (CTEC): This process pertains to the compression and decompression of the segment of the ESP packet that is destined for 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>
  <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>
</list></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 unique Rule applicable for compressing or decompressing each structured payload. This guarantees that each SA in Diet-ESP is linked to a single Rule, thereby allowing the Rule ID in Diet-ESP to be empty. If future implementations support differentiated compression for multiple flows over the same SA, the Rule ID may not be omitted. The Rule associated with each structured payload is generated based on specific parameters referred to in this document as Attributes for Rule Generation (AfRG) (see <xref target="sec-afrg"/> for a more detailed description). These AfRGs are negotiated through IKEv2 <xref target="RFC7296"/>, and in such cases, they are likely already included in the SA. Any additional missing AfRGs are negotiated via <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>.</t>

</section>
</section>
<section anchor="terminology"><name>Terminology</name>

<dl>
  <dt>ESP Header Compression:</dt>
  <dd>
    <t>A method to reduce the size of ESP headers and trailer using predefined compression rules and contexts to improve efficiency.</t>
  </dd>
  <dt>ESP Trailer:</dt>
  <dd>
    <t>A set of fields added at the end of the ESP payload, including Padding, Pad Length, and Next Header, used to ensure alignment and indicate the next protocol.</t>
  </dd>
  <dt>Inner IP C/D (IIPC):</dt>
  <dd>
    <t>Process that compresses/decompresses the inner IP packet headers.</t>
  </dd>
  <dt>Clear Text ESP C/D (CTEC):</dt>
  <dd>
    <t>Process that compresses/decompresses all fields that will later be encrypted by ESP, which include the ESP Data Payload and ESP Trailer.</t>
  </dd>
  <dt>Encrypted ESP C/D (EEC):</dt>
  <dd>
    <t>Process that compresses/decompresses ESP fields not encrypted by ESP.</t>
  </dd>
  <dt>Security Parameter Index (SPI):</dt>
  <dd>
    <t>As defined in <xref section="4.1" sectionFormat="comma" target="RFC4301"/>.</t>
  </dd>
  <dt>Sequence Number (SN):</dt>
  <dd>
    <t>As defined in <xref section="2.2" sectionFormat="comma" target="RFC4303"/>.</t>
  </dd>
  <dt>Static Context Header Compression (SCHC):</dt>
  <dd>
    <t>A framework for header compression designed for LPWANs, as defined in <xref target="RFC8724"/>.</t>
  </dd>
  <dt>Static Context Header Compression Rules (SCHC Rules):</dt>
  <dd>
    <t>As defined in <xref target="RFC8724"/></t>
  </dd>
  <dt>RuleID:</dt>
  <dd>
    <t>A unique identifier for each Rule part of the Diet-ESP context.</t>
  </dd>
  <dt>SCHC Parameters:</dt>
  <dd>
    <t>A set of predefined values used for SCHC compression and decompression, ensuring byte alignment and proper packet formatting based on the SCHC profile.</t>
  </dd>
  <dt>Traffic Selector (TS):</dt>
  <dd>
    <t>A set of parameters (e.g., IP address range, port range, and protocol) used to define which traffic should be protected by a specific Security Association (SA).</t>
  </dd>
</dl>

<t>It is assumed that the reader is familiar with other SCHC terminology defined in <xref target="RFC8376"/>, <xref target="RFC8724"/>, and eventually <xref target="I-D.ietf-schc-architecture"/>.</t>

</section>
<section anchor="sec-schc-ipsec-integration"><name>Diet-ESP Integration into the IPsec Stack</name>

<t><xref target="fig-arch"/> depicts the incorporation of Diet-ESP within the IPsec framework.</t>

<t>IPsec requires that both endpoints agree on a shared context known as the Security Association (SA). This SA is established via IKEv2 and encompasses all Attributes for Rule Generation (AfRG) (refer to <xref target="sec-afrg"/>) essential for formulating the Rules for each compressor defined in <xref target="sec-3c"/>, specifically the Inner IP packet Compressor (IIPC), the Clear Text ESP Compressor (CTEC), and the Encrypted ESP Compressor (EEC).</t>

<t>When an Inner IP packet (IIP) is received, IPsec identifies the SA linked to that packet. Upon the ESP  determining the IIPC Rule from the AfRG contained within the SA, the IIPC separates the IIP into Header and Payload, and compresses the Header. The compressed Header is composed of RuleID, Compressed Residue, and an optional padding field. The original Payload of the IIP is then appended after the compressed Header (IIPC: C{Header}, Payload). Subsequently, ESP constructs the Clear Text ESP packet (CTE). The CTEC Rule is derived from the AfRG of the SA, allowing for the compression of the CTE (CTEC: C {C{Header}, Payload, 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). The EE Rule is derived from the AfRG of the SA, and then utilized to compress the EE (C {EH, C{C{Header}, Payload, ET}}, ICV}, where EH represents the ESP Header). The resulting compressed ESP extension is integrated into an IP packet and transmitted as outbound traffic.</t>

<t>For inbound traffic, the endpoint extracts the Security Parameter Index (SPI) from the compressed EE, along with any other selectors from the packet, to conduct a lookup for the SA. As outlined in <xref target="sec-sec"/>, since the SPI is derived from a potentially compressed ESP Header, there may be instances where the endpoint must explore multiple options, potentially leading to several lookups or, in the worst-case scenario, multiple signature verifications (see <xref target="sec-sec"/> for a more detailed discussion).</t>

<t>Once the SA is retrieved, the ESP accesses the AfRG to ascertain the EEC Rule and proceeds to decompress the EE. The ESP verifies the signature prior to decryption. Following this, the CTEC Rule is derived from the AfRG of the SA, allowing for the subsequent decompression. Finally, ESP extracts the Data Payload from the CTE packet, retrieves the IIPC Rule from the AfRG of the SA, and decompresses the Header.</t>

<t>Note that implementations MAY differ from the architectural description but it is assumed that the output will be the same.</t>

<figure title="SCHC Integration into the IPsec Stack. Packets are described for IPsec in tunnel mode. C designates the Compressed Header for the fields inside. IIP refers to the Inner IP packet, EH refers to the ESP Header, and ET refers to the ESP Trailer. IIPC, CTEC and EEC respectively designate the Inner IP Compressor, the Clear Text ESP Compressor, and the Encrypted ESP Compressor." anchor="fig-arch"><artwork align="center"><![CDATA[
Endpoint                                 Endpoint
+------------------------+               +------------------------+
| Inner IP packet        |               | Inner IP packet        | 
+------------------------+               +------------------------+
========|=================================================^========
IPsec   |                                                 |
+------------------------+                                |
| SA lookup              |                                |
+------------------------+                                |
========|=================================================|========
ESP     |                                                 |
        |       +-------------------------------------+   |
        |       | Security Association                |   |                           
        |       |   - Attributes for Rule Generation  |   |
        |       +-------------------------------------+   | 
        |       |  Generation of the IIPC Rule,       |   |
        |       |   CTEC Rule, and EEC Rule           |   |
        |       +-------------------------------------+   | 
        |                                                 |
        v                                                 |            
+------------------------+               +------------------------+
| IIPC:                  |               | IIPC:                  |
| C{Header},Payload      |               | D{Header},Payload      |
+------------------------+               +------------------------+ 
| Formation of           |               | Extraction of          |
| Clear Text ESP         |               | Data Payload           |
+------------------------+               +------------------------+
| CTEC:                  |               | CTEC:                  |
| C{C{Header},           |               | DC{{C{Header},         |     
|   Payload,ET}          |               |   Payload,ET}          |
+------------------------+               +------------------------+
| Encryption             |               | Decryption             |
+------------------------+               +------------------------+
| Formation of           |               | Parsing                |
| Encrypted ESP          |               | Encrypted ESP          |
+------------------------+               +------------------------+
| EEC:                   |               | EEC:                   |  
| C{EH,C{C{Header},      |               | D{EH,C{{Header},       |
|   Payload,ET},ICV}     |               |   Payload,ET},ICV}     |
+------------------------+               +------------------------+
        |                                | SA lookup              |
        |                                +------------------------+
========|=================================================^========
        |                                                 |
        v                                                 | 
Outbound Traffic                                  Inbound Traffic 
]]></artwork></figure>

<section anchor="schc-parameters-for-diet-esp"><name>SCHC Parameters for Diet-ESP</name>

<t>The SCHC Packet <xref target="RFC8724"/> is always in the form:</t>

<figure title="SCHC Packet" anchor="fig-schc-compressed-packet-format"><artwork align="center"><![CDATA[
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+---------...----------+~~~~~~~~~+---------------+
|   RuleID    | Compression Residue  | Payload | SCHC padding  | 
+-+-+-+-+-+-+-+---------...----------+~~~~~~~~~+---------------+
|-------- Compressed Header ---------|         |-- as needed --|
]]></artwork></figure>

<t>The RuleID is a unique identifier for each SCHC Rule. It is included in packets to ensure the receiver applies the correct decompression rule, maintaining consistency in packet processing. Note that the Rule ID does not need to be explicitly agreed upon and can be defined independently by each party. Furthermore, <xref target="RFC8724"/> indicates that the way the RuleID is sent is left open to the profile specification. The RuleID in Diet-ESP is expressed as 1 byte but it can be elided as there is a unique Rule determined for the compressors. The 1 byte may be used in future implementations to support multiple flows over the same SA.</t>

<t>SCHC padding in SCHC serves the purpose of aligning data to a designated boundary, which is typically byte-aligned or aligned to 8 bits. This document presumes that this field is not utilized in CET and EEC. This document outlines a simpler form of padding for byte-alignment, as detailed in section <xref target="sec-iipc"/>. Such alignment is essential to ensure that encryption is applied to data that is byte-aligned. The rationale for employing a padding method other than SCHC Padding is to accommodate the length of the compressed ESP Payload Data.</t>

<t>Another variable required for the C/D in Diet-ESP is the Maximum Packet Size (MAX_PACKET_SIZE) determined by the specific IPsec ESP configuration and the underlying transport, but it is typically aligned with the network's MTU. The size constraints are optimized based on the available link capacity and negotiated parameters between endpoints.</t>

</section>
<section anchor="sec-afrg"><name>Attributes for Rule Generation</name>

<t>The list of attributes for the Rule Generation (AfRG) is shown in <xref target="tab-ehc-ctx-esp"/>. These attributes are used to express the various compressions that operate at the IIPC, CTEC, and EEC.</t>

<t>As outlined in <xref target="sec-schc-ipsec-integration"/>, this specification does not detail the process by which the AfRG are established between peers. Instead, such negotiations are addressed in <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>. However, the AfRG can be classified into two distinct categories. The first category encompasses AfRG that are negotiated through a specific IKEv2 extension tailored for the negotiation of AfRG linked to a particular profile, the Diet-ESP profile in this context. The AfRG referenced in <xref target="tab-ehc-ctx-esp"/> in this category are: the DSCP Compression/Decompression Action (CDA) dscp_cda, the ECN CDA ecn_cda, the Flow Label CDA flow_label_cda, the ESP alignment alignment, the ESP SPI Least Significant Bits (LSB) esp_spi_lsb, and the ESP Sequence Number LSB esp_sn_lsb.</t>

<t>The second category pertains to AfRG that are negotiated through IKEv2 exchanges or extensions that are not specifically designed for compression purposes. This category includes AfRG associated with TS, as identified in <xref target="tab-ehc-ctx-esp"/>, which are the TS IP Version ts_ip_version, the TS IP Source Start ts_ip_src_start, the TS IP Source End ts_ip_src_end, the TS IP Destination Start ts_ip_dst_start, the TS IP Destination End ts_ip_dst_end, the TS Protocol ts_proto, the TS Port Source Start ts_port_src_start, the TS Port Source End ts_port_src_end, the TS Port Destination Start ts_port_dst_start, and the  TS Port Destination End ts_port_dst_end. These AfRG are derived from the Traffic Selectors established through TSi/TSr payloads during the IKEv2 CREATE_CHILD_SA exchange, as described in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>. The AfRG IPsec Mode designated as ipsec_mode in <xref target="tab-ehc-ctx-esp"/> is determined by the presence or absence of the USE_TRANSPORT_MODE Notify Payload during the CREATE_CHILD_SA exchange, as detailed in <xref section="1.3.1" sectionFormat="comma" target="RFC7296"/>. The AfRG Tunnel IP designated as tunnel_ip in <xref target="tab-ehc-ctx-esp"/> is obtained from the IP address of the IKE messages exchanged during the CREATE_CHILD_SA process, as noted in <xref section="1.1.3" sectionFormat="comma" target="RFC7296"/>. The AfRGs designated as ESP Encryption Algorithm esp_encr and ESP Security Parameter Index (SPI) esp_spi in <xref target="tab-ehc-ctx-esp"/> are established through the SAi2/SAr2 payloads during the CREATE_CHILD_SA exchange, while the AfRG designated as ESP Sequence Number esp_sn in <xref target="tab-ehc-ctx-esp"/> is initialized upon the creation of the Child SA and incremented for each subsequent ESP message. The DSCP values identified as dscp_list in <xref target="tab-ehc-ctx-esp"/> are established through the DSCP Notify Payload <xref target="I-D.mglt-ipsecme-dscp-np"/>.</t>

<t>The ability to derive the IIP Compressor Rules for the internal IP packet from the agreed Traffic Selectors is indicated by the variable iipc_profile.</t>

<texttable title="Attributes for Rule Generation (AfRG) to generate IIPC, CTEC and EEC Rules in Diet-ESP" anchor="tab-ehc-ctx-esp">
      <ttcol align='left'>Variable</ttcol>
      <ttcol align='left'>Possible Values</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <ttcol align='left'>Compressor</ttcol>
      <c>iipc_profile</c>
      <c>"iipc_diet-esp", "iipc_not_compressed"</c>
      <c>ThisRFC</c>
      <c>N/A</c>
      <c>dscp_cda</c>
      <c>"not_compressed", "lower", "sa"</c>
      <c>ThisRFC</c>
      <c>IIPC</c>
      <c>ecn_cda</c>
      <c>"not_compressed", "lower"</c>
      <c>ThisRFC</c>
      <c>IIPC</c>
      <c>flow_label_cda</c>
      <c>"not_compressed", "lower", "generated", "zero"</c>
      <c>ThisRFC</c>
      <c>IIPC</c>
      <c>ts_ip_version</c>
      <c>"IPv4-only", "IPv6-only"</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_ip_src_start</c>
      <c>IPv4 or IPv6 address</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_ip_src_end</c>
      <c>IPv4 or IPv6 address</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_ip_dst_start</c>
      <c>IPv4 or IPv6 address</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_ip_dst_end</c>
      <c>IPv4 or IPv6 address</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_proto</c>
      <c>TCP, UDP, UDP-Lite, SCTP, ANY, ...</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_port_src_start</c>
      <c>Port number</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_port_src_end</c>
      <c>Port number</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_port_dst_start</c>
      <c>Port number</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>ts_port_dst_end</c>
      <c>Port number</c>
      <c>RFC7296</c>
      <c>IIPC</c>
      <c>dscp_list</c>
      <c>list of DSCP numbers</c>
      <c>RFCYYYY</c>
      <c>IIPC</c>
      <c>alignment</c>
      <c>"8 bit", "16 bit", "32 bit", "64 bit"</c>
      <c>ThisRFC</c>
      <c>CTEC</c>
      <c>esp_trailer</c>
      <c>"Mandatory", "Optional"</c>
      <c>ThisRFC</c>
      <c>CTEC</c>
      <c>ipsec_mode</c>
      <c>"Tunnel", "Transport"</c>
      <c>RFC4301</c>
      <c>CTEC</c>
      <c>tunnel_ip</c>
      <c>IPv4 or IPv6 address</c>
      <c>RFC4301</c>
      <c>CTEC</c>
      <c>esp_encr</c>
      <c>ESP Encryption Algorithm</c>
      <c>RFC4301</c>
      <c>CTEC</c>
      <c>esp_spi</c>
      <c>ESP SPI</c>
      <c>RFC4301</c>
      <c>EEC</c>
      <c>esp_spi_lsb</c>
      <c>0-32</c>
      <c>ThisRFC</c>
      <c>EEC</c>
      <c>esp_sn</c>
      <c>ESP Sequence Number</c>
      <c>RFC4301</c>
      <c>EEC</c>
      <c>esp_sn_lsb</c>
      <c>0-32</c>
      <c>ThisRFC</c>
      <c>EEC</c>
</texttable>

<t>Any variable starting with "ts_" is associated with the Traffic Selectors (TSi/TSr) of the SA. 
The notation is introduced by this specification but the definitions of the variables are in <xref target="RFC4301"/> and <xref target="RFC7296"/>.</t>

<t>The Traffic Selectors may result in a quite complex expression, and this specification restricts that complexity. 
This specification restricts the resulting TSi/TSr to a single type of IP address (IPv4 or IPv6), a single protocol (e.g., UDP, TCP, or ANY), a single port range for source and destination. This specification presumes that the Traffic Selectors can be articulated as a result of CREATE_CHILD_SA with only one Traffic Selector <xref section="3.13.1" sectionFormat="comma" target="RFC7296"/> in both TSi and TSr payloads (as described in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>). The TS Type MUST be either TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE.</t>

<t>Let the resulting Traffic Selectors TSi/TSr be expressed via the Traffic Selector structure defined in <xref section="3.13.1" sectionFormat="comma" target="RFC7296"/>. We designate the local TS the TS - either TSi or TSr - sent by the local peer. Conversely we designate as remote TS the TS - either TSi or TSr - sent by the remote peer.</t>

<t>The details of each parameter are the following:</t>

<dl>
  <dt>iipc_profile:</dt>
  <dd>
    <t>designates the behavior of the IIPC layer. When set to "iipc_not_compressed" IIPC is not performed. This specification describes IIPC that corresponds to the "iipc_diet-esp" profile.</t>
  </dd>
  <dt>flow_label_cda:</dt>
  <dd>
    <t>indicates the Flow Label CDA, that is how the Flow Label field of the inner IPv6 packet or the Identification field of the inner IPv4 packet is compressed / decompressed - See <xref target="sec-cda"/> for more information. In a nutshell, "not_compressed" indicates that Flow Label (resp. Identification) is not compressed and the field is sent as-is using value-sent. "lower" ( using compute-* ) indicates the value is read from the outer IP header - eventually with some adaptations when inner IP packet and outer IP packets have different versions. This field is computed from the outer IP header using compute-* ( MO: ignore, CDA: compute-* )."generated" indicates the value is re-generated at the decompressor side ( CDA: compute-* ). In that case, the decompressed value may take a different value compared to its original value. "zero" indicates the field is removed by matching against a target value of 0 (MO: equal, CDA: not-sent).
See <xref target="sec-cda"/> for further details on the applied CDA logic.</t>
  </dd>
  <dt>dscp_cda:</dt>
  <dd>
    <t>indicates the DSCP CDA, that is how the DSCP values of the inner IP packet are compressed / decompressed - See <xref target="sec-cda"/> for more information. In a nutshell, "not_compressed" indicates that DSCP are not compressed. "lower" indicates the value is read from the outer IP header - eventually with some adaptations when inner IP packet and outer IP packets have different versions ( compute-* ). "sa" indicates, compression is performed according to the pre-negotioated list of DSCP values (dscp_list) agreed by the SA, using SCHC's MO and index (CDA).
See <xref target="sec-cda"/> for rule examples.</t>
  </dd>
  <dt>ecn_cda:</dt>
  <dd>
    <t>indicates ECN CDA, that is how the ECN values of the inner IP packet are compressed / decompressed - See <xref target="sec-cda"/> for more information. In a nutshell, "not_compressed" indicates that DSCP are not compressed. "lower" indicates the value is read from the outer IP header using compute-* (eventually with some adaptations when inner IP packet and outer IP packets have different versions).</t>
  </dd>
  <dt>ts_ip_version:</dt>
  <dd>
    <t>designates the TS IP version. Its value is set  to "IPv4-only" when only IPv4 IP addresses are considered and to "IPv6-only" when only IPv6 addresses are considered.
Practically, when IKEv2 is used, it means that the agreed TSi or TSr results only in a mutually exclusive combination of TS_IPV4_ADDR_RANGE or TS_IPV6_ADDR_RANGE payloads. If TS Type of the resulting TSi/TSr is set to TS_IPV4_ADDR_RANGE, ts_ip_version takes the value "IPv4-only". Respectively, if TS Type is set to TS_IPV6_ADDR_RANGE, ts_ip_version is set to "IPv6-only".</t>
  </dd>
  <dt>ts_ip_src_start:</dt>
  <dd>
    <t>designates the TS IP Source Start, that is the starting value range of source IP addresses of the inner packet and has the same meaning as the Starting Address field of the local TS.</t>
  </dd>
  <dt>ts_ip_src_end:</dt>
  <dd>
    <t>designates TS IP Source End, that is the high end value range of source IP addresses of the inner packet and has the same meaning as the Ending Address field of the local TS.</t>
  </dd>
  <dt>ts_ip_dst_start:</dt>
  <dd>
    <t>designates the TS IP Destination Start, that is the starting value range of destination IP addresses of the inner packet and has the same meaning as the Starting Address field of the remote TS.</t>
  </dd>
  <dt>ts_ip_dst_end:</dt>
  <dd>
    <t>designates the TS IP Destination End, that is the high end value range of destination IP addresses of the inner packet and has the same meaning as the Ending Address field of the remote TS.</t>
  </dd>
  <dt>ts_proto:</dt>
  <dd>
    <t>designates the TS Protocol, that is the Protocol ID of the resulting TSi/TSr. This profile considers the specific protocol values "TCP", "UDP", "UDP-Lite", "SCTP", and "ANY". The representation of "ANY" is given in <xref section="4.4.4.2" sectionFormat="comma" target="RFC4301"/>.</t>
  </dd>
  <dt>ts_port_src_start:</dt>
  <dd>
    <t>designates the TS Port Source Start, that is the the starting value of the source port range of the inner packet and has the same meaning as the Start Port field of the local TS.</t>
  </dd>
  <dt>ts_port_src_end:</dt>
  <dd>
    <t>designates the TS Port Source End, that is the high end value range of the source port range of the inner packet and has the same meaning as the End Port field of the local TS.</t>
  </dd>
  <dt>ts_port_dst_start:</dt>
  <dd>
    <t>designates TS Port Destination Start, that is the starting value of the destination port range of the inner packet and has the same meaning as the Start Port field of the remote TS.</t>
  </dd>
  <dt>ts_port_dst_end:</dt>
  <dd>
    <t>designates TS Port Destination End, that is the high end value range of the destination port range of the inner packet and has the same meaning as the End Port field of the remote TS.</t>
  </dd>
</dl>

<t>IP addresses and ports are defined as a range and compressed using the Least Significant Bits (LSB).
For a range defined by start and end values, msb( start, end ) is defined as the function that returns the Most Significant Bits (MSB) that remains unchanged while the value evolves between start and end.
Similarly, lsb( start, end ) is defined as the function that returns the LSB that changes while the value evolves between start and end. 
Finally, len( x ) is defined as the function that returns the number of bits of the bit array x.</t>

<dl>
  <dt>dscp_list:</dt>
  <dd>
    <t>designates the list of DSCP values associated to the inner traffic - see for example <xref target="I-D.mglt-ipsecme-dscp-np"/>. These are not Traffic Selectors, but the compression mandates that the packets take one of these listed DSCP values.</t>
  </dd>
  <dt>alignment:</dt>
  <dd>
    <t>designates the ESP alignment as defined by <xref target="RFC4303"/>.</t>
  </dd>
  <dt>esp_trailer:</dt>
  <dd>
    <t>When configured to "Mandatory," it signifies that the implementation requires the ESP Trailer to include a Next Header and a Pad Len field, as outlined in <xref target="RFC4303"/>. This requirement primarily aims to ensure compatibility with current hardware implementations of ESP, as detailed in <xref target="RFC4303"/>. Conversely, if set to "Optional," it indicates that the implementation is capable of supporting the compression of the ESP Trailer.</t>
  </dd>
  <dt>ipsec_mode:</dt>
  <dd>
    <t>designates the IPsec Mode defined in <xref target="RFC4301"/>. In this document, the possible values are "tunnel" for the Tunnel mode and "transport" for the Transport mode.</t>
  </dd>
  <dt>tunnel_ip:</dt>
  <dd>
    <t>designates the Tunnel IP address of the tunnel defined in <xref target="RFC4301"/>.
This field is only applicable when the Tunnel mode is used.
That IP address can be an IPv4 or IPv6 address.</t>
  </dd>
  <dt>esp_encr:</dt>
  <dd>
    <t>designates the ESP Encryption Algorithm - also designated as Transform 1 in <xref section="3.3.2" sectionFormat="comma" target="RFC7296"/>. The algorithm is needed to determine whether the ESP Payload Data needs to be aligned to some predefined block size and if the ESP Pad Length and Padding fields can be compressed.  For the purpose of compression it is RECOMMENDED to use algorithms that already compressed their IV <xref target="RFC8750"/>.</t>
  </dd>
  <dt>esp_spi:</dt>
  <dd>
    <t>designates the Security Parameter Index defined in <xref target="RFC4301"/>.</t>
  </dd>
  <dt>esp_spi_lsb:</dt>
  <dd>
    <t>designates the LSB to be considered for the compressed SPI. A value of 32 for esp_spi_lsb will leave the SPI unchanged.</t>
  </dd>
  <dt>esp_sn:</dt>
  <dd>
    <t>designates the ESP Sequence Number (SN) field defined in <xref target="RFC4301"/>.</t>
  </dd>
  <dt>esp_sn_lsb:</dt>
  <dd>
    <t>designates the LSB to be considered for the compressed SN. It works similarly to ESP SPI LSB (see esp_spi_lsb).</t>
  </dd>
</dl>

<section anchor="sec-cda"><name>Illustrative Examples of Diet-ESP SCHC Rule Tables</name>

<t>The following tables in this section defines the SCHC compression rules examples for Diet-ESP in IPsec. The Compression/Decompression Actions (CDAs) specify how various IPv6, UDP/TCP, and ESP header fields are compressed and decompressed, which are derived from the AfRG discussed in Section <xref target="sec-afrg"/>.</t>

<t>The table <xref target="tab-diet-esp-rule-1"/> represents an example, when <spanx style="verb">flow_label_cda</spanx> is set to <spanx style="verb">lower</spanx>, this results in <spanx style="verb">MO = ignore</spanx> and <spanx style="verb">CDA = compute-*</spanx>, indicating that the value can be derived from the outer header. When <spanx style="verb">dscp_cda</spanx> is <spanx style="verb">not_compressed</spanx>, it translates to <spanx style="verb">MO = ignore</spanx> and <spanx style="verb">CDA = value-sent</spanx>, meaning the field is transmitted uncompressed. Address and port fields are matched using <spanx style="verb">MSB(n)</spanx> and transmitted using the <spanx style="verb">LSB</spanx> CDA, where the LSB value defines the number of variable bits sent.</t>

<texttable title="Example of Diet-ESP Rule table when `flow_label_cda` is set to `lower`" anchor="tab-diet-esp-rule-1">
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>FL</ttcol>
      <ttcol align='left'>FP</ttcol>
      <ttcol align='left'>DI</ttcol>
      <ttcol align='left'>TV</ttcol>
      <ttcol align='left'>MO</ttcol>
      <ttcol align='left'>CDA</ttcol>
      <ttcol align='left'>Sent [bits]</ttcol>
      <c>Version</c>
      <c>3</c>
      <c>1</c>
      <c>Bi</c>
      <c>ts_ipversion</c>
      <c>equal</c>
      <c>not-sent</c>
      <c>0</c>
      <c>DSCP</c>
      <c>6</c>
      <c>1</c>
      <c>Dw</c>
      <c>-</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>6</c>
      <c>ECN</c>
      <c>2</c>
      <c>1</c>
      <c>Dw</c>
      <c>-</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>2</c>
      <c>Flow Label</c>
      <c>20</c>
      <c>1</c>
      <c>Dw</c>
      <c>-</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>Payload Length</c>
      <c>16</c>
      <c>1</c>
      <c>Bi</c>
      <c>-</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>Next Header</c>
      <c>8</c>
      <c>1</c>
      <c>Bi</c>
      <c>ts_proto</c>
      <c>equal</c>
      <c>not-sent</c>
      <c>0</c>
      <c>Hop Limit</c>
      <c>8</c>
      <c>1</c>
      <c>Dw</c>
      <c>-</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>Source Address</c>
      <c>128</c>
      <c>1</c>
      <c>Bi</c>
      <c>msb(src_start, src_end)</c>
      <c>MSB(64)</c>
      <c>LSB</c>
      <c>64</c>
      <c>Destination Address</c>
      <c>128</c>
      <c>1</c>
      <c>Bi</c>
      <c>msb(dst_start, dst_end)</c>
      <c>MSB(64)</c>
      <c>LSB</c>
      <c>64</c>
      <c>Source Port (UDP/TCP)</c>
      <c>16</c>
      <c>1</c>
      <c>Bi</c>
      <c>msb(src_port_start, end)</c>
      <c>MSB(8)</c>
      <c>LSB</c>
      <c>8</c>
      <c>Destination Port (UDP/TCP)</c>
      <c>16</c>
      <c>1</c>
      <c>Bi</c>
      <c>msb(dst_port_start, end)</c>
      <c>MSB(8)</c>
      <c>LSB</c>
      <c>8</c>
      <c>Checksum</c>
      <c>16</c>
      <c>1</c>
      <c>Bi</c>
      <c>-</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>UDP Length</c>
      <c>16</c>
      <c>1</c>
      <c>Bi</c>
      <c>-</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>ESP Padding</c>
      <c>-</c>
      <c>-</c>
      <c>-</c>
      <c>-</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>Byte Alignment</c>
      <c>8</c>
      <c>1</c>
      <c>Bi</c>
      <c>-</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>SPI</c>
      <c>32</c>
      <c>1</c>
      <c>Dw</c>
      <c>-</c>
      <c>MSB(24)</c>
      <c>LSB</c>
      <c>8</c>
      <c>SN</c>
      <c>32</c>
      <c>1</c>
      <c>Dw</c>
      <c>-</c>
      <c>MSB(24)</c>
      <c>LSB</c>
      <c>8</c>
</texttable>

<t>Here are more key features from the table:</t>

<t><list style="symbols">
  <t>The IPv6 Header Compression operates on several fields, of which the address and port fields provide the most opportunity for compression.</t>
  <t>The UDP/TCP Header Compression includes the following fields: Ports, Checksum, Length.</t>
  <t>The ESP Header Compression fields include the following: Padding, Sequence Number (SN), SPI.</t>
  <t>The Byte Alignment Padding is maintained to comply with the byte-aligned ESP Payload requirement.</t>
</list></t>

<t>The table <xref target="tab-diet-esp-rule-2"/> illustrates a case where the DSCP field is compressed using a pre-negotiated Security Association (SA) list. Here, <spanx style="verb">dscp_cda = sa</spanx> results in <spanx style="verb">MO = match-mapping</spanx> and <spanx style="verb">CDA = index</spanx>, meaning the field value is matched from a list and only the index is sent. The ECN field is computed from the outer header (<spanx style="verb">ecn_cda = lower</spanx>), so it is not sent. The Flow Label is removed from transmission by setting a target value of 0 (<spanx style="verb">flow_label_cda = zero</spanx>), which results in <spanx style="verb">MO = equal</spanx> and <spanx style="verb">CDA = not-sent</spanx>.</t>

<texttable title="Example of Diet-ESP Rule table where the DSCP field is compressed using a pre-negotiated Security Association (SA) list" anchor="tab-diet-esp-rule-2">
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>MO</ttcol>
      <ttcol align='left'>CDA</ttcol>
      <ttcol align='left'>Sent [bits]</ttcol>
      <c>DSCP</c>
      <c>match-mapping</c>
      <c>index</c>
      <c>3</c>
      <c>ECN</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>Flow Label</c>
      <c>equal (TV=0)</c>
      <c>not-sent</c>
      <c>0</c>
      <c>SPI</c>
      <c>MSB(24)</c>
      <c>LSB</c>
      <c>8</c>
      <c>SN</c>
      <c>MSB(24)</c>
      <c>LSB</c>
      <c>8</c>
</texttable>

<t>The table <xref target="tab-diet-esp-rule-3"/> configuration disables all compression mechanisms. Every field is transmitted in full using <spanx style="verb">MO = ignore</spanx> and <spanx style="verb">CDA = value-sent</spanx>, which is the result of setting each <spanx style="verb">_cda</spanx> attribute to <spanx style="verb">not_compressed</spanx>.</t>

<texttable title="Example of Diet-ESP Rule table with all compression mechanisms disabled" anchor="tab-diet-esp-rule-3">
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>MO</ttcol>
      <ttcol align='left'>CDA</ttcol>
      <ttcol align='left'>Sent [bits]</ttcol>
      <c>DSCP</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>6</c>
      <c>ECN</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>2</c>
      <c>Flow Label</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>20</c>
      <c>Payload Length</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>16</c>
      <c>Hop Limit</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>8</c>
      <c>SPI</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>32</c>
      <c>SN</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>32</c>
</texttable>

<t>The table <xref target="tab-diet-esp-rule-4"/> demonstrates a mixed strategy. The Flow Label is generated at the decompressor side and not transmitted (<spanx style="verb">flow_label_cda = generated</spanx> results in <spanx style="verb">MO = ignore</spanx>, <spanx style="verb">CDA = compute-*</spanx>). The ECN field is again derived from the outer header, while the DSCP field is transmitted as-is (<spanx style="verb">dscp_cda = not_compressed</spanx>).</t>

<texttable title="Example of Diet-ESP Rule table with a mixed strategy" anchor="tab-diet-esp-rule-4">
      <ttcol align='left'>Field</ttcol>
      <ttcol align='left'>MO</ttcol>
      <ttcol align='left'>CDA</ttcol>
      <ttcol align='left'>Sent [bits]</ttcol>
      <c>DSCP</c>
      <c>ignore</c>
      <c>value-sent</c>
      <c>6</c>
      <c>ECN</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>Flow Label</c>
      <c>ignore</c>
      <c>compute-*</c>
      <c>0</c>
      <c>SPI</c>
      <c>MSB(28)</c>
      <c>LSB</c>
      <c>4</c>
      <c>SN</c>
      <c>MSB(28)</c>
      <c>LSB</c>
      <c>4</c>
</texttable>

</section>
</section>
</section>
<section anchor="diet-esp-for-ipsec-in-tunnel-mode"><name>Diet-ESP for IPsec in Tunnel Mode</name>

<section anchor="sec-iipc"><name>Inner IP Compression (IIPC)</name>

<t>When iipc_profile is set to "iipc_not_compressed", the inner IP Packet (IIP) is not compressed.  When iipc_profile is set to "iipc_diet-esp", IIPC proceeds with the compression.  The Header fields subject to compression depend on the encapsulation mode. When ipsec_mode is set to "Tunnel", all Header fields of the IIP structure are subject to compression. ts_ip_version determines how the IPv6 header (resp. the IPv4 header) is compressed - see <xref target="sec-inner-ip6"/> (resp.  <xref target="sec-inner-ip4"/>). Conversely, when ipsec_mode is set to "Transport", the compression applies only to Header fields other than the IPv4 or IPv6 header fields. This means that the IPv4 and IPv6 headers remain uncompressed, while other Header fields within the IIP structure are subject to compression.</t>

<t>Note that the SCHC packet illustrated in <xref target="fig-schc-compressed-packet-format"/> appends the padding at the end of the SCHC Packet. This approach presents notable challenges, including handling a Payload that lacks byte alignment. Furthermore, the absence of a specified Payload length would necessitate the inclusion of the padding length within the padding itself, which would require a particular padding construction akin to that utilized by the ESP Padding, thereby posing difficulties for hardware implementations.</t>

<t>To address these issues, IIPC uses a pre-processing phase where the IIP is divided into two segments: the Header and the Payload and only the Header is considered as the candidate structure for compression. By construction, the compression process applies the defined rule to the Header, resulting in a SCHC Packet (refer to <xref target="fig-schc-compressed-packet-format"/>) that features an empty SCHC Payload field, with a padding field positioned after the Compression Residue. Ultimately, a post-processing phase merges the SCHC Packet with the Payload, allowing the compressor to produce an IIPC packet in the format outlined in <xref target="fig-diet-esp-compressed-header-format"/>.</t>

<figure title="Packet format after IIPC compression" anchor="fig-diet-esp-compressed-header-format"><artwork align="center"><![CDATA[
 0 1 2 3 4 5 6 7|<---- s bits ------->|<-0..7 bits->|<---n bytes--->|
+-+-+-+-+-+-+-+-+---------...---------+~~~~~~~~~~~~~+---------------+
|   RuleID      | Compression Residue |   padding   | Payload       |
+-+-+-+-+-+-+-+-+---------...---------+~~~~~~~~~~~~~+---------------+
|-------- Compressed Header ----------|--as needed--|
]]></artwork></figure>

<t>It is important to observe that the resulting packet is byte-aligned. Additionally, the division between Header and Payload can only occur because all the Header fields are of a fixed size.</t>

<section anchor="sec-payload"><name>Compression of the Inner IP payload</name>

<t>This section describes the compression of the inner IP payload. The compression described herein only affects UDP, UDP-Lite, TCP or SCTP segments. The type of segment is specified in the IP header.</t>

<t>For UDP, UDP-Lite, TCP and SCTP segments, source ports, destination ports, and checksums are compressed. 
For source port (resp. destination port) only the least significant bits are sent. FL is set to 16 bits,  TV is set to msb( ts_port_src_start, ts_port_src_end ) ( resp. ts_port_dst_start, ts_port_dst_end ), MO is set to "MSB" and CDA to "LSB". 
The checksum is elided, FL is set to 16 bits, TV is not set, MO is set to "ignore" and CDA is set to "checksum". 
This may result in decompressing a zero-checksum UDP packet with a valid checksum, but this has no impact as a valid checksum is universally accepted.</t>

<t>For UDP or UDP-Lite the length field is elided. FL is set to 16, TV is not set, MO is set to "ignore".</t>

</section>
<section anchor="sec-inner-ip6"><name>Compression of the Inner IPv6 header</name>

<t>The version field is elided, FL is set to 3, TV is set to ts_ipversion, MO is set to "equal" and CDA is set to "not-sent".</t>

<t>Traffic Class is composed of the 6 bit DSCP and 2 bit ECN.
The compression of DSCP and ECN are defined independently.</t>

<t>DSCP values are compressed according to the dscp_cda value:</t>

<t><list style="symbols">
  <t>If dscp_cda is set to "not_compressed", the DSCP values are included in the inner IP header. FL is set to 6 bits, TV is not set, MO is set to "ignore", CDA is set to "sent-value".</t>
  <t>If dscp_cda is set to "lower", the DSCP field is elided and its value is copied from the Tunnel IP header. FL is set to 6 bits, TV is not set, MO is set to "ignore", CDA is set to "lower".</t>
  <t>If dscp_cda is set to "sa", DSCP is compressed according to the DSCP values of the SA. If dscp_list contains a single element, the DSCP is elided, FL is set to 6 bits, TV is set to dscp_list[0], MO is set to "equal" and CDA is set to "not-sent". If dscp_list contains more than one DSCP value, FL is set to 6 bits, TV is set to dscp_list, MO is set to "match-mapping" and the CDA is set to "mapping-sent". 
For ECN, FL is set to 2 bits, TV is not set, MO is set to ignore and CDA is set to "value-sent".</t>
</list></t>

<t>ECN values are compressed according to the ecn_cda value:</t>

<t><list style="symbols">
  <t>If ecn_cda is set to "not_compressed", the ECN field is included in the inner IP header. FL is set to 2 bits, TV is not set, MO is set to "ignore", CDA is set to "sent-value".</t>
  <t>If ecn_cda is set to "lower", the ECN value is elided and the ECN value is copied in the outer IP header. FL is set to 2 bits, TV is not set, MO is set to "ignore", CDA is set to "lower".</t>
</list></t>

<t>Flow label is compressed according to the flow_label_cda value:</t>

<t><list style="symbols">
  <t>If flow_label_cda is set to "not_compressed", the Flow label is included in the IPv6 header. FL is set to 20 bits, TV is not set, MO is set to "ignore", and CDA is set to "sent-value".</t>
  <t>If flow_label_cda is set to "lower", the Flow Label is elided and read from the outer IP header (using compute-*(See <xref target="sec-cda"/>)). FL is set to 20 bits, TV is not set, MO is set to "ignore", and CDA is set to "lower". If the outer IP header is an IPv4 header, only the 16 LSB of the Flow Label are inserted into the IPv4 header. At the decompression, the 4 MSB of the Flow Label are set to 0.</t>
  <t>If flow_label_cda is set to "generated", the Flow Label is elided and the Flow Label is then re-generated (using compute-*) at the decompression (See <xref target="sec-cda"/>). The resulting Flow Label differs from the initial value. FL is set to 20, TV is not set, MO is set to "ignore" and CDA is set to "generated".</t>
  <t>If flow_label_cda is set to "zero", the Flow Label is elided and set to 0 at decompression. A 0 value indicates no flow label is present. Fl is set to 20 bits, TV is set to 0, MO is set to "equal" and CDA is set to "not-sent".</t>
</list></t>

<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>

<t><list style="symbols">
  <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>
  <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>
</list></t>

<t>The IPv6 Hop Limit is read from the Tunnel IP header Hop Limit. FL is set to 8 bits, TV is not set, MO is set to "ignore" and CDA is set to "lower."</t>

<t>The source and destination IPv6 addresses are compressed using MSB. 
In both cases, FL is set to 128, TV is respectively set to  msb(ts_ip_src_start, ts_ip_src_ed) or msb(ts_ip_dst_start, ts_ip_dst_end), the MO is set to "MSB," and the CDA is set to "LSB."</t>

</section>
<section anchor="sec-inner-ip4"><name>Compression of the Inner IPv4 header</name>

<t>The fields Version, DSCP, ECN, Source Address and Destination Address are compressed as described for IPv6 in <xref target="sec-inner-ip6"/>.
The field Total Length (16 bits) is compressed similarly to the IPv6 field Payload Length. The field Identification (16 bits) is compressed similarly to the IPv6 field Flow Label. If the tunnel IP header is an IPv6 header, the Identification is placed as the LSB of the IPv6 header and the 4 remaining MSB are set to 0.  The field Time to Live is compressed similarly to the IPv6 Hop Limit field. The Protocol field is compressed similarly to the last IPv6 Next Header field.</t>

<t>The Internet Header Length (IHL) is not compressed, FL is set to 4 bits, TV is not set, MO is set to ignore and CDA is set to "value-sent".</t>

<t>The IPv4 header checksum is elided.
FL is set to 16, TV is omitted, MO is set to "ignore," and CDA is set to "checksum."</t>

</section>
</section>
<section anchor="sec-ctec"><name>Clear Text ESP Compression (CTEC)</name>

<t>Once the Inner IP Packet has undergone compression as outlined in <xref target="sec-iipc"/>, the resulting compressed packet comprises a specific number of bytes. To construct the Clear Text ESP Packet, it is necessary to ascertain the ESP Payload Data, the Next Header, the ESP Pad Length, and the ESP Padding fields.</t>

<t>When esp_trailer is set to "Mandatory", the Next Header and the ESP Pad Length fields are present. Such requirement is usually expected to remain compatible with hardware implementations of ESP. The ESP Pad Length value is determined to meet the required alignment. When alignment is set to "8bit", Pad Length is set to 0 and the Padding field is empty.</t>

<t>Conversely, when esp_trailer is set to "Optional", the Next Header Pad Length and Padding are generated as follows:</t>

<t>In transport mode, the IP header of the inner packet remains not compressed during the IIPC phase, and the ESP Payload Data is derived from the inner packet. Conversely, in tunnel mode, the ESP Payload Data encompasses the entirety of the packet generated by the IIPC.</t>

<t>In transport mode, the Next Header field is obtained from either the inner IP header or the Security Association, as specified in <xref target="sec-inner-ip4"/> or <xref target="sec-inner-ip6"/>. In tunnel mode, the Next Header is elided, as it is determined by ts_ip_version. FL is set to 8 bit, TV is set to IPv4 or IPv6 depending on ts_ip_version, MO is set to "equal" and CDA is set to "not-sent".</t>

<t>The ESP Pad Length and ESP Padding fields are omitted only when ESP alignment has been selected to "8bit" and esp_encr does not necessitate a specific block size alignment, or if that block size is one byte. This is represented by setting FL to (Pad Length + 1) * 8 bits, leaving TV unset, configuring MO to "ignore," and designating CDA as padding. The ESP Padding and ESP Pad Length may vary from their decompressed counterparts. However, since the IPsec process removes the padding, these variations do not affect packet processing. When esp_encr requires a specific block size, the ESP Pad Length and ESP Padding fields remain not compressed.</t>

</section>
<section anchor="sec-eec"><name>Encrypted ESP Compression (EEC)</name>

<t>Once the Clear Text Packet has undergone compression as outlined in <xref target="sec-iipc"/>, the resulting CTEC is encrypted. The header fields once the encrypted ESP packet is formed are the SPI and SN. To facilitate the processes of compression and decompression, this specification requires that the compressed ESP Header is byte-aligned. This requirement is satisfied by ensuring that the sum of esp_spi_lsb and esp_sn_lsb MUST be a multiple of 8.</t>

<t>SPI is compressed to its LSB.
FL is set to 32 bits, TV is not set, MO is set to "MSB( 4 - esp_spi_lsb)" and CDA is set to "LSB".</t>

<t>SN is compressed to its LSB, similarly to the SPI. 
FL is set to 32 bits, TV is not set, MO is set to "MSB( 4 - esp_sn_lsb)" and CDA is set to "LSB".</t>

</section>
</section>
<section anchor="diet-esp-compression-for-ipsec-in-transport-mode"><name>Diet-ESP Compression for IPsec in Transport Mode</name>

<t>The transport mode mostly differs from the Tunnel mode in that the IP header of the packet is not encrypted. As a result, the IP Payload is compressed as described in <xref target="sec-payload"/>. The IP header is not compressed. The byte alignment of the Compressed Payload is performed as described in <xref target="sec-iipc"/>. The Clear Text ESP Compression is performed as described in <xref target="sec-ctec"/> except for the Next Header Field, which is compressed as described in <xref target="sec-inner-ip6"/>.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>We request the IANA to create a new registry for the IIPC Profile</t>

<figure><artwork><![CDATA[
| IIPC Profile value    | Reference |
+-----------------------+-----------+
| "iipc_not_compressed" | ThisRFC   |
| "iipc_diet-esp"       | ThisRFC   |
]]></artwork></figure>

<t>We request IANA to create the following registries for the "diet-esp" IIPC Profile.</t>

<figure><artwork><![CDATA[
| Flow Label CDA Value | Reference |
+----------------------+-----------+
| "not_compressed"     | ThisRFC   |
| "generated"          | ThisRFC   |
| "lower"              | ThisRFC   |
| "zero"               | ThisRFC   |
]]></artwork></figure>

<figure><artwork><![CDATA[
| DSCP CDA Value       | Reference |
+----------------------+-----------+
| "not_compressed"     | ThisRFC   |
| "lower"              | ThisRFC   |
| "sa"                 | ThisRFC   |
]]></artwork></figure>

<figure><artwork><![CDATA[
| ECN CDA Value       | Reference |
+---------------------+-----------+
| "not_compressed"    | ThisRFC   |
| "lower"             | ThisRFC   |
]]></artwork></figure>

<figure><artwork><![CDATA[
| Alignment            | Reference |
+----------------------+-----------+
| "8 bit"              | ThisRFC   |
| "16 bit"             | ThisRFC   |
| "32 bit"             | ThisRFC   |
| "64 bit"             | ThisRFC   |
]]></artwork></figure>

<figure><artwork><![CDATA[
| IPsec mode Value     | Reference |
+----------------------+-----------+
| "Tunnel"             | ThisRFC   |
| "Transport"          | ThisRFC   |
]]></artwork></figure>

</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 quantity of 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 title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">

&RFC2119;
&RFC8174;
&RFC4303;
&RFC4301;
&RFC8724;
&RFC7296;
&I-D.ietf-ipsecme-ikev2-diet-esp-extension;
&I-D.mglt-ipsecme-dscp-np;
&RFC8750;
&RFC6437;
&RFC8221;


    </references>

    <references title='Informative References' anchor="sec-informative-references">

<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></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
&RFC9333;
&RFC8376;
&I-D.ietf-schc-architecture;
&RFC4302;
&RFC6438;


    </references>

</references>


<?line 683?>

<section anchor="appendix"><name>Appendix</name>

<t>This appendix provides the details of the SCHC rules defined for Diet-ESP compression, alongside an explanation and illustrative examples for both Tunnel and Transport modes.</t>

<section anchor="illustrative-examples-of-diet-esp-in-tunnel-mode"><name>Illustrative Examples of Diet-ESP in Tunnel Mode</name>

<t>This section provides a structured example of how Diet-ESP operates in Tunnel Mode. The example includes Attributes for Rule Generation (AfRG), SCHC rules, the Inner IP packet (IIP), the compression process, and the decompression process.</t>

<section anchor="json-representation-in-tunnel-mode"><name>Json Representation in Tunnel Mode</name>

<t>In Tunnel Mode, the full inner IP packet is compressed before encryption, making it more efficient for VPN scenarios. The "iipc_diet-esp" profile is used to indicate compression of the inner packet. The IPv6 Source and Destination Addresses are compressed using "MSB", sending only the variable parts while keeping the most significant bits. UDP Source and Destination Ports are compressed with "LSB", reducing their size. "compute-length" removes the UDP Length field, and "checksum" omits the UDP checksum, which is recalculated at decompression. ESP SPI and Sequence Number are compressed using "LSB" with an MSB mask. The "not-sent" CDA is used for Next Header fields in both IPv6 and ESP, as their values are predictable.</t>

<figure><sourcecode type="json"><![CDATA[
{
  "compressed": [
    {
      "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_dst_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,
      "TV": null,
      "MO": "ignore",
      "CDA": "compute-length"
    },
    {
      "FID": "UDP.Checksum",
      "FL": 16,
      "TV": null,
      "MO": "ignore",
      "CDA": "compute-checksum"
    },
    {
      "FID": "esp_spi",
      "FL": 32,
      "TV": null,
      "MO": "MSB(4 - esp_spi_lsb)",
      "CDA": "LSB"
    },
    {
      "FID": "esp_sn",
      "FL": 32,
      "TV": null,
      "MO": "MSB(4 - esp_sn_lsb)",
      "CDA": "LSB"
    },
    {
      "FID": "ESP.Padding",
      "FL": 8,
      "TV": null,
      "MO": "ignore",
      "CDA": "compute-padding"
    }, 
    {
      "FID": "alignment",
      "FL": 8,
      "TV": "64 bit",
      "MO": "equal",
      "CDA": "not-sent"
    }
  ]
}
]]></sourcecode></figure>

</section>
<section anchor="attributes-for-rule-generation-afrg"><name>Attributes for Rule Generation (AfRG)</name>

<t>The SCHC rules for Tunnel Mode are derived from the following AfRG:</t>

<t><list style="symbols">
  <t>IPsec Mode: Tunnel</t>
  <t>Traffic Selector IP Version: IPv6-only</t>
  <t>Traffic Selector Source Address: 2001:db8::1234</t>
  <t>Traffic Selector Destination Address: 2001:db8::5678</t>
  <t>DSCP CDA: Lower</t>
  <t>ECN CDA: Lower</t>
  <t>ESP SPI Compression: LSB</t>
  <t>ESP SN Compression: LSB</t>
</list></t>

</section>
<section anchor="inner-ip-packet-iip"><name>Inner IP Packet (IIP)</name>

<t>The original packet (IIP), before compression consists of:</t>

<t><list style="symbols">
  <t>IPv6 Source Address: 2001:db8::1234</t>
  <t>IPv6 Destination Address: 2001:db8::5678</t>
  <t>UDP Source Port: 5001</t>
  <t>UDP Destination Port: 4500</t>
  <t>UDP Length: 16 bytes</t>
  <t>Payload Data</t>
</list></t>

</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>

<t><list style="numbers" type="1">
  <t>IIPC: UDP Header Compression
  <list style="symbols">
      <t>UDP ports are compressed using the LSB technique.</t>
      <t>UDP Length is removed (computed at decompression).</t>
      <t>UDP Checksum is omitted.</t>
    </list></t>
  <t>IIPC: IPv6 Header Compression
  <list style="symbols">
      <t>Source and Destination Addresses are compressed using MSB.</t>
      <t>Next Header field is omitted.</t>
    </list></t>
  <t>CTEC: ESP Trailer Compression
  <list style="symbols">
      <t>Pad Length and Padding are omitted.</t>
      <t>Next Header is omitted.</t>
    </list></t>
  <t>EEC: ESP Header Compression
  <list style="symbols">
      <t>SPI and SN are compressed using LSB.</t>
      <t>Compressed Packet Output</t>
    </list></t>
</list></t>

<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>

<t><list style="numbers" type="1">
  <t>EEC: ESP Header Decompression
  <list style="symbols">
      <t>SPI and SN are reconstructed using the LSB values.</t>
    </list></t>
  <t>CTEC: ESP Trailer Decompression (Optional)</t>
  <t>IIPC: IPv6 Header Decompression
  <list style="symbols">
      <t>ESP Next Header and Padding fields are restored.</t>
      <t>IPv6 Source and Destination Addresses are restored.</t>
    </list></t>
  <t>IIPC: UDP Header Decompression
  <list style="symbols">
      <t>UDP ports are restored using the decompressed LSB values.</t>
      <t>UDP Length and Checksum are recalculated.</t>
    </list></t>
</list></t>

</section>
</section>
<section anchor="illustrative-examples-of-diet-esp-in-transport-mode"><name>Illustrative Examples of Diet-ESP in 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, since the IP header remains not compressed, only the UDP header fields in the IIP payload and the ESP header fields are compressed. The new IANA-defined CDAs are applied as follows: "checksum" is used for the UDP checksum, meaning it is recalculated at decompression rather than transmitted. "compute-length" eliminates the UDP Length field, as it can be inferred from the payload size. "padding" ensures ESP padding aligns with 8-bit boundaries. "not-sent" is applied to the IPv6 and ESP Next Header fields because their values are predictable. The UDP Source and Destination Ports use "LSB" compression, reducing overhead by sending only the least significant bits. The ESP SPI and Sequence Number are compressed similarly using "LSB" with an MSB mask. Since the IP header is retained, the Source and Destination IPv6 Addresses are fully transmitted using "sent-value".</t>

<figure><sourcecode type="json"><![CDATA[
[
  {
  "ipsec_mode": "Transport",
  "ts_ip_version": "IPv6-only",
  "compressed_fields": [
    {
      "FID": "ts_ip_src_start",
      "FL": 128,
      "TV": "2001:db8::1001",
      "MO": "equal",
      "CDA": "value-sent"
    },
    {
      "FID": "ts_ip_dst_start",
      "FL": 128,
      "TV": "2001:db8::2002",
      "MO": "equal",
      "CDA": "value-sent"
    },
    {
      "FID": "IPv6.NextHeader",
      "FL": 8,
      "TV": 17,
      "MO": "equal",
      "CDA": "not-sent"
    },
    {
      "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,
      "TV": null,
      "MO": "ignore",
      "CDA": "compute-length"
    },
    {
      "FID": "UDP.Checksum",
      "FL": 16,
      "TV": null,
      "MO": "ignore",
      "CDA": "checksum"
    },
    {
      "FID": "esp_spi",
      "FL": 32,
      "TV": null,
      "MO": "MSB(4 - esp_spi_lsb)",
      "CDA": "LSB"
    },
    {
      "FID": "esp_sn",
      "FL": 32,
      "TV": null,
      "MO": "MSB(4 - esp_sn_lsb)",
      "CDA": "LSB"
    },
    {
      "FID": "ESP.Padding",
      "FL": 8,
      "TV": null,
      "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"
    }
]
  }
    ]
]]></sourcecode></figure>

</section>
<section anchor="attributes-for-rule-generation-afrg-1"><name>Attributes for Rule Generation (AfRG)</name>

<t>The SCHC rules for Transport Mode are derived from the following AfRG:</t>

<t><list style="symbols">
  <t>IPsec Mode: Transport</t>
  <t>Traffic Selector IP Version: IPv6-only</t>
  <t>Traffic Selector Source Address: 2001:db8::1001</t>
  <t>Traffic Selector Destination Address: 2001:db8::2002</t>
  <t>DSCP CDA: Lower</t>
  <t>ECN CDA: Lower</t>
  <t>ESP SPI Compression: LSB</t>
  <t>ESP SN Compression: LSB</t>
</list></t>

</section>
<section anchor="inner-ip-packet-iip-1"><name>Inner IP Packet (IIP)</name>

<t>The original packet before compression consists of:</t>

<t><list style="symbols">
  <t>IPv6 Source Address: 2001:db8::1001</t>
  <t>IPv6 Destination Address: 2001:db8::2002</t>
  <t>UDP Source Port: 1234</t>
  <t>UDP Destination Port: 5678</t>
  <t>UDP Length: 18 bytes</t>
  <t>ESP Payload Data</t>
</list></t>

</section>
<section anchor="diet-esp-compression-1"><name>Diet-ESP Compression</name>

<t><list style="numbers" type="1">
  <t>IIPC: UDP Header Compression
  <list style="symbols">
      <t>UDP ports are compressed using the LSB technique.</t>
      <t>UDP Length is removed (computed at decompression).</t>
      <t>UDP Checksum is omitted.</t>
    </list></t>
  <t>CTEC: ESP Trailer Compression
  <list style="symbols">
      <t>Pad Length and Padding are omitted.</t>
      <t>Next Header is omitted.</t>
    </list></t>
  <t>EEC: ESP Header Compression
  <list style="symbols">
      <t>SPI and SN are compressed using LSB.</t>
    </list></t>
  <t>Compressed Packet Output</t>
</list></t>

<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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
eDZkdBzbguV2+o64hC/jQVAvRuXtHD2PtWz5OCC2sU8t+srQ5GSNbnIPMhPZ
YVbAVnSZWTVsuxYZG+J1AjvFWre83djFpo9xkt6g7o031dCuSoUGy4ezdkYk
+Z/mQhdwZOQO6UworMh+RdA3FhUEvUpIwvkajm5gX6oSJBiqBjVGJMfu5PlJ
BazBc0ff1mrqcT0mmXYPDNzgV9HLDTq1bXTpjnyjY5vhi6aTt7ltNadFe78f
HX7k758G2iPq0h3DBZsyUGtPskLVhiyuDU3UjmhisfrdMvXsXLQrMnHcByNU
qd6kxbCAdhLCRJhz9LE5bZjnxSfkjECago9WQWMNUMIK8RRzXphnlml6xeFE
FgYvuu0PvHd4eKvVZhAGz/HxPYDDxy63lmxXJ1pzb9sAk+PngFVdkIGvME8L
oOdtAOI3+6qPrFD4hF1xkIdApkILe8D62kBX86Zyh3F+iyur7pDrFMiFa/Uy
3nsiNRBhxxFRZxxQ73aXJwNHd9bHiGMFLIUVKiDI8cVaGQ2PeU3dSAnIOfqY
w22SFcX7xdygJ0mDvnZQDPAJ02CyRamxKNzkGDiPmkk+kOgAuI4pDLYJJXpS
ucJdlKOvN++eB5zZokIIzTMUmI2+gGlINfDGglOr2vsK+AJU8vLK0K4yUFkX
7tuqHpKtuxonOToJDmzHyACTDSmCDozWtvLcEBAK7WJ8Wo0XHAUCG//KQOnA
M4hb3+F4PLZklg4G6efHqiIm5BdCIyzcOEkmFTNvwSGRowfd8sylW7ugOay0
lFeNOfsHx8iainP2F1I3axf2GWYYDEm70lwP630vah3KGo8HBnzmDmu9CwPC
0hBz5S7r9V4ao0mounpx8CdRW9m+HU4S/cqttiYCvkgMDg2mF84PEFdjWFC9
1og9No8Vwdf9acPer4cdf03HtK6GvbsG16L+VKF/VXfDB5nId/J39919//5N
PwjL3Jz7+r+7zdfQ8u4dsXBMMwOgfdVxPx9m5g3Sa2001Zbxw2V2rqWxsOa7
d+1iSjjmmpm2dIsxqmskFvHL/ILltA7sjGC51kNRsDvraZ20obkSqqAUOIDF
w0568z878M3933W/PBQVI+5+9VD0vash9GFZSb14Ovo46mj4EGuJYCI/GEsW
4M2qxRzzlRm2pMX4Ikt3H95N6/bxMBvDIkwT3o3vXQ1pYxwuf1UfR4cf25py
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
tQwBAA==

-->

</rfc>

