<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>
<rfc category="std"
    consensus="true"
     docName="draft-ietf-ipsecme-ikev2-beet-mode-02"
     ipr="trust200902"
    sortRefs="true"
    submissionType="IETF"
    symRefs="true"
    tocDepth="4"
    tocInclude="true"
    version="3">
  <front>
    <title abbrev="IKv2 for BEET mode ESP">IKEv2 negotiation for Bound End-to-End Tunnel (BEET) mode ESP</title>
<author initials='A.' surname='Antony' fullname='Antony Antony'><organization abbrev="secunet">secunet Security Networks AG</organization>
<address><email>antony.antony@secunet.com</email></address>
</author>
<author initials='S.' surname='Klassert' fullname='Steffen Klassert'><organization abbrev="secunet">secunet Security Networks AG</organization>
<address><email>steffen.klassert@secunet.com</email></address>
</author>
  <date/>
    <area>sec</area>
    <workgroup>IPSECME Working Group</workgroup>
<keyword>IKEv2</keyword>
<keyword>BEET</keyword>
<abstract><t>This document specifies a new Notify Message Type Payload for the
Internet Key Exchange Protocol Version 2 (IKEv2), to negotiate IPsec
ESP Bound End-to-End Tunnel (BEET) mode. BEET mode combines the
benefits of tunnel mode with reduced overhead, making it suitable for
applications requiring minimalistic end-to-end tunnels, mobility
support, and multi-address multi-homing capabilities. The
introduction of the USE_BEET_MODE Notify Message enables the
negotiation and establishment of BEET mode security associations.</t></abstract>
  </front>
  <middle>
<section title="Introduction">
<t>The Bound End-to-End Tunnel (BEET) mode, as specified in Appendix B
of <xref target="RFC7402"/> and subsequently updated in
<xref target="I-D.moskowitz-ipsecme-rfc7402-beet-update"/>, offers an optimized
approach for deploying IP Security (IPsec), [RFC4301], using
Encapsulating Security Payload (ESP) [RFC4303] for end-to-end use
cases. It combines the advantages of Tunnel and Transport modes
specified in <xref target="RFC7296"/>, while minimizing their overhead for
end-to-end use cases.</t>

<t>This document specifies the  necessary code points to negotiate <xref target="RFC7402"/>
an ESP BEET mode SA using the Internet Key Exchange Protocol
Version 2 (IKEv2) [RFC7296]. This document fills this gap by introducing a new
Notify Message Status Type, USE_BEET_MODE, to facilitate the
negotiation and establishment of BEET mode security associations in
IKEv2.</t>
<section title="Background">
<t>For over a decade, a minimalist IPsec tunnel mode, BEET, has been in
use for end-to-end security in HIP environments without IKE
negotiation, <xref target="RFC7401"/>. Also, in many environments,  with IKE negotiation
using a private IKEv2 Notify Message Status Type (strongSWAN).</t>

<t>Additionally, BEET mode ESP is valuable for low-power devices which
usually use only one end-to-end IPsec tunnel, as it reduces power
consumption <xref target="RFC9333"/>and complexity. In situations where devices or
IPsec connections are dedicated to a single application or transport
protocol, the use of BEET mode simplifies packet processing and
conserves energy, especially benefiting lower-powered devices.</t>

</section>
<section title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref target="RFC2119"/>.</t>

</section>

</section>
<section title="IKEv2 Negotiation">
<t>When negotiating a Child SA using IKEv2, the initiator MUST use the
new "USE_BEET_MODE" Notify Message Status Type to request a Child SA pair with
BEET mode support. The method used is similar to how
USE_TRANSPORT_MODE is negotiated, as described in <xref target="RFC7296"/></t>

<t>To request a BEET-mode SA on the Child SA pair, the initiator MUST
include the USE_BEET_MODE, Notify Message Status Type, when requesting
a new Child SA, either during the IKE_AUTH or the CREATE_CHILD_SA
exchanges to create a new Child SA. If the request is accepted, the
response MUST also include a USE_BEET_MODE Notification Message Status Type.
If the responder declines and does not include the USE_BEET_MODE notification
in the response, the child SA may be established without BEET mode enabled.
If this is unacceptable to the initiator, the initiator MUST delete the child
SA.</t>

<t>As the use of the USE_BEET_MODE mode payload is currently only defined
for non-transport-mode tunnels, the USE_BEET_MODE notification MUST NOT
be combined with the USE_TRANSPORT notification.</t>
<section title="USE_BEET_MODE Notify Message Payload">
<sourcecode><![CDATA[


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
+-+-----------------------------+-------------------------------+
! Next Payload  !C!  RESERVED   !         Payload Length        !
+---------------+---------------+-------------------------------+
!  Protocol ID  !   SPI Size    !      Notify Message Type      !
+---------------+---------------+-------------------------------+


]]></sourcecode>

