<?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.6.17 (Ruby 2.7.0) -->


<!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 RFC4301 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4301.xml">
<!ENTITY RFC4303 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4303.xml">
<!ENTITY RFC8724 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8724.xml">
<!ENTITY RFC8750 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8750.xml">
<!ENTITY RFC7296 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
<!ENTITY I-D.mglt-ipsecme-ts-dscp SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.mglt-ipsecme-ts-dscp.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 RFC4309 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4309.xml">
]>


<rfc ipr="trust200902" docName="draft-mglt-ipsecme-diet-esp-10" 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="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="2023" month="June" day="29"/>

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

    <abstract>


<t>ESP Header Compression Profile (EHCP) defines a profile to compress communications protected with IPsec/ESP.</t>



    </abstract>



  </front>

  <middle>


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

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

<t>This document defines a profile to compress IPsec/ESP <xref target="RFC4301"/> / <xref target="RFC4303"/> traffic represented by <xref target="fig-esp"/>.</t>

<figure title="Top-Level Format of an ESP Packet" anchor="fig-esp"><artwork align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ----
|               Security Parameters Index (SPI)                 | ^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>The main  principle is to avoid sending information that has already been shared by the peers. 
As depicted in <xref target="fig-arch"/>, this profiles defines two levels of compression.
The first level is the Clear Text ESP Compression (CTE C)  compresses all fields that will later be encrypted by ESP - that is the Payload Data, the Padding, the  Pad Length and the Next Header. 
The second is the Encrypted ESP Compression (EE C) compresses ESP remaining fields that is the Security Parameters Index (SPI) and  Sequence Number (SN).</t>

<t>The decompression of the inbound packet follows the reverse path the Encrypted ESP Decompression (EE D) decompressed the unencrypted ESP header fields while the Clear Text ESP Decompression (CT D) is performed once the ESP packet is decrypted.</t>

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

<t>The CTE C/D and EE C/D are expressed via the Generic Framework for Static Context Header (SCHC) <xref target="RFC8724"/>.
The SCHC rules are derived from the ESP Compression Header Context which includes the Security Association (SA) as well as an additional parameters.
This is the main content of this document.</t>

<t>It is expected that all necessary arguments are agreed via IKEv2 <xref target="I-D.mglt-ipsecme-ikev2-diet-esp-extension"/>.</t>

<t>In some case, additional compression may occur on the inner IP packet before being processed by IPsec/ESP as well as over the Outer IP packet.
Such compression, decompression are outside the scope of this document.</t>

<figure title="ESP Compression Architecture" anchor="fig-arch"><artwork align="center"><![CDATA[
              +--------------------------------+ 
              | ESP Header Compression Context |
              |   - Security Association       |
              |   - Additional Parameters      |
              +--------------------------------+    
                               |        
                               |
+-----------------+            |             +------------------+  
| Inner IP Packet |            |             | Inner IP Packet  | 
+-----------------+            |             +------------------+ 
| Clear Text ESP  |            v             | Clear Text ESP   |
+-----------------+<-- Clear Text ESP C/D -->+------------------+
| Encrypted ESP   |            v             | Encrypted ESP    |
+-----------------+<-- Encrypted ESP C/D  -->+------------------+
| Outer IP Packet |                          | Outer IP Packet  |
+-----------------+                          +------------------+

]]></artwork></figure>

</section>
<section anchor="esp-header-compression-context"><name>ESP Header Compression Context</name>

<t>The EHC Context provides the necessary information to generate the SCHC Rules.
Most pieces of information are already available from the negotiated SA <xref target="RFC4301"/>.
Other pieces of information needs to be specifically configured or agreed via other mechanisms like for example <xref target="I-D.mglt-ipsecme-ikev2-diet-esp-extension"/>.<br />
The reference column of <xref target="tab-ehc-ctx-esp"/> indicates how the information is defined.</t>

<t>The Compression / Decompression (C / D) column specifies in which of the compression the parameter is being used.</t>

<t>Note that additional Compression might be performed especially on the inner IP packet - for example, including the TCP layer.
However, this profiles limits the scope of the compression to UDP packets as well as the inner IP header.
We believe that is a reasonable scope for ESP to address both IoT UDP packets as well as large VPN traffic.
If further compression are needed, this should be achieved by sending an IP packet with an SCHC payload where the expected compression is achieved outside ESP.</t>

<t>The following attributes are considered by this EHC Context.
Implementations may consider different expression of the parameters but their behavior is expected to remain compatible with this specification.</t>

