<?xml version='1.0' encoding='UTF-8'?>

<!-- draft submitted in xml v3 -->  

<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-mpls-mna-requirements-16" number="9613" updates="" obsoletes="" category="info" submissionType="IETF" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3" xml:lang="en">

  <front>
    <title abbrev="MNA Requirements">Requirements for Solutions that Support MPLS Network Actions (MNAs)</title>
    <seriesInfo name="RFC" value="9613"/>
    <author initials="M." surname="Bocci" fullname="Matthew Bocci" role="editor">
      <organization>Nokia</organization>
      <address>
        <email>matthew.bocci@nokia.com</email>
      </address>
    </author>
    <author initials="S." surname="Bryant" fullname="Stewart Bryant">
      <organization>University of Surrey ICS</organization>
      <address>
        <email>sb@stewartbryant.com</email>
      </address>
    </author>
    <author initials="J." surname="Drake" fullname="John Drake">
      <organization>Independent</organization>
      <address>
        <email>je_drake@yahoo.com</email>
      </address>
    </author>
    <date year="2024" month="August"/>
    <area>RTG</area>
    <workgroup>mpls</workgroup>

<keyword>Network Action</keyword>
<keyword>NA</keyword>
<keyword>Network Action indicator</keyword>
<keyword>NAI</keyword>
<keyword>Ancillary Data</keyword>
<keyword>AD</keyword>


    <abstract>
<t>This document specifies requirements for the development of MPLS Network Actions (MNAs) that affect the forwarding 
or other processing of MPLS packets. These requirements are informed by a number of 
proposals for additions to the MPLS information in the labeled packet 
 to allow such actions to be performed, either by a transit or terminating Label Switching Router 
 (i.e., the Label Edge Router - LER).</t>
    </abstract>
  </front>
  <middle>

<section anchor="introduction">
      <name>Introduction</name>
      <t>There is significant interest in developing the MPLS data plane to
address the requirements of new use cases <xref target="I-D.ietf-mpls-mna-usecases"/>. This requires a 
general mechanism, termed MPLS Network Actions (MNAs), to allow the network to make a forwarding or 
processing decision based on information other than the top label and Traffic Class (TC) bits, and to 
also make use of the Network Action Indicator (NAI) and ancillary data (MNA information).
These use cases require the definition of extensions to the MPLS architecture and label-stack operations that can be used across these use cases in order to minimize implementation
complexity and promote interoperability and extensibility. These protocol extensions need 
to conform to the existing MPLS architecture as specified by <xref target="RFC3031"/>, <xref target="RFC3032"/>, and <xref target="RFC6790"/>.</t>
      <t>Note that the MPLS architecture specified in <xref target="RFC3031"/> describes a mechanism for forwarding 
MPLS packets through a network without requiring any analysis of the MPLS packet payload's 
network layer header by intermediate nodes (Label Switching Routers - LSRs).  Formally,
inspection may only occur at network ingress (the Label Edge Router - LER) where the MPLS 
packet is assigned to a Forwarding Equivalence Class (FEC).</t>

      <t>This document specifies the requirements for solutions that encode MNAs 
and ancillary data that may be needed to process those actions. 
   These requirements are informed by a
   number of proposals to allow additions to the MPLS information in the
   labeled packet so that such actions can be performed, either by a
   transit or terminating LSR. It is 
anticipated that these will result in two types of solution specifications:</t>

      <dl spacing="normal">
          <dt>MNA solution specification:</dt><dd>A specification that describes a common protocol that supports all forms of MNAs.</dd>
          <dt>Network Action solution specifications:</dt><dd> One or more specifications describing the protocol extensions for the MNA solution to address a use case.</dd>
      </dl>
      <t>The term 'solutions', in isolation, refers to both MNA and Network Action solutions.
The requirements constrain the MNA solution design to enable interoperability between implementations.</t>
      <section anchor="terminology">
        <name>Terminology</name>

        <dl spacing="normal">
            <dt>Network Action (NA):</dt><dd> An operation to be performed on an MPLS packet or as a consequence of an MPLS packet
being processed by a router.  An NA may 
affect router state or MPLS packet forwarding, or it may affect the MPLS packet in some other way.</dd>
            <dt>Network Action Indicator (NAI):</dt><dd>An indication in the MPLS packet that a certain NA
is to be performed.</dd>

            <dt>Ancillary Data (AD):</dt><dd><t>
