<?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.5.6 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC3031 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3031.xml">
<!ENTITY RFC7274 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7274.xml">
<!ENTITY RFC9017 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9017.xml">
<!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 I-D.kompella-mpls-nffrr SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.kompella-mpls-nffrr.xml">
<!ENTITY I-D.ietf-teas-ns-ip-mpls SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-teas-ns-ip-mpls.xml">
<!ENTITY RFC8662 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8662.xml">
<!ENTITY I-D.nsdt-teas-ns-framework SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.nsdt-teas-ns-framework.xml">
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-kompella-mpls-mspl4fa-03" category="std">

  <front>
    <title abbrev="MSPL for FA">Multi-purpose Special Purpose Label for Forwarding Actions</title>

    <author initials="K." surname="Kompella" fullname="Kireeti Kompella">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>United States</country>
        </postal>
        <email>kireeti.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="V.P." surname="Beeram" fullname="Vishnu Pavan Beeram">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>United States</country>
        </postal>
        <email>vbeeram@juniper.net</email>
      </address>
    </author>
    <author initials="T." surname="Saad" fullname="Tarek Saad">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1133 Innovation Way</street>
          <city>Sunnyvale</city>
          <region>CA</region>
          <code>94089</code>
          <country>United States</country>
        </postal>
        <email>tsaad@juniper.net</email>
      </address>
    </author>
    <author initials="I." surname="Meilik" fullname="Israel Meilik">
      <organization>Broadcom</organization>
      <address>
        <email>israel.meilik@broadcom.com</email>
      </address>
    </author>

    <date year="2022" month="July" day="08"/>

    <area>Routing</area>
    <workgroup>MPLS WG</workgroup>
    <keyword>special purpose label, slice, oam, nffrr, flow id, fragmentation</keyword>

    <abstract>


<t>The MPLS architecture introduced Special Purpose Labels (SPLs) to
indicate special forwarding actions and offered a few simple examples,
such as Router Alert.  In the two decades since the original
architecture was crafted, the range, complexity and sheer number of
such actions has grown; in addition, there now is need for “associated
data” for some of the forwarding actions.  Likewise, the capabilities
and scale of forwarding engines has also improved vastly over the same
time period.  There is a pressing need to match the needs with the
capabilities to deliver the next generation of MPLS architecture.</t>

<t>In this memo, we propose an alternate mechanism whereby a single SPL
can encode multiple forwarding actions and carry data (if any)
associated with the actions, some in the label stack and some after
the label stack.  This proposal also solves the problem of scarcity of
base SPLs.</t>

<t>As proof of its utility and flexibility, this approach can immediately
address several use cases:</t>

<t><list style="symbols">
  <t>to carry an Entropy Label for better load balancing;</t>
  <t>to carry a Flow-Aggregate Selector for IETF network slicing;</t>
  <t>to signal that further fast reroute may have harmful consequences;</t>
  <t>to indicate that there is relevant data after the label stack;</t>
  <t>among others.</t>
</list></t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>Base Special Purpose Labels (bSPLs) <xref target="RFC3031"/>, <xref target="RFC7274"/>,
<xref target="RFC9017"/> are a precious commodity; there are only 16 such values,
of which 8 have already been allocated.  There are currently five
requests for bSPLs that the authors are aware of; this document
proposes another use case for a bSPL, in all consuming nearly all the
remaining values.  This document suggests a method whereby a single
bSPL can be used for all the purposes currently requested.  This leads
to perhaps the more valuable long-term contribution of this document:
an approach to the definition and use of bSPLs (and SPLs in general)
whereby a single value can be used for multiple purposes, and provide
a flexible yet efficient means of carrying associated data.</t>

<section anchor="conventions-and-definitions" title="Conventions and Definitions">

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