<figure title="EHC ESP related parameter" anchor="tab-ehc-ctx-esp"><artwork align="center"><![CDATA[
+===================+==========================+===========+=======+
| EHC Context       | Possible Values          | Reference | C / D |
+===================+==========================+===========+=======+
| alignment         | "8 bit", "32 bit"        | ThisRFC   | CT E  |
| ipsec_mode        | "Tunnel", "Transport"    | RFC4301   | CT E  | 
| tunnel_ip         | IPv4, IPv6 address       | RFC4301   | CT E  |
| esp_spi           | ESP SPI                  | RFC4301   | EE    |
| esp_spi_lsb       | 0, 1, 2, 3, 4*           | ThisRFC   | EE    |
| esp_sn            | ESP Sequence Number      | RFC4301   | EE    |
| esp_sn_lsb        | 0, 1, 2, 3, 4*           | ThisRFC   | EE    |
| esp_encr          | ESP Encryption Algorithm | RFC4301   | CT E  |
| ts_flow_label     | True, False              | ThisRFC   | CT E  | 
| ts_ip_version     | 4, 6                     | ThisRFC   | CT E  |
| ts_ip_src_start   | IP4 or IPv6 address      | ThisRFC   | CT E  |
| ts_ip_src_end     | IP4 or IPv6 address      | ThisRFC   | CT E  |
| ts_ip_dst_start   | IPv4 or IPv6 address     | ThisRFC   | CT E  |
| ts_ip_dst_end     | IPv4 or IPv6 address     | ThisRFC   | CT E  |
| ts_proto_list     | TCP, UDP, ..., 0         | ThisRFC   | CT E  |
| ts_port_src_start | Port number              | ThisRFC   | CT E  |
| ts_port_src_end   | Port number              | ThisRFC   | CT E  |
| ts_port_dst_start | Port number              | ThisRFC   | CT E  |
| ts_port_dst_end   | Port number              | ThisRFC   | CT E  |
| ts_dsp_list       | DSCP number              | RFCYYYY   | CT E  |
+-------------------+--------------------------+-----------+-------+
]]></artwork></figure>

<dl>
  <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 a 8 bit alignement. Note that when a block cipher such as AES-CCM is used, an 8 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 and IPv4 or IPv6 address.</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. 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 esp_spi_lsb will let 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>
  <dt>esp_encr:</dt>
  <dd>
    <t>designates the encryption algorithm used. For the purpose of compression is is RECOMMENDED to use <xref target="RFC8750"/>.</t>
  </dd>
</dl>

<t>ts_ * parameters are associated to the Traffic Selectors of the SA and introduces by this specification.
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 we believe that provides sufficient flexibility.</t>

<dl>
  <dt>ts_flow_label:</dt>
  <dd>
    <t>indicates the Flow Label field of the inner IPv6 or the Identification field of the IPv4 is copied from the outer IP address.</t>
  </dd>
  <dt>ts_ip_version:</dt>
  <dd>
    <t>designates the IP version of the Traffic Selectors and its values is set to 4 when only IPv4 IP addresses are considered and to 6 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.
When the traffic selectors result in a combination of IPv4 and IPv6 addresses, ts_ip_version is undefined.</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"/>.
Note however that in this specification, ts_ip_src_start applies for all agreed Traffic Selector payloads.
When the IP addresses cannot be expressed as a range, that exactly expressed as [ ts_ip_src_start, ts_ip_src_end ], ts_ip_src_start is undefined.</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"/>.
Similarly to ts_ip_src_end, when the IP addresses cannot be expressed as a range, ts_ip_src_end is undefined.</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>
  <dt>ts_proto_list:</dt>
  <dd>
    <t>designates the list of Protocol ID field whose meaning is defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>.</t>
  </dd>
  <dt>ts_dscp_list:</dt>
  <dd>
    <t>designates the list of DSCP values used by the Traffic Selector and have the same meaning as the List of DSCP Values defined in <xref target="I-D.mglt-ipsecme-ts-dscp"/>.</t>
  </dd>
</dl>

<t>Ports and IP addresses and ports are defined as range and compressed using the LSB.
For a range defined by a start and end value, let define msb( start, end ) the function that returns the MSB that remains unchanged while the value evolves between start and end.
Similarly, let define lsb( start, end ) the function that returns the LSB that change while the value evolves between start and end. 
Fnally, let's consider len( x ) the function that returns the number of bits of the bit array x.</t>

<t>We note for convenience:</t>

<t><list style="symbols">
  <t>msb( ip_src ) = msb( ts_ip_src_start, ts_ip_src_end ) the MSB bits of the IP address range.</t>
  <t>msb( ip_dst ) = msb( ts_ip_dst_start, ts_ip_dst_end ) the MSB bits of the IP address range.</t>
  <t>lsb( ip_src ) = msb( ts_ip_src_start, ts_ip_src_end ) the LSB bits of the IP address range.</t>
  <t>lsb( ip_dst ) = msb( ts_ip_dst_start, ts_ip_dst_end ) the LSB bits of the IP address range.</t>
  <t>msb( port_src ) = msb( ts_port_src_start, ts_port_src_end ) the MSB bits of the source port range.</t>
  <t>msb( port_dst ) = msb( ts_port_dst_start, ts_port_dst_end ) the MSB bits of the destination port range.</t>
  <t>lsb( port_src ) = msb( ts_port_src_start, ts_port_src_end ) the LSB bits of the source port range.</t>
  <t>lsb( port_dst ) = msb( ts_port_dst_start, ts_port_dst_end ) the LSB bits of the destination port range.</t>
