<?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.8 (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-04" 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="January" day="26"/>

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

    <abstract>


<?line 66?>

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



    </abstract>



  </front>

  <middle>


<?line 73?>

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

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

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

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

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

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

<t>While ESP is effective in securing traffic, further optimization can reduce packet sizes, enhancing performance in networks with limited bandwidth. In such environments, reducing the size of transmitted packets is essential to improve efficiency. This document defines the ESP Header Compression Profile (EHCP), namely Diet-ESP, for compression/decompression (C/D) of IPsec/ESP <xref target="RFC4301"/> / <xref target="RFC4303"/> packets using the Static Context Header Compression and Fragmentation (SCHC) framework <xref target="RFC8724"/>. The structure of Diet-ESP is shown in <xref target="fig-esp"/>. Compression with SCHC is based on one or more SCHC instances, each with its Set of Rules (SoR) for C/D operations <xref target="I-D.ietf-schc-architecture"/>. In the case of IPsec, the SoR and the Set of Variables (SoR) for a SCHC session can be agreed via IKEv2 <xref target="RFC7296"/> and its specific extension <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>.</t>

<t>As a result of the application of the same SoR, header values shared by the end-points do not need to be sent on the wire. At the receiver, header information is re-generated from the received compressed packet and the application of the proper SoR retrieved from the SCHC Instance.</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)                 | ^Int.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|                      Sequence Number                          | |ered
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ----
|                    Payload Data* (variable)                   | |   ^
~                                                               ~ |   |
|                                                               | |Conf.
+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Cov-
|               |     Padding (0-255 bytes)                     | |ered*
+-+-+-+-+-+-+-+-+               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |   |
|                               |  Pad Length   | Next Header   | v   v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|         Integrity Check Value-ICV   (variable)                |
~                                                               ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>This document defines the application of the SCHC Architecture for ESP Header Compression. C/D operations occur at various layers of the IPsec stack, where each layer is treated in this document as a SCHC Stratum. Diet-ESP operates over three strata, defined as follows:</t>

<t><list style="numbers">
  <t>Inner IP Compression (IIPC): The SCHC Payload Instance used in this stratum applies its SoR directly to the headers of the inner IP packet. For example, in the case of a UDP packet with ports determined by the SA, fields such as UDP ports and checksums are typically compressed. The compressed inner IP packet becomes the Payload portion of the SCHC Packet, comprising the RuleID and the Compressed Residue (i.e., compression residue plus the inner IP packet payload). If no compression of the inner packet is possible, the No Compression rule is used and the uncompressed IP packet is placed in the Compressed Residue. The resulting SCHC packet may contain a SCHC Header generated with the SoR defined in the SCHC Header Instance.</t>
  <t>Clear Text ESP Compression (CTEC): This SCHC stratum containes a SCHC Payload Instance with the SoR used to compress the fields of the ESP Clear Text Packet, right before being encrypted, as the encapsulated traffic in tunnel mode. The resulting SCHC packet does not contain a SCHC Header since the encryption at the next layer occurs in the same entity.</t>
  <t>Encrypted ESP Compression (EEC): This SCHC stratum contains a SCHC Payload Instance with the SoR to compress the ESP packet fields that remain visible after encryption, that is, the ESP Header. The resulting SCHC packet may contain a SCHC Header generated with the SoR defined in the SCHC Header Instance.</t>
</list></t>

<t>Note that the descriptions of the three SCHC strata provided in this document meet the general purpose of ESP. It is possible that in some deployments, the SCHC instances from different SCHC layers can be merged. Typically, a specific implementation may merge the compression of IIPC and CTEC layers.</t>

<t>The Rules of type C/D describe the behavior of each header field in the ESP header.A SCHC Session manager provides the management of SCHC Instances with a definition of how the SoR and the SoV are initialized from the SA (i.e., RuleID, SCHC MAX_PACKET_SIZE, new SCHC Compression/Decompression Actions (CDA), and fragmentation). The appendix provides illustrative examples of applications of Diet-ESP implemented with the OpenSCHC <xref target="OpenSCHC"/>.</t>

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

