<?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 RFC7296 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
<!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 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 RFC8376 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8376.xml">
<!ENTITY I-D.ietf-schc-architecture SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-schc-architecture.xml">
<!ENTITY I-D.mglt-ipsecme-ikev2-diet-esp-extension SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.mglt-ipsecme-ikev2-diet-esp-extension.xml">
<!ENTITY RFC5996 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5996.xml">
<!ENTITY I-D.mglt-ipsecme-dscp-np SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.mglt-ipsecme-dscp-np.xml">
<!ENTITY RFC8750 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8750.xml">
<!ENTITY RFC6437 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6437.xml">
<!ENTITY RFC6864 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6864.xml">
<!ENTITY RFC9333 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9333.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-ipsecme-diet-esp-02" 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" role="editor">
      <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="2024" month="October" day="21"/>

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

    <abstract>


<?line 68?>

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

<t>Diet-ESP assumes the Traffic Selectors of the Security Association (SA) can be expressed by a single IKEv2 Traffic Selector Payload <xref section="3.13.1" sectionFormat="comma" target="RFC7296"/>. More specifically, the Traffic Selectors are defined with a single type of IP addresses (IPv4 or IPv6), a single IP range, a single protocol (such as UDP, TCP, or not relevant), a single port range and multiple DSCP numbers.</t>



    </abstract>



  </front>

  <middle>


<?line 76?>

<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>Encapsulating Security Payload (ESP) <xref target="RFC4303"/> protocol is part of the IPsec<xref target="RFC4301"/> suite protocols and provides 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 an ESP Header, an ESP Payload and an Integrity Check Value (ICV). and ESP Trailer. The ESP Payload is encrypted and its corresponding clear text includes ESP Data and an ESP Trailer. The ESP Data contains either the original IP payload or, in tunnel mode, the full encapsulated IP packet. The ESP Trailer, placed at the end of the ESP Payload, includes fields such as Padding, Pad Length to ensure proper alignment and Next Header to indicate the protocol following the ESP Header. The ICV is calculated over the ESP Header, the ESP Payload, and trailer to maintain packet integrity. To better understand ESP, the reader might be interested in reading Minimal ESP <xref target="RFC9333"/>, a simplified version of ESP.</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) Diet-ESP for compression/decompression (C/D) ESP packets as represented in <xref target="fig-esp"/>, using Static Context Header Compression (SCHC) <xref target="RFC8724"/>. Compression with SCHC is based on using a set of Rules (SoR), which constitutes the Context of SCHC C/D. Since we are using IPsec, this Context 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, any information that can be generated from the received compressed packet and the SCHC Context is not sent on the wire,  thus reducing the ESP packet size on the wire.</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 (SN)                     | |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 ESP Header Compression profile (EHCP) Architecture with the application of SCHC at various layers of the IPsec stack -- also called SCHC strata -- as defined below:</t>

<t><list style="numbers">
  <t>Inner IP Compression (IIPC): The SoR used in this SCHC stratum apply 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. If no compression of the inner packet is possible, the resulting SCHC packet contains the uncompressed IP packet, as per <xref section="7.2" sectionFormat="comma" target="RFC8724"/>.</t>
  <t>Clear Text ESP Compression (CTEC): This SCHC stratum contains SoR that compress the fields of the ESP Payload, right before being encrypted, as the encapsulated traffic in tunnel mode.</t>
  <t>Encrypted ESP Compression (EEC): This SCHC stratum contains SoR that compress the ESP fields that remain visible after encryption, that is, the ESP Header.</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>Each SoR indicates the ESP header fields to be matched by the rules. The SCHC instances define how the SCHC Context is initialized from the SA and generate the corresponding SCHC rules (i.e., RuleID, SCHC MAX_PACKET_SIZE, new SCHC Compression/Decompression Actions (CDA), and fragmentation). The appendix provides illustrative examples of applications of EHCP 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 in the ESP packet structure where the Set of Rules of a SCHC instance are applied for compression and decompression and applied.</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 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 SCHC rule, as defined in <xref target="RFC8724"/>, Section 5.1.</t>
  </dd>
  <dt>SCHC Context:</dt>
  <dd>
    <t>The set of rules shared between communicating entities, as defined in <xref target="RFC8724"/>, Section 5.3.</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="schc-integration-into-the-ipsec-stack"><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>Figure <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>Rules for compression are derived from parameters associated with the Security Association (SA) and agreed upon via IKEv2 <xref target="RFC7296"/>, as well as specific compression parameters defined for IKEv2 in <xref target="I-D.mglt-ipsecme-ikev2-diet-esp-extension"/>.</t>

