<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-antony-ipsecme-iekv2-beet-mode-00" ipr="trust200902" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3" consensus="true">
  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the
        full title is longer than 39 characters -->
    <title abbrev="IKv2 for BEET mode ESP">IKEv2 negotiation for Bound End-to-End Tunnel (BEET) mode ESP </title>
    <!-- add 'role="editor"' below for the editors if appropriate -->
    <!-- Another author who claims to be an editor -->
    <author fullname="Antony Antony" initials="A." surname="Antony">
      <organization abbrev="secunet">secunet Security Networks AG</organization>
      <address>
        <email>antony.antony@secunet.com</email>
      </address>
    </author>
    <author fullname="Steffen Klassert" initials="S." surname="Klassert">
      <organization abbrev="secunet">secunet Security Networks AG</organization>
      <address>
        <email>steffen.klassert@secunet.com</email>
      </address>
    </author>
    <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 numbered="true" toc="default">
      <name>Introduction</name>
      <t>
    The Bound End-to-End Tunnel (BEET) mode, specified in the appendix B of <xref target="RFC7402"/>
		(Author's note: we propose to write BIZ document for RFC7402 Appendix B, an
		updated document only for ESP BEET mode)
    presents an optimized approach for deploying IPsec Encapsulating Security Payload
    (ESP) by blending the benefits of tunnel and transport modes while minimizing
    their overhead. The current, <xref target="RFC7402"/> does not specify the negotiation process for
    establishing BEET mode using the Internet Key Exchange Protocol Version 2 (IKEv2).
    This document addresses this gap by proposing a new Notify Message Type Payload,
    USE_BEET_MODE, specifically designed to enable the negotiation and establishment
    of BEET mode security associations in IKEv2.
  </t>
      <t>
    The introduction of a negotiation mechanism for BEET mode aims to enhance the
    flexibility and applicability of IPsec, particularly in environments that demand
    efficient end-to-end security with minimal overhead, such as mobile and multi-homed
    networks. By providing a standardized method for negotiating BEET mode, this
    document seeks to facilitate wider adoption and integration into the broader
    IPsec framework.
  </t>
      <section numbered="true" toc="default">
        <name>Requirements Language</name>
        <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" format="default">RFC 2119</xref>.</t>
      </section>
      <section anchor="Background" numbered="true" toc="default">
        <name>Background</name>
        <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"/> and in many environments using IKE negotiation using a private
  Notification. (strongSWAN ref)
</t>
        <t>
        Once IKEv2 negotiation for BEET mode is standardized its potential for
        enhancing secure communications would increase along with
        interoperability.
      </t>
        <t>