<dl>
  <dt>ESP Header Compression Profile (EHCP):</dt>
  <dd>
    <t>A method to reduce the size of ESP headers using predefined compression rules and contexts to improve efficiency.</t>
  </dd>
  <dt>ESP Trailer:</dt>
  <dd>
    <t>A set of fields added at the end of the ESP payload, including Padding, Pad Length, and Next Header, used to ensure alignment and indicate the next protocol.</t>
  </dd>
  <dt>SCHC Stratum:</dt>
  <dd>
    <t>Refers to the specific layer where SCHC operates with the Set of Rules of a SCHC instance. In this document, each SCHC Stratum covers different parts of the ESP packet structure for compression and decompression purposes.</t>
  </dd>
  <dt>Inner IP C/D (IIPC):</dt>
  <dd>
    <t>Expressed via the SCHC framework, IIPC compresses/decompresses the inner IP packet headers.</t>
  </dd>
  <dt>Clear Text ESP C/D (CTEC):</dt>
  <dd>
    <t>Expressed via the SCHC framework, CTEC compresses/decompresses all fields that will later be encrypted by ESP, which include the ESP Data and ESP Trailer.</t>
  </dd>
  <dt>Encrypted ESP C/D (EEC):</dt>
  <dd>
    <t>Expressed via the SCHC framework, EEC compresses/decompresses ESP fields that will not be encrypted by ESP.</t>
  </dd>
  <dt>Security Parameters Index (SPI):</dt>
  <dd>
    <t>As defined in <xref section="4.1" sectionFormat="comma" target="RFC4301"/>.</t>
  </dd>
  <dt>Sequence Number (SN):</dt>
  <dd>
    <t>As defined in <xref section="2.2" sectionFormat="comma" target="RFC4303"/>.</t>
  </dd>
  <dt>Static Context Header Compression (SCHC):</dt>
  <dd>
    <t>A framework for header compression designed for LPWANs, as defined in <xref target="RFC8724"/>.</t>
  </dd>
  <dt>Static Context Header Compression Rules (SCHC Rules):</dt>
  <dd>
    <t>As defined in <xref target="RFC8724"/>, Section 5.</t>
  </dd>
  <dt>RuleID:</dt>
  <dd>
    <t>A unique identifier for each 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 <xref target="I-D.ietf-schc-architecture"/>.</t>

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

<t>The main principle of the ESP Header Compression Profile (EHCP) is to avoid sending information that has already been shared by the peers. Different profiles and technologies, such as those defined by <xref target="RFC4301"/> and <xref target="RFC4303"/>, ensure that ESP can be tailored to various network requirements and security policies. However, ESP is not optimized for bandwidth efficiency because it has been designed as a general-purpose protocol. EHCP aims to address this by leveraging a profile, expressed via the SCHC architecture, to optimize the ESP header sizes for better efficiency in constrained environments.</t>

<t><xref target="fig-arch"/> illustrates the integration of SCHC into the IPsec stack, detailing the different layers and components involved in the compression and decompression processes. The diagram is divided into two entities, each representing an endpoint of a communication link.</t>

<t>Compression rules are derived from Security Association (SA) parameters negotiated through IKEv2 <xref target="RFC7296"/>, such as Traffic Selectors (TS) and IPsec mode, as well as additional parameters explicitly defined in this document as Attributes for Rules Generation (AfRG) (see <xref target="sec-afrg"/>). While TS and IPsec mode serve as inputs for compression, they are not traditionally categorized as AfRG. This document introduces the concept of AfRG to unify these inputs and define the compression process. To facilitate complete negotiation, any remaining AfRG parameters requiring explicit agreement are addressed through the IKEv2 extension <xref target="I-D.ietf-ipsecme-ikev2-diet-esp-extension"/>.</t>

<t>Upon establishing the SA, Diet-ESP uses the AfRGs listed in <xref target="tab-ehc-ctx-esp"/> for derivation of the SoR applicable to the SCHC Instance of a given stratum. The reference column in <xref target="tab-ehc-ctx-esp"/> indicates the source where the parameter value is defined. The C/D column specifies in which of the SCHC strata the parameter is being used.</t>

