<?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 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 RFC6864 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6864.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 I-D.ietf-schc-architecture SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-schc-architecture.xml">
<!ENTITY RFC8376 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8376.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 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-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="EHCP">ESP Header Compression Profile</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="February" day="14"/>

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

    <abstract>


<?line 66?>

<t>This document specifies Diet-ESP, a compression mechanisms 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 Payload Data 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 Payload Data, 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 different compression/decompression (C/D) of 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 Figure <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 Parameters Index (SPI)                 | ^Auth.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cove-
|                      Sequence Number                          | |rage
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|                    Payload Data* (variable)                   | |   ^
~  Higher Layer Message (transport) or IP datagram (tunnel)     ~ |   |
|                                                               | |Encr.
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cove
|               |     Padding (0-255 bytes)                     | |rage*
+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |   |
|                               |  Pad Length   | Next Header   | v   v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|         Integrity Check Value-ICV   (variable)                |
~                                                               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<section anchor="the-three-compressors-described-in-this-specification"><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): This process pertains to the compression and decompression of the IP packet protected by ESP. For outbound packets, the ESP incorporates the compressed Inner IP (IIP) into the ESP Data Payload (refer to <xref target="fig-esp"/>). In the case of inbound packets, decompression occurs after the compressed IIP is retrieved from the Data Payload within the Clear Text ESP packet.</t>
  <t>Clear Text ESP Compression (CTEC): This process pertains to the compression and decompression of the ESP segment that is destined for encryption. This encompasses the Payload Data and the ESP Trailer, which includes the Padding, Pad Length, and Next Header fields, as illustrated in <xref target="fig-esp"/>. At this stage, only the latter fields are eligible for compression. For outbound packets, the ESP subsequently encrypts the compressed Clear Text ESP. 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, are 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. 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="schc-rules-and-schc-static-context-in-this-specification"><name>SCHC Rules and SCHC static context in this specification</name>

<t>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, which contains the remaining bits after compression.</t>

<t>In the context of 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 Encapsulating Security Payload (ESP) to handle both inbound and outbound packets. It is important to note that SAs are unidirectional. Furthermore, IPsec can link both outbound and inbound IP packets to the SA through Traffic Selectors (TS) or Security Parameters 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 is linked to a single Rule, thereby allowing the Rule ID to 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>Expressed via the SCHC framework, IIPC compresses/decompresses the inner IP packet headers.</t>
  </dd>
  <dt>Clear Text ESP C/D (CTEC):</dt>
  <dd>
    <t>Expressed via the SCHC framework, CTEC compresses/decompresses all fields that will later be encrypted by ESP, which include the ESP Data and ESP Trailer.</t>
  </dd>
  <dt>Encrypted ESP C/D (EEC):</dt>
  <dd>
    <t>Expressed via the SCHC framework, EEC compresses/decompresses ESP fields that will not be encrypted by ESP.</t>
  </dd>
  <dt>Security Parameters Index (SPI):</dt>
  <dd>
    <t>As defined in <xref section="4.1" sectionFormat="comma" target="RFC4301"/>.</t>
  </dd>
  <dt>Sequence Number (SN):</dt>
  <dd>
    <t>As defined in <xref section="2.2" sectionFormat="comma" target="RFC4303"/>.</t>
  </dd>
  <dt>Static Context Header Compression (SCHC):</dt>
  <dd>
    <t>A framework for header compression designed for LPWANs, as defined in <xref target="RFC8724"/>.</t>
  </dd>
  <dt>Static Context Header Compression Rules (SCHC Rules):</dt>
  <dd>
    <t>As defined in  <xref target="I-D.ietf-schc-architecture"/></t>
  </dd>
  <dt>RuleID:</dt>
  <dd>
    <t>A unique identifier for each Rule part of the Set of Rules.</t>
  </dd>
  <dt>SCHC Parameters:</dt>
  <dd>
    <t>A set of predefined values used for SCHC compression and decompression, ensuring byte alignment and proper packet formatting based on the SCHC profile.</t>
  </dd>
  <dt>SCHC MAX_PACKET_SIZE:</dt>
  <dd>
    <t>The maximum size of a SCHC-compressed packet that can be transmitted without fragmentation.</t>
  </dd>
  <dt>Traffic Selector (TS):</dt>
  <dd>
    <t>A set of parameters (e.g., IP address range, port range, and protocol) used to define which traffic should be protected by a specific Security Association (SA).</t>
  </dd>
