<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.8 (Ruby 3.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY 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-ietf-ipsecme-diet-esp-00" 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="2024" month="March" day="18"/>

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

    <abstract>


<?line 41?>

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



    </abstract>



  </front>

  <middle>


<?line 45?>

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

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

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

<t>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' anchor="sec-normative-references">

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


    </references>

    <references title='Informative References' anchor="sec-informative-references">

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


    </references>


<?line 413?>

<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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
/ftPt/WCt83VAAA=

-->

</rfc>