Data in an MPLS packet associated with a
      given NA that may be used as input to process
      the NA or may result from processing the
      NA. Ancillary data may be associated with:</t>

            <ul spacing="normal">
              <li>
                <t>Both the control or maintenance information and the data traffic carried by the Label Switched Path (LSP).</t>
              </li>
              <li>
                <t>Only the control or maintenance information.</t>
              </li>
              <li>
                <t>Only the data traffic carried by the LSP.</t>
              </li>
            </ul>
	  </dd>
            <dt>In-Stack Data:</dt><dd>Ancillary data carried within the MPLS label stack.</dd>
            <dt>Post-Stack Data:</dt><dd>Ancillary data carried in an MPLS packet between the bottom of the MPLS label 
stack and the first octet of the user payload.  This document does not prescribe whether 
post-stack data precedes or follows any other post-stack header such as a Control Word or 
Associated Channel Header (ACH).</dd>
            <dt>Scope:</dt><dd> The set of nodes that should perform a given action.</dd>
	</dl>
      </section>
    </section>
    <section anchor="requirements-language">
      <name>Requirements Language</name>
        <t>
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>

      <t>Although this document is not a protocol specification, this convention is adopted 
for clarity of description of requirements.</t>
    </section>
    <section anchor="mpls-network-action-requirements">
      <name>MPLS Network Action Requirements</name>

      <t>This document specifies requirements on MNAs and the technology to support
them in MPLS, such as NAIs, the associated AD, and the alert mechanism 
to indicate to an LSR that NAIs are present in an MPLS packet.</t>
      <t>The requirements are for the behavior of the protocol mechanisms and procedures that constitute building blocks
out of which indicators for a NA and associated ancillary data are constructed.
It does not specify the detailed actions and processing of any NAs or ancillary
data by an LSR or LER.</t>

      <t>The size of the ancillary data carried post-stack end to end in an MPLS packet is a matter for 
agreement between the ingress and egress provider edges (PEs), and is not part of these requirements.
Since in-stack ancillary data and per-hop post-stack data need to be parsed and processed 
by transit LSRs along the Label Switched Path (LSP), requirements on the size of such ancillary data are documented in the following sections.</t>
      <section anchor="general-requirements">
        <name>General Requirements</name>
        <ol spacing="normal" type="1" start="1"><li>
            <t>Any solutions <bcp14>MUST</bcp14> maintain the properties of extensibility,
        flexibility, and efficiency inherent in the split between the
        control plane context and simple data plane used in MPLS and the specification
        <bcp14>SHOULD</bcp14> describe how this is achieved.</t>
          </li>
          <li>
            <t>Any solutions to these requirements <bcp14>MUST</bcp14> be based on and <bcp14>MUST NOT</bcp14> restrict the
generality of the MPLS architecture <xref target="RFC3031"/> <xref target="RFC3032"/> <xref target="RFC5331"/>.</t>
          </li>
          <li>
            <t>If extensions to the MPLS data plane are required, they <bcp14>MUST</bcp14>
         be consistent with the MPLS architecture <xref target="RFC3031"/> <xref target="RFC3032"/> <xref target="RFC5331"/>.</t>
          </li>
          <li>
            <t>Solutions meeting the requirements set out in this document <bcp14>MUST</bcp14> be able to coexist 
with existing MPLS mechanisms.</t>
          </li>
          <li>
            <t>Subject to the constraints in these requirements, a Network Action solution <bcp14>MAY</bcp14> carry MNA
information in-stack, post-stack, or both in-stack and post-stack.</t>
          </li>
          <li>
            <t>Solution specifications <bcp14>MUST NOT</bcp14> require an implementation to support in-stack
        ancillary data, unless the implementation chooses to support an
        NA that uses in-stack ancillary data.</t>
          </li>
          <li>
            <t>Solution specifications <bcp14>MUST NOT</bcp14> require an implementation to support post-stack ancillary data, unless the implementation chooses to
        support an NA that uses post-stack ancillary data.</t>
          </li>
          <li>
            <t>The design of any MNA solution <bcp14>MUST</bcp14> minimize the amount of processing required to parse 