<t><list style="hanging">
  <t hangText="FAI:">
  Forwarding Actions Indicator</t>
  <t hangText="ISD:">
  In-Stack Data</t>
  <t hangText="sISD:">
  Standard ISD</t>
  <t hangText="uISD:">
  User-Defined ISD</t>
  <t hangText="ISDH:">
  In-Stack Data Header</t>
  <t hangText="LSE:">
  Label stack entry</t>
  <t hangText="PSD:">
  Post-Stack Data</t>
  <t hangText="SPL:">
  Special-purpose label</t>
  <t hangText="bSPL:">
  Base special-purpose label</t>
</list></t>

</section>
<section anchor="revision-history" title="Revision History">

<t>This section (to be removed before publication) offers highlights from
the draft’s revision history.</t>

<section anchor="changes-from-00-to-01" title="Changes from -00 to -01">

<t><list style="numbers">
  <t>This section added.</t>
  <t>Added a section discussing when data should be put in the LS FAD vs
in the PL FAD.</t>
  <t>Tweaked the bits in the FAI.  Added a field “edist”.</t>
  <t>Elaborated on the use of the H bit and the FAH data.</t>
  <t>Updated the processing of the LS FAD.</t>
  <t>Added processing of edist.</t>
  <t>Updated the FAI example.</t>
  <t>Updated the Issues section.</t>
</list></t>

</section>
<section anchor="changes-from-01-to-02" title="Changes from -01 to -02">

<t><list style="numbers">
  <t>Updated Abstract and Introduction to focus on FAI; moved description
of use cases to separate section.</t>
  <t>Added terminology.</t>
  <t>Changed terminology: LS FAD and PL FAD to ISD and PSD, respectively.</t>
  <t>Updated text on criteria for putting associated data in ISD.</t>
  <t>Introduced the terms FAI Block, FFB Block, sISD Block and uISD
Block.  Introduced an “end of block” bit, s.  Updated flag bits;
updated processing of ISD.</t>
  <t>Removed field edist.</t>
  <t>Updated the section on preventing the FAI from reaching the Top of Stack.</t>
  <t>Updated the section on Readable Stack Depth</t>
</list></t>

</section>
<section anchor="changes-from-02-to-03" title="Changes from -02 to -03">

<t><list style="numbers">
  <t>Separated the discussion of the LSE format from the flag definitions.</t>
  <t>Replaced continuation bits with explicit length fields for easier
parsing.</t>
</list></t>

</section>
</section>
</section>
<section anchor="multi-purpose-bspl-the-forwarding-actions-indicator" title="Multi-purpose bSPL: the Forwarding Actions Indicator">

<t>This document proposes the use of a single bSPL to tell routers one or
more forwarding actions they should take on a packet, e.g.:</t>

<t><list style="symbols">
  <t>to treat a packet according to its flow-aggregate, given its G-FAS;</t>
  <t>to load balance a packet, given its entropy;</t>
  <t>whether or not to perform fast reroute on a failure
<xref target="I-D.kompella-mpls-nffrr"/>;</t>
  <t>whether or not a packet has metadata relevant to intermediate
hops along the path;</t>
  <t>and perhaps other functions in the future.</t>
</list></t>

<t>This bSPL is called the “Forwarding Actions Indicator” (FAI).  There are
other suggestions for this name, including “Network Functions Indicator”
and “Network Actions Indicator”.  We’ll let WG consensus determine the
final choice of name, but for now, we’ll continue to use FAI.</t>

<t>The FAI uses the label’s TC bits and TTL field to inform the
forwarding plane of the required actions.  Each of these actions may
have associated data.  This data may be carried in the label stack as
“In-Stack Data” (ISD) or after the label stack as “Post-Stack Data”
(PSD).</t>

<section anchor="the-fai-bspl" title="The FAI bSPL">