</list></t>

<t>Protocol IDs and DSP are defined as list of non consecutive values. 
A target value is defined when the list contains a single element.</t>

</section>
<section anchor="new-schc-compression-decompression-actions-cda"><name>New SCHC Compression / Decompression Actions (CDA)</name>

<t>In addition to the Compression / Decompression Action defined in <xref section="7.4" sectionFormat="comma" target="RFC8724"/>, this specification uses the CAD as presented in <xref target="tab-cda"/>.
These CDA are either refinement of the compute- * CDA or result in a combination CDA and are mostly used for convenience.</t>

<figure title="EHC ESP related parameter" anchor="tab-cda"><artwork align="center"><![CDATA[
+=================+=====================+=============================+
| Action          | Compression         | Decompression               |
+=================+=====================+=============================+
| lower           | elided              | Get from lower layer        |
| checksum        | elided              | Compute checksum            |
| padding         | elided              | Compute padding             |
+-----------------+---------------------+-----------------------------+
]]></artwork></figure>

<t>More specifically, when the list contains 0 or a single element, that value can be decompressed without ambiguity and as such an index does not need to be sent. 
When more than one value is present in the list, the index needs to be sent.</t>

<dl>
  <dt>lower:</dt>
  <dd>
    <t>designates an action where the compression consists in eliding the field.
The decompression consists in retrieving the field from the lower layers of the packet.
A typical example is when both IP and UDP carry the length of the payload, then the length of the UDP payload can be inferred from the one of the IP layer.</t>
  </dd>
  <dt>checksum:</dt>
  <dd>
    <t>designates an action where the compression consists in eliding a checksum field.
The decompression consists in re-computing the checksum.
ESP provides an integrity-check based on signature of the ESP payload (ICV).
This makes removing checksum possible, without harming the checksum mechanism.</t>
  </dd>
  <dt>padding:</dt>
  <dd>
    <t>designates an action where the compression consists in eliding the padding field.
The decompression consists in re-computing the padding field as described in ESP <xref target="RFC4303"/>.</t>
  </dd>
</dl>

</section>
<section anchor="clear-text-esp-compression-decompression"><name>Clear Text ESP Compression / Decompression</name>

<t>The Clear Text ESP Compression is performed on the ESP fields not yet encrypted, that is the ESP Payload Data, the ESP padding field, the Pad Length field as well as the Next Header field which indicates the type of the inner packet.</t>

<t>When ipsec_mode is set to "Transport", the Clear Text ESP packet that corresponds to an IPv4 packet will have the Payload Data set to the IPv4 Payload and the Next Header set to the Protocol ID - that is typically UDP, TCP or SCHC when the payload results from an SCHC compression.
The Clear Text ESP packet that corresponds to an IPv6 packet will have the Payload Data set may include some IPv6 extensions that precede the IP payload. In that case, the Next Header will have the value that corresponds to that first IPv6 extension being encrypted.</t>

<t>When ipsec_mode is set to "Tunnel", the Clear Text ESP packet has the Payload Data set to the IP packet with the Next Header field indicating whether this is an IPv4, an IPv6 or an SCHC packet..</t>

<t>SA are unidirectional and the Direction Indicator (DI) reflects that direction and is set to Up for outbound SA and Down for inbound SA. 
Fields that are not compressed have no Target Value (TV), their Matching Operator (MO) is set to ignore and Compression/Decompression Actions (CDA) to "value-sent".
Unless specified the Field Position (FP) is set to 1.</t>

<t>Note that for both the IP payload and the IP header, some fields are Compressed / Decompressed independently of the value of Traffic Selectors EHC Context, while some other fields require the Traffic Selectors to be expressed under a specific format.</t>

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

<t>An SCHC payload is not compressed.</t>

<t>If the inner IP payload is an UDP or TCP packet the checksum is elided. 
For both TCP or UDP, FL is set to 16 bit, TV is not set, MO is set to "ignore" and CDA is et to "checksum". 
This may result is decompressing a zero-checksum UDP packet with a valid checksum, but this has no impact as valid checksum are universally accepted.</t>

