<?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-01" 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, as specified in Appendix B of

      <xref target="RFC7402" />, offers an optimized approach for deploying IP
      Security (IPsec) using Encapsulating Security Payload (ESP) 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>[TBD Authors propose to write a BIS document for Appendix B of
      <xref target="RFC7402" />, aiming to provide an updated document just
      focusing on ESP BEET mode.]</t>
      <t>The
      <xref target="RFC7402" />does not specify the negotiation process for
      establishing BEET mode using the Internet Key Exchange Protocol Version 2
      (IKEv2). This document fills this gap by introducing a new Notify Message
      Status Type, USE_BEET_MODE, tailored to facilitate the negotiation and
      establishment of BEET mode security associations in IKEv2.</t>
      <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 Host Identity Protocol(HIP) environments
        without IKE negotiation,
        <xref target="RFC7401" />. Also, in using IKE negotiation using a
        private IKEv2 Notify Message Type (strongSWAN ref).</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 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 title="Terminology">
        <t>This document uses the following terms defined in IKEv2
        <xref target="RFC7296" />: Child SA, CREATE_CHILD_SA, Notify Messages
        Type</t>
      </section>
    </section>
    <section anchor="IKENegotiation" numbered="true" toc="default">
      <name>IKEv2 Negotiation</name>
      <t>When negotiating a Child SA 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 the 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 Notify Message 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_MODE notification.</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>
      </section>
    </section>
    <section anchor="IANA" title="IANA Considerations">
      <t>This document defines a new IKEv2 Notify for the IANA "IKEv2 Notify
      Message Status Types" registry.</t>
      <figure align="center" anchor="iana_requests_i">
        <artwork align="left">
          <![CDATA[
      Value   Notify Message Status Type     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 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; and use IKEv2
      MOBIKE to move the between networks.</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 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 Notify Message Status Type USE_BEET_MODE
          (40961) for IKE. 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>Acknowledgment</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="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml" />
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml" />
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7402.xml" />
    </references>
    <references>
      <name>Informative References</name>
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3552.xml" />
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6982.xml" />
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml" />
      <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7401.xml" />
      <xi:include href="https://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>
