<?xml version="1.0" encoding="utf-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.1 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7296 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml">
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-mglt-ipsecme-multiple-child-sa-01" category="std">

  <front>
    <title abbrev="Multiple Child SA">Negotiation of multiple Child Security Association with the Internet Key Exchange Protocol Version 2 (IKEv2)</title>

    <author initials="D." surname="Migault" fullname="Daniel Migault">
      <organization>Ericsson</organization>
      <address>
        <postal>
          <street>8275 Trans Canada Route</street>
          <city>Saint Laurent, QC</city>
          <code>4S 0B6</code>
          <country>Canada</country>
        </postal>
        <email>daniel.migault@ericsson.com</email>
      </address>
    </author>
    <author initials="S." surname="Klassert" fullname="Steffen Klassert">
      <organization>Secunet</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <code></code>
          <country></country>
        </postal>
        <email>steffen.klassert@secunet.com</email>
      </address>
    </author>

    <date year="2022" month="November" day="09"/>

    <area>security</area>
    <workgroup>ipsecme</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>IPsec packet processing with one Security Association (SA) per core is
more efficient than having a SA shared by the multiple cores.</t>

<t>This document optimizes the negotiation of multiple unidirectional SAs
so that each peer can assign one unidirectional SA per core.</t>



    </abstract>


  </front>

  <middle>


<section anchor="requirements-notation" title="Requirements Notation">

<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 BCP 14
<xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all
capitals, as shown here.</t>

</section>
<section anchor="sec-intro" title="Introduction">

<t>IPsec processing (on Linux) is more efficient with SA attached to a
given core as opposed to a SA shared by multiple cores. Suppose an
initiator and a responder respectively with n and p cores establish an
IPsec protected communication defined by Traffic Selectors (TSi, TSr).
IPsec processing performance may be increased if the initiator (resp.
the responder) processes IPsec packets via n (resp. p) distinct
unidirectional SAs rather than having a SA shared by the n (resp p)
cores.</t>

<t>Optimally the number of SAs is expected to be equal to the number of
cores which can be different for each peer. When peers have a different
number of cores, the number of SA is expected to be equal to the highest
number of cores to minimize context switching and the minimum number of
cores to optimize memory space. In fact, having fewer SAs than the
number of cores may result in switching the SA context to unused cores.
On the other hand, having a greater number of SAs results in a core
sharing multiple SAs for the same purpose, which does not improve
performances at the cost of an additional SA stored in the kernel.</t>

<t>Currently Child SA are agreed with IKEv2 <xref target="RFC7296"/> CREATE_CHILD_SA
exchange. Additional Child SAs (in our case n or p) would require n or p
CREATE_CHILD_SA exchanges that add multiple round trips carrying similar
payloads (TSi, TSr, SA) which is not necessary.</t>

<t>This document describes the MULTIPLE_CHILD_SA Notify Payload used in a
CREATE_CHILD_SA to indicate the support of Multiple SA Extension as well
as to agree on the additional number negotiated SA. Section
<xref target="keying-mat"/> describes how SAs are generated.</t>

</section>
<section anchor="protocol-exchange" title="Protocol Exchange">

<t>Note for the WG: Because the CREATE_CHILD_SA happens in the IKE_AUTH
exchange which is usually used to advertise the supported extensions,
the current protocol does not advertise or negotiate the support of the
extension in a separate exchange.</t>

<t>The support for Multiple Child SA extension as well as the number of
additional Child SAs is performed during the CREATE_CHILD_SA exchange
via the MULTIPLE_CHILD_SA Notify Payload.</t>

<t>The initiator indicates in a single MULTIPLE_CHILD_SA notification, the
requested additional number of SA (nChildSAi), the maximum number of
Child SA (maxChildSA) he commits to generate as well as an ordered list of
maxChildSA SPI (SPIi)for potentially accepted additional SA by the
responder.</t>