<t>EHCP defines three SCHC strata for compression: Inner IP Compression (IIPC), Clear Text ESP Compression (CTEC), and Encrypted ESP Compression (EEC). The compression operations for each stratum are described in <xref target="sec-iipc"/>, <xref target="sec-ctec"/>, and <xref target="sec-eec"/>.</t>

<t>EHCP essentially limits the scope of the compression to the inner IP headers and specific fields such as ports and checksums of transports like UDP, UDP-Lite, TCP, SCTP.  Further and more specific compression profiles may be defined in the future to cover compression of headers of different upper layer protocols.</t>

<t>At the receiver endpoint, the decompression of the inbound packet follows a reverse process. First, the Encrypted ESP C/D (EEC) decompresses the encrypted ESP header fields. After the ESP packet is decrypted, the Clear Text ESP C/D (CTEC) decompresses the Clear Text fields of the ESP packet.</t>

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

<figure 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. The labels “SCHC (IIPC: Compress Inner IP),” “SCHC (CTEC: Compress Trailer),” and “SCHC (EEC: Compress ESP Header)” are added to indicate that different SCHC instances are applied at the IIPC, CTEC, and EEC layers, respectively." anchor="fig-arch"><artwork align="center"><![CDATA[
                 +----------------------------------------+ 
                 | ESP Header Compression Session Manager |
                 |   - Security Association               |
                 |   - Additional Parameters              |
                 +----------------------------------------+    
                                 |        
Endpoint                         |                 Endpoint
                                 |
+-----------------+              |                +-----------------+
| Inner IP packet |              |                | Inner IP packet |
+-----------------+              |                +-----------------+
| SCHC(IIP + UDP  |              |                | SCHC(IIP + UDP  |
| or ...)         |+--------IIPC layer-----------+|  or ...)        |
+-----------------+          C {IIP}              +-----------------+
| ESP             |              |                | ESP             |
| (Encapsulation) |              |                | (unwrapping)    |
+-----------------+              |                +-----------------+
| SCHC            |              v                |  SCHC           |
| (ESP Clear Text |                               | (ESP Clear Text |       
|  Packet)        |+--------- CTEC layer --------+|  Packet)        |
+-----------------+      EH, C {C {IIP}, ET}      +-----------------+
| ESP             |              |                | ESP             |
| (Encryption)    |              |                | (decryption)    |
+-----------------+              v                +-----------------+ 
| SCHC(ESP Header)|+--------- EEC layer ---------+| SCHC(ESP Header)|    
+-----------------+  IP, C {EH, C {C {IIP},  ET}} +-----------------+
| IPv6 + ESP      |                               | IPv6 + ESP      |    
+-----------------+                               +-----------------+
|  L2             |                               |  L2             |
+-----------------+                               +-----------------+
]]></artwork></figure>

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

<t>The SCHC Payload section of a compressed SCHC packet is always in the form:</t>

<figure title="Diet-ESP Compressed Header Format" 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 SCHC Profile for Diet-ESP is defined as follows:</t>

<dl>
  <dt>RuleID:</dt>
  <dd>
    <t>The RuleID is a unique identifier for each SCHC rule. It is included in packets to ensure the receiver applies the correct decompression rule, maintaining consistency in packet processing. Note that the Rule ID does not need to be explicitly agreed upon and can be defined independently by each party. The RuleID in Diet-ESP is expressed as 1 byte.</t>
  </dd>
  <dt>Maximum Packet Size:</dt>
  <dd>
    <t>MAX_PACKET_SIZE is determined by the specific IPsec ESP configuration and the underlying transport, but it is typically aligned with the network’s MTU. The size constraints are optimized based on the available link capacity and negotiated parameters between endpoints.</t>
  </dd>
  <dt>SCHC Padding:</dt>
  <dd>
    <t>Padding in SCHC is used to align data to a specific boundary (typically byte-aligned or 8-bit aligned) to meet the requirements of the underlying link layer protocol or encryption algorithm. Padding bits are often zero or follow a pattern but do not contain significant data. In Diet-ESP, the SCHC padding is added in the CTEC strata to align the packet for encryption.</t>
  </dd>
</dl>

<t>The resulting IP/ESP packet size is variable. In some networks, the packet will require fragmentation before transmission over the wire. Fragmentation is out of the scope of this document since it is dependent on the layer 2 technology.</t>

