<?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-mglt-ipsecme-diet-esp-11" 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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
/wT0KbCLzdUAAA==

-->

</rfc>