<t>It is RECOMMENDED that maxChildSA balances the limitations of the initiator
while enabling responders to optimize their IPsec processing as well.
Setting nChildSAi to n and maxChildSA to 2 * n seems a reasonable comprise for
communications between nodes of similar capacities.</t>

<figure><artwork><![CDATA[
 initiator                         responder
 ------------------------------------------------------------------
 HDR, SK {IDi, [CERT,] [CERTREQ,]
     [IDr,] AUTH, SAi2, TSi, TSr,
     N(MULTIPLE_CHILD_SA(nChildSAi, maxChildSA=2n, SPIi))}  -->
]]></artwork></figure>

<t>Upon receiving a request for the CREATE_CHILD_SA exchange, the responder
builds the CREATE_CHILD_SA Response. The MULTIPLE_CHILD_SA Notify
Payload is processed only when the CREATE_CHILD_SA can be successfully
completed and that the responder supports the Multiple Child SA
extension. Otherwise the MULTIPLE_CHILD_SA Notify Payload is ignored.
Only the first encountered MULTIPLE_CHILD_SA notification is considered,
others are ignored.</t>

<t>Upon receiving the MULTIPLE_CHILD_SA Notify Payload, a responder
indicates the accepted number of additional SA (nChildSAr) it is willing
to generate. nChildSAr MUST be equal or greater to 0 and lower or equal
to maxChildSA.</t>

<t>The responder generates an ordered list of nChildSAr SPIs (SPIr),
returns to the initiator nChildSAr, maxChildSA set to zero and  SPIr.
The responder populates the nChildSAr additional Child SAs from SAr2,
TSi, TSr, nChildSAr, SPIi, SPIr and KEYMAT as defined in <xref target="RFC7296"/>
section 2.17 for the Child SA and as defined in <xref target="keying-mat"/> for the
other additional Child SAs.</t>

<figure><artwork><![CDATA[
                 <--  HDR, SK {IDr, [CERT,] AUTH,
                          SAr2, TSi, TSr, 
                           N(MULTIPLE_CHILD_SA(nChildSAr, SPIr))}
]]></artwork></figure>

<t>If the CREATE_CHILD_SA is processed correctly by the initiator, the
initiator checks nChildSAr is lower or equal to maxChildSA initially
provided. The value of maxChildSA carried by the notification is
ignored. Additional Child SAs are populated as defined in <xref target="RFC7296"/>
section 2.17 for the Child SA and as defined in {keying-mat} for the
other additional Child SAs.</t>

</section>
<section anchor="keying-mat" title="Generating Keying Material for Child Sas">

<t>This section details how each peers derives the cryptographic material
for nChildSAr Child SAs from SAi2, SAr2, TSi, TSr, nChildSAr, SPIi, SPIr
and KEYMAT.</t>

<t>The initiator and the responder generates the first Child SA as defined
by the CREATE_CHILD_SA in <xref target="RFC7296"/> and the cryptographic material is
derived as defined in <xref target="RFC7296"/> Section 2.17.</t>

<t>Upon receiving the MULTIPLE_CHILD_SA Extension, each peer generates the
remaining SAs by repeating a CREATE_CHILD_SA negotiation nChildSAr times.
While this is implementation dependent how the nChildSAr set of SAs are
generated, the resulting SAs MUST ended in the same result as described
below:</t>

<t>While SPIi and SPIr are not empty:
* Take the first SPI of SPIi (SPIi[0]), and remove that value from SPIi.
SPIi length is decreased by one.
* Replace SPI value in SA2i by SPIi[0]
* Take the first SPI of SPIr (SPIr[0]), and remove that value from SPIr.
SPIr length is decreased by one.
* Replace SPI value in SA2r by SPIr[0]
* Generates the SAs as described in <xref target="RFC7296"/> section 2.17.</t>

<t>Note for the WG: The handling of MULTIPLE_CHILD_SA is based on information
exchanged during the CREATE_CHILD_SA exchange. It woudl be better to
have the MULTIPLE_CHILD_SA Payload BEFORE the CREATE_IKE_SA.</t>