<t><xref target="tab-diet-esp-compressed-pck"/> illustrates how the final compressed packet looks when using SCHC compression for ESP headers in the Diet-ESP profile.</t>

<figure title="Diet-ESP Compressed Packet Format with SCHC" anchor="tab-diet-esp-compressed-pck"><artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  SCHC EEC Header (EEC stratum)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|                 SCHC CTEC Header (CTEC stratum)               | ^
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                 SCHC IIP Header (IIPC stratum)                | |
+---------------------------------------------------------------+ En-
|               Inner IP Payload Data* (variable)               | cry-
~                                                               ~ pted
|                                                               | |  
+---------------------------------------------------------------+ |
|                       SCHC CTEC Padding                       | v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|                                                               |
|                             ICV                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="set-of-rules-sor-for-diet-esp"><name>Set of Rules (SoR) for Diet-ESP</name>

<t>SCHC SoR are predefined sets of instructions that specify how to compress and decompress the header fields of an ESP packet. The identification of a particular SoR will follow the specification in <xref target="I-D.ietf-schc-architecture"/>.</t>

<t>A rule describes all the header fields required for a certain transformation (e.g., compression, decompression, fragmentation, reassembly, etc). The fields are identified by a Field ID (FID). Fields may include a Direction Indicator (DI), which in Diet-ESP is set to Up for an outbound SA and Down for an inbound SA. Each field also contains a Field Position parameter that is set to 1, unless specified otherwise.</t>

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

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

<t>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 Algorythm 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 SoR for the IIPC from the agreed Traffic Selectors is indicated by the variable iipc_profile.</t>

<texttable title="Set of Variables to establish Diet-ESP SCHC sessions 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'>Stratum</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 Trafic 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>SCHC padding</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>SCHC padding:</dt>
  <dd>
    <t>indicates that the SCHC padding bits are generated accordingly.</t>
  </dd>
</dl>

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

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

<t>When iipc_profile is set to "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-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 (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-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="security-considerations"><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 CAD Value, DSCP CAD 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 CAD 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 LSB must be sufficiently large to satisfy the condition MAX_SPI &lt;= 2**LSB. The SPI may assume various LSB values; however, 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>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>We would like to thank Laurent Toutain for his guidance on SCHC. Robert Moskowitz for inspiring the name "Diet-ESP" from Diet-HIP. The authors would like to acknowledge the support from Mitacs through the Mitacs Accelerate program.</t>

</section>


  </middle>

  <back>


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


<?line 644?>

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

<t>This appendix provides the details of the SCHC rules defined for Diet-ESP compression, alongside an explanation and an example outcome.</t>

<section anchor="json-representation-of-schc-rules-for-diet-esp-header-compression"><name>JSON Representation of SCHC Rules for Diet-ESP Header Compression</name>

<t>The JSON file defines a set of rules within the SCHC_Context that are used for compressing and decompressing ESP headers. Each rule has a RuleID, a Description, and a set of Fields. Each field specifies how a particular part of the packet should be handled during compression or decompression. Note that the RuleID can be set by the user in any numeric order.
The rules include all the compression_levels, including IIPC, CTEC, and EEC as defined in the Terminology section.</t>