<ul>
<li><t>Payload Length - MUST be 0.</t></li>
<li><t>Protocol ID (1 octet) - MUST be 0. MUST be ignored if not 0.</t></li>
<li><t>SPI Size (1 octet) - MUST be 0. MUST be ignored if not 0.</t></li>
</ul>

</section>

</section>
<section title="IANA Considerations">
<t>This document defines a new "IKEv2 Notify Message Status Type" to be
added to the IANA registry <xref target="STATUSNOTIFY"/></t>

<sourcecode><![CDATA[


Value   Notify Message Status Type     Reference
-----   ---------------------------    ---------------
[TBD1]   USE_BEET_MODE                  [this document]


]]></sourcecode>

</section>
<section title="Security Considerations">
<t>In this section we discuss the security properties of the BEET mode,
discussing some and point out some of its limitations <xref target="RFC3552"/>.</t>

<t>There are no known new vulnerabilities that the addition of the BEET
mode to IKEv2 would create.</t>

<t>Since the BEET security associations have the semantics of a fixed,
point-to-point tunnel between two IP addresses, it is possible to
place one or both of the tunnel end points into other network or
nodes but those that actually "possess" the inner IP addresses, i.e.,
to implement a BEET mode proxy. However, since such usage defeats the
security benefits of combined ESP processing, as discussed in
<xref target="I-D.nikander-esp-beet-mode"/>, the implementations SHOULD NOT
support such usage when used in combination with IKEv2; instead use IKEv2
MOBIKE to move the between networks.</t>

</section>
<section title="Implementation Status">
<t>[Note to RFC Editor: Please remove this section and the reference to
<xref target="RFC6982"/>before publication.]</t>

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
The description of implementations in this section is intended to
assist the IETF in its decision processes in progressing drafts to
RFCs. Please note that the listing of any individual implementation
here does not imply endorsement by the IETF. Furthermore, no effort
has been spent to verify the information presented here that was
supplied by IETF contributors. This is not intended as, and must not
be construed to be, a catalog of available implementations or their
features. Readers are advised to note that other implementations may
exist.</t>

<t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the benefit
of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented protocols
more mature. It is up to the individual working groups to use this
information as they see fit".</t>

<t>Authors are requested to add a note to the RFC Editor at the top of
this section, advising the Editor to remove the entire section before
publication, as well as the reference to <xref target="RFC7942"/>.</t>
<section title="Linux XFRM">
<t>Linux</t>


<dl>
<dt>Organization:</dt><dd><t>Linux kernel Project</t></dd>
<dt>Name:</dt><dd><t>Linux Kernel <eref target="https://www.kernel.org/"/></t></dd>
<dt>Description:</dt><dd><t>Implements BEET mode in ESP. The initial support was added in 2006.
It is widely used</t></dd>
<dt>Level of maturity:</dt><dd><t>Stable and used for over 15 years</t></dd>
<dt>Licensing:</dt><dd><t>GPLv2</t></dd>
<dt>Implementation experience:</dt><dd><t>There is no support for IPv4 fragments yet. IPv6 fragments appears to
work. The BEET mode code is in production for over a decade. And it
appears stable.</t></dd>
<dt>Contact:</dt><dd><t><eref target="https://lore.kernel.org/netdev/"/></t></dd>
</dl>

</section>
<section title="strongSwan">
<dl>
<dt>Organization:</dt><dd><t>The strongSwan Project</t></dd>
<dt>Name:</dt><dd><t>strongSwan
<eref target="https://docs.strongswan.org/docs/5.9/swanctl/swanctlConf.html"/></t></dd>
<dt>Description:</dt><dd><t>Implements IKE negotiation and ESP support for BEET mode Linux</t></dd>
<dt>Level of maturity:</dt><dd><t>Stable for a long time</t></dd>
<dt>Coverage:</dt><dd><t>Implements negotiating BEET mode support in Child SA negotiations and
using it in ESP. The initial support was added in 2006.</t></dd>
<dt>Licensing:</dt><dd><t>GPLv2</t></dd>
<dt>Implementation experience</dt><dd><t>strongSwan use a private Notify Message Status Type USE_BEET_MODE
(40961) for IKE. As far we know BEET is widely used.</t></dd>
<dt>Contact</dt><dd><t>Tobias Brunner tobias@strongswan.org</t></dd>
</dl>