the label stack at an LSR.</t>
          </li>
          <li>
            <t>Solutions <bcp14>MUST</bcp14> minimize any additions to the size of the MPLS label stack.</t>
          </li>
          <li>
            <t>Solution specifications that increase the size of the MPLS label stack in a
        way that is not controlled by the ingress LER <bcp14>MUST</bcp14> discuss the
        consequences.</t>
          </li>
          <li>
            <t>Solution specifications <bcp14>MUST</bcp14> discuss the ECMP consequences of the design.</t>
          </li>
          <li>
            <t>A Network Action solution <bcp14>MUST NOT</bcp14> expose information to the LSRs that is not already exposed to the LER.</t>
          </li>
          <li>
            <t>The design of any NA <bcp14>MUST NOT</bcp14> expose any information that a user of any service using the LSP considers 
confidential <xref target="RFC6973"/> <xref target="RFC3552"/>.</t>
          </li>
          <li>
            <t>Solution specifications <bcp14>MUST</bcp14> document any new security considerations that they 
introduce.</t>
          </li>
          <li>
            <t>An MNA solution <bcp14>MUST</bcp14> allow MPLS packets carrying NAI and ancillary data (where it exists) to coexist 
with MPLS packets that do not carry this information on the same LSP.</t>
          </li>
        </ol>
      </section>
      <section anchor="requirements-on-the-mna-alert-mechanism">
        <name>Requirements on the MNA Alert Mechanism</name>
        <ol spacing="normal" type="1" start="16"><li>
            <t>An MNA solution specification <bcp14>MUST</bcp14> define how a node determines whether NAIs
       are present in the MPLS packet.</t>
          </li>
          <li>
            <t>Special Purpose Labels (SPLs) are a mechanism of last resort;
       therefore, an MNA solution specification that defines their use <bcp14>MUST</bcp14> minimize the
       number of new SPLs that are allocated.</t>
          </li>
        </ol>
      </section>
      <section anchor="requirements-on-network-actions">
        <name>Requirements on Network Actions</name>
        <ol spacing="normal" type="1" start="18"><li>
            <t>It is <bcp14>RECOMMENDED</bcp14> that an MNA solution include support for NAs for Private
       Use (see <xref target="RFC8126" sectionFormat="of" section="4.1"/>).</t>
          </li>
          <li>
            <t>Network Action solution specifications <bcp14>MUST</bcp14> define if the NA needs to be
       processed as a part of the immediate forwarding operation and
       whether MPLS packet misordering is allowed to occur as a result
       of the time taken to process the NA.</t>
          </li>
          <li>
            <t>If a Network Action solution specification allows more than one scope for an
       NA, it <bcp14>MUST</bcp14> define a mechanism to indicate the precedence of the
       scopes or any combination of the scopes.</t>
          </li>
          <li>
            <t>If a network action requires an NAI with in-stack ancillary data that needs to be imposed at an LSR
 on an LSP, then the Network Action solution <bcp14>MUST</bcp14> specify how this is achieved in all circumstances.</t>
          </li>
          <li>
            <t>If a network action requires an NAI with post-stack ancillary
       data to be imposed at an LSR on an LSP, then the Network Action
       solution specification <bcp14>MUST</bcp14> describe how this is achieved in all circumstances.</t>
          </li>
        </ol>
      </section>
      <section anchor="requirements-on-network-action-indicators">
        <name>Requirements on Network Action Indicators</name>
        <ol spacing="normal" type="1" start="23"><li>
            <t>Insertion, parsing, processing, and disposition of NAIs <bcp14>SHOULD</bcp14> make use of existing MPLS 
data plane operations.</t>
          </li>
          <li>
            <t>Without constraining the mechanism, an MNA solution <bcp14>MUST</bcp14> enable a node inserting or modifying NAIs
 to determine if the target of the NAI, or any other LSR that may expose the NAI, can accept 
 and process an MPLS packet containing the NAI.</t>
          </li>
          <li>
            <t>An NAI <bcp14>MUST NOT</bcp14> be imposed for delivery to a node unless it is known that the node 
supports processing the NAI.</t>
          </li>
          <li>
            <t>The NAI design <bcp14>MUST</bcp14> support setting the scope of network actions.</t>
          </li>
          <li>
            <t>A given Network Action solution specification <bcp14>MUST</bcp14> define which scope or
        scopes are applicable to the associated NAI.</t>
          </li>
          <li>
            <t>An MNA solution specification <bcp14>SHOULD</bcp14> define the support of NAIs for both Point-to-Point
        (P2P) and Point-to-Multipoint (P2MP) paths, but the Network
        Action solution specification <bcp14>MAY</bcp14> limit a specific NAI to only one of these
        path types if there is a clear reason to do so.</t>
          </li>
          <li>
            <t>An MNA solution specification defining data plane mechanisms for NAIs <bcp14>MUST</bcp14> be
        consistent across different control plane protocols.</t>
          </li>
          <li>
            <t>An MNA solution <bcp14>MUST</bcp14> allow the deployed MPLS control and management planes to determine the ability of downstream LSRs 