<figure><sourcecode type="json"><![CDATA[
[
  {
    "RuleIDValue": 1,
    "RuleIDLength": 8,
    "Compression": [
      {
        "FID": "ESP.SPI",
        "TV": 5,
        "MO": "equal",
        "CDA": "not-sent"
      },
      {
        "FID": "ESP.SEQ",
        "TV": 1,
        "MO": "MSB",
        "MO.VAL": 16,
        "CDA": "LSB"
      }
    ]
  },
  {
    "RuleIDValue": 2,
    "RuleIDLength": 8,
    "Compression": [
      {
        "FID": "UDP.DEV_PORT",
        "TV": 123,
        "MO": "MSB",
        "MO.VAL": 12,
        "CDA": "LSB"
      },
      {
        "FID": "UDP.APP_PORT",
        "TV": 4567,
        "MO": "MSB",
        "MO.VAL": 12,
        "CDA": "LSB"
      },
      {
        "FID": "UDP.LEN",
        "TV": 0,
        "MO": "ignore",
        "CDA": "compute-length"
      },
      {
        "FID": "UDP.CKSUM",
        "TV": 0,
        "MO": "ignore",
        "CDA": "compute-checksum"
      }
    ]
  },
  {
    "RuleIDValue": 0,
    "RuleIDLength": 0,
    "schc_header": [
      {
        "FID": "SCHC.NXT",
        "TV": [17, 50, 41],
        "MO": "equal",
        "CDA": "not-sent"
      }
    ]
  },
  {
    "RuleIDValue": 4,
    "RuleIDLength": 8,
    "Compression": [
      {
        "FID": "IPV6.DEV_PREFIX",
        "TV": "ff02::5678",
        "MO": "equal",
        "CDA": "value-sent"
      },
      {
        "FID": "IPV6.APP_PREFIX",
        "TV": "2001:db8::1000",
        "MO": "equal",
        "CDA": "value-sent"
      }
    ]
  },
  {
    "RuleIDValue": 5,
    "RuleIDLength": 8,
    "Compression": [
      {
        "FID": "ESP.NXT",
        "TV": 41,
        "MO": "equal",
        "CDA": "not-sent"
      }
    ]
  }
]

]]></sourcecode></figure>

</section>
<section anchor="example-outcome"><name>Example Outcome</name>

<section anchor="input-packet"><name>Input Packet</name>

<t>The following packet undergoes processing based on the SCHC Diet-ESP profile:</t>

<t><list style="symbols">
  <t><strong>IPv6 Header</strong>:
  <list style="symbols">
      <t><spanx style="verb">Source Address</spanx>: <spanx style="verb">2001:db8::1000</spanx></t>
      <t><spanx style="verb">Destination Address</spanx>: <spanx style="verb">ff02::5678</spanx></t>
      <t>Other attributes include <spanx style="verb">Payload Length: 18</spanx>, <spanx style="verb">Next Header: UDP</spanx>, and <spanx style="verb">Hop Limit: 64</spanx>.</t>
    </list></t>
  <t><strong>UDP Header</strong>:
  <list style="symbols">
      <t><spanx style="verb">Source Port</spanx>: <spanx style="verb">123</spanx></t>
      <t><spanx style="verb">Destination Port</spanx>: <spanx style="verb">4567</spanx></t>
      <t><spanx style="verb">Length</spanx>: <spanx style="verb">18</spanx></t>
      <t><spanx style="verb">Checksum</spanx>: <spanx style="verb">0x6bc9</spanx></t>
    </list></t>
  <t><strong>Payload</strong>:
  <list style="symbols">
      <t>10 bytes sample Data: <spanx style="verb">b'U\xe2(\x88\xbf\xf9\xd91\x08\xc5'</spanx></t>
    </list></t>
</list></t>

</section>
<section anchor="compression-process"><name>Compression Process</name>

<t><list style="numbers">
  <t><strong>UDP Header Compression</strong>:
  <list style="symbols">
      <t>Initial size: <spanx style="verb">8 bytes</spanx>.</t>
      <t>Compressed using the UDP-specific rules from the Diet-ESP profile.</t>
      <t>Ports are encoded as LSB fields, reducing the size to <spanx style="verb">2 bytes</spanx>.</t>
    </list></t>
  <t><strong>IPv6 Header Compression</strong>:
  <list style="symbols">
      <t>Initial size: <spanx style="verb">40 bytes</spanx>.</t>
      <t>Source and destination addresses are compressed using value-sent rules based on matching prefixes.</t>
      <t>Final compressed size: <spanx style="verb">17 bytes</spanx>.</t>
    </list></t>
  <t><strong>ESP Header Compression</strong>:
  <list style="symbols">
      <t>Initial size: <spanx style="verb">12 bytes</spanx>.</t>
      <t>SPI is not transmitted (<spanx style="verb">not-sent</spanx> CDA), and SEQ is compressed using the LSB technique.</t>
      <t>Final compressed size: <spanx style="verb">2 bytes</spanx>.</t>
    </list></t>
  <t><strong>ESP Clear Text Compression</strong>:  <list style="symbols">
      <t>The ESP.NXT field (Next Header) is compressed using the match-mapping CDA:
