<?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-09" 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="28"/>

    <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. 
ipsec_mode:</t>
  </dd>
  <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. 
tunnel_ip:</t>
  </dd>
  <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. 
esp_spi:</t>
  </dd>
  <dt/>
  <dd>
    <t>designates the Security Policy Index defined in <xref target="RFC4301"/>. 
esp_spi_lsb:</t>
  </dd>
  <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.
esp_sn:</t>
  </dd>
  <dt/>
  <dd>
    <t>designates the Sequence Number (SN) field defined in <xref target="RFC4301"/>.
esp_sn_lsb:</t>
  </dd>
  <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. 
esp_encr:</t>
  </dd>
  <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. 
ts_ip_version:</t>
  </dd>
  <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. 
ts_ip_src_start:</t>
  </dd>
  <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.<br />
ts_ip_src_end:</t>
  </dd>
  <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.<br />
ts_port_src_start:</t>
  </dd>
  <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"/>.
ts_port_src_end:</t>
  </dd>
  <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"/>.
ts_proto_list:</t>
  </dd>
  <dt/>
  <dd>
    <t>designates the list of Protocol ID field whose meaning is defined in <xref section="3.13" sectionFormat="comma" target="RFC7296"/>. 
ts_dscp_list:</t>
  </dd>
  <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:
* msb( ip_src ) = msb( ts_ip_src_start, ts_ip_src_end ) the MSB bits of the IP address range.
* msb( ip_dst ) = msb( ts_ip_dst_start, ts_ip_dst_end ) the MSB bits of the IP address range.
* lsb( ip_src ) = msb( ts_ip_src_start, ts_ip_src_end ) the LSB bits of the IP address range.
* lsb( ip_dst ) = msb( ts_ip_dst_start, ts_ip_dst_end ) the LSB bits of the IP address range.
* msb( port_src ) = msb( ts_port_src_start, ts_port_src_end ) the MSB bits of the source port range.
* msb( port_dst ) = msb( ts_port_dst_start, ts_port_dst_end ) the MSB bits of the destination port range.
* lsb( port_src ) = msb( ts_port_src_start, ts_port_src_end ) the LSB bits of the source port range.
* lsb( port_dst ) = msb( ts_port_dst_start, ts_port_dst_end ) the LSB bits of the destination port range.</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.
checksum:</t>
  </dd>
  <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.
padding:</t>
  </dd>
  <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>

</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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
zn1K0b388YTvhv/+Cxzmdsb21wAA

-->

</rfc>