to accept and/or process a given NAI.</t>
          </li>
          <li>
            <t>An MNA solution <bcp14>MUST</bcp14> allow indicators for multiple network actions in the same MPLS
packet.</t>
          </li>
          <li>
            <t>An MNA solution specification <bcp14>MUST NOT</bcp14> require an implementation to process
        all NAIs present in an MPLS packet.</t>
          </li>
          <li>
            <t>NAIs <bcp14>MUST</bcp14> only be inserted at LSRs that push a label onto the stack, but they can be processed by 
LSRs along the path of the LSP. Two examples of LSRs that push a label onto the stack are head-end LSRs 
and points of local repair (PLRs).</t>
          </li>
          <li>
            <t>If a network action requires in-stack ancillary data, the NAI that indicates this network action <bcp14>MUST</bcp14> be 
present in the label stack.</t>
          </li>
          <li>
            <t>All NAIs <bcp14>MUST</bcp14> be encoded in a manner consistent with <xref target="RFC3031"/>.</t>
          </li>
          <li>
            <t>If there is post-stack ancillary data for an NAI that is present in the label stack, 
 it <bcp14>MUST</bcp14> be possible to infer the presence of the ancillary data without having to parse below the bottom of the label stack.</t>
          </li>
          <li>
            <t>Any processing that removes an NAI from the label stack <bcp14>MUST</bcp14> also remove all associated 
ancillary data from the MPLS packet unless the ancillary data is required by any remaining NAIs.</t>
          </li>
          <li>
            <t>MNA solution specifications <bcp14>MUST</bcp14> request that IANA create registries and make
        allocations from those registries for NAIs as necessary to
        ensure unambiguous identification of standardized network
        actions.  An MNA solution specification <bcp14>MAY</bcp14> request that IANA reserve a range
        of a registry for Private Use.
	    </t>
          </li>
          <li>
            <t>A Network Action solution specification <bcp14>MUST</bcp14> state where the NAIs are to be
        placed in the MPLS packet, that is whether they are placed in-stack or post-stack.</t>
          </li>
        </ol>
      </section>
      <section anchor="requirements-on-ancillary-data">
        <name>Requirements on Ancillary Data</name>
        <ol spacing="normal" type="1" start="40"><li>
            <t>Network Action solution specifications <bcp14>MUST</bcp14> state whether ancillary data is
        required to fulfill the action and whether it is in-stack and/or
        post-stack.</t>
          </li>
          <li>
            <t>Network Action solution specifications <bcp14>MUST</bcp14> state if in-stack or post-stack
        ancillary data that is already present in the MPLS packet <bcp14>MAY</bcp14> be
        rewritten by an LSR.</t>
          </li>
          <li>
            <t>Solutions for in-stack ancillary data <bcp14>MUST</bcp14> be able to coexist with and 
<bcp14>MUST NOT</bcp14> obsolete existing MPLS mechanisms. Such solutions <bcp14>MUST</bcp14> be described in a Standards 
Track RFC.</t>
          </li>
          <li>
            <t>Network Action solutions <bcp14>MUST</bcp14> take care to limit the quantity of in-stack ancillary data to the minimum amount required.</t>
          </li>
          <li>
            <t>A Network Action solution <bcp14>SHOULD NOT</bcp14> use post-stack ancillary data unless the size of that ancillary data 
        could prevent the coexistence of the
        network action with other in-use MPLS network functions if it
        were inserted into the label stack.
	    </t>
          </li>
          <li>
            <t>The structure of the NAI and any associated ancillary data <bcp14>MUST</bcp14> enable skipping of 
unknown NAIs and any associated AD.</t>
          </li>
          <li>
            <t>Any MNA solution specification <bcp14>MUST</bcp14> describe whether the solution can coexist with
        existing post-stack data mechanisms (e.g., control words and the
        Generic Associated Channel Header <xref target="RFC5586"/>), and if so how coexistence
        operates.</t>
          </li>
          <li>
            <t>An MNA solution <bcp14>MUST</bcp14> allow an LER that inserts ancillary data to determine 