</section>
<section anchor="error-handling" title="Error Handling">

<t>There may be conditions when the responder for some reason is unable or
unwilling to create additional Child SAs.  This inability may be
temporary or permanent.</t>

<t>Temporary inability occurs when the responder doesn’t have enough
resources at the moment to generate Child SAs. In this case, the
responder SHOULD reject the request to clone the IKE SA with the
TEMPORARY_FAILURE notification.</t>

<figure><artwork><![CDATA[
                           <--  HDR, SK {N(TEMPORARY_FAILURE)}
]]></artwork></figure>

<t>After receiving this notification, the initiator MAY retry its request
after waiting some period of time.  See Section 2.25 of <xref target="RFC7296"/> for
details.</t>

<t>In some cases, the responder may have restrictions on the number of
coexisting SAs with one peer.  These restrictions may be either implicit
(some devices may have enough resources to handle only a few SAs) or
explicit (provided by some configuration parameter).  If the initiator
wants more SAs than the responder is able or is configured to handle,
the responder SHOULD reject the request with the NO_ADDITIONAL_SAS
notification as defined in <xref target="RFC7296"/>.</t>

<figure><artwork><![CDATA[
                           <--  HDR, SK {N(NO_ADDITIONAL_SAS)}
]]></artwork></figure>

<t>This condition is considered permanent and the initiator SHOULD NOT
retry creating Child SAs until some of the existing SAs with the
responder are deleted.  This condition is considered permanent and the
initiator SHOULD NOT retry cloning an IKE SA until some of the existing
SAs with the responder are deleted.</t>

</section>
<section anchor="payload-description" title="Payload Description">

<t>Figure 1 illustrates the Notify Payload packet format as described in
Section 3.10 of <xref target="RFC7296"/> used for both the MULTIPLE_CHILD_SA
notifications.</t>

<figure><artwork><![CDATA[
                       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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  | Next Payload  |C|  RESERVED   |         Payload Length        |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |  Protocol ID  |   SPI Size    |      Notify Message Type      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |            nChildSA           |          maxChildSA           |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                              SPI_0                            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ~                                ...                            ~
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                          SPI_(nChildSA-1)                     |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                     Figure 1: Notify Payload
]]></artwork></figure>

<t>The fields Next Payload, Critical Bit, RESERVED, and Payload Length are
defined in <xref target="RFC7296"/>.  Specific fields defined in this document are:</t>

<t><list style="symbols">
  <t>Protocol ID (1 octet):  Set to zero.</t>
  <t>Security Parameter Index (SPI) Size (1 octet):  Set to zero.</t>
  <t>Notify Message Type (2 octets):  Specifies the type of notification
message.  It is set to TBD1 for the MULTIPLE_CHILD_SA notification.</t>
  <t>nChildSA (2 octets): number of set of SAs. The value set by the initiator
is nChildSAi and the one set by the responder is nChildSAr.</t>
  <t>maxChildSA (2 octets): Maximum number of acceptable set of SAs. This value
is set by the initiator and set to zero by the responder.</t>
  <t>SPI_0… SPI_(nChildSA-1): the list of nChildSA SPIs. The list is
designated as SPIi when sent by th einitiator and as SPIr when sent by
the responder.</t>
</list></t>

</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>IANA has allocated two values in the “IKEv2 Notify Message Types -
 Status Types” registry:</t>

<figure><artwork><![CDATA[
   Value    Notify Messages - Status Types
 -----------------------------------------
   TBD1    MULTIPLE_CHILD_SA
]]></artwork></figure>

</section>
<section anchor="security-consideration" title="Security Consideration">

<t>The protocol defined in this document does not modify IKEv2.  Security
considerations. Generating multiple SA are mostly equivalent as the
CREATE_CHILD_SA exchange described in <xref target="RFC7296"/>.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC2119;
&RFC8174;
&RFC7296;


    </references>




  </back>

<!-- ##markdown-source:
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

-->

</rfc>