<t>Upon establishing the SA, Diet-ESP uses the parameters listed in Table <xref target="tab-ehc-ctx-esp"/> for derivation of the SoR applicable to each SCHC stratum. The collection of rules are then used for the SCHC Context initialization. The reference column in Table <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: IIPC, CTEC, and 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>Note that additional compression could be performed, especially on the inner IP packet—for example, to include the TCP layer. However, this profile limits the scope of the compression to the inner IP headers and UDP headers when available. 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 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" anchor="fig-arch"><artwork align="center"><![CDATA[
                 +--------------------------------+ 
                 | ESP Header Compression Context |
                 |   - 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 Payload)   |+--------- CTEC layer --------+| (ESP Payload)   |
+-----------------+      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>

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

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

<t>A SCHC compressed 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>The Figure <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. In this format:</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 strata)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ------
|                 SCHC CTEC Header (CTEC strata)                | |    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Conf.
|                 SCHC IIP Header (IIPC strata)                 | |Cov-
+---------------------------------------------------------------+ |ered*
|               Inner IP Payload Data* (variable)               | |    |
~                                                               ~ |    |
|                                                               | |    |
+---------------------------------------------------------------+ |    |
|                       SCHC CTEC Padding                       | v    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>Similarly to the SA, Rules are directional and the Direction Indicator (DI) is set to Up for outbound SA and Down for inbound SA. Each Rule also contains a Field Position parameter that is set to 1, unless specified otherwise.</t>

</section>
<section anchor="attributes-for-rules-generation"><name>Attributes for Rules Generation</name>

<t>The list of attributes used for the Rules generation is shown in Table <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>The compression of the Inner IP Packet is based on the attributes that are derived from the negotiated Traffic Selectors TSi/TSr, as described in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>. The Traffic Selectors may result in a quite complex expression, and this specification restricts that complexity. In particular, Diet-ESP restricts the Traffic Selector to a single type of IP address (i.e., IPv4 or IPv6), a single protocol (such as UDP, TCP, or not relevant), a single port range, and multiple DSCP numbers. Such simplification corresponds to the expression of an individual Traffic Selector Payload <xref section="3.13.1" sectionFormat="comma" target="RFC7296"/>.</t>

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

<figure title="EHCP related parameters" anchor="tab-ehc-ctx-esp"><artwork align="center"><![CDATA[
+===================+=============================+===========+=======+
| EHC Context       | Possible Values             | Reference | C / D |
+===================+=============================+===========+=======+
| iipc_profile      | "diet-esp", "uncompress"    | ThisRFC   | N/A   |
| dscp_cda          | "uncompress", "lower", "sa" | ThisRFC   | IIPC  | 
| ecn_cda           | "uncompress", "lower"       | ThisRFC   | IIPC  | 
| flow_label_cda    | "uncompress", "lower",      | ThisRFC   | IIPC  |
|                   | "generated", "zero"         |           |       | 
| ts_ip_version     | "IPv4-only IPv6-only"       | RFC7296   | IIPC  |
| ts_ip_src_start   | IP4 or IPv6 address         | RFC7296   | IIPC  |
| ts_ip_src_end     | IP4 or IPv6 address         | RFC7296   | IIPC  |
| ts_ip_dst_start   | IPv4 or IPv6 address        | RFC7296   | IIPC  |
| ts_ip_dst_end     | IPv4 or IPv6 address        | RFC7296   | IIPC  |
| ts_proto          | TCP, UDP, UDP-Lite, SCTP,   | RFC7296   | IIPC  |  
|                   | ANY, ...                    |           |       |
| ts_port_src_start | Port number                 | RFC7296   | IIPC  |
| ts_port_src_end   | Port number                 | RFC7296   | IIPC  |
| ts_port_dst_start | Port number                 | RFC7296   | IIPC  |
| ts_port_dst_end   | Port number                 | RFC7296   | IIPC  |
| dscp_list         | list of DSCP numbers        | RFCYYYY   | IIPC  |
+-------------------+-----------------------------+-----------+-------+
| alignment         | "8 bit", "16 bit", "32 bit" | ThisRFC   | CTEC  |
|                   | "64 bit"                    |           |       |
| ipsec_mode        | "Tunnel", "Transport"       | RFC4301   | CTEC  | 
| tunnel_ip         | IPv6 address                | RFC4301   | CTEC  |
| esp_encr          | ESP Encryption Algorithm    | RFC4301   | CTEC  |
+-------------------+-----------------------------+-----------+-------+
| esp_spi           | ESP SPI                     | RFC4301   | EEC   |
| esp_spi_lsb       | 0-32                        | ThisRFC   | EEC   |
| esp_sn            | ESP Sequence Number         | RFC4301   | EEC   |
| esp_sn_lsb        | 0-64                        | ThisRFC   | EEC   |
+-------------------+-----------------------------+-----------+-------+
]]></artwork></figure>