<t>The design of the bSPL hinges on two key insights: forwarding engines
do not interpret the TC bits or the TTL field for labels that are not
at the top of the label stack (ToS); nor do they do so for SPLs.  For
non-ToS labels, the important bit fields are the label value field (to
compute entropy and identify SPLs) and the End of Stack (S) bit (to
know when the label stack ends).  [If you know of a forwarding engine
that looks at other bit fields of labels below the ToS, please contact
the authors.]  This means that for a bSPL that will never appear at
the ToS, the TC bits and the TTL bits can be used to carry additional
information.  Furthermore, for the ISD, the entire 4-octet label stack
entry, the S bit excepted, can be used to carry data.  We use this
technique to make the FAI bSPL multipurpose, and to make the ISD words
compact and efficient.</t>

<section anchor="isd-vs-psd" title="ISD vs PSD">

<t>A pertinent question is when one should put data in the ISD versus in
the PSD.  One alternative is to put all such data in the PSD.
However, this would mean that accessing such information would require
finding the End of Stack, and parsing the PSD.  For certain types of
data, this would be a severe burden on the packet forwarding engine.
Examples of such data are the Entropy label (needed for efficient load
balancing) and the G-FAS (needed for accurate packet forwarding).
Having any of this data in the PSD would hurt forwarding performance.</t>

<t>This memo suggests that data that is required for accurate and optimal
forwarding should be put in the ISD, and data that is optional from a
forwarding point of view should be put in the PSD.  Furthermore, each
flag bit should have no more than one word of associated ISD.
The EG flag can thus have up to 2 words of associated data.</t>

<t>By the above criteria, this memo suggests that in-situ OAM data and
the Flow ID be carried in the PSD.</t>

</section>
</section>
<section anchor="format-of-the-fai-label-stack" title="Format of the FAI label stack">

<t>The format of a label stack that includes an FAI has the structure:</t>

<figure><artwork><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         (previous labels) (one or more LSEs)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Forwarding Actions Indicator (one LSE)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         In-Stack Data Header (zero or one LSE)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Forwarding Actions Data (zero to two LSEs)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Standard In-Stack Data (zero or more LSEs)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         User-defined In-Stack Data (zero or more LSEs)        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         (other labels)                                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Post-stack data (zero or more words)                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Payload                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The flags and data associated with the FAI come in three forms:</t>

<t><list style="numbers">
  <t>Forwarding Actions Flags and Data; these flags are in the FAI LSE.
These are defined in this document.</t>
  <t>Standard In-Stack Flags and Data; these flags are in the In-Stack
Data Header.  These MUST be defined in a Standards-track document.</t>
  <t>User-defined In-Stack Flags and Data; these flags are also in the
In-Stack Data Header.  These are perforce user-defined and not
subject to standardization.</t>
</list></t>

<t>The format of the PSD is out of scope for this document.</t>

<section anchor="the-fai-label-stack-entry-lse" title="The FAI Label Stack Entry (LSE)">

<t>The format of the FAI LSE is:</t>

<figure title="Format for the FAI label stack entry" anchor="FAI-FAD"><artwork><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Forwarding Actions Indicator  |I|h|R|S|Flags|  Tsize  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The FAI LSE’s label value MUST be the IANA allocated value. The
remaining fields are defined as follows:</t>

<t><list style="hanging">
  <t hangText="I:">
  In-Stack Data Header (ISDH) is present (1) or not (0).</t>
  <t hangText="h:">
  If set, the PSD contains hop-by-hop information. Every node in the
path SHOULD attempt to process the hop-by-hop information, but not at
the expense of exceeding the processing time budget, which could cause
this (or other) packet(s) to be dropped.  If clear, no hop-by-hop data
exists in the PSD: either the PSD is empty, or it contains only
end-to-end data (to be processed by the egress).</t>
  <t hangText="R:">
  Reserved for future use (SHOULD be ignored by receivers).</t>
  <t hangText="S:">
  MUST be set if the FAI LSE is the end of stack, and clear otherwise.</t>
  <t hangText="Flags:">
  Each bit in the Flags field represents a forwarding action.  Except