Additionally, BEET is valuable for low-power devices, 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. In this use case BEET mode simplifies packet processing and conserves
energy, especially for lower-powered devices.
</t>
      </section>
    </section>
    <section anchor="IKENegotiation" numbered="true" toc="default">
      <name>IKEv2 Negotiation</name>
      <t>
			When negotiating a Child SA using using IKEv2, the initiator may use
      the new "USE_BEET_MODE" Notify Message 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 when requesting a new Child
			SA, either during the IKE_AUTH or CREATE_CHILD_SA exchanges.
			If the request is accepted, the response MUST also include a USE_BEET_MODE
			Notification. 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>
      <section title="USE_BEET_MODE Notify Message Payload" anchor="USEBeetNotify">
        <figure align="center">
          <artwork align="left"><![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      !
+---------------+---------------+-------------------------------+
				 ]]></artwork>
        </figure>
        <ul>
          <li>Payload Length - MUST be 0. </li>
          <li>Protocol ID (1 octet) - MUST be 0. MUST be ignored if not 0.</li>
          <li>SPI Size (1 octet) - MUST be 0. MUST be ignored if not 0.</li>
        </ul>
        <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>
    </section>
    <section anchor="IANA" title="IANA Considerations">
      <t>
        This document defines a new IKEv2 Notify Message Type payloads for the IANA "IKEv2 Notify Message Types - Status Types" registry.
        </t>
      <figure align="center" anchor="iana_requests_i">
        <artwork align="left"><![CDATA[
      Value   Notify Type Messages - Status Types    Reference
      -----   ------------------------------    ---------------
      [TBD1]   USE_BEET_MODE                      [this document]
            ]]></artwork>
      </figure>
    </section>
    <section anchor="Security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <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 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. </t>
    </section>
    <section anchor="Implementation" numbered="true" toc="default">
      <name>Implementation Status</name>
      <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 anchor="impl-status.Linux.xfrm" title="Linux XFRM">
        <t> Linux </t>
        <dl>
          <dt> Organization: </dt>
          <dd> Linux kernel Project</dd>
          <dt> Name: </dt>
          <dd> Linux Kernel  https://www.kernel.org/</dd>
          <dt> Description: </dt>
          <dd> Implements BEET mode in ESP. The initial support was added in 2006. It is widely used </dd>
          <dt> Level of maturity: </dt>
          <dd> Stable and used for over 15 years</dd>
          <dt> Licensing: </dt>
          <dd> GPLv2</dd>
          <dt> Implementation experience: </dt>
          <dd> There is no support for IPv4 fragments yet. IPv6 fragments
						appears to work. The BEE mode code is in production for over a decade </dd>
          <dt> Contact: </dt>
          <dd> https://lore.kernel.org/netdev/ </dd>
        </dl>
      </section>
      <section anchor="section.impl-status.strongswan" title="strongSwan">
        <dl>
          <dt> Organization: </dt>
          <dd> The strongSwan Project</dd>
          <dt> Name: </dt>
          <dd> strongSwan https://docs.strongswan.org/docs/5.9/swanctl/swanctlConf.html </dd>
          <dt> Description: </dt>
          <dd> Implements IKE negotiation and and ESP support for BEET mode Linux</dd>
          <dt> Level of maturity: </dt>
          <dd> Stable for a long time</dd>
          <dt> Coverage: </dt>
          <dd> Implements negotiating BEET mode support in Child SA negotiations
					and using it in ESP. The initial support was added in 2006.</dd>
          <dt> Licensing: </dt>
          <dd> GPLv2</dd>
          <dt> Implementation experience </dt>
          <dd>
             strongSwan use a private space notification value for IKE
						 negotiation.  USE_BEET_MODE (40961). As far we know BEET is widely used.
            </dd>
          <dt> Contact </dt>
          <dd>Tobias Brunner tobias@strongswan.org</dd>
        </dl>
      </section>
      <section anchor="section.impl-status.iproute2" title="iproute2">
        <dl>
          <dt> Organization: </dt>
          <dd> The iproute2 Project</dd>
          <dt> Name: </dt>
          <dd> iproute2 https://git.kernel.org/pub/scm/network/iproute2/iproute2.git</dd>
          <dt> Description: </dt>
          <dd> 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</dd>
          <dt> Level of maturity: </dt>
          <dd> Stable</dd>
          <dt> Licensing: </dt>
          <dd> GPLv2</dd>
          <dt> Implementation experience: </dt>
          <dd> TBD</dd>
          <dt> Contact: </dt>
          <dd> https://lore.kernel.org/netdev/ or Stephen Hemminger stephen@networkplumber.org </dd>
        </dl>
      </section>
    </section>
    <section anchor="Acknowledgements" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <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>
      <name>Normative References</name>
      <xi:include href="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
      <xi:include href="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml"/>
      <xi:include href="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7402.xml"/>
    </references>
    <references>
      <name>Informative References</name>
      <xi:include href="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3552.xml"/>
      <xi:include href="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6982.xml"/>
      <xi:include href="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml"/>
      <xi:include href="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7401.xml"/>
      <xi:include href="http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9333.xml"/>
      <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-nikander-esp-beet-mode-09.xml"/>
    </references>
    <section anchor="app-additional" numbered="true" toc="default">
      <name>Additional Stuff</name>
      <t>This becomes an Appendix.</t>
    </section>
  </back>
</rfc>