whether each node that needs to process the ancillary data can read the required distance into the
MPLS packet at that node (compare with the mechanism in <xref target="RFC9088"/>).</t>
          </li>
          <li>
            <t>For scoped in-stack or post-stack ancillary data, any MNA solution <bcp14>MUST</bcp14> allow an LER inserting NAIs whose 
network actions make use of that ancillary data to determine if the NAI and ancillary data 
will be processed by LSRs within the scope along the path. 
Such a solution may need to determine if LSRs along the path can process a specific type 
of AD implied by the NAI at the depth in the stack that it will be presented to the LSR.</t>
          </li>
          <li>
            <t>A mechanism <bcp14>MUST</bcp14> exist to notify an egress LER of the presence of ancillary data so
that it can dispose of it appropriately.</t>
          </li>
          <li>
            <t>In-stack ancillary data <bcp14>MUST</bcp14> only be inserted in conjunction with an operation conforming
with <xref target="RFC3031"/>.</t>
          </li>
          <li>
            <t>Post-stack ancillary data <bcp14>MUST</bcp14> only be inserted in conjunction with an operation conforming
with <xref target="RFC3031"/>.</t>
          </li>
          <li>
            <t>Processing of ancillary data below a swapped label <bcp14>MAY</bcp14> include rewriting the ancillary data.</t>
          </li>
          <li>
            <t>If a Network Action solution needs to change the size of the
        ancillary data, its specification <bcp14>MUST</bcp14> analyze the implications on MPLS packet
        forwarding and specify how these are addressed.</t>
          </li>
          <li>
            <t>Not more than one Standards Track solution specification <bcp14>SHOULD</bcp14> be defined for
        encoding in-stack ancillary data.</t>
          </li>
          <li>
            <t>Not more than one Standards Track solution specification <bcp14>SHOULD</bcp14> be defined for
        encoding post-stack ancillary data.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Solutions designed according to the requirements in this document may introduce new security
considerations to MPLS, whose forwarding plane on its own does not provide any built-in
security mechanisms <xref target="RFC5920"/>.</t>
      <t>In particular, such solutions may embed information derived from the MPLS payload 
in the MPLS headers. This may expose data that a user of the MPLS-based service might otherwise 
assume is opaque to the MPLS network. Furthermore, an LSR may insert information
into the labeled packet such that the forwarding behavior is no longer purely a function of the top label 
or another label with forwarding context. Instead, the forwarding behavior may be the result of a more complex heuristic.
This creates an implicit trust relationship between the LSR whose forwarding behavior is being changed
and the upstream LSR inserting the data causing that change.</t>
      <t>Several requirements above address some of these considerations. The MNA framework <xref target="I-D.ietf-mpls-mna-fwk"/> 
also provides security considerations resulting from any extensions to the MPLS architecture, and these <bcp14>SHOULD</bcp14> be taken
together with the security considerations herein.</t>
      <t>Individual solution specifications meeting the requirements in this document <bcp14>MUST</bcp14> address any 
security considerations introduced by the MNA design.</t>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors gratefully acknowledge the contributions from <contact fullname="Joel Halpern"/>, <contact fullname="Greg Mirsky"/>, <contact fullname="Yingzhen Qu"/>, <contact fullname="Haoyu Song"/>, 
<contact fullname="Tarek Saad"/>, <contact fullname="Loa Andersson"/>, <contact fullname="Tony Li"/>, <contact fullname="Adrian Farrel"/>, <contact fullname="Jie Dong"/>, <contact fullname="Bruno Decraene"/>, and participants in the
MPLS Working Group who have provided comments.</t>
      <t>The authors also gratefully acknowledge the input of the members of the
MPLS Open Design Team.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-mpls-mna-usecases" to="MNA-USECASES"/>
    <displayreference target="I-D.ietf-mpls-mna-fwk" to="MNA-FRAMEWORK"/>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>

	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3031.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3032.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5331.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>

      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>

<!-- [I-D.ietf-mpls-mna-usecases] IESG state: I-D Exists as of 06/05/24 -->
        <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-mpls-mna-usecases.xml"/>

<!-- [I-D.ietf-mpls-mna-fwk] IESG state: I-D Exists as of 06/05/24 -->
        <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-mpls-mna-fwk.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5586.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5920.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6790.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6973.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3552.xml"/>
	<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9088.xml"/>


      </references>
    </references>
  </back>
</rfc>