<t>Any parameter starting with "ts_" is associated with the Traffic Selectors of the SA. The notation is introduced by this specification but the definition of the parameters is defined in <xref target="RFC4301"/> and <xref target="RFC7296"/>.</t>

<t>This specification limits the expression of the Traffic Selector to be of the form (IP source range, IP destination range, Port source range, Port destination range, Protocol ID list, DSCP list). This limits the original flexibility of the expression of TS, but provides sufficient flexibility.</t>

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

<dl>
  <dt>iipc_profile:</dt>
  <dd>
    <t>designates the profile used by IIPC. When set to "uncompress" IIPC is not performed. This specification describes IIPC that corresponds to the "diet-esp" profile.</t>
  </dd>
  <dt>flow_label_cda:</dt>
  <dd>
    <t>indicates 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 pakets have different versions. "generated" indicates that the fields is generated by the receiving party. In that case, the decompressed value may take a different value its original value. "zero" indicates the field is set to zero.</t>
  </dd>
  <dt>dscp_cda:</dt>
  <dd>
    <t>indicates how the DSCP values of the inner IP packet are generated. (See flow_label_cda). "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 how the ECN values of the inner IP packet are generated. (See flow_label_cda).</t>
  </dd>
  <dt>ts_ip_version:</dt>
  <dd>
    <t>designates the IP version of the Traffic Selectors and 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.</t>
  </dd>
  <dt>ts_ip_src_start:</dt>
  <dd>
    <t>designates the starting value range of source IP addresses of the inner packet and has the same meaning as the Starting Address field of the Traffic Selector payload defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
  </dd>
  <dt>ts_ip_src_end:</dt>
  <dd>
    <t>designates 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 Traffic Selector payload defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
  </dd>
  <dt>ts_port_src_start:</dt>
  <dd>
    <t>designates the starting value of the port range of the inner packet and has the same meaning as the Start Port field of the Traffic Selector payload defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
  </dd>
  <dt>ts_port_src_end:</dt>
  <dd>
    <t>designates the starting value of the port range of the inner packet and has the same meaning as the End Port field of the Traffic Selector payload defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
  </dd>
</dl>