</dl>

<t>It is assumed that the reader is familiar with other SCHC terminology defined in <xref target="RFC8376"/>, <xref target="RFC8724"/>, and 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 necessitates 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 Rules Generation (AfRG) (refer to <xref target="sec-afrg"/>) essential for formulating the Rules for each compressor, 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. The ESP then determines the IIPC Rule from the AfRG contained within the SA and compresses the IIP packet (IIPC: C {IIP}). Subsequently, ESP constructs the Clear Text ESP payload (CTE). The CTEC Rule is derived from the AfRG of the SA, allowing for the compression of the CTE (CTEC: C {C {IIP}, ET}, where ET represents the ESP Trailer). The ESP encrypts the payload, computes the Integrity Check Value (ICV), and forms the ESP Encrypted payload (EE). The EE Rule is derived from the AfRG of the SA, and then utilized to compress the EE. 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).
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 IIP.</t>

<t>Note that implementations MAY differ from the architectural description but it is assumed that the outputs 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 Compress, 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 Generations |   |
        |       +-------------------------------------+   | 
        |       |  Generation of the IIPC Rule,       |   |
        |       |   CTEC Rule and EEC Rule            |   |
        |       +-------------------------------------+   | 
        |                                                 |
        v                                                 |            
+------------------------+               +------------------------+
| IIPC: C {IIP}          |               | IIPC: D {IIP}          |
+------------------------+               +------------------------+ 
| Formation of           |               | Extraction of          |
| Clear Text ESP         |               | Data Payload           |
+------------------------+               +------------------------+
| CTEC:                  |               | CTEC:                  |
| C {C {IIP}, ET}        |               | D {C {IIP}, ET}        |       
+------------------------+               +------------------------+
| Encryption             |               | Decryption             |
+------------------------+               +------------------------+
| Formation of           |               | Parsing                |
| Encrypted ESP          |               | Encrypted ESP          |
+------------------------+               +------------------------+
| EEC:                   |               | EEC:                   |  
| C {EH, C {C {IIP}, ET} |               | D {EH, C {C {IIP}, ET} |
+------------------------+               +------------------------+
        |                                | 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 Payload <xref target="RFC8724"/> is always in the form:</t>

<figure title="SCHC Packet" anchor="tab-diet-esp-compressed-header-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. The RuleID in Diet-ESP is expressed as 1 byte and is always elided as Rules are uniquely determined for compressors.</t>

<t>Other variables required for the C/D in Diet-ESP are the following:</t>

<dl>
  <dt>Maximum Packet Size:</dt>
  <dd>
    <t>MAX_PACKET_SIZE is determined by the specific IPsec ESP configuration and the underlying transport, but it is typically aligned with the network’s MTU. The size constraints are optimized based on the available link capacity and negotiated parameters between endpoints.</t>
  </dd>
  <dt>SCHC Padding:</dt>
  <dd>
    <t>Padding in SCHC is used to align data to a specific boundary (typically byte-aligned or 8-bit aligned)  to meet the requirements for encryption which only considers octets instead of bits. The SCHC Padding is only used over the CTE as described in <xref target="sec-byte-align"/>.</t>
  </dd>
</dl>

<t>SCHC padding is used solely to ensure byte alignment for the Compressed Inner IP Packet (IIPC) before the ESP padding is applied. This distinction is necessary because ESP Padding may be compressed or omitted depending on the negotiated alignment.  In this document, we refer to this specific use of SCHC padding as Byte Alignment.</t>

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

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

<t>The ability to derive the IPPC Rules for the IIPC from the agreed Traffic Selectors is indicated by the variable iipc_profile.</t>

<texttable title="Set of Variables 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_uncompress"</c>
      <c>ThisRFC</c>
      <c>N/A</c>
      <c>dscp_cda</c>
      <c>"uncompress", "lower", "sa"</c>
      <c>ThisRFC</c>
      <c>IIPC</c>
      <c>ecn_cda</c>
      <c>"uncompress", "lower"</c>
      <c>ThisRFC</c>
      <c>IIPC</c>
      <c>flow_label_cda</c>
      <c>"uncompress", "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>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_uncompress" 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, "uncompress" indicates that Flow Label (resp. Identification) are not compressed. "lower" indicates the value is read from the outer IP header - eventually with some adaptations when inner IP packet and outer IP packets have different versions. "generated" indicates that the field is generated by the receiving party. In that case, the decompressed value may take a different value compared to its original value. "zero" indicates the field is set to zero.</t>
  </dd>
  <dt>dscp_cda:</dt>
  <dd>
    <t>indicates 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, "uncompress" 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.  "sa" indicates, compression is performed according to the DSCP values agreed by the SA (dscp_list).</t>
  </dd>
  <dt>ecn_cda:</dt>
  <dd>
    <t>indicates 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, "uncompress" 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.</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>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>Compression/Decompression Actions in Diet-ESP</name>

<t>In addition to the Compression/Decompression Actions (CDAs) defined in <xref section="7.4" sectionFormat="comma" target="RFC8724"/>, this specification uses the CDAs presented in <xref target="tab-cda"/>. These CDAs are either a refinement of the compute- * CDA or the result of a combined CDA.</t>

<texttable title="EHCP ESP related parameter" anchor="tab-cda">
      <ttcol align='left'>Action</ttcol>
      <ttcol align='left'>Compression</ttcol>
      <ttcol align='left'>Decompression</ttcol>
      <c>lower</c>
      <c>elided</c>
      <c>Get from lower layer</c>
      <c>generated (Flow Label)</c>
      <c>elided</c>
      <c>Compute flow label</c>
      <c>checksum</c>
      <c>elided</c>
      <c>Compute checksum</c>
      <c>ESP padding</c>
      <c>elided</c>
      <c>Compute padding</c>
      <c>hop limit</c>
      <c>elided</c>
      <c>Get from lower layer</c>
      <c>Byte Alignment</c>
      <c>send</c>
      <c>Compute padding</c>
</texttable>

<dl>
  <dt>lower:</dt>
  <dd>
    <t>is only used in a Tunnel Mode and indicates that the fields of the inner IP packet header are generated from the corresponding fields of the Tunnel IP header fields. This CDA can be used for the DSCP, ECN, and IPv6 Flow Label (resp. IPv4 identification) fields.</t>
  </dd>
  <dt>generated:</dt>
  <dd>
    <t>indicates that a brand new Flow Label/Identification field is generated following <xref target="RFC6437"/>, <xref target="RFC6864"/>.</t>
  </dd>
  <dt>checksum:</dt>
  <dd>
    <t>indicates that a checksum is computed accordingly. Typically, the checksum CDA has a different implementation for IPv4, UDP, TCP,...</t>
  </dd>
  <dt>ESP padding:</dt>
  <dd>
    <t>indicates that the ESP padding bytes are generated accordingly.</t>
  </dd>
  <dt>hop limit:</dt>
  <dd>
    <t>indicates that the hop limit is derived from the outer IPv6 header.</t>
  </dd>
  <dt>Byte Alignment:</dt>
  <dd>
    <t>indicates that the the SCHC Byte Alignment bits are generated accordingly.</t>
  </dd>
</dl>

</section>
</section>
</section>
<section anchor="schc-compression-for-ipsec-in-tunnel-mode"><name>SCHC Compression for IPsec in Tunnel mode</name>

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

<t>When iipc_profile is set to "iipc_uncompress", the packet is uncompressed. 
When iipc_profile is set to "iipc_diet-esp", IIPC proceeds to the compression of the inner IP Packet composed of an IP Header and an IP Payload.
The compression of the inner IP Payload is described in <xref target="sec-payload"/>.<br />
The IP Header is compressed when ipsec_mode is set to "Tunnel" and left uncompressed otherwise. ts_ip_version determines how the IPv6 Header (resp. the IPv4 header) is compressed - see <xref target="sec-inner-ip6"/> (resp. <xref target="sec-inner-ip4"/>).</t>

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

<t>The compression only affects UDP, UDP-Lite, TCP or SCTP packets and the type of packet is determined by the IP header.</t>

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

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

</section>
<section anchor="sec-inner-ip6"><name>Inner IPv6 Header Compression</name>

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

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

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

<t><list style="symbols">
  <t>If dscp_cda is set to "uncompress", the DSCP values are included in the inner IP header. FL is set to 6 bits, TV is not set, MO is set to "ignore", CDA is set to "sent-value".</t>
  <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 "uncompress", the ECN field is included in the inner IP header. FL is set to 2 bits, TV is not set, MO is set to "ignore", CDA is set to "sent-value".</t>
  <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 "uncompress", the Flow label is included in the IPv6 Header. FL is set to 20 bits, TV is not set, MO is set to "ignore", and CDA is set to "sent-value".</t>
  <t>If flow_label_cda is set to "lower", the Flow Label is elided and read from the outer IP Header (See <xref target="sec-cda"/>). FL is set to 20 bits, TV is not set, MO is set to "ignore", and CDA is set to "lower". If the outer IP header is an IPv4 header, only the 16 LSB of the Flow Label are inserted into the IPv4 Header. At the decompression, the 4 MSB of the Flow Label are set to 0.</t>
  <t>If flow_label_cda is set to "generated", the Flow Label is elided and the Flow Label is then re-generated at the decompression (See <xref target="sec-cda"/>). The resulting Flow Label differs from the initial value. FL is set to 20, TV is not set, MO is set to "ignore" and CDA is set to "generated".</t>
  <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>Inner IPv4 Header Compression</name>

<t>The fields Version, DSCP, ECN, Source Address and Destination Address are compressed as described for IPv6 in <xref target="sec-inner-ip6"/>.
The field Total Length (16 bits) is compressed similarly to the IPv6 field Payload Length. The field Identification (16 bits) is compressed similarly to the IPv6 field Flow Label. If the 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 uncompressed, FL is set to 4 bits, TV is not set, MO is set to ignore and CDA is set to "value-sent".</t>

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

</section>
</section>
<section anchor="sec-byte-alignxx"><name>ESP Payload Data Byte Alignment</name>

<t>Deleted---see subsection below.
SCHC operates on bits, and the compression performed by SCHC may result in a bit payload that is not aligned to a byte (8 bits) boundary. Protocols such as ESP expect payloads to be aligned to byte boundaries (8-bit alignment).
To ensure this, we apply a padding by appending the SCHC_padding bits and the SCHC_padding_len. SCHC_padding_len is encoded over 3 bits to encode the number of bits that will compose the SCHC_padding field. As a result SCHC_padding field has between 0 and 7 bits coded over the SCHC_padding_len. The two fields are between 3 and 10 bits, so if the complementing bits are less than or equal to 2 bits, the padding will result in adding an extra byte.</t>

<t>When the iipc_profile is set to "iipc_uncompress" there is no ESP Payload Data Byte alignment. When iipc_profile is set to "iipc_diet-esp" ESP Payload Data Byte Alignment is performed over the Compressed Inner IP packet. This ensures that in both transport and tunnel mode, the Payload Data later encrypted by ESP result in an integer number of bytes.</t>

</section>
<section anchor="sec-byte-align"><name>ESP Payload Data Byte Alignment</name>

<t>SCHC operates on bits, and the compression performed by SCHC may result in a bit payload that is not aligned to a byte boundary. Protocols such as ESP expect payloads to be aligned to byte boundaries (8-bit alignment). To ensure this, we apply a padding by appending the Byte Alignment bits and the Byte Alignment Length field. The Byte Alignment Length is encoded over 3 bits to indicate the number of bits that will compose the Byte Alignment field. As a result, the Byte Alignment field has between 0 and 7 bits, depending on the required alignment. The total additional overhead can be up to 10 bits (3-bit length field + 0-7 bits padding). If the complementing bits are less than or equal to 2 bits, the padding will result in adding an extra byte.</t>

<t>This Byte Alignment field is distinct from ESP Padding and is required to ensure proper decryption without requiring additional shifting operations in hardware. If the expected length of the compressed residue is statically determinable based on the SA, the padding length can be inferred, and the field may be omitted. Otherwise, when the residue length depends on dynamic fields, the length must be explicitly provided.</t>

<t>When the Byte Alignment is applied, it is performed only after the IIPC stage and before the ESP Padding is added. The ESP Padding is only compressed when alignment is explicitly set to 8 bits.</t>

<t>This ensures that in both transport and tunnel mode, the Payload Data later encrypted by ESP results in an integer number of bytes.</t>

</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"/>, followed by the ESP Byte Alignment detailed in <xref target="sec-byte-align"/>, the resulting compressed inner 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 Pad Length, and the Padding fields.</t>

<t>In transport mode, the IP header of the inner packet remains uncompressed during the IIPC phase, and the ESP Payload Data is derived from the inner packet. Conversely, in tunnel mode, the Payload Data encompasses the entirety of the inner packet.</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 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 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 Padding fields remain uncompressed.</t>

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

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

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

</section>
</section>
<section anchor="schc-compression-for-ipsec-in-transport-mode"><name>SCHC Compression for IPsec in Transport mode</name>

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

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

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

<figure><artwork><![CDATA[
| IIPC Profile value | Reference |
+--------------------+-----------+
| "iipc_uncompress" | 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 |
+----------------------+-----------+
| "uncompress"         | ThisRFC   |
| "generated"          | ThisRFC   |
| "lower"              | ThisRFC   |
| "zero"               | ThisRFC   |
]]></artwork></figure>

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

<figure><artwork><![CDATA[
| ECN CDA Value       | Reference |
+----------------------+-----------+
| "uncompress"         | 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 "uncompress," the DSCP CDA Value to either "uncompress" or "sa," and the ECN CDA Value to "uncompress."</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, "uncompress" 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 would like to thank Laurent Toutain, Ana Caroline Minaburo and Pascla Thubert for his guidance on SCHC. Robert Moskowitz for inspiring the name "Diet-ESP" from Diet-HIP, Samita Chakrabart, Tero Kivinen, Michael Richarson and Valery Smyslov for their long time support. The authors would like to acknowledge the support from 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;
&RFC8750;
&RFC6437;
&RFC6864;
&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;
&I-D.ietf-schc-architecture;
&RFC8376;
&I-D.mglt-ipsecme-dscp-np;
&RFC4302;
&RFC6438;


    </references>

</references>


<?line 640?>

<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. 
~~~json
{
  "compressed": [
    {
      "FID": "IPv6.SourceAddress",
      "FL": 128,
      "TV": "2001:db8::1234",
      "MO": "MSB",
      "CDA": "LSB"
    },
    {
      "FID": "IPv6.DestinationAddress",
      "FL": 128,
      "TV": "2001:db8::5678",
      "MO": "MSB",
      "CDA": "LSB"
    },
    {
      "FID": "IPv6.NextHeader",
      "FL": 8,
      "TV": 17,
      "MO": "equal",
      "CDA": "not-sent"
    },
    {
      "FID": "UDP.SourcePort",
      "FL": 16,
      "TV": 5001,
      "MO": "MSB",
      "CDA": "LSB"
    },
    {
      "FID": "UDP.DestinationPort",
      "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.SequenceNumber",
      "FL": 32,
      "TV": null,
      "MO": "MSB(4 - esp_sn_lsb)",
      "CDA": "LSB"
    },
    {
      "FID": "ESP.Padding",
      "FL": 8,
      "TV": null,
      "MO": "ignore",
      "CDA": "padding"
    }
  ]
}
~~~</t>

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

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

<t>The SCHC rules for the IIPC, CTEC, and EEC layers are defined as IIPC to compresses IPv6 headers and UDP headers, CTEC to compresses ESP Trailer fields and EEC to compresses ESP SPI and Sequence Number.</t>

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

<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>ESP Payload Data</t>

<t>The compression process applies SCHC rules as follows:</t>

<section anchor="iipc-udp-header-compression"><name>IIPC: UDP Header Compression</name>

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

</section>
<section anchor="iipc-ipv6-header-compression"><name>IIPC: IPv6 Header Compression</name>

<t>Source and Destination Addresses are compressed using MSB.</t>

<t>Next Header field is omitted.</t>

</section>
<section anchor="ctec-esp-trailer-compression"><name>CTEC: ESP Trailer Compression</name>

<t>Pad Length and Padding are omitted.</t>

<t>Next Header is omitted.</t>

</section>
<section anchor="eec-esp-header-compression"><name>EEC: ESP Header Compression</name>

<t>SPI and SN are compressed using LSB.</t>

<t>Compressed Packet Output</t>

<t>The final compressed packet consists of the compressed ESP header, IIPC compressed data, and payload.</t>

</section>
</section>
<section anchor="diet-esp-decompression"><name>Diet-ESP Decompression</name>

<t>The decompression process reverses these steps:</t>

<t>SPI and SN are reconstructed using the LSB values.</t>

<t>ESP Next Header and Padding fields are restored.</t>

<t>IPv6 Source and Destination Addresses are restored.</t>

<t>UDP ports are restored using the decompressed LSB values.</t>

<t>UDP Length and Checksum are recalculated.</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 uncompressed.</t>

<section anchor="json-representation-in-transport-mode"><name>Json representation in Transport mode</name>

<t>In Transport Mode, since the IP header remains uncompressed, only the UDP payload and ESP 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": "IPv6.SourceAddress",
      "FL": 128,
      "TV": "2001:db8::1001",
      "MO": "equal",
      "CDA": "sent-value"
    },
    {
      "FID": "IPv6.DestinationAddress",
      "FL": 128,
      "TV": "2001:db8::2002",
      "MO": "equal",
      "CDA": "sent-value"
    },
    {
      "FID": "IPv6.NextHeader",
      "FL": 8,
      "TV": 17,
      "MO": "equal",
      "CDA": "not-sent"
    },
    {
      "FID": "UDP.SourcePort",
      "FL": 16,
      "TV": 1234,
      "MO": "MSB",
      "CDA": "LSB"
    },
    {
      "FID": "UDP.DestinationPort",
      "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.SequenceNumber",
      "FL": 32,
      "TV": null,
      "MO": "MSB(4 - esp_sn_lsb)",
      "CDA": "LSB"
    },
    {
      "FID": "ESP.Padding",
      "FL": 8,
      "TV": null,
      "MO": "ignore",
      "CDA": "padding"
    },
    {
      "FID": "ESP.NextHeader",
      "FL": 8,
      "TV": 17,
      "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>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>

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

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

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

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

<section anchor="iipc-udp-header-compression-1"><name>IIPC: UDP Header Compression</name>

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

</section>
<section anchor="ctec-esp-trailer-compression-1"><name>CTEC: ESP Trailer Compression</name>

<t>Pad Length and Padding are omitted.</t>

<t>Next Header is omitted.</t>

</section>
<section anchor="eec-esp-header-compression-1"><name>EEC: ESP Header Compression</name>

<t>SPI and SN are compressed using LSB.</t>

</section>
</section>
<section anchor="compressed-packet-output"><name>Compressed Packet Output</name>

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