<t>If the inner packet is an UDP or UDP-Lite the length field is elided.
FL is set to 16, TV is not set, MO is set to "ignore" and CDA is set to "lower" as the length field of the decompressed UDP packet is expressed in bytes and is  derived from the length of the compressed UDP packet by adding the 16 bit UDP Checksum, the 16 bit UDP Length field as well as the respective length of the respective source MSB port and destination MSB ports.</t>

<figure><artwork><![CDATA[
UDP.Length = ( len( compressed UDP) + 16 + 16 + len( lsb( port_src ) ) \
               + len( lsb( port_src ) ) ) / 8
]]></artwork></figure>

<t>Note that for each SA, LSB and MSB are of fixed length.
When the port has a single value this is equivalent to TV containing the port value, MO is set to "equal" and CDA set to not_sent.</t>

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

<t>When ts_ip_src/dst range is defined and ts_ipversion is set to "IPv4", IPv4 addresses of the inner IP packet are compressed. 
FL is set to 32, TV to msb(ip_src) or msb(ip_dst), the MO is set  to "MSB" and the CDA is set to "LSB".</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>

<t>The Protocol field sets FL to 8 bits. 
If ts_proto_list contains the value 0, TV is not set, MO is set to ignore and  CDA is set to "value-sent". 
If "proto_id" does not contain 0 and the list contains less or exactly 1 value, TV is set to that value, MO is set to "equal" and CDA is set to "mot-sent". 
In any other case, TV is set to the proto_list, MO is set to "match-mapping" and  CDA is set to "mapping-sent".</t>

<t>The IPv4 TTL field is derived from the IPv4 TTL field of the outer IPv4 address or the IPv6 Hop limit.
FL is set to 8 bits, TV is omitted, MO is set to ignore and CDA is set to lower.</t>

<t>The IPv4 Total Length is elided. 
FL is set to 16 bits, TV is not set, MO is set to "ignore" and CDA is set to "lower".</t>

<t>DSP, ECN are either retrieved from the SA or from the outer IP header. 
Fl is set to 8.
When the DSP, ECN are defined by the SA via <xref target="I-D.mglt-ipsecme-ts-dscp"/> and ts_dsp_list contains a single element, TV is set to that element MO is set to "equal" and CDA is set to "not-sent".
When the DSP, ECN are defined by the SA via <xref target="I-D.mglt-ipsecme-ts-dscp"/> and ts_dsp_list contains more than one element, TV is set to the list, MO is set to "match-mapping" and CDA is set to "mapping-sent". 
When the DSP, ECN are not defined by the SA, MO is set to "ignore" and the CDA is set to "lower".</t>

<t>When ts_ip_version can be inferred from the ts, the IP version is elided.
FL is set to 4 bits, the TV is set to ts_ip_version, MO is set to "equal" and CDA to "not-sent".</t>

<t>When the inner IP address has the same version as the outer_ip and ts_traffic_flow is defined and set to True, the Identification field of the IPv4 inner packet or the Traffic Flow field of the IPv6 packet is elided and read from the outer IP address field.
For IPv4, FL is set to 16 bits, TV is ignored, MO is set to "ignore" and CDA is set to "lower".
For IPv6, FL is set to 20 bits, TV is ignored, MO is set to "ignore" and CDA is set to "lower".</t>

<t>When the inner is IPv4 and the outer IP is IPv6 and ts_traffic_flow is set to True, the LSB 16 bits of the outer IP address are considered. This results in a lossless compression. 
When the inner is IPv6 and the outer IP is IPv4 and ts_traffic_flow is set to True, the LSB 16 bits of inner Traffic Flow fields are set to the outer Identification field and the remaining 4 MSB bits are set to 0.
Such compression is not lossless and needs to be considered cautiously.
Note that the Flow Label of the inner packet arriving at the destination may have another value than the initial Flow Label. However, the Flow Label value set at the source ends up with the same value at the destination, with of course a lower entropy.</t>

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

<t>The compression / decompression of the IPv6 fields are compressed / decompressed in a similar way as in IPv4  (see <xref target="sec-inner-ip4"/>).
IPv6 addresses are compressed decompressed as IPv4 addresses except that FL is set to 128. 
IPv6 Hop limit is compressed / decompressed as the IPv4 TTL field. 
The last Next Header with a transport protocol value is compressed / decompressed as IPv4 Protocol field.
The Total Length is compressed / decompressed similarly to the IPv4 Length except that the IPv6 length includes the IPv6 header. 
Traffic Class is compressed / decompressed similarly to the DSP,ECN field.
IP version is compressed / decompressed as in IPv4.
The Traffic Flow field is compressed / decompressed similarly to the IPv4 Identification field except that FL is set to 20 bits.</t>

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

<t>When ipsec_mode is set to "Tunnel" and ts_ip_version can be determined, the Next Header Field is elided. 
FL is set to 8 bits, TV is set to IPv4 or IPv6 depending on the ts_ip_version, MO is set to "equal" and CDA is set to "not-sent".</t>