<t>IP addresses and ports are defined as a range and compressed using the LSB.
For a range defined by start and end values, msb( start, end ) is defined as the function that returns the 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>ts_proto:</dt>
  <dd>
    <t>designates the list of Protocol ID field, whose meaning is defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>. This profile considers the specific protocols values "TCP", "UDP", "UDP-Lite", "SCTP", "OTHER" and "ANY". "OTHER" designates any protocol values that are not in :"TCP", "UDP", "UDP-Lite", "SCTP. "ANY" as defined in <xref section="3.13" sectionFormat="comma" target="RFC5996"/> and designates any possible values.</t>
  </dd>
  <dt>dscp_list:</dt>
  <dd>
    <t>designates the list of DSCP values with the same meaning as the List of DSCP Values defined in <xref target="I-D.mglt-ipsecme-dscp-np"/>. These are not Traffic Selector, but the compression mandates the packets takes one of these listed DSCP value.</t>
  </dd>
  <dt>alignment:</dt>
  <dd>
    <t>indicates the byte alignement supported by the OS for the ESP extension. By default, the alignement is 32 bit for IPv6, but some systems may also support an 8 bit alignement. Note that when a block cipher such as AES-CCM is used, an 128 bit alignment is overwritten by the block size.</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 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 encryption algorithm used. For the purpose of compression it is RECOMMENDED to use algorithms that already compresse their IV <xref target="RFC8750"/>.</t>
  </dd>
  <dt>esp_spi:</dt>
  <dd>
    <t>designates the Security Policy 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/>
  <dd>
    <t>This parameter is defined by this specification and can take the following values 0, 1, 2, 4 respectively meaning that the compressed SPI will consist of the esp_spi_lsb LSB bytes of the original SPI.
A value of 4 for esp_spi_lsb will leave the SPI unchanged.</t>
  </dd>
  <dt>esp_sn:</dt>
  <dd>
    <t>designates the 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 and is defined by this specification. It works similarly to 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>

<figure title="EHCP ESP related parameter" anchor="tab-cda"><artwork align="center"><![CDATA[
+========================+=============+======================+
| Action                 | Compression | Decompression        |
+========================+=============+======================+
| lower                  | elided      | Get from lower layer |
| generated (Flow Label) | elided      | Compute flow label   |
| checksum               | elided      | Compute checksum     |
| ESP padding            | elided      | Compute padding      |
| hop limit              | elided      | Get from lower layer |
| SCHC padding           | send        | Compute padding      |
+------------------------+-------------+----------------------+
]]></artwork></figure>

<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 "uncompress", the packet is uncompressed. 
When iipc_profile is set to "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:
* 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".
* 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".
* 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>

<t>ECN values are compressed according to the ecn_cda value:
* If ecn_cda is set to "uncompress", the ECN field 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".
* 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>

<t>Flow label is compressed according to the flow_label_cda value: 
* 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".
* 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. 
* If flow_label_cda is set to "generated", the Flow Label 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". 
* 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>

<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: 
* 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".
* 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>

<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 IP Header is an IPv6 Header, the Identification are 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>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 Data Byte alignment</name>

<t>SCHC operates on bits, while protocols like 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 values 0-7. SCHC_padding are randomy generated. Let's call the complementing bits, the bits that are needed to have a byte boundary. If the complementing bits are less or equal to 2 bits, the padding will result in adding an extra byte.</t>

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

<t>The Clear Text ESP Compression is applied to compress the unencrypted ESP fields, including the ESP Payload Data and the Next Header field, which indicates the type of the inner packet.</t>

<t>SCHC Compression efficiently compresses the Next Header field, reducing overhead and aligning the packet to byte boundaries using SCHC Padding. After this, the SCHC Pad Length field is added. If required by the encryption algorithm, additional ESP Padding and Pad Length fields are introduced to ensure the packet fits the specified encryption block size.</t>

<t>In tunnel mode, the Next Header field is elided as the inner IP packet (either IPv4 or IPv6) is determined by the Traffic Selector, which is expressed by a single Traffic Selector Payload in the SA.</t>

<t>The ESP Padding and Pad Length fields are reduced by the SCHC compression rule. This process minimizes the size of the Clear Text ESP packet by eliminating unnecessary padding, while maintaining proper alignment for transmission. The ESP Padding and Pad Length may differ from the decompressed versions due to alignment requirements, which depend on the maximum of the encryption block alignment or the IPv6 Header alignment (32 bits). Since the padding is stripped by the IPsec process, these differences do not impact packet processing. This is expressed as FL is defined by the type that is to (Pad Length + 1 ) * 8 bits, TV is unset, MO is set to "ignore" and CDA is set to padding.</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>If the esp_encr considers implicit IV <xref target="RFC8750"/>, Sequence Numbers are not compressed. Otherwise, SN are 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_spi_lsb)" and CDA is set to "LSB".</t>

<t>Note that the use of implicit IV always result in a better compression as a 64 bit IV to be sent while compression of the SN alone results at best in a reduction of 32 bits.</t>