Rule: The ESP.NXT value is matched to a single value (41 for the IPv6 Next Header).
CDA: mapping-sent is used to send only the mapped index.</t>
    </list></t>
  <t><strong>Payload Handling</strong>:
  <list style="symbols">
      <t>The payload is not compressed. Further compression may be possible with additional SCHC rules.</t>
    </list></t>
</list></t>

</section>
<section anchor="decompression-process"><name>Decompression Process</name>

<t>The decompression reverses the steps:</t>

<t><list style="numbers">
  <t><strong>ESP Header Reconstruction</strong>:
  <list style="symbols">
      <t>SPI is restored using the fixed value from the rule (TV=5).</t>
      <t>SEQ is reconstructed from the LSB field.</t>
    </list></t>
  <t><strong>ESP Clear Text Reconstruction</strong>:  <list style="symbols">
      <t>The ESP.NXT field is restored using the mapping-sent rule, where the value 41 (Next Header for IPv6) is retrieved from the mapping.</t>
    </list></t>
  <t><strong>UDP Header Reconstruction</strong>:
  <list style="symbols">
      <t>Ports are restored using the compressed LSB values.</t>
      <t>Length and checksum fields are calculated using compute-length and compute-checksum CDA.</t>
    </list></t>
  <t><strong>IPv6 Header Reconstruction</strong>:
  <list style="symbols">
      <t>Prefixes are restored using the value-sent fields in the rule.</t>
    </list></t>
  <t><strong>Payload Restoration</strong>:
  <list style="symbols">
      <t>The payload is directly restored, as it was not compressed.</t>
    </list></t>
</list></t>

</section>
<section anchor="final-output-packet"><name>Final Output Packet</name>

<t>After reconstruction, the packet is identical to the original input:</t>

<t><list style="symbols">
  <t><strong>IPv6 Header</strong>:
  <list style="symbols">
      <t><spanx style="verb">Source Address</spanx>: <spanx style="verb">2001:db8::1000</spanx></t>
      <t><spanx style="verb">Destination Address</spanx>: <spanx style="verb">ff02::5678</spanx></t>
      <t><spanx style="verb">Payload Length</spanx>: <spanx style="verb">18</spanx></t>
      <t><spanx style="verb">Next Header</spanx>: <spanx style="verb">UDP</spanx></t>
      <t><spanx style="verb">Hop Limit</spanx>: <spanx style="verb">64</spanx>.</t>
    </list></t>
  <t><strong>UDP Header</strong>:
  <list style="symbols">
      <t><spanx style="verb">Source Port</spanx>: <spanx style="verb">123</spanx></t>
      <t><spanx style="verb">Destination Port</spanx>: <spanx style="verb">4567</spanx></t>
      <t><spanx style="verb">Length</spanx>: <spanx style="verb">18</spanx></t>
      <t><spanx style="verb">Checksum</spanx>: <spanx style="verb">0x6bc9</spanx>.</t>
    </list></t>
  <t><strong>Payload</strong>:
  <list style="symbols">
      <t>Data: <spanx style="verb">b'U\xe2(\x88\xbf\xf9\xd91\x08\xc5'</spanx>.</t>
    </list></t>
</list></t>

<t>This example demonstrates the efficiency and accuracy of the Diet-ESP profile when applied to compress and decompress network packets.</t>

<t><list style="symbols">
  <t><strong>Efficiency</strong>: The SCHC rules reduce packet overhead:
  <list style="symbols">
      <t>The UDP header is compressed from <spanx style="verb">8 bytes</spanx> to <spanx style="verb">2 bytes</spanx>.</t>
      <t>The IPv6 header is reduced from <spanx style="verb">40 bytes</spanx> to <spanx style="verb">17 bytes</spanx>.</t>
      <t>The ESP header size is decreased from <spanx style="verb">12 bytes</spanx> to <spanx style="verb">2 bytes</spanx>.</t>
      <t>The ESP.NXT field is eliminated from transmission (<spanx style="verb">1 byte</spanx> reduction).</t>
    </list>