for the flags defined herein, the semantics of a forwarding action
are out of scope for this document. Each flag is allocated from the
<xref target="flags-registry">Forwarding Actions Flag Registry</xref> and is assigned
an index. Flag indices 0 to 2 correspond to bits 24 to 26 within the
FAI LSE. Flags continue into the In-Stack Data Header, if present.</t>
  <t hangText="Tsize:">
  This is the total size of the FAI block, i.e., the FAI LSE and all
associated data, in four-octet words.</t>
</list></t>

</section>
<section anchor="the-in-stack-data-header" title="The In-Stack Data Header">

<t>If the I flag is set, the label stack contains an In-Stack Data Header
(ISDH) following a FAI LSE. The format of the ISDH is:</t>

<figure title="Format for the Forwarding Actions Header" anchor="FAI-header"><artwork><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Ssize  |        sISD Flags       |  Usize  |S|   uISD Flags  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>The fields in the Forwarding Actions Header are:</t>

<t><list style="hanging">
  <t hangText="Ssize:">
  This is the size of the Standard ISD (sISD) in four-octet words.</t>
  <t hangText="sISD Flags:">
  This is a continuation of the Flags field from the preceeding FAI
LSE, i.e., flag indices 3 to 15 correspond to bits 5 to 17 in the
ISDH.</t>
  <t hangText="Usize:">
  This is the size of the user-defined ISD (uISD) in four-octet words.</t>
  <t hangText="S:">
  MUST be set if the ISDH is the end of stack, and clear otherwise.</t>
  <t hangText="uISD Flags:">
  These correspond to user-defined flags, and are not subject to
standardization.</t>
</list></t>

</section>
</section>
</section>
<section anchor="forwarding-action-flags" title="Forwarding Action Flags">

<t>This document defines the following Forwarding Action Flags.</t>

<section anchor="no-further-fast-re-route-nffrr" title="No Further Fast Re-Route (NFFRR)">

<t><list style="hanging">
  <t hangText="Index:">
  0</t>
  <t hangText="ISD:">
  None</t>
</list></t>

<t>If set, do not perform fast re-route on this traffic.</t>

</section>
<section anchor="entropy-and-slice-information-eg" title="Entropy and Slice information (EG)">

<t>These are two flags that have joint semantics:</t>

<t><list style="hanging">
  <t hangText="Indices:">
  1, 2</t>
  <t hangText="ISD:">
  0, 1, or 2 ISD LSEs, depending on the values of the flags:

      <list style="hanging">
        <t hangText="00:">
        No Entropy or G-FAS present</t>
        <t hangText="01:">
        ISD 0 contains 16 bits of Entropy in the high order 16 bits and
  15 bits of G-FAS in the low order 16 bits (S bit excepted).</t>
        <t hangText="10:">
        ISD 0 contains 20 bits of Entropy in the high order 20 bits and
  11 bits of G-FAS in the low order 12 bits (S bit excepted).</t>
        <t hangText="11:">
        ISD 0 contains the 31-bit Entropy; ISD 1 contains the 31-bit G-FAS.
  In ISD 0, the S bit MUST be 0; the packet forwarding engine
  may choose to use the S bit as part of the Entropy, as it
  doesn’t affect the outcome.  In ISD 1, the S bit may be 0 or 1.</t>
      </list>
  </t>
</list></t>

</section>
</section>
<section anchor="rules-for-processing" title="Rules for Processing">

<section anchor="processing-the-fai-flags-and-the-isd" title="Processing the FAI Flags and the ISD">

<t>Here’s how the Standard ISD is parsed.  One must keep track of Ssize
to know when the Standard ISD data ends, and the S bit to know when
the stack ends.  The Standard ISD data appears in the order of the
corresponding flags.</t>

<t>It is an error if the label stack ends while there are more ISD
words to process.</t>

<t><list style="numbers">
  <t>Set CL (“current label”) to the FAI label.  LL is the last label
(End of Stack); PL (“payload”) is the first 4-octet word of the
payload.</t>
  <t>If I is 0, there is no associated ISDH; set Ssize = Usize = 0.