<t>If the esp_encr does not require a specific block size, Padding and Pad Length are elided.
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>

<t>Encryption may require require the clear text to respect a given size block.
In addition, IP networking may also require a special alignment which is 32 bits by default for IPv6 Extensions, but may also be overwritten by the EHC Context.
The Padding is defined by pad_value and pad_size appended to the clear text payload - similarly to what ESP does with Padding and Pad Len. 
An 8 bit alignment is interpreted by SCHC as a Word of 8 bits, and a 32 bit alignment is interpreted as a Word of 32 bits. 
The padding size pad_size is defined by the alignment and set to 3 bits for an 8 bit alignment (2<strong>3) and 5 bits for 32 bit alignement (2</strong>5).
If pad designates the number of bits to be padded, the pad value is set to pad_value = ( pad + len( pad_size ) % Word.
This results in an additional pad_value + pad_size bits.</t>

</section>
</section>
<section anchor="encrypted-esp-compression"><name>Encrypted ESP Compression</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 Number 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 an 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 anchor="iana-considerations"><name>IANA Considerations</name>

<t>There is no IANA parameters to be registered.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>There is no specific considerations associated to 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</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC2119;
&RFC8174;
&RFC4301;
&RFC4303;
&RFC8724;
&RFC8750;
&RFC7296;
&I-D.mglt-ipsecme-ts-dscp;


    </references>

    <references title='Informative References'>

&I-D.mglt-ipsecme-ikev2-diet-esp-extension;
&RFC4309;


    </references>


<section anchor="illustrative-example"><name>Illustrative Example</name>

<section anchor="sec-iot-udp"><name>Single UDP Session IoT VPN</name>

<t>This section considers a IoT IPv6 probe hosting a UDP application.
The probe is dedicated to a single application and establishes a single UDP session with a server, and sets a VPN to connect its secure domain - like a home gateway.
The home gateway will be responsible to decompress the compress packet and provides interoperability with standard application server.</t>

<t>The EHC Context is defined as mentioned below:</t>

<t><list style="symbols">
  <t>alignment is set to 8 bits</t>
  <t>ipsec_mode is set to "Tunnel"</t>
  <t>tunnel_ip_srct is set to the IPv6_m, the IPv6 address of the mote.</t>
  <t>tunnel_ip_dst is set to IPv6_gw, the IPv6 of the security gateway.</t>
  <t>esp_spi is agreed by the IKEv2.</t>
  <t>esp_spi_lsb is set to 0 as IPv6_m provides sufficient context to associate the right SA.</t>
  <t>esp_sn results from the standard IPsec, and not impacted.</t>
  <t>esp_sn_lsb is set to 2 even though we are considering  AES-CCM_8_IIV <xref target="RFC8750"/> which uses the ESP Sequence Number to generated the IV.
This results in a 8 bytes reduction compared to the AES-CCM_8 <xref target="RFC4309"/>.</t>
  <t>esp_encr is configured with AES-CCM_8_IIV <xref target="RFC8750"/>. This cipher suite does not require a block size and so no padding is required and does not support SN compression.</t>
  <t>ts_flow_label As the inner traffic and the encrypted traffic are very correlated, it makes sense to re-use the flow label and ts_flow_label is set to True.</t>
  <t>ts_ip_version is set to IPv6.</t>
  <t>ts_ip_src_start is set to IPv6_m. In this example, the SA is associated to messages sent by the mote to the application server (IPv6_server)</t>
  <t>ts_ip_src_end is set to IPv6_m</t>
  <t>ts_ip_dst_end the IPv6 address of the application server (IPv6_server).</t>
  <t>ts_ip_dst_end IPv6_server</t>
  <t>ts_proto_list [ UDP ], in the case of a very constraint mote, only UDP messages are considered.</t>
  <t>ts_port_src_start port_m. The mote and the application server are using dedicated ports.</t>
  <t>ts_port_src_end port_m. The mote and the application server are using dedicated ports. The use of a specific single port enables their elision.</t>
  <t>ts_port_dst_end port_server</t>
  <t>ts_port_dst_end port_server</t>
  <t>ts_dsp_list [ 0 ] the default standard value, we MAY assume that value has been negotiated via IKEv2 or that it as been set as the default value left to the lower layers.</t>
</list></t>

<t><xref target="fig-std-udp-tunnel"/> illustrates an UDP packet being protected by ESP in the tunnel mode using AES-CCM_8_IIV.
This packet is compressed as depicted in <xref target="fig-comp-udp-tunnel"/>.<br />
EHC reduces the packet size by 53 bytes.</t>

<figure title="Standard ESP packet for IoT UDP in Tunnel mode more with AES-CCM_8_IIV" anchor="fig-std-udp-tunnel"><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
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
E|               Security Parameters Index (SPI)                 |  ^
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
P|                      Sequence Number (SN)                     |  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
I|version| traffic class |               flow label              |^ |
P+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
v|         payload length        |  next header  |   hop limit   || |
6+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                                                               || a
 |                      inner source IP                          || u
 |                                                               |e t
 |                                                               |n h
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+c e
 |                                                               |r n
 |                    inner destination IP                       |y t
 |                                                               |p i
 |                                                               |t c
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+e a
U|          source port          |           dest port           |d t
D+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| e
P|             length            |            checksum           || d
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                                                               || |
 ~                        APPLICATION DATA                       ~| |
 |                                                               || |
-|                                               +-+-+-+-+-+-+-+-+| |
E|                                               |    Padding    || |
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
P|     Padding (continue)        |  Pad Length   | Next Header   |v v
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
 |         Integrity Check Value-ICV   (variable)                |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<figure title="EHC ESP packet for IoT UDP in Tunnel mode more with AES-CCM_8_IIV" anchor="fig-comp-udp-tunnel"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--
|      Sequence Number          |                               | ^
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               | aut
|                                                               | hen
~                        APPLICATION DATA                       ~ tic
|                          (encrypted)                          | ate
|               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
|               |                                               | V
+-+-+-+-+-+-+-+-+                                               |--
|         Integrity Check Value-ICV   (variable)                |
|               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |
+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="single-tcp-session-iot-vpn"><name>Single TCP session IoT VPN</name>

<t>This section is very similar to <xref target="sec-iot-udp"/> except that a TCP session is used instead.</t>

<t>The compression on the TCP payload is very limited, and in a case where the TCP end point is the same as the ESP end point additionnal compression could be performed.
Additional fields such as TCP options, urgent pointers, the SN and ACK Number could be compressed by a specific profile agreed at the TCP level as opposed to the ESP level.</t>

<t>The ESP encapsulated TCP packet described in <xref target="fig-std-tcp-tunnel"/> is compressed by EHCP using th esam eEHCP context as in <xref target="sec-iot-udp"/> and EHCP reduces that packet by 55 bytes, as depicted in <xref target="fig-comp-udp-tunnel"/>.</t>

<figure title="Standard ESP packet for IoT TCP in Tunnel mode more with AES-CCM_8_IIV" anchor="fig-std-tcp-tunnel"><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
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
E|               Security Parameters Index (SPI)                 |  ^
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
P|                      Sequence Number (SN)                     |  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
I|version| traffic class |               flow label              |^ |
P+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
v|         payload length        |  next header  |   hop limit   || |
6+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                                                               || a
 |                      inner source IP                          || u
 |                                                               |e t
 |                                                               |n h
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+c e
 |                                                               |r n
 |                    inner destination IP                       |y t
 |                                                               |p i
 |                                                               |t c
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+e a
T|          source port          |           dest port           |d t
C+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| e
P|                      Sequence Number (SN)                     || d
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                     ACK Sequence Number                       || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |Off. | Rserv |      Flags      |         Window Size           || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |             Checksum          |      Urgent Pointer           || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                                                               || |
 ~                        APPLICATION DATA                       ~| |
 |                                                               || |
 |                                               +-+-+-+-+-+-+-+-+| |
E|                                               |    Padding    || |
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
P|     Padding (continue)        |  Pad Length   | Next Header   |V V
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
 |         Integrity Check Value-ICV   (variable)                |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<figure title="EHC ESP packet for IoT TCP in Tunnel mode more with AES-CCM_8_IIV" anchor="fig-comp-tcp-tunnel"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
|  Sequence Number (SN) (ESP)   |          Sequence Number      ~   ^
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
~       (SN) (TCP)              |                ACK            ~^ | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| a
~      Sequence Number          |Off. | Rserv |      Flags      || u
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+e t
|         Window Size           |      Urgent Pointer           |n h
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+c |
|      Urgent Pointer           |                               |r |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |y |
|                                                               ~p |
~                        APPLICATION DATA                       |t | 
|                                                               || |
|               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
|               |                                               |v v
+-+-+-+-+-+-+-+-+                                               |---
|         Integrity Check Value-ICV   (variable)                |
|               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|               |
+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="traditional-vpn"><name>Traditional VPN</name>

<t>This section illustrates the case of an company VPN that allows web browsing. 
The VPN is typically set by a remote host that forwards all its traffic to the
security gateway.<br />
In this case, the SA does not specify the protocol (TCP and UDP packet can be sent), nor the ports. 
Regarding ports it could be possible to restrict the user to only use high range ports (0  - 2 ** 10) - especially if the VPN is only supporting web browsing - but we did not consider this in this example. 
The destination IP address is also expect to take any value, while the IPv6 source in the case of a road warrior scenarios us expected to take a single value.
We consider the VPN client is using an IPv4 or an IPv6 address. 
Regarding ESP, we considered the VPN client is using AES-GCM_16, though AES-GCM_IIV would be the RECOMMENDED transform.
The VPN client is also expected to have a reasonably low throughput which enables the SN to be coded over 16 bits as opposed to 32 bits. 
Similarly, the number of connection is expected to remain sufficiently low so that a 16 bit SPI remains sufficient.</t>

<t>The EHC Context is defined as mentioned below:</t>

<t><list style="symbols">
  <t>alignment is set to 8 bits</t>
  <t>ipsec_mode is set to "Tunnel"</t>
  <t>tunnel_ip_src is set to the IPv6_user, the IPv6 address of the mote.</t>
  <t>tunnel_ip_dst is set to IPv6_gw, the IPv6 of the security gateway.</t>
  <t>esp_spi: is agreed by the IKEv2.</t>
  <t>esp_spi_lsb: is set to 2 bytes.</t>
  <t>esp_sn: results from the standard IPsec, and not impacted.</t>
  <t>esp_sn_lsb: is set to 16 bits. Note that such compression is possible since AES-GCM_16 is used instead of AES-GCM_16_IIV. 
While this results in better performances for EHC, it is not an optimal choice as IIV transforms results always in better comprehensions.</t>
  <t>esp_encr: is configured with AES-GCM_16 <xref target="RFC8750"/>.</t>
  <t>ts_flow_label: is set to True, note as the outer IP address is IPv6, the compression is lossless.</t>
  <t>ts_ip_version: is set not set as the VPN user can use either an IPv4 or an IPv6 address.</t>
  <t>ts_ip_src_start: is set to IPv6_user or IPv4_user. Note that the version can be inferred by the Next Header, and the version can deterministically determine the IP in use.</t>
  <t>ts_ip_src_end: is set to IPv6_user or IPv4_user</t>
  <t>ts_ip_dst_end: IP destination is set to take any value, so the range is unspecified and the start/ end addresses are undefined.</t>
  <t>ts_ip_dst_end: undefined.</t>
  <t>ts_proto_list: undefined</t>
  <t>ts_port_src_start: undefined.</t>
  <t>ts_port_src_end: undefined.</t>
  <t>ts_port_dst_end: undefined</t>
  <t>ts_port_dst_end: undefined</t>
  <t>ts_dsp_list: [ 0 ] the default standard value, we MAY assume that value has been negotiated via IKEv2 or that it as been set as the default value left to the lower layers.</t>
</list></t>

<section anchor="ipv6-in-ipv6"><name>IPv6 in IPv6</name>

<t><xref target="fig-std-vpn-tunnel-66"/> represents the original ESP TCP packet with IPv6 inner IP addresses and <xref target="fig-comp-vpn-tunnel-66"/> represents the corresponding packet compressed with EHC.</t>

<t>The compression with Diet-ESP results in a reduction of 32 bytes.</t>

<figure title="Standard ESP packet for VPN traffic mode with AES-GCM_16" anchor="fig-std-vpn-tunnel-66"><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
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
E|               Security Parameters Index (SPI)                 |  ^
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
P|                      Sequence Number (SN)                     |  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
 |                                                               |  |
 |                             IV                                |  |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
I|version| traffic class |               flow label              |^ |
P+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
v|         payload length        |  next header  |   hop limit   || |
6+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                                                               || a
 |                      inner source IP                          || u
 |                                                               |e t
 |                                                               |n h
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+c e
 |                                                               |r n
 |                    inner destination IP                       |y t
 |                                                               |p i
 |                                                               |t c
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+e a
T|          source port          |           dest port           |d t
C+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| e
P|                      Sequence Number (SN)                     || d
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                     ACK Sequence Number                       || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |Off. | Rserv |      Flags      |         Window Size           || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |             Checksum          |      Urgent Pointer           || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                                                               || |
 ~                        APPLICATION DATA                       ~| |
 |                                                               || |
-|                                               +-+-+-+-+-+-+-+-+| |
E|                                               |    Padding    || |
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
P|     Padding (continue)        |  Pad Length   | Next Header   |V V
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
 |                                                               |
 |         Integrity Check Value-ICV   (variable)                |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<figure title="Compressed IPv6 in IPv6 ESP packet for VPN traffic mode with AES-GCM_16" anchor="fig-comp-vpn-tunnel-66"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
|             SPI               |              SN               |  ^
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                             IV                                |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--|
|  Next Header  |                                               |^ |
+-+-+-+-+-+-+-+-+                                               || |
|                                                               || |
|                    inner destination IP                       || |
|                                                               || |a
|               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |u
|               |          source port          |  destination  ~|e|t
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|n|h
~ port          |     TCP Sequence Number (SN)                  ~|c|e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|r|n
~  (continue)   |    ACK Sequence Number (SN)                   ~|y|t
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|p|i
~  (continue)   |Off. | Rserv |      Flags      |    Window     ~|t|c
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|e|a
~   Size        |   Urgent   Pointer            |               ~|d|t
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |e
|                                                               || |d
~                        APPLICATION DATA                       ~| |
|                                                               || |
|                             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ || |
|                             |  Next Header    | Integrity     ~v v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +---
|                                                               |
|         Integrity Check Value-ICV   (variable)                |
|                                               +-+-+-+-+-+-+-+-+
|                                               |                              
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="ipv6-in-ipv4"><name>IPv6 in IPv4</name>

<t>For IPv6 in IPv4, the compression is similar when ts_traffic_flow is set, otherwise these 20 bits needs to be provided explicitly.</t>

<t>When ts_traffic_flow is set to True, the resulting decompressed IPv6 packet will be as follows (see the flow label field):</t>

<figure title="Decompressed IPv6 encapsulated in IPv4 ESP packet" anchor="fig-resulting-ip6"><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
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
I|version| traffic class |0 0 0 0        flow label              |
P+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
v|         payload length        |  next header  |   hop limit   |
6+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                      inner source IP                          |
 |                                                               |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 |                    inner destination IP                       |
 |                                                               |
 |                                                               |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
T|          source port          |           dest port           |
C+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
P|                      Sequence Number (SN)                     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     ACK Sequence Number                       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Off. | Rserv |      Flags      |         Window Size           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |             Checksum          |      Urgent Pointer           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                                               |
 ~                        APPLICATION DATA                       ~
 |                                                               |
 |                                               +-+-+-+-+-+-+-+-+
 |                                               | 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="ipv4-in-ipv4"><name>IPv4 in IPv4</name>

<t><xref target="fig-std-vpn-tunnel-44"/> represents the original ESP TCP packet with IPv6 inner IP addresses and <xref target="fig-comp-vpn-tunnel-44"/> represents the corresponding packet compressed with EHC.</t>

<t>The compression with Diet-ESP results in a reduction of 24 bytes.</t>

<figure title="Standard IPv4 in IPv4 ESP packet for VPN traffic mode with AES-GCM_16" anchor="fig-std-vpn-tunnel-44"><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
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
E|               Security Parameters Index (SPI)                 |  ^
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
P|                      Sequence Number (SN)                     |  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
 |                                                               |  |
 |                             IV                                |  |
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
I|Version|  IHL  |Type of Service|          Total Length         |^ |
P+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
v|         Identification        |Flags|      Fragment Offset    || a
4+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| u
 |  Time to Live |    Protocol   |         Header Checksum       |e t
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+n h
 |                       Source Address                          |c e
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+r n
 |                    Destination Address                        |y t
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+p i
 |                    Options                    |    Padding    |t c
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+e a
T|          source port          |           dest port           |d t
C+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| e
P|                      Sequence Number (SN)                     || d
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                     ACK Sequence Number                       || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |Off. | Rserv |      Flags      |         Window Size           || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |             Checksum          |      Urgent Pointer           || |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
 |                                                               || |
 ~                        APPLICATION DATA                       ~| |
 |                                                               || |
-|                                               +-+-+-+-+-+-+-+-+| |
E|                                               |    Padding    || |
S+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
P|     Padding (continue)        |  Pad Length   | Next Header   |V V
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
 |                                                               |
 |                                                               |
 |         Integrity Check Value-ICV   (variable)                |
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<figure title="Compressed IPv4 in IPv4 ESP packet for VPN traffic mode with AES-GCM_16" anchor="fig-comp-vpn-tunnel-44"><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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
|             SPI               |              SN               |  ^
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |
|                                                               |  |
|                             IV                                |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--|
|    Protocol   |     inner destination IP                      ~^ |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|| |
~  (continue)   |            source port        |  destination  ~| |a
|-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |u
|     port      |         TCP Sequence Number (SN)              ~|e|t
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|n|h
~  (continue)   |     ACK Sequence Number                       ~|c|e
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|r|n
~  (continue)   |Off. | Rserv |      Flags      |   Window       ~y|t
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|p|i
|         Size  |        Urgent Pointer         |               ||t|c
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               ||e|a
|                                                               ||d|t
|                        APPLICATION DATA                       || |e
~                                                               || |d
|                             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |
|                             |    Padding    |                 |v v
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                 |
|                                                               |
|                                                               |
|       Integrity Check Value-ICV  (variable) +-+-+-+-+-+-+-+-+-+ 
|                                             |                 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

</section>
<section anchor="ipv4-in-ipv6"><name>IPv4 in IPv6</name>

<t>TBD</t>

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


  </back>

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

-->

</rfc>