These reductions are particularly beneficial in constrained environments such as Low-Power Wide-Area Networks (LPWANs).</t>
  <t><strong>Accuracy</strong>: The decompression process fully reconstructs the original packet, ensuring no loss of information.</t>
  <t><strong>Applicability</strong>: By leveraging these rules, the Diet-ESP profile addresses the challenges of transmitting data efficiently in constrained networks, optimizing bandwidth utilization while retaining compatibility with standard protocols.</t>
</list></t>

</section>
<section anchor="github-repository-diet-esp-schc-implementation"><name>GitHub Repository: Diet-ESP SCHC Implementation</name>

<t>The source code for the implementation of the Diet-ESP profile, including the compression and decompression logic using the SCHC rules, is available on GitHub. Access the code at the following link:</t>

<t>GitHub Repository: <eref target="https://github.com/mglt/pyesp/tree/master/examples/draft-diet-esp.py">Diet-ESP SCHC Implementation</eref></t>

<t>This repository contains the rule definitions, examples, and source code for implementing and testing the Diet-ESP profile. Refer to the README file for setup instructions and usage guidelines.</t>

</section>
</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1923LbSJbgO74CKz+MVE3Sutnl0kxvN0uSy5qWbI1Ju7qn
q9sGQZDEGATYAKhLWa7o39iI3Yh93d/Y/ZP+kj23vAKkaFs9s7uxqoiyBCQy
T548efLcs9vtBnVaZ8lReDq4DF8k0Tgpw+NiviiTqkqLPLwsi0maJUE0GpXJ
FTR7cXwZjIs4j+bw0biMJnU3TepJN11USTxPumP4q5tUi+7uYZAuyqOwLpdV
vb+7+93ufhCVSXQUDpJ4Wab1bXA9PQrPLum74MM1/J7XSZnD9yfYbxBH9VFY
1eOgquG7Obw/HT4PgkV6FIRhXcRH4W1Swa9VUUKDSaX/vp2bP4NoWc+KEj/B
n678G4ZpDi1OehfpNFpmtX7MEzuJ8jTJQv9lUQLEp2UaV1WR66fJPEozQAZ9
05vzN79NpFkvLubtg1/0whdRHc1Tb/CLqLyN5v47Gvu4yOOiHKdR+CZPr5Ky
QjR6cMzp896MPv8tPgMQ5LNeHLXDMuiFx//rf1SLZEwotMEZRDmsc8vrjSGq
qIdenHAHv20DJwxdgMIfe2G/vi6KsQfOP/fCH9MsSwFD3vuN4bnm73sRfd8K
jk8m4Xm6bNBIepvmU+fNWgKZRWWRjXtZutyAOIa98IfldJrMC389hsUojarm
Wxr7/OKNP+xUGv42n/fSSdrL5sveOAnbhz3uhd8X5TzKc2/U46is6iRvvKVR
NaqjpA6/L5M5NBz+65kPSRyNit/WP6c9+Kh9eMT0IJ6lefSzvysA31fpuPmW
APihKKZZEp6fHzd2ZSUf9JBN/XYq+2EeBGk+wbnUADpyh1eLJB8cvzhmTmFz
jToqpwmwolldL6qjx4+naT1bjrCTxwV8BAPE3I45qeoojMLLW+glD7FVtyqW
ZZyE6XyRIX5qGBhfTUJquz3ABzGSb53c1C2seCcIgm63G0YjYIdRXAfBcJaE
wIqX2FsIWyuG1U2q8AQ5MLDzThjl97D1cBv5+U5YA7MIY3kPXRBTfozfwsP5
Mk9jgrYKlxVS/L2wwnRgUju9IBCg5+l4DKdI8CgMXyd/WaZEInUV5gXjgSfz
IbkNr2EnVuHWxZvBcKvD/4YvX9Hvr0//5c3Z69MT/H3won9+rn8JpMXgxas3
5yfmN/Pl8auLi9OXJ/wxPA2dR8HWRf8PW4iwcbj16nJ49upl/3wLSBIwk1YG
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
cEGpt3uOMkI0tcMDesH/Bqr87HeJ3AAA

-->

</rfc>