Otherwise, note the values of Ssize and Usize; increment CL.</t>
  <t>Process Forwarding Actions Flags and Data:  <list style="numbers">
      <t>Process N.  CL is unchanged.</t>
      <t>Process EG:      <list style="numbers">
          <t>If EG is 00, CL is unchanged.</t>
          <t>If EG is 01 or 10, increment CL.  CL now contains both G-FAS and Entropy.</t>
          <t>If EG is 11, CL+1 contains Entropy; CL+2 contains G-FAS.  Increment CL by 2.</t>
        </list></t>
    </list></t>
  <t>If I == 1, process sISD Flags; increment CL by 1 for each (upto Ssize;
skip any remaining sISD Flags once Ssize LSEs have been processed).</t>
  <t>If I == 1, process uISD Flags; increment CL by 1 for each (upto Usize).</t>
</list></t>

<t>Note that how the uISD is used is not defined here; this is up to the
user.  All that is included here is how a forwarding engine can tell
the size of uISD.</t>

</section>
<section anchor="example-of-the-fai" title="Example of the FAI">

<figure title="Example of FAI + ISD + hop-by-hop PSD" anchor="ex-fai"><artwork><![CDATA[
     0                   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
                                               TC  S       TTL
                                             -----   ---------------
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Tunnel Label-1                   | TC  |0|      TTL      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Tunnel Label-2                   | TC  |0|      TTL      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Forwarding Actions Indicator     |0|1|0|0|1|0|1|0|0|0|0|1|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Entropy                  |   G-FAS ... |0|      ...      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      VPN Label                        | TC  |1|      TTL      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |b b b b|                    PSD                                |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | real payload starts ...

I  =  0: there is no ISDH.
h  =  1: There is hop-by-hop PSD.
R  =  0: Ignore.
N  =  1: NFFRR is set.
EG = 01: ISD 0 contains a 16-bit Entropy label and a 15-bit G-FAS.
Tsize = 1: The FAI block consists of 1 LSE beyond the FAI LSE.
]]></artwork></figure>

<t>The real payload starts after the PSD.</t>

</section>
</section>
<section anchor="issues-to-be-resolved" title="Issues to be Resolved">

<t>This section captures issues to be resolved, in this memo and others.
As the issues are fixed, they should be removed from here; ideally,
this section should be empty before publication.</t>

<section anchor="preventing-fai-from-reaching-top-of-stack" title="Preventing FAI From Reaching Top of Stack">

<t>As was said earlier, the FAI MUST NOT be at the top of stack, since
its TC and TTL bits have been repurposed.  There are two ways to
prevent this.  If an LSR X pops a label and the next label is the FAI,
X MUST pop Tsize LSEs to remove the FAI LSE and associated data.  This
implies that the LSR MUST be able to recognize the FAI LSE and at
least parse the Tsize field.  This can be used in conjunction with
<xref target="rsd"/>.</t>

<t>In case it is desired to preserve the FAI+FAD until the egress, X
should push an explicit NULL (label value 0 or 2) onto the stack above
the FAI, with the correct TC and TTL values.</t>

<t>Other options may be pursued; however, we believe this is an adequate
resolution.</t>

</section>
<section anchor="rsd" title="Repeating the FAI at “Readable Stack Depth”">

<t>For LSRs which cannot parse the entire label stack, or would prefer
not to unless needed, it is possible to repeat the FAI at “readable
stack depth” (rsd).  Say the rsd is 10 LSEs, and the FAI block
contains 3 LSEs.  Then, the FAI block can be repeated every 7 labels,
allowing all forwarding engines in the path to process it.  When a
forwarding label is popped and the FAI block exposed, it is deleted in
its entirety, since the same (or potentially different) FAI block is
again within the rsd.</t>

<t>Other options were considered in <xref target="RFC8662"/>, Section 10, and are
discussed briefly in <xref target="app2"/>.</t>

</section>
</section>
<section anchor="psd" title="PSD">

<t>Currently, CW, …</t>