</section>
<section title="iproute2">
<dl>
<dt>Organization:</dt><dd><t>The iproute2 Project</t></dd>
<dt>Name:</dt><dd><t>iproute2 <eref target="https://git.kernel.org/pub/scm/network/iproute2/iproute2.git"/></t></dd>
<dt>Description:</dt><dd><t>Implements BEET mode support in ESP. e.g. command support "ip xfrm
policy ... mode beet" . and "ip xfrm state .. mode beet". The
initial support was added in 2006</t></dd>
<dt>Level of maturity:</dt><dd><t>Stable</t></dd>
<dt>Licensing:</dt><dd><t>GPLv2</t></dd>
<dt>Implementation experience:</dt><dd><t>TBD</t></dd>
<dt>Contact:</dt><dd><t><eref target="https://lore.kernel.org/netdev/"/> or Stephen Hemminger
stephen@networkplumber.org</t></dd>
</dl>

</section>

</section>
<section title="Acknowledgment">
<t>We extend our sincere gratitude to the authors and contributors who
contributed to the standardization of BEET mode. Their insights and
dedication have significantly influenced our work, as well as their
contributions to the implementation of BEET mode many years ago.</t>

</section>
</middle>
<back>
<references title="Normative References">
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC7296" target="https://www.rfc-editor.org/info/rfc7296">
  <front>
    <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
    <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="Y. Nir" initials="Y." surname="Nir"/>
    <author fullname="P. Eronen" initials="P." surname="Eronen"/>
    <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
    <date month="October" year="2014"/>
    <abstract>
      <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="79"/>
  <seriesInfo name="RFC" value="7296"/>
  <seriesInfo name="DOI" value="10.17487/RFC7296"/>
</reference>
<reference anchor="RFC7402" target="https://www.rfc-editor.org/info/rfc7402">
  <front>
    <title>Using the Encapsulating Security Payload (ESP) Transport Format with the Host Identity Protocol (HIP)</title>
    <author fullname="P. Jokela" initials="P." surname="Jokela"/>
    <author fullname="R. Moskowitz" initials="R." surname="Moskowitz"/>
    <author fullname="J. Melen" initials="J." surname="Melen"/>
    <date month="April" year="2015"/>
    <abstract>
      <t>This memo specifies an Encapsulating Security Payload (ESP) based mechanism for transmission of user data packets, to be used with the Host Identity Protocol (HIP). This document obsoletes RFC 5202.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7402"/>
  <seriesInfo name="DOI" value="10.17487/RFC7402"/>
</reference>
</references>
<references title="Informative References">
<reference anchor="RFC3552" target="https://www.rfc-editor.org/info/rfc3552">
  <front>
    <title>Guidelines for Writing RFC Text on Security Considerations</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <author fullname="B. Korver" initials="B." surname="Korver"/>
    <date month="July" year="2003"/>
    <abstract>
      <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="72"/>
  <seriesInfo name="RFC" value="3552"/>
  <seriesInfo name="DOI" value="10.17487/RFC3552"/>
</reference>
<reference anchor="RFC6982" target="https://www.rfc-editor.org/info/rfc6982">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2013"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>The process in this document is offered as an experiment. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. The authors of this document intend to collate experiences with this experiment and to report them to the community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6982"/>
  <seriesInfo name="DOI" value="10.17487/RFC6982"/>
</reference>
<reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="205"/>
  <seriesInfo name="RFC" value="7942"/>
  <seriesInfo name="DOI" value="10.17487/RFC7942"/>
</reference>
<reference anchor="RFC7401" target="https://www.rfc-editor.org/info/rfc7401">
  <front>
    <title>Host Identity Protocol Version 2 (HIPv2)</title>
    <author fullname="R. Moskowitz" initials="R." role="editor" surname="Moskowitz"/>
    <author fullname="T. Heer" initials="T." surname="Heer"/>
    <author fullname="P. Jokela" initials="P." surname="Jokela"/>
    <author fullname="T. Henderson" initials="T." surname="Henderson"/>
    <date month="April" year="2015"/>
    <abstract>
      <t>This document specifies the details of the Host Identity Protocol (HIP). HIP allows consenting hosts to securely establish and maintain shared IP-layer state, allowing separation of the identifier and locator roles of IP addresses, thereby enabling continuity of communications across IP address changes. HIP is based on a Diffie-Hellman key exchange, using public key identifiers from a new Host Identity namespace for mutual peer authentication. The protocol is designed to be resistant to denial-of-service (DoS) and man-in-the-middle (MitM) attacks. When used together with another suitable security protocol, such as the Encapsulating Security Payload (ESP), it provides integrity protection and optional encryption for upper-layer protocols, such as TCP and UDP.</t>
      <t>This document obsoletes RFC 5201 and addresses the concerns raised by the IESG, particularly that of crypto agility. It also incorporates lessons learned from the implementations of RFC 5201.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7401"/>
  <seriesInfo name="DOI" value="10.17487/RFC7401"/>
