<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="rfc7991bis.rnc"?>  <!-- Required for schema validation and schema-aware editing -->
<!-- <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> -->
<!-- This third-party XSLT can be enabled for direct transformations in XML processors, including most browsers -->


<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- If further character entities are required then they should be added to the DOCTYPE above.
     Use of an external entity file is not recommended. -->

<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="std"
  docName="draft-colitti-ipsecme-esp-ping-00"
  ipr="trust200902"
  obsoletes=""
  submissionType="IETF"
  xml:lang="en"
  version="3">
  <front>
<title abbrev="esp-ping">ESP Echo Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-colitti-esp-ping-00"/>

 <author initials="L." surname="Colitti" fullname="Lorenzo Colitti">
      <organization>Google</organization>
      <address>
        <postal>
          <street>Shibuya 3-21-3</street>
          <country>Japan</country>
        </postal>
        <email>lorenzo@google.com</email>
      </address>
    </author>

   
    <date year="2023"/>
<area>Internet</area>
    <workgroup>IP Security Maintenance and Extensions</workgroup>
    <keyword>ipsec</keyword>
    <keyword>esp</keyword>
    <keyword>ipv6</keyword>


    <abstract>
 <t>
This document defines an ESP echo function which can be used to detect whether a given network path supports IPv6 ESP packets.
</t>
    </abstract>
 
  </front>

  <middle>

      <section>
        <name>Requirements Language</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL",
          "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT
          RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
          interpreted as described in BCP 14 <xref target="RFC2119"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.</t>
      </section>
    
    <section>
      <name>Problem statement</name>
<t>
IPsec sessions between hosts that have global connectivity will by default use unencapsulated IPv6 ESP, i.e., IPv6 packets with a Next Header value of 50. ESP packets may have advantages over ESP-in-UDP encapsulation, such as:
</t>

<ul>
<li><t>They require fewer keepalive packets to keep sessions open.</t>
<ul>
<li>On some networks, ESP is be statelessly allowed in both directions, and thus not require any keepalive packets at all. For example, the IPv6 Simple Security recommendations <xref target="RFC6092"/> specify that ESP by default must always be allowed and not be subject to any timeouts.</li>
<li>Even if ESP is not statelessly allowed, experience from real world networks is that timeouts for ESP are higher than for UDP sessions, thus requiring IPsec endpoints to send fewer keepalives.</li>
</ul>
</li>
<li>They provide slightly lower overhead, due to the absence of the UDP header.</li>
</ul>

<t>
However, because ESP packets do not share fate with IKE packets, it is possible for the network to allow IKE packets but not ESP packets. This leads to the IPsec session not being able to exchange any packets even though IKE negotiation succeeded.

Because ESP is only used after IKE negotiation, this failure mode is difficult to predict, difficult to detect, and difficult to recover from. In particular, migrating a session using MOBIKE <xref target="RFC4555"/> to a network that doe snot allow ESP could result in the session blackholing all future packets until the problem is detected and a new migration is performed to enable encapsulation.
</t>

<t>
Operational experience suggests that networks and some home routers that drop ESP packets are common enough to be a problem for general purpose VPN applications desiring to work reliably on the Internet.
</t>
    </section>

    <section anchor="protocol">
      <name>Protocol Specification</name>


<t> An IPsec peer, prior to an IKE negotiation, intending to ascertain the path's capability to support ESP packets to a specific destination, MAY send an ESP Echo Request packet to such destination. The ESP Echo Request packets are distinguished as ESP packets with an SPI value set to [ESP-ECHO-REQUEST], a Next Header value of 59 (No Next Header), and devoid of any payload. </t>

<t> Should the destination support ESP and intend to communicate this capability to the potential IPsec peer, it SHOULD respond with an ESP Echo Reply packet. These ESP Echo Reply packets are characterized as ESP packets with an SPI value set to [ESP-ECHO-REPLY], a Next Header value of 59, and are devoid of any payload.</t>

<t>Upon completing an IKE negotiation, an IPsec peer wishing to ascertain the viability of the path for ESP packets MAY initiate an ESP Echo Request packet to the other peer. The ESP Echo Request packet MAY be encrypted. If encrypted, it SHOULD utilize an SPI value previously negotiated through IKE and set the Next Header value to 59 (No Next Header). The receiving IPsec peer, having established ESP through IKE, MAY issue an ESP Echo Response. When replying to an encrypted ESP Echo Request, the ESP Echo Response MUST be encrypted and utilize the corresponding negotiated SPI. </t>
    </section>


    <section anchor="Security">
      <!-- All drafts are required to have a security considerations section. See RFC 3552 for a guide. -->
      <name>Security Considerations</name>
<t>The security considerations are similar to other unconnected request-reply protocols such as ICMPv6 echo. In particular:</t>
<ul>
<li>By sending an ESP Echo Request from a spoofed source address, an attacker could cause a server to send an ESP Echo Reply to that address. This does not constitute an amplification attack because the ESP Echo Reply is the same size as the ESP Echo Request. This can be prevented by implementing ingress filtering per BCP 38 <xref target="RFC2827"/>.</li>
<li>An attacker can use ESP Echo Request packets to determine whether a particular destination address is an ESP endpoint. This is not a new attack because any endpoint that supports ESP must also reply to IKE INIT packets.</li>
</ul>
    </section>
    
    <section anchor="IANA">
    <!-- All drafts are required to have an IANA considerations section. See RFC 8126 for a guide.-->
      <name>IANA Considerations</name>
      <t>This memo requests that IANA allocate two new values from the "Security Parameters Index (SPI)" registry. The following entry should be appended:</t>
      <table>
        <thead>
          <tr><th>Number</th><th>Description</th><th>Reference</th></tr>
        </thead>
        <tbody>
          <tr><td>7</td><td>ESP Echo Request</td><td>[THIS DOCUMENT]</td></tr>
          <tr><td>8</td><td>ESP Echo Reply</td><td>[THIS DOCUMENT]</td></tr>
        </tbody>
      </table>
    </section>
    
    <!-- NOTE: The Acknowledgements and Contributors sections are at the end of this template -->
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2827.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.4555.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.6092.xml"/>
        <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml"/>
        <!-- The recommended and simplest way to include a well known reference -->
        
      </references>
 
      <references>
	      <name>Informative References</name>
      </references>
    </references>
    
    <section anchor="Acknowledgements" numbered="false">
      <name>Acknowledgements</name>
<t>
Thanks to Tero Kivinen, Steffen Klassert, Andrew McGregor, and Paul Wouters for helpful discussion and suggestions.
</t>
    </section>
    
 </back>
</rfc>