<t>The IPv6 Next Header field or the IPv4 Protocol that contains the "ESP" value is changed to "SCHC".</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 differ 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 |
+--------------------+-----------+
| "uncompress"       | ThisRFC   |
| "diet-esp"         | ThisRFC   |
]]></artwork></figure>

<t>We request IANA to create the following registried 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>There is no specific considerations associated with the profile other than the security considerations of ESP <xref target="RFC4303"/> and those of SCHC <xref target="RFC8724"/>.</t>

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

<t>We would like to thank Laurent Toutain for its 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">

&RFC7296;
&RFC2119;
&RFC8174;
&RFC4303;
&RFC4301;
&RFC8724;
&I-D.ietf-ipsecme-ikev2-diet-esp-extension;
&RFC8376;
&I-D.ietf-schc-architecture;
&I-D.mglt-ipsecme-ikev2-diet-esp-extension;
&RFC5996;
&I-D.mglt-ipsecme-dscp-np;
&RFC8750;
&RFC6437;
&RFC6864;


    </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) RFC8724</title>
    <author >
      <organization></organization>
    </author>
    <date year="n.d."/>
  </front>
</reference>
&RFC9333;


    </references>


<?line 625?>

<section anchor="json-format-context"><name>JSON format Context</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.
Each rule is defined with a compression_level, indicating which level of the ESP packet structure (IIPC, CTEC, or EEC) the rule applies to, as defined in the Terminology section.</t>

<figure><artwork><![CDATA[
{
  "rules": [
    {
      "rule_id": 1,
      "compression_level": "IIPC",
      "fields": [
        {
          "field": "IP Version",
          "FL": 3,
          "TV": "IPv6",
          "MO": "equal",
          "CDA": "not-sent"
        },
        {
          "field": "Traffic Class DSCP",
          "FL": 6,
          "TV": [0],
          "MO": "ignore",
          "CDA": "sent-value"
        },
        {
          "field": "Flow Label",
          "FL": 20,
          "TV": null,
          "MO": "ignore",
          "CDA": "lower"
        },
        {
          "field": "Payload Length",
          "FL": 16,
          "TV": null,
          "MO": "ignore",
          "CDA": "lower"
        },
        {
          "field": "Next Header",
          "FL": 8,
          "TV": null,
          "MO": "ignore",
          "CDA": "sent-value"
        },
        {
          "field": "Hop Limit",
          "FL": 8,
          "TV": null,
          "MO": "ignore",
          "CDA": "lower"
        },
        {
          "field": "Source Address",
          "FL": 128,
          "TV": "IPv6",
          "MO": "MSB",
          "CDA": "LSB"
        },
        {
          "field": "Destination Address",
          "FL": 128,
          "TV": "IPv6",
          "MO": "MSB",
          "CDA": "LSB"
        }
      ]
    },
    {
      "rule_id": 2,
      "compression_level": "CTEC",
      "fields": [
        {
          "field": "ESP Padding",
          "FL": 8,
          "TV": null,
          "MO": "ignore",
          "CDA": "padding"
        },
        {
          "field": "Pad Length",
          "FL": 8,
          "TV": null,
          "MO": "ignore",
          "CDA": "padding"
        },
        {
          "field": "Next Header",
          "FL": 8,
          "TV": null,
          "MO": "ignore",
          "CDA": "sent-value"
        },
        {
          "field": "SCHC Padding",
          "FL": 4,
          "TV": null,
          "MO": "ignore",
          "CDA": "send"
        }
      ]
    },
    {
      "rule_id": 3,
      "compression_level": "EEC",
      "fields": [
        {
          "field": "SPI",
          "FL": 32,
          "TV": null,
          "MO": "MSB(4 - esp_spi_lsb)",
          "CDA": "LSB"
        },
        {
          "field": "Sequence Number",
          "FL": 32,
          "TV": null,
          "MO": "MSB(4 - esp_sn_lsb)",
          "CDA": "LSB"
        },
        {
          "field": "Next Header",
          "FL": 8,
          "TV": null,
          "MO": "ignore",
          "CDA": "sent-value"
        }
      ]
    }
  ],
}
]]></artwork></figure>

</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