</reference>
<reference anchor="RFC9333" target="https://www.rfc-editor.org/info/rfc9333">
  <front>
    <title>Minimal IP Encapsulating Security Payload (ESP)</title>
    <author fullname="D. Migault" initials="D." surname="Migault"/>
    <author fullname="T. Guggemos" initials="T." surname="Guggemos"/>
    <date month="January" year="2023"/>
    <abstract>
      <t>This document describes the minimal properties that an IP Encapsulating Security Payload (ESP) implementation needs to meet to remain interoperable with the standard ESP as defined in RFC 4303. Such a minimal version of ESP is not intended to become a replacement of ESP in RFC 4303. Instead, a minimal implementation is expected to be optimized for constrained environments while remaining interoperable with implementations of ESP. In addition, this document provides some considerations for implementing minimal ESP in a constrained environment, such as limiting the number of flash writes, handling frequent wakeup and sleep states, limiting wakeup time, and reducing the use of random generation.</t>
      <t>This document does not update or modify RFC 4303. It provides a compact description of how to implement the minimal version of that protocol. RFC 4303 remains the authoritative description.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9333"/>
  <seriesInfo name="DOI" value="10.17487/RFC9333"/>
</reference>
<reference anchor="I-D.nikander-esp-beet-mode" target="https://datatracker.ietf.org/doc/html/draft-nikander-esp-beet-mode-09">
  <front>
    <title>A Bound End-to-End Tunnel (BEET) mode for ESP</title>
    <author fullname="Pekka Nikander" initials="P." surname="Nikander">
      <organization>Ericsson Research Nomadic Lab</organization>
    </author>
    <author fullname="Jan Melen" initials="J." surname="Melen">
      <organization>Ericsson Research Nomadic Lab</organization>
    </author>
    <date day="5" month="August" year="2008"/>
    <abstract>
      <t>This document specifies a new mode, called Bound End-to-End Tunnel (BEET) mode, for IPsec ESP. The new mode augments the existing ESP tunnel and transport modes. For end-to-end tunnels, the new mode provides limited tunnel mode semantics without the regular tunnel mode overhead. The mode is intended to support new uses of ESP, including mobility and multi-address multi-homing.</t>
    </abstract>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-nikander-esp-beet-mode-09"/>
</reference>
<reference anchor="I-D.moskowitz-ipsecme-rfc7402-beet-update" target="https://datatracker.ietf.org/doc/html/draft-moskowitz-ipsecme-rfc7402-beet-update-02">
  <front>
    <title>A Bound End-to-End Tunnel (BEET) mode for ESP</title>
    <author fullname="Robert Moskowitz" initials="R." surname="Moskowitz">
      <organization>HTT Consulting</organization>
    </author>
    <author fullname="Petri Laari" initials="P." surname="Laari">
      <organization>Ericsson</organization>
    </author>
    <author fullname="Jan Melen" initials="J." surname="Melen">
      <organization>Ericsson Software Technology</organization>
    </author>
    <author fullname="Antony Antony" initials="A." surname="Antony">
      <organization>secunet Security Networks AG</organization>
    </author>
    <author fullname="Andrei Gurtov" initials="A." surname="Gurtov">
      <organization>Linköping University</organization>
    </author>
    <date day="9" month="October" year="2025"/>
    <abstract>
      <t>This document is an update to the Bound End-to-End Tunnel (BEET) mode for ESP in as described in [RFC7402]. It brings the description in alignment with the addition of BEET mode for IKEv2 without any processing changes as described in [RFC7402]</t>
    </abstract>
  </front>
  <seriesInfo name="Internet-Draft" value="draft-moskowitz-ipsecme-rfc7402-beet-update-02"/>
</reference>

<reference anchor="STATUSNOTIFY" target='https://www.iana.org/assignments/ikev2-parameters/ikev2-parameters.xhtml#ikev2-parameters-16'>
<front>
<title>IKEv2 Notify Message Status Types</title>
<author><organization>IANA</organization></author>
<date/>
</front>
</reference>
</references>
<section title="Additional Stuff">
<t>This becomes an Appendix.</t>

</section>
  </back>
</rfc>