<t>The format of the PSD, whether or not a Control Word is present, and
handling of the first nibble, is outside the scope of this document.
The FAI will not contain details about the contents of the PSD,
besides the single flag on whether or not the PSD contains information
relevant to (most) intermediate hops.  It is assumed that another memo
will document the format of the PSD, and that that memo will provide a
means of parsing the PSD (e.g., a TLV structure) and thus determining
its contents.</t>

<t>The PSD memo should also comment on the impact of processing the PSD
on forwarding performance, especially in the case of hop-by-hop info.</t>

</section>
<section anchor="app1" title="Appendix 1 (normative) Use Cases">

<section anchor="flow-aggregate-selector" title="Flow-Aggregate Selector">

<t>Network slicing is an important ongoing effort both for network
design, as well as for standardization, in particular at the IETF
<xref target="I-D.nsdt-teas-ns-framework"/>.  A key issue is identifying which
slice a packet belongs to, by means of a “slice selector” carried in
the packet header.  <xref target="I-D.ietf-teas-ns-ip-mpls"/> describes several
such methods for MPLS networks, of which the Global Identifier for
Flow-Aggregate Selector (G-FAS) is one of the more practical
solutions.  This document shows how to realize the G-FAS using a base
special purpose label (bSPL).</t>

<t>In MPLS networks, a G-FAS is a data plane construct identifying packets
belonging to a slice aggregate (the set of packets that belong to the
slice).  The G-FAS dictates forwarding actions for the slice aggregate:
QoS behavior and next hop selection.  The purpose of the G-FAS is
detailed in <xref target="I-D.ietf-teas-ns-ip-mpls"/>.  To embed a G-FAS in a
label stack, one must preface it with a bSPL identifying it as such.
For reasons that will become apparent, this bSPL is called the
Forwarding Actions Indicator (FAI).</t>

</section>
<section anchor="entropy-label" title="Entropy Label">

</section>
<section anchor="no-further-fast-re-route" title="No Further Fast Re-Route">

</section>
</section>
<section anchor="app2" title="Appendix 2 (non-normative): Positioning of the FAI Block">

</section>
<section anchor="contributors" title="Contributors">

<t>Many thanks to Colby Barth, Chandra Ramachandran and Srihari Sangli
for their contributions to this draft.</t>

</section>
<section anchor="acknowledgments" title="Acknowledgments">

<t>We’d like to acknowledge the helpful discussions with Swamy SRK and
folks from the Broadcom team on the impacts to existing and future
forwarding engines.</t>

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

<t>If this draft is deemed useful and adopted as a WG document, the
authors request the allocation of a bSPL for the FAI.  We suggest the
early allocation of label 8 for this.</t>

<section anchor="flags-registry" title="The Forwarding Actions Flag Registry">
<t>A new registry is needed for the allocation of the Forwarding Action
flags. This registry should be called the “Forwarding Action Flags
Registry” within the “Multiprotocol Label Switching Architecture
(MPLS)” protocol registry.  The policy for allocating new flags is
Standards Action.  Each flag MUST have a name, a brief description and
the length of the associated ISD. IANA should allocate an index for
each flag, starting with zero.</t>

<t>The initial contents of the registry should contain:</t>

<texttable>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Indices</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>No Further Fast Re-Route</c>
      <c>0</c>
      <c>This document</c>
      <c>Entropy and Slice information</c>
      <c>1, 2</c>
      <c>This document</c>
</texttable>

</section>
</section>
<section anchor="security-considerations" title="Security Considerations">

<t>A malicious or compromised LSR can insert the FAI and associated data
into a label stack, preventing (for example) FRR from occurring.  If
so, protection will not kick in for failures that could have been
protected, and there will be unnecessary packet loss.  Similarly,
inserting or removing a Fragmentation Header means that a packet’s
contents cannot be accurately reconstructed.  Inserting or changing
a G-FAS means that the packet will be misclassified, perhaps leaving
or entering a high-value slice and causing damage.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>

&RFC3031;
&RFC7274;
&RFC9017;
&RFC2119;
&RFC8174;
&I-D.kompella-mpls-nffrr;
&I-D.ietf-teas-ns-ip-mpls;


    </references>

    <references title='Informative References'>

&RFC8662;
&I-D.nsdt-teas-ns-framework;


    </references>



  </back>

<!-- ##markdown-source:
H4sIAE3xx2IAA91c6XIbR5L+X09RC/0QuAYQACVfVDhmKIqUuKaOIShrNmYn
NgrdBaDNRhemD1IYUfss+yz7ZJtfZlUfAEjbsdbExNKWRDTqyMrK++jhcKjK
pEztkX5dpWUyXFf52hVWT9c2Skyq3/nPF2ZmUz13uT5z+a3J4yRb6OOoTFxW
KDOb5faGlpi+u5Axxyp2UWZWtG6cm3k5vHartU1TM1yt02K4Ktbp07kZjp+o
yJR24fLNkS7KWCXr/EiXeVWUh+Px9+NDZXJrjvSlq0raUN26/HqRu2pNe727
mOoPL9W13dDTmKZ7iMMJUkA80EWaRHagnVkNdDaf5/lAz1N3q5OYfsnNYmWz
0uAYSpmqXLr8SGk9pD9aJ1lxpH8c6R897PxQDvVjkltbJt2vXL440v9WZcna
5vqNLQFtwd8UJYYf6cnkyRN9nmXuhrfUH8yGv4+SkhAwrbJsc2NSy89yu6Ah
R/rkWIa4mPb9/un4u+/95yorgbb3WVLaWE/pFFZ2syuTpEf6WmAcJbac/3GB
Z6PIrbqn+2mk3430c2tzs2od76ekWGaVfmduTNb+9p/shDczBu2PPwtEo8yW
3eNdjfTUmLh1sisiqOvm4T/ZgcqCANs+jhzlfKRf2yRNrluHOS9yQ1zZes7n
eZ47E8tV1ysnPHS04qF/nPkRTBCqKE0W/6dJXUZrZk6tkyP9l9JFxDwuJzTM
C/pts8Ivf1Uqc/mKUHFjj5RKsnnr03A41GZGiDNRqdTV0gqTmjxa0nmjssot
naXMXVxFOP4+EVPoPgmR4kCXjlaPE4iHmrXnjegxIno0Qa7dfG5zWtDoub3V
RUIixmr70eDfYqCKKlpqU7AQoVs+Tm1ejjTdqS4JRLpyHdvIxLagqVlk+anL
k0WSmVR1gL+lVSKIM0vCA8Nyky1IuBAWaauPRBEMT7EkstRZtZrRP27uAfAA
L2kNEmG32TPChTZxnOA5L0c7ZJBMhc4sHQeCtGeKwtHZaUcVm9L0+GnhVgTi
nEHYxQmd7SK5trdJYQXKyKzNjO69TIjaGMCIKBYLtCbbjA5sBT6TFk4TGnN3
Q3DcmKJMN5p+z3m5gmiPlAaBQESauJj2u2LgCXCj17ktCizIZyidJvKg42Mi
nhT6Nin5o2qDhYGxTZOwR2Y/lnphM2Jv5jqCdYeWRkrxHdK2K7tyA31LEOWO
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
ebqRaWa9PmS2fCQFyieh9ZncxQ8D0dJ7qxoGu60vJ2h3dqn+AN+/STYzDIr8
3ThttRJKuCBLZkRKA18igQMJzjiXt90xPaqT6VKa7uoEK/pGTJIW4Oyq9Lyc
lZyGbIGsZhZbhFA6dzpxkB5Saqs/aDsF3oraqnY/T3/livKg09bDTT2Q+6XP
EBL0sYjf0AAP3ar4FHVAu9yPZSFB5kFTik7meb5zm+i3btHeqrnWffRc0Qr6
6uKnpoY0VDe3um0QiuOyfY8zf+dYQypkReByLQ3eOwBwfTA5kbp37N6N44Ga
XHZPkfNAW9/+m9bxWFYKtM5WcQCT5vGaY9gfycbq1++iOUBJkD7h9s1Pj4iQ
J5+lCnf/2yXIwe++VcLL5qY1xGULx7JjTnCWEl3hRiOZp6RNhuOit+iLMxLP
3EpisAGFeGoSVSk3TUgU8/TqjLTgH9BOlhVxOSxJqQ6zYjjPSUBgfWJDrY+l
1wYmFocOfMOJ9BKTuFf8bqumzwwdHxnSBW6A6EZNC0b3ZGThj99rVS2rVrh4
GWqgfKsb3hxVw5asuePt82cduuDrt4LIG27kPQuCB35Zi8cVSfz6tRPY7GXq
ZmS/nstxEsvv+lD3vQekz2Y3RxZd03nFkc41On7JOKT9vSLd8x4I0sY+VOzY
bg5mjXiCVSF5Y7w5Re19g5i8nONAjJWtY5mQEoAZx6FeaQ+DPGYW69yZILlQ
ck2+xdFof4n1yftS7iB8JFOE32VeiC3xNN+y58Egh5vfKLWvITMkX7d2O1J/
clNamUzaBL0DqG2DAQqOE2qRSg1sEtDiryAcXYm8DbrnAcLBOo7M+xl3qtfZ
FKO65kmI2sM8MREbh2yV+X6kNkolYQHqG7EpRBdcuNDDxKJxZrl8kiSCyVn/
lPsbJNXDNd7cHtnJ4V3Uryi4L5XYEVaHEFbZsBFY/MIE7oFqKcK6VVuE2CEJ
MfVIdCleHeLyQqnXiJOiTeKa7f8TlxKvPycZsxxwC3OcG31pViaS3+XlIdM8
WZo8IZOMFF2iPDUkeee1JIXQFtgHL0YQaRsh3UFI4hfl0fYf7ONYp8k1m4Sm
/laYamnTNV610zRI+67m6a1ZbfT08kfW/3OXXhdN1jy8r0wTxay6yoRB4lor
aaaJfcmT2jXvxOdF7dyJN4eMf+fI+bx1KrHULLQwOSgAlq2i2K3lHR9EZh9e
1vKDTVAV3mvj3wDD8PniIV8R4GmzVQEovWW+n4RXqd9g05onlP9dXarU6sr8
hTIkopBuGdJndUy8e6vD5/AeMV8qtgtzuW8XJSkokaL1Uo1z/mBLsc/OBxB7
beO1x33qZBiULnJpqGulAeK5H7de7KX6kLMHPV2PDoAESeRIim3C+3r4SPyK
oFufLyehVNcPe9BCay6beOzwSj+u7yM2Ygm3XwtRN/v4RnyPsa1+JKG42iiS
grK6/Is1mw37DiRWw/obTIHq95EW+4pfEmDSHVN1+wq8DXqk1N0bOBP3R+18
YYC+u7TsXkQ2hPPuhg/+3O38Ej7TnveVTfho5rgOa3a0MM18uPbhjosX9s4k
riYfpsrx8rJtzj4m5xsGHNqE0FLo8M66VQLPBoENfplZVti85bXuxkYUV9OZ
rpPceulEn5NEEp8jF+3yUiSXQ59djrcwIKpDJgjnnEobAh3eK7lO4M1lUq4p
7xLw+ilqut8QTFJ+NhxK72uiKUKUmEawHya1IVLw1lpKvjm87GSVpBAtAyVn
ZX2SS2DIV8W133Maqqda3b7BgnxcqJr+fCgBYSHfUMivwKpNGymSbW/IaUy4
D0G3t3ZoGZnhRHRNUYqSSTIB6cjhBQep5cZJBZzDj5IToEBjKHEcb8FkUtSL
r2PSdgs7Uv8LH3xFNc1WAAA=

-->

</rfc>

