<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.2.3) -->


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

]>


<rfc ipr="trust200902" docName="draft-ietf-pce-multipath-13" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="PCEP Extensions for Multipath">PCEP Extensions for Signaling Multipath Information</title>

    <author initials="M." surname="Koldychev" fullname="Mike Koldychev">
      <organization>Ciena Corporation</organization>
      <address>
        <email>mkoldych@ciena.com</email>
      </address>
    </author>
    <author initials="S." surname="Sivabalan" fullname="Siva Sivabalan">
      <organization>Ciena Corporation</organization>
      <address>
        <email>ssivabal@ciena.com</email>
      </address>
    </author>
    <author initials="T." surname="Saad" fullname="Tarek Saad">
      <organization>Cisco Systems</organization>
      <address>
        <email>tsaad@cisco.com</email>
      </address>
    </author>
    <author initials="V." surname="Beeram" fullname="Vishnu Pavan Beeram">
      <organization>Juniper Networks, Inc.</organization>
      <address>
        <email>vbeeram@juniper.net</email>
      </address>
    </author>
    <author initials="H." surname="Bidgoli" fullname="Hooman Bidgoli">
      <organization>Nokia</organization>
      <address>
        <email>hooman.bidgoli@nokia.com</email>
      </address>
    </author>
    <author initials="B." surname="Yadav" fullname="Bhupendra Yadav">
      <organization>Ciena</organization>
      <address>
        <email>byadav@ciena.com</email>
      </address>
    </author>
    <author initials="S." surname="Peng" fullname="Shuping Peng">
      <organization>Huawei Technologies</organization>
      <address>
        <email>pengshuping@huawei.com</email>
      </address>
    </author>
    <author initials="G." surname="Mishra" fullname="Gyan Mishra">
      <organization>Verizon Inc.</organization>
      <address>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>

    <date year="2025" month="April" day="08"/>

    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>
    

    <abstract>


<t>Certain traffic engineering path computation problems require solutions that
consist of multiple traffic paths, that together form a solution.
Returning just one single traffic path does not provide a valid solution.
This document defines mechanisms to encode multiple paths for a single set of
objectives and constraints.
This allows encoding of multiple Segment Lists per
Candidate Path within a Segment Routing Policy.
The new PCEP mechanisms are meant to be generic, where possible,
to allow for future re-use outside of SR Policy.
The new PCEP mechanisms are applicable to both stateless and stateful PCEP.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>Segment Routing Policy for Traffic Engineering
<xref target="RFC9256"/> details the concepts of SR
Policy and approaches to steering traffic into an SR Policy.  In
particular, it describes the SR candidate-path as a collection of one
or more Segment-Lists.  The current PCEP standards only allow for
signaling of one Segment-List per Candidate-Path.  PCEP extension to
support Segment Routing Policy Candidate Paths
<xref target="I-D.ietf-pce-segment-routing-policy-cp"/> specifically avoids
defining how to signal multiple Segment-Lists.</t>

<t>This document defines the required extensions that allow the signaling
of multipath information via PCEP. Although these extensions are
motivated by the SR Policy use case, they are also applicable
to other data plane types.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<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>

<section anchor="terms-and-abbreviations"><name>Terms and Abbreviations</name>

<t>The following terms are used in this document:</t>

<t>ECMP:</t>

<ul empty="true"><li>
  <t>Equal Cost Multi Path, equally distributing traffic among multiple paths/links, where each path/link gets the same share of traffic as others.</t>
</li></ul>

<t>W-ECMP:</t>

<ul empty="true"><li>
  <t>Weighted ECMP, un-equally distributing traffic among multiple paths/links, where some paths/links get more traffic than others.</t>
</li></ul>

</section>
</section>
<section anchor="motivation"><name>Motivation</name>

<t>This extension is motivated by the use-cases described below.</t>

<section anchor="signaling-multiple-segment-lists-of-an-sr-candidate-path"><name>Signaling Multiple Segment-Lists of an SR Candidate-Path</name>

<t>The Candidate-Path of an SR Policy is the unit of signaling in PCEP, see
<xref target="I-D.ietf-pce-segment-routing-policy-cp"/>.  Each Candidate-Path can
contain multiple Segment-Lists and each Segment-List is encoded by
one ERO.  However, each PCEP LSP can contain only a
single ERO, which prevents us from encoding multiple Segment-Lists 
within the same SR Candidate-Path.</t>

</section>
<section anchor="splitting-of-requested-bandwidth"><name>Splitting of Requested Bandwidth</name>

<t>A PCC may request a path with 80 Gbps of bandwidth, but all links in the
network have only 60 Gbps capacity.  The PCE can return two paths, that can
together carry 80 Gbps. The PCC can then equally or unequally split the incoming
80 Gbps of traffic among the two paths. <xref target="WEIGHT-TLV"/> introduces a
new TLV that carries the path weight that facilitates control of load-balancing
of traffic among the multiple paths.</t>

</section>
<section anchor="reverse-path-information"><name>Reverse Path Information</name>

<t>Path Computation Element Communication Protocol (PCEP) Extensions for Associated 
Bidirectional Label Switched Paths (LSPs) <xref target="RFC9059"/> defines a mechanism in PCEP
to associate two opposite direction SR Policy Candidate Paths. 
However, within each Candidate Path there can be multiple Segment-Lists,
and <xref target="RFC9059"/> does not define a mechanism to specify Segment-List to Segment-List
mapping between the forward and reverse Candidate Paths.
Certain applications such as Circuit Style SR Policy <xref target="I-D.schmutzer-pce-cs-sr-policy"/>,
require the knowledge of reverse path(s) per Segment-List, not just per Candidate path.
For example, when the headend knows the reverse Segment-List for each forward Segment-List, 
then PM/BFD can run a separate session on every Segment-List, 
by imposing a double stack (forward stack followed by reverse stack) onto the packet.
If the reverse Segment-List is co-routed with the forward Segment-List, then 
the PM/BFD session would traverse the same links in the forward and reverse directions,
thus allowing to detect link/node failures in both directions.</t>

</section>
</section>
<section anchor="protocol-extensions"><name>Protocol Extensions</name>

<section anchor="path-attributes-object"><name>Path Attributes Object</name>

<t>We define the PATH-ATTRIB object that is used to carry per-path
information and to act as a separator between several ERO/RRO objects
in the &lt;intended-path&gt;/&lt;actual-path&gt; RBNF element.
The PATH-ATTRIB object always precedes the ERO/RRO that it applies to.  If
multiple ERO/RRO objects are present, then each ERO/RRO object MUST be
preceded by an PATH-ATTRIB object that describes it.</t>

<t>The PATH-ATTRIB Object-Class value is (45).</t>

<t>The PATH-ATTRIB Object-Type value is 1.</t>

<figure title="PATH-ATTRIB object format" anchor="fig-path-attrib"><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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         Flags                         |R|  O  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         Path ID                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ~                          Optional TLVs                        ~
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>O (Operational - 3 bits): operational state of the path, same 
values as the identically named field in the LSP object <xref target="RFC8231"/>.</t>

<t>R (Reverse): Indicates this path is reverse,
i.e., it
originates on the LSP destination and terminates on the
LSP source (usually the PCC headend itself).
Paths with this flag set serve only informational
purpose to the PCC.</t>

<t>Path ID: 4-octet identifier that identifies a path (encoded in the 
ERO/RRO) within the set of multiple paths under the PCEP LSP.
See <xref target="PATH-ID"/> for details.</t>

</section>
<section anchor="METRIC"><name>Metric</name>

<t>The PCEP METRIC object can continue to be used at the LSP level.
The metric value encoded into the LSP level METRIC object SHOULD be
the maximum value of all the per PATH metrics.</t>

</section>
<section anchor="WEIGHT-TLV"><name>Multipath Weight TLV</name>

<t>New MULTIPATH-WEIGHT TLV is optional in the PATH-ATTRIB object.</t>

<figure title="MULTIPATH-WEIGHT TLV format" anchor="fig-multipath-weight"><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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |             Type              |             Length            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                             Weight                            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Type: (61) for "MULTIPATH-WEIGHT" TLV.</t>

<t>Length: 4.</t>

<t>Weight: weight of this path within the multipath, if W-ECMP is
desired. The fraction of flows a specific ERO/RRO carries is derived
from the ratio of its weight to the sum of all other path weights.</t>

<t>When the MULTIPATH-WEIGHT TLV is absent from the PATH-ATTRIB object,
or the PATH-ATTRIB object is absent from the
&lt;intended-path&gt;/&lt;actual-path&gt;, then the Weight of the corresponding
path is taken to be "1".</t>

</section>
<section anchor="BACKUP-TLV"><name>Multipath Backup TLV</name>

<t>New MULTIPATH-BACKUP TLV is optional in the PATH-ATTRIB object.</t>

<t>This TLV is used to specify protecting standby path(s),
for each ECMP path within a PCEP LSP.
This is similar to path protection, but works at the ECMP path level
instead of at the PCEP LSP level.</t>

<t>This functionality is not part of the SR Policy Architecture <xref target="RFC9256"/>,
but is something optional that MAY be implemented for certain 
specialized use cases.
One such use case is the P2MP SR Policy <xref target="I-D.draft-ietf-pce-sr-p2mp-policy"/>.</t>

<figure title="MULTIPATH-BACKUP TLV format" anchor="fig-multipath-backup"><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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |             Type              |             Length            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |       Backup Path Count       |             Flags           |B|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         Backup Path ID 1                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         Backup Path ID 2                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                              ...                              |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                         Backup Path ID n                      |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork></figure>

<t>Type: (62) for "MULTIPATH-BACKUP" TLV</t>

<t>Length: 4 + (N * 4) (where N is the Backup Path Count)</t>

<t>Backup Path Count: Number of backup path(s).</t>

<t>B: If set, indicates a pure backup path. This is a path that only
carries rerouted traffic after the protected path fails. If this flag
is not set, or if the MULTIPATH-BACKUP TLV is absent,
then the path is assumed to be primary that
carries normal traffic.</t>

<t>Backup Path ID(s): a series of 4-octet identifier(s) that identify the
backup path(s) in the set that protect this primary path.</t>

</section>
<section anchor="OPPDIR-PATH-TLV"><name>Multipath Opposite Direction Path TLV</name>

<t>New MULTIPATH-OPPDIR-PATH TLV is optional in the PATH-ATTRIB object.
Multiple instances of the TLV are allowed in the same PATH-ATTRIB object.
This TLV encodes a many-to-many mapping between forward and reverse
paths.</t>

<t>Many-to-many mapping means that a single forward path MAY map
to multiple reverse paths and conversely that a single reverse
path MAY map to multiple forward paths.
Many-to-many mapping can happen for an SR Policy,
when a Segment-List contains Node Segment(s)
which traverse parallel links at the midpoint.
The reverse of this Segment-List may not be able to be expressed as a single
Reverse Segment-List, but need to return multiple Reverse Segment-Lists
to cover all the parallel links at the midpoint.</t>

<figure title="MULTIPATH-OPPDIR-PATH TLV format" anchor="fig-multipath-oppdir"><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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |             Type              |             Length            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |        Reserved (MBZ)         |             Flags         |L|N|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                 Opposite Direction Path ID                    |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork></figure>

<t>Type: (63) for "MULTIPATH-OPPDIR-PATH" TLV</t>

<t>Length: 16.</t>

<t>N (Node co-routed): If set, indicates this path is
node co-routed with
its opposite direction path, specified in this TLV.
Two opposite direction paths are node co-routed if they
traverse the same nodes,
but MAY traverse different links.</t>

<t>L (Link co-routed): If set, indicates this path is
link co-routed with
its opposite directions path, specified in this TLV.
Two opposite direction paths are link co-routed if they
traverse the same links (but in opposite directions).</t>

<t>Opposite Direction Path ID: Identifies a path that
goes in the opposite direction to this path.
If no such path exists, then this field MUST be set to 0x0,
which is reserved to indicate the absence of a Path ID.</t>

<t>Multiple instances of this TLV
present in the same PATH-ATTRIB object indicate that there are multiple
opposite-direction paths corresponding to the given path. This allows for
many-to-many relationship among the paths of two opposite direction LSPs.</t>

<t>Whenever path A references another path B as being the
opposite-direction path, then path B MUST also reference path A as its
own opposite-direction path.
Furthermore, their values of the R-flag (Reverse) in the PATH-ATTRIB
object MUST have opposite values.</t>

<t>See <xref target="OPPDIREX"/> for an example of usage.</t>

</section>
<section anchor="CCP"><name>Composite Candidate Path</name>

<t>SR Policy Architecture <xref target="RFC9256"/> defines the concept of a
Composite Candidate Path. 
A regular SR Policy Candidate Path outputs traffic to a set of Segment-Lists, 
while an SR Policy Composite Candidate Path outputs traffic recursively to 
a set of SR Policies on the same headend.
In PCEP, the Composite Candidate Path still consists of PATH-ATTRIB objects,
but ERO is replaced by Color of the recursively used SR Policy.</t>

<t>To signal the Composite Candidate Path, we make use of the COLOR TLV, defined in
<xref target="I-D.draft-ietf-pce-pcep-color"/>. For a Composite Candidate Path, the COLOR TLV
is included in the PATH-ATTRIB Object, thus allowing each Composite Candidate Path
to do ECMP/W-ECMP among SR Policies identified by its constituent Colors.
Only one COLOR TLV SHOULD be included into the PATH-ATTRIB object. If multiple
COLOR TLVs are contained in the PATH-ATTRIB object, only the first one MUST be
processed and the others SHOULD be ignored.</t>

<t>An ERO object MUST be included as per the existing RBNF, 
this ERO SHOULD contain no sub-objects.
If the head-end receives a non-empty ERO, the contents SHOULD be ignored.</t>

<t>See <xref target="CCPEX"/> for an example of the encoding.</t>

<section anchor="PFP"><name>Per-Flow Candidate Path</name>

<t>Per-Flow Candidate Path builds on top of the concept of the Composite Candidate Path.
Each Path in a Per-Flow Candidate Path is assigned a 3-bit forward class value, 
which allows QoS classified traffic to be steered depending on the forward class.</t>

<t>New MULTIPATH-FORWARD-CLASS TLV is optional in the PATH-ATTRIB object.</t>

<figure title="MULTIPATH-FORWARD-CLASS TLV format" anchor="fig-multipath-forward-class"><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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |             Type              |             Length            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                            MBZ                          | FC  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Type: (TBD1) for "MULTIPATH-FORWARD-CLASS" TLV.</t>

<t>Length: 4.</t>

<t>FC: Forward class value that is given by the QoS classifier to traffic entering 
the given Candidate Path. Different classes of traffic that enter the given 
Candidate Path can be differentially steered into different Colors.</t>

</section>
</section>
</section>
<section anchor="OP"><name>Operation</name>

<section anchor="capability-negotiation"><name>Capability Negotiation</name>

<section anchor="multipath-capability-tlv"><name>Multipath Capability TLV</name>

<t>New MULTIPATH-CAP TLV is defined. 
This TLV MAY be present in the OPEN object during PCEP session establishment.</t>

<figure title="MULTIPATH-CAP TLV format" anchor="fig-multipath-cap"><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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |             Type              |             Length            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |     Number of Multipaths      |            Flags    |C|F|O|B|W|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork></figure>

<t>Type: (60) for "MULTIPATH-CAP" TLV.</t>

<t>Length: 4.</t>

<t>Number of Multipaths: From PCC, it tells how many multipaths the PCC can install in forwarding. 
From PCE, it tells how many multipaths the PCE can compute.
The value 255 indicates unlimited number.
The value 0 is reserved.</t>

<t>W-flag: whether MULTIPATH-WEIGHT TLV is supported.</t>

<t>B-flag: whether MULTIPATH-BACKUP TLV is supported.</t>

<t>O-flag: whether MULTIPATH-OPPDIR-PATH TLV is supported and requested. 
If this flag is set, the PCE SHOULD tell the PCC the reverse path information, if it is able to.</t>

<t>F-flag: whether MULTIPATH-FORWARD-CLASS TLV is supported.</t>

<t>C-flag: whether Composite Candidate Path (<xref target="CCP"/>) is supported.
Note that F-flag and C-flag can be set independently,
i.e., F-flag can be set, but C-flag not set, etc.</t>

<t>When PCE computes the LSP path, it MUST NOT return more forward 
multipaths than the corresponding value of "Number of Multipaths"
from the MULTIPATH-CAP TLV.  If this TLV is absent (from both OPEN
and LSP objects), then the "Number of Multipaths" is assumed to be 1.</t>

<t>From the PCC, the MULTIPATH-CAP TLV MAY also be present in the LSP object for each individual LSP, to specify per-LSP values.
The PCC MUST NOT include this TLV in the LSP object if the TLV was not
present in the OPEN objects of both PCEP peers.
TLV values in the LSP object override the session default values 
in the OPEN object.</t>

<t>For example, the PCC includes this TLV in the OPEN object at session establishment,
setting "Number of Multipaths" to 4 and "O-flag" to 0.
The PCC also includes this TLV in the LSP object for a particular LSP,
setting "Number of Multipaths" to 16 and "O-flag" to 1.
This indicates that the PCC only wants to receive the reverse path information for that
particular LSP and that this LSP can have up to 16 multipaths,
while other LSPs can only have up to 4 multipaths.</t>

</section>
</section>
<section anchor="PATH-ID"><name>Path ID</name>

<t>The Path ID uniquely identifies a Path within the context of an LSP.
Note that when the LSP is an SR Policy Candidate Path, the 
Paths within that LSP are the Segment-Lists.</t>

<t>Value 0x0 indicates unallocated Path ID.
The value of 0x0 MAY be used when this Path is not being referenced 
and the allocation of a Path ID is not necessary.</t>

<t>Path IDs are allocated by the PCEP peer that owns the LSP.
If the LSP is delegated to the PCE, then the PCE allocates the Path IDs
and sends them in the PCReply/PCUpd/PCInit messages.
If the LSP is locally computed on the PCC, then the PCC allocates the
Path IDs and sends them in the PCReq/PCRpt messages.</t>

<t>If a PCEP speaker detects that there are two Paths with the same Path ID,
then the PCEP speaker SHOULD send PCError message with
Error-Type = 1 ("Reception of an invalid object") and
Error-Value = 38 ("Conflicting Path ID").</t>

</section>
<section anchor="signaling-multiple-paths-for-loadbalancing"><name>Signaling Multiple Paths for Loadbalancing</name>

<t>The PATH-ATTRIB object can be used to signal multiple path(s) and indicate
(un)equal loadbalancing amongst the set of multipaths. In this case, the
PATH-ATTRIB is populated for each ERO as follows:</t>

<t><list style="numbers">
  <t>The PCE MAY assign a unique Path ID to each ERO path and populate
it inside the PATH-ATTRIB object. The Path ID is unique within the
context of a PLSP (when non-zero).</t>
  <t>The MULTIPATH-WEIGHT TLV MAY be carried inside the PATH-ATTRIB object. A
weight is populated to reflect the relative loadshare that is to be
carried by the path. If the MULTIPATH-WEIGHT is not carried inside a
PATH-ATTRIB object, the default weight 1 MUST be assumed when computing
the loadshare.</t>
  <t>The fraction of flows carried by a specific primary path is derived
from the ratio of its weight to the sum of all other multipath weights.</t>
</list></t>

</section>
<section anchor="signaling-multiple-paths-for-protection"><name>Signaling Multiple Paths for Protection</name>

<t>The PATH-ATTRIB object can be used to describe a set of backup path(s) protecting
a primary path within a PCEP LSP. In this case, the PATH-ATTRIB is populated for each ERO as
follows:</t>

<t><list style="numbers">
  <t>The PCE assigns a unique Path ID to each ERO path and populates
it inside the PATH-ATTRIB object. The Path ID is unique within the
context of a PLSP.</t>
  <t>The MULTIPATH-BACKUP TLV MAY be added inside the PATH-ATTRIB object for each
ERO that is protected. The backup path ID(s) are populated in the
MULTIPATH-BACKUP TLV to reflect the set of backup path(s) protecting the
primary path. The Length field and Backup Path Number in the MULTIPATH-BACKUP
are updated according to the number of backup path ID(s) included.</t>
  <t>The MULTIPATH-BACKUP TLV MAY be added inside the PATH-ATTRIB object for each
ERO that is unprotected. In this case, MULTIPATH-BACKUP does not carry
any backup path IDs in the TLV. If the path acts as a pure backup i.e.
the path only carries rerouted traffic after the protected path(s) fail then
the B flag MUST be set.</t>
</list></t>

<t>Note that primary paths which do not include the MULTIPATH-BACKUP TLV are assumed
to be protected by all the backup paths. I.e., omitting the TLV is equivalent to
including the TLV with all the backup path IDs filled in.</t>

<t>Note that a given PCC may not support certain backup combinations,
such as a backup path that is itself protected by another backup path, etc.
If a PCC is not able to implement a requested backup scenario,
the PCC SHOULD send a PCError message with
Error-Type = 19 ("Invalid Operation") and
Error-Value = 20 ("Not supported path backup").</t>

</section>
</section>
<section anchor="RBNF"><name>PCEP Message Extensions</name>

<t>The RBNF of PCReq, PCRep, PCRpt, PCUpd and PCInit messages currently use a combination
of &lt;intended-path&gt; and/or &lt;actual-path&gt;.
As specified in Section 6.1 of <xref target="RFC8231"/>, &lt;intended-path&gt; is represented by the
ERO object and &lt;actual-path&gt; is represented by the RRO object:</t>

<figure><artwork><![CDATA[
   <intended-path> ::= <ERO>

   <actual-path> ::= <RRO>
]]></artwork></figure>

<t>In this standard, we extend these two elements to allow multiple ERO/RRO objects to be
present in the &lt;intended-path&gt;/&lt;actual-path&gt;:</t>

<figure><artwork><![CDATA[
   <intended-path> ::= (<ERO>|
                       (<PATH-ATTRIB><ERO>)
                       [<intended-path>])
              

   <actual-path> ::= (<RRO>|
                      (<PATH-ATTRIB><RRO>)
                      [<actual-path>])
]]></artwork></figure>

</section>
<section anchor="examples"><name>Examples</name>

<section anchor="sr-policy-candidate-path-with-multiple-segment-lists"><name>SR Policy Candidate-Path with Multiple Segment-Lists</name>

<t>Consider the following sample SR Policy, taken from<br />
<xref target="RFC9256"/>.</t>

<figure><artwork><![CDATA[
SR policy POL1 <headend, color, endpoint>
    Candidate-path CP1 <protocol-origin = 20, originator =
                        100:1.1.1.1, discriminator = 1>
        Preference 200
        Weight W1, SID-List1 <SID11...SID1i>
        Weight W2, SID-List2 <SID21...SID2j>
    Candidate-path CP2 <protocol-origin = 20, originator =
                        100:2.2.2.2, discriminator = 2>
        Preference 100
        Weight W3, SID-List3 <SID31...SID3i>
        Weight W4, SID-List4 <SID41...SID4j>
]]></artwork></figure>

<t>As specified in <xref target="I-D.ietf-pce-segment-routing-policy-cp"/>, CP1 and CP2 
are signaled as separate state-report elements and each has 
a unique PLSP-ID, assigned by the PCC. 
Let us assign PLSP-ID 100 to CP1 and PLSP-ID 200 to CP2.</t>

<t>The state-report for CP1 can be encoded as:</t>

<figure><artwork><![CDATA[
<state-report> =
    <LSP PLSP_ID=100>
    <ASSOCIATION>
    <END-POINT>
    <PATH-ATTRIB Path_ID=1 <WEIGHT-TLV Weight=W1>>
    <ERO SID-List1>
    <PATH-ATTRIB Path_ID=2 <WEIGHT-TLV Weight=W2>>
    <ERO SID-List2>
]]></artwork></figure>

<t>The state-report for CP2 can be encoded as:</t>

<figure><artwork><![CDATA[
<state-report> =
    <LSP PLSP_ID=200>
    <ASSOCIATION>
    <END-POINT>
    <PATH-ATTRIB Path_ID=1 <WEIGHT-TLV Weight=W3>>
    <ERO SID-List3>
    <PATH-ATTRIB Path_ID=2 <WEIGHT-TLV Weight=W4>>
    <ERO SID-List4>
]]></artwork></figure>

<t>The above sample state-report elements only 
specify the minimum mandatory objects, 
of course other objects like SRP, LSPA, METRIC, etc., are allowed to be 
inserted.</t>

<t>Note that the syntax</t>

<figure><artwork><![CDATA[
<PATH-ATTRIB Path_ID=1 <WEIGHT-TLV Weight=W1>>
]]></artwork></figure>

<t>, simply means that this is PATH-ATTRIB object 
with Path ID field set to "1" and 
with a MULTIPATH-WEIGHT TLV carrying weight of "W1".</t>

</section>
<section anchor="two-primary-paths-protected-by-one-backup-path"><name>Two Primary Paths Protected by One Backup Path</name>

<t>Suppose there are 3 paths: A, B, C.
Where A,B are primary and C is to be used only when A or B fail.
Suppose the Path IDs for A, B, C are respectively 1, 2, 3.
This would be encoded in a state-report as:</t>

<figure><artwork><![CDATA[
<state-report> =
    <LSP>
    <ASSOCIATION>
    <END-POINT>
    <PATH-ATTRIB Path_ID=1 <BACKUP-TLV B=0, Backup_Paths=[3]>>
    <ERO A>
    <PATH-ATTRIB Path_ID=2 <BACKUP-TLV B=0, Backup_Paths=[3]>>
    <ERO B>
    <PATH-ATTRIB Path_ID=3 <BACKUP-TLV B=1, Backup_Paths=[]>>
    <ERO C>
]]></artwork></figure>

<t>Note that the syntax</t>

<figure><artwork><![CDATA[
<PATH-ATTRIB Path_ID=1 <BACKUP-TLV B=0, Backup_Paths=[3]>>
]]></artwork></figure>

<t>, simply means that this is PATH-ATTRIB object 
with Path ID field set to "1" and 
with a MULTIPATH-BACKUP TLV that has B-flag cleared and contains
a single backup path with Backup Path ID of 3.</t>

</section>
<section anchor="CCPEX"><name>Composite Candidate Path</name>

<t>Consider the following Composite Candidate Path, taken from<br />
<xref target="RFC9256"/>.</t>

<figure><artwork><![CDATA[
SR policy POL100 <headend = H1, color = 100, endpoint = E1>
    Candidate-path CP1 <protocol-origin = 20, originator =
                        100:1.1.1.1, discriminator = 1>
        Preference 200
        Weight W1, SR policy <color = 1>
        Weight W2, SR policy <color = 2>
]]></artwork></figure>

<t>This is signaled in PCEP as:</t>

<figure><artwork><![CDATA[
    <LSP PLSP_ID=100>
        <ASSOCIATION>
        <END-POINT>
        <PATH-ATTRIB Path_ID=1
            <WEIGHT-TLV Weight=W1>
            <COLOR-TLV Color=1>>
        <ERO (empty)>
        <PATH-ATTRIB Path_ID=2
            <WEIGHT-TLV Weight=W2>
            <COLOR-TLV Color=2>>
        <ERO (empty)>
]]></artwork></figure>

</section>
<section anchor="OPPDIREX"><name>Opposite Direction Tunnels</name>

<t>Consider the two opposite-direction SR Policies between
end-points H1 and E1.</t>

<figure><artwork><![CDATA[
SR policy POL1 <headend = H1, color, endpoint = E1>
    Candidate-path CP1
        Preference 200
        Bidirectional Association = A1
        SID-List = <H1,M1,M2,E1>
        SID-List = <H1,M3,M4,E1>
    Candidate-path CP2
        Preference 100
        Bidirectional Association = A2
        SID-List = <H1,M5,M6,E1>
        SID-List = <H1,M7,M8,E1>

SR policy POL2 <headend = E1, color, endpoint = H1>
    Candidate-path CP1
        Preference 200
        Bidirectional Association = A1
        SID-List = <E1,M2,M1,H1>
        SID-List = <E1,M4,M3,H1>
    Candidate-path CP2
        Preference 100
        Bidirectional Association = A2
        SID-List = <E1,M6,M5,H1>
]]></artwork></figure>

<t>The state-report for POL1, CP1 can be encoded as:</t>

<figure><artwork><![CDATA[
<state-report> =
    <LSP PLSP_ID=100>
    <BIDIRECTIONAL ASSOCIATION = A1>
    <PATH-ATTRIB PathID=1 R-flag=0
        <OPPDIR-PATH-TLV OppositePathID=3>>
    <ERO <H1,M1,M2,E1>>
    <PATH-ATTRIB PathID=2 R-flag=0
        <OPPDIR-PATH-TLV OppositePathID=4>>
    <ERO <H1,M3,M4,E1>>
    <PATH-ATTRIB PathID=3 R-flag=1
        <OPPDIR-PATH-TLV OppositePathID=1>>
    <ERO <E1,M2,M1,H1>>
    <PATH-ATTRIB PathID=4 R-flag=1
        <OPPDIR-PATH-TLV OppositePathID=2>>
    <ERO <E1,M4,M3,H1>>
]]></artwork></figure>

<t>The state-report for POL1, CP2 can be encoded as:</t>

<figure><artwork><![CDATA[
<state-report> =
    <LSP PLSP_ID=200>
    <BIDIRECTIONAL ASSOCIATION = A2>
    <PATH-ATTRIB PathID=1 R-flag=0
        <OPPDIR-PATH-TLV OppositePathID=3>>
    <ERO <H1,M5,N6,E1>>
    <PATH-ATTRIB PathID=2 R-flag=0
        <OPPDIR-PATH-TLV OppositePathID=0>>
    <ERO <H1,M7,M8,E1>>
    <PATH-ATTRIB PathID=3 R-flag=1
        <OPPDIR-PATH-TLV OppositePathID=1>>
    <ERO <E1,M6,M5,H1>>
]]></artwork></figure>

<t>The state-report for POL2, CP1 can be encoded as:</t>

<figure><artwork><![CDATA[
<state-report> =
    <LSP PLSP_ID=100>
    <BIDIRECTIONAL ASSOCIATION = A1>
    <PATH-ATTRIB PathID=1 R-flag=0
        <OPPDIR-PATH-TLV OppositePathID=3>>
    <ERO <E1,M2,M1,H1>>
    <PATH-ATTRIB PathID=2 R-flag=0
        <OPPDIR-PATH-TLV OppositePathID=4>>
    <ERO <E1,M4,M3,H1>>
    <PATH-ATTRIB PathID=3 R-flag=1
        <OPPDIR-PATH-TLV OppositePathID=1>>
    <ERO <H1,M1,M2,E1>>
    <PATH-ATTRIB PathID=4 R-flag=1
        <OPPDIR-PATH-TLV OppositePathID=2>>
    <ERO <H1,M3,M4,E1>>
]]></artwork></figure>

<t>The state-report for POL2, CP2 can be encoded as:</t>

<figure><artwork><![CDATA[
<state-report> =
    <LSP PLSP_ID=200>
    <BIDIRECTIONAL ASSOCIATION = A2>
    <PATH-ATTRIB PathID=1 R-flag=0
        <OPPDIR-PATH-TLV OppositePathID=3>>
    <ERO <E1,M6,M5,H1>>
    <PATH-ATTRIB PathID=2 R-flag=1
        <OPPDIR-PATH-TLV OppositePathID=0>>
    <ERO <H1,M7,M8,E1>>
    <PATH-ATTRIB PathID=3 R-flag=1
        <OPPDIR-PATH-TLV OppositePathID=1>>
    <ERO <H1,M5,N6,E1>>
]]></artwork></figure>

</section>
</section>
<section anchor="implementation-status"><name>Implementation Status</name>
<t>Note to the RFC Editor - remove this section before publication, as
well as remove the reference to <xref target="RFC7942"/>.</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>

<section anchor="cisco-systems"><name>Cisco Systems</name>

<figure><artwork><![CDATA[
Organization: Cisco Systems
Implementation: IOS-XR PCC and PCE
Description: Circuit-Style SR Policies
Maturity Level: Supported feature
Coverage: Multiple Segment-Lists and reverse paths in SR Policy
Contact: mkoldych@cisco.com
]]></artwork></figure>

</section>
<section anchor="ciena-corp"><name>Ciena Corp</name>

<figure><artwork><![CDATA[
Organization: Ciena Corp
Implementation: Head-end and controller
Maturity Level: Proof of concept
Coverage: Full
Contact: byadav@ciena.com
]]></artwork></figure>

</section>
<section anchor="huawei-technologies"><name>Huawei Technologies</name>

<figure><artwork><![CDATA[
Organization: Huawei Technologies Co.,Ltd.
Implementation: Huawei's Router and Controller
Maturity Level: Proof of concept
Coverage: Partial
Contact: tanren@huawei.com 
]]></artwork></figure>

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

<section anchor="pcep-object"><name>PCEP Object</name>
<t>IANA is requested to make the assignment of a new value for the
   existing "PCEP Objects" registry as follows:</t>

<figure><artwork><![CDATA[
 +--------------+-------------+-------------------+-----------------+
 | Object-Class | Name        | Object-Type       | Reference       |
 | Value        |             | Value             |                 |
 +--------------+-------------+-------------------+-----------------+
 | 45           | PATH-ATTRIB | 1                 | This document   |
 +--------------+-------------+-------------------+-----------------+
]]></artwork></figure>

</section>
<section anchor="pcep-tlv"><name>PCEP TLV</name>
<t>IANA is requested to make the assignment of a new value for the
   existing "PCEP TLV Type Indicators" registry as follows:</t>

<figure><artwork><![CDATA[
 +------------+-----------------------------------+-----------------+
 | TLV Type   | TLV Name                          | Reference       |
 | Value      |                                   |                 |
 +------------+-----------------------------------+-----------------+
 | 60         | MULTIPATH-CAP                     | This document   |
 +------------+-----------------------------------+-----------------+
 | 61         | MULTIPATH-WEIGHT                  | This document   |
 +------------+-----------------------------------+-----------------+
 | 62         | MULTIPATH-BACKUP                  | This document   |
 +------------+-----------------------------------+-----------------+
 | 63         | MULTIPATH-OPPDIR-PATH             | This document   |
 +------------+-----------------------------------+-----------------+
 | TBD1       | MULTIPATH-FORWARD-CLASS           | This document   |
 +------------+-----------------------------------+-----------------+
]]></artwork></figure>

</section>
<section anchor="pcep-error-object"><name>PCEP-Error Object</name>
<t>IANA is requested to make the assignment of a new value for the
   existing "PCEP-ERROR Object Error Types and Values" sub-registry of the
   PCEP Numbers registry for the following errors:</t>

<figure><artwork><![CDATA[
 +------------+-----------------------------------+-----------------+
 | Error-Type | Error-Value                       | Reference       |
 +------------+-----------------------------------+-----------------+
 | 10         | 38 - Conflicting Path ID          | This document   |
 +------------+-----------------------------------+-----------------+
 | 19         | 20 - Not supported path backup    | This document   |
 +------------+-----------------------------------+-----------------+
 | 19         | 21 - Non-empty path               | This document   |
 +------------+-----------------------------------+-----------------+
]]></artwork></figure>

</section>
<section anchor="flags-in-the-multipath-capability-tlv"><name>Flags in the Multipath Capability TLV</name>

<t>IANA is requested to create a new sub-registry to manage the Flag
field of the MULTIPATH-CAP TLV, called "Flags in MULTIPATH-CAP
TLV".
New values are to be assigned by Standards Action <xref target="RFC8126"/></t>

<figure><artwork><![CDATA[
 +------------+-----------------------------------+-----------------+
 | Bit        | Description                       | Reference       |
 +------------+-----------------------------------+-----------------+
 | 0-12       | Unassigned                        | This document   |
 +------------+-----------------------------------+-----------------+
 | 13         | 0-flag: support for processing    | This document   |
 |            | MULTIPATH-OPPDIR-PATH TLV         |                 |
 +------------+-----------------------------------+-----------------+
 | 14         | B-flag: support for processing    | This document   |
 |            | MULTIPATH-BACKUP TLV              |                 |
 +------------+-----------------------------------+-----------------+
 | 15         | W-flag: support for processing    | This document   |
 |            | MULTIPATH-WEIGHT TLV              |                 |
 +------------+-----------------------------------+-----------------+
]]></artwork></figure>

</section>
<section anchor="flags-in-the-path-attribute-object"><name>Flags in the Path Attribute Object</name>

<t>IANA is requested to create a new sub-registry to manage the Flag
field of the PATH-ATTRIBUTE object,
called "Flags in PATH-ATTRIBUTE Object".
New values are to be assigned by Standards Action <xref target="RFC8126"/></t>

<figure><artwork><![CDATA[
 +------------+-----------------------------------+-----------------+
 | Bit        | Description                       | Reference       |
 +------------+-----------------------------------+-----------------+
 | 0-12       | Unassigned                        | This document   |
 +------------+-----------------------------------+-----------------+
 | 13-15      | O-flag: Operational state         | This document   |
 +------------+-----------------------------------+-----------------+
]]></artwork></figure>

</section>
<section anchor="flags-in-the-multipath-backup-tlv"><name>Flags in the Multipath Backup TLV</name>

<t>IANA is requested to create a new sub-registry to manage the Flag
field of the MULTIPATH-BACKUP TLV,
called "Flags in MULTIPATH-BACKUP TLV".
New values are to be assigned by Standards Action <xref target="RFC8126"/></t>

<figure><artwork><![CDATA[
 +------------+-----------------------------------+-----------------+
 | Bit        | Description                       | Reference       |
 +------------+-----------------------------------+-----------------+
 | 0-14       | Unassigned                        | This document   |
 +------------+-----------------------------------+-----------------+
 | 15         | B-flag: Pure backup               | This document   |
 +------------+-----------------------------------+-----------------+
]]></artwork></figure>

</section>
<section anchor="flags-in-the-multipath-opposite-direction-path-tlv"><name>Flags in the Multipath Opposite Direction Path TLV</name>

<t>IANA is requested to create a new sub-registry to manage the flag
fields of the MULTIPATH-OPPDIR-PATH TLV,
called "Flags in the MULTIPATH-OPPDIR-PATH TLV".
New values are to be assigned by Standards Action <xref target="RFC8126"/></t>

<figure><artwork><![CDATA[
 +------------+-----------------------------------+-----------------+
 | Bit        | Description                       | Reference       |
 +------------+-----------------------------------+-----------------+
 | 0-12       | Unassigned                        | This document   |
 +------------+-----------------------------------+-----------------+
 | 14         | L-flag: Link co-routed            | This document   |
 +------------+-----------------------------------+-----------------+
 | 15         | N-flag: Node co-routed            | This document   |
 +------------+-----------------------------------+-----------------+
]]></artwork></figure>

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

<t>None at this time.</t>

</section>
<section anchor="acknowledgement"><name>Acknowledgement</name>

<t>Thanks to Dhruv Dhody for ideas and discussion.
   Thanks to Yuan Yaping for review comments.</t>

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

<figure><artwork><![CDATA[
   Zafar Ali
   Cisco Systems
   Email: zali@cisco.com

   Samuel Sidor
   Cisco Systems
   Email: ssidor@cisco.com

   Andrew Stone
   Nokia
   Email: andrew.stone@nokia.com

   Chen Ran
   ZTE
   Email: chen.ran@zte.com.cn
]]></artwork></figure>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC2119'>
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname='S. Bradner' initials='S.' surname='Bradner'/>
    <date month='March' year='1997'/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='2119'/>
  <seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>

<reference anchor='RFC8664'>
  <front>
    <title>Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing</title>
    <author fullname='S. Sivabalan' initials='S.' surname='Sivabalan'/>
    <author fullname='C. Filsfils' initials='C.' surname='Filsfils'/>
    <author fullname='J. Tantsura' initials='J.' surname='Tantsura'/>
    <author fullname='W. Henderickx' initials='W.' surname='Henderickx'/>
    <author fullname='J. Hardwick' initials='J.' surname='Hardwick'/>
    <date month='December' year='2019'/>
    <abstract>
      <t>Segment Routing (SR) enables any head-end node to select any path without relying on a hop-by-hop signaling technique (e.g., LDP or RSVP-TE). It depends only on "segments" that are advertised by link-state Interior Gateway Protocols (IGPs). An SR path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), an explicit configuration, or a Path Computation Element (PCE). This document specifies extensions to the Path Computation Element Communication Protocol (PCEP) that allow a stateful PCE to compute and initiate Traffic-Engineering (TE) paths, as well as a Path Computation Client (PCC) to request a path subject to certain constraints and optimization criteria in SR networks.</t>
      <t>This document updates RFC 8408.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8664'/>
  <seriesInfo name='DOI' value='10.17487/RFC8664'/>
</reference>

<reference anchor='RFC9256'>
  <front>
    <title>Segment Routing Policy Architecture</title>
    <author fullname='C. Filsfils' initials='C.' surname='Filsfils'/>
    <author fullname='K. Talaulikar' initials='K.' role='editor' surname='Talaulikar'/>
    <author fullname='D. Voyer' initials='D.' surname='Voyer'/>
    <author fullname='A. Bogdanov' initials='A.' surname='Bogdanov'/>
    <author fullname='P. Mattes' initials='P.' surname='Mattes'/>
    <date month='July' year='2022'/>
    <abstract>
      <t>Segment Routing (SR) allows a node to steer a packet flow along any path. Intermediate per-path states are eliminated thanks to source routing. SR Policy is an ordered list of segments (i.e., instructions) that represent a source-routed policy. Packet flows are steered into an SR Policy on a node where it is instantiated called a headend node. The packets steered into an SR Policy carry an ordered list of segments associated with that SR Policy.</t>
      <t>This document updates RFC 8402 as it details the concepts of SR Policy and steering into an SR Policy.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9256'/>
  <seriesInfo name='DOI' value='10.17487/RFC9256'/>
</reference>


<reference anchor='I-D.ietf-pce-segment-routing-policy-cp'>
   <front>
      <title>Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing (SR) Policy Candidate Paths</title>
      <author fullname='Mike Koldychev' initials='M.' surname='Koldychev'>
         <organization>Ciena Corporation</organization>
      </author>
      <author fullname='Siva Sivabalan' initials='S.' surname='Sivabalan'>
         <organization>Ciena Corporation</organization>
      </author>
      <author fullname='Samuel Sidor' initials='S.' surname='Sidor'>
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author fullname='Colby Barth' initials='C.' surname='Barth'>
         <organization>Juniper Networks, Inc.</organization>
      </author>
      <author fullname='Shuping Peng' initials='S.' surname='Peng'>
         <organization>Huawei Technologies</organization>
      </author>
      <author fullname='Hooman Bidgoli' initials='H.' surname='Bidgoli'>
         <organization>Nokia</organization>
      </author>
      <date day='4' month='April' year='2025'/>
      <abstract>
	 <t>   A Segment Routing (SR) Policy is an ordered list of instructions,
   called &quot;segments&quot; that represent a source-routed policy.  Packet
   flows are steered into an SR Policy on a node where it is
   instantiated.  An SR Policy is made of one or more candidate paths.

   This document specifies the Path Computation Element Communication
   Protocol (PCEP) extension to signal candidate paths of an SR Policy.
   Additionally, this document updates RFC 8231 to allow delegation and
   setup of an SR Label Switched Path (LSP), without using the path
   computation request and reply messages.  This document is applicable
   to both Segment Routing over MPLS (SR-MPLS) and Segment Routing over
   IPv6 (SRv6).

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-pce-segment-routing-policy-cp-27'/>
   
</reference>

<reference anchor='RFC8174'>
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='8174'/>
  <seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>


<reference anchor='I-D.schmutzer-pce-cs-sr-policy'>
   <front>
      <title>Circuit Style Segment Routing Policies</title>
      <author fullname='Christian Schmutzer' initials='C.' surname='Schmutzer'>
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author fullname='Clarence Filsfils' initials='C.' surname='Filsfils'>
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author fullname='Zafar Ali' initials='Z.' surname='Ali'>
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author fullname='Francois Clad' initials='F.' surname='Clad'>
         <organization>Cisco Systems, Inc.</organization>
      </author>
      <author fullname='Praveen Maheshwari' initials='P.' surname='Maheshwari'>
         <organization>Airtel India</organization>
      </author>
      <author fullname='Reza Rokui' initials='R.' surname='Rokui'>
         <organization>Ciena</organization>
      </author>
      <author fullname='Andrew Stone' initials='A.' surname='Stone'>
         <organization>Nokia</organization>
      </author>
      <author fullname='Luay Jalil' initials='L.' surname='Jalil'>
         <organization>Verizon</organization>
      </author>
      <author fullname='Shuping Peng' initials='S.' surname='Peng'>
         <organization>Huawei Technologies</organization>
      </author>
      <author fullname='Tarek Saad' initials='T.' surname='Saad'>
         <organization>Juniper Networks</organization>
      </author>
      <author fullname='Daniel Voyer' initials='D.' surname='Voyer'>
         <organization>Bell Canada</organization>
      </author>
      <date day='5' month='May' year='2022'/>
      <abstract>
	 <t>   This document describes how Segment Routing (SR) policies can be used
   to satisfy the requirements for strict bandwidth guarantees, end-to-
   end recovery and persistent paths within a segment routing network.
   SR policies satisfying these requirements are called &quot;circuit-style&quot;
   SR policies (CS-SR policies).

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-schmutzer-pce-cs-sr-policy-02'/>
   
</reference>

<reference anchor='RFC8231'>
  <front>
    <title>Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE</title>
    <author fullname='E. Crabbe' initials='E.' surname='Crabbe'/>
    <author fullname='I. Minei' initials='I.' surname='Minei'/>
    <author fullname='J. Medved' initials='J.' surname='Medved'/>
    <author fullname='R. Varga' initials='R.' surname='Varga'/>
    <date month='September' year='2017'/>
    <abstract>
      <t>The Path Computation Element Communication Protocol (PCEP) provides mechanisms for Path Computation Elements (PCEs) to perform path computations in response to Path Computation Client (PCC) requests.</t>
      <t>Although PCEP explicitly makes no assumptions regarding the information available to the PCE, it also makes no provisions for PCE control of timing and sequence of path computations within and across PCEP sessions. This document describes a set of extensions to PCEP to enable stateful control of MPLS-TE and GMPLS Label Switched Paths (LSPs) via PCEP.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8231'/>
  <seriesInfo name='DOI' value='10.17487/RFC8231'/>
</reference>


<reference anchor='I-D.draft-ietf-pce-pcep-color'>
   <front>
      <title>Path Computation Element Protocol (PCEP) Extension for Color</title>
      <author fullname='Balaji Rajagopalan' initials='B.' surname='Rajagopalan'>
         <organization>Juniper Networks</organization>
      </author>
      <author fullname='Vishnu Pavan Beeram' initials='V. P.' surname='Beeram'>
         <organization>Juniper Networks</organization>
      </author>
      <author fullname='Shaofu Peng' initials='S.' surname='Peng'>
         <organization>ZTE Corporation</organization>
      </author>
      <author fullname='Mike Koldychev' initials='M.' surname='Koldychev'>
         <organization>Ciena Corporation</organization>
      </author>
      <author fullname='Gyan Mishra' initials='G. S.' surname='Mishra'>
         <organization>Verizon Communications Inc.</organization>
      </author>
      <date day='26' month='February' year='2025'/>
      <abstract>
	 <t>   Color is a 32-bit numerical (unsigned integer) attribute used to
   associate a Traffic Engineering (TE) tunnel or policy with an intent
   or objective.  For example, a TE Tunnel constructed to deliver low
   latency services and whose path is optimized for delay can be tagged
   with a color that represents &quot;low latency.&quot;  This document specifies
   extensions to the Path Computation Element Protocol (PCEP) to carry
   the color attribute.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-pce-pcep-color-12'/>
   
</reference>

<reference anchor='RFC7942'>
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname='Y. Sheffer' initials='Y.' surname='Sheffer'/>
    <author fullname='A. Farrel' initials='A.' surname='Farrel'/>
    <date month='July' year='2016'/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. 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.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='205'/>
  <seriesInfo name='RFC' value='7942'/>
  <seriesInfo name='DOI' value='10.17487/RFC7942'/>
</reference>




    </references>

    <references title='Informative References'>



<reference anchor='RFC8745'>
  <front>
    <title>Path Computation Element Communication Protocol (PCEP) Extensions for Associating Working and Protection Label Switched Paths (LSPs) with Stateful PCE</title>
    <author fullname='H. Ananthakrishnan' initials='H.' surname='Ananthakrishnan'/>
    <author fullname='S. Sivabalan' initials='S.' surname='Sivabalan'/>
    <author fullname='C. Barth' initials='C.' surname='Barth'/>
    <author fullname='I. Minei' initials='I.' surname='Minei'/>
    <author fullname='M. Negi' initials='M.' surname='Negi'/>
    <date month='March' year='2020'/>
    <abstract>
      <t>An active stateful Path Computation Element (PCE) is capable of computing as well as controlling via Path Computation Element Communication Protocol (PCEP) Multiprotocol Label Switching Traffic Engineering (MPLS-TE) Label Switched Paths (LSPs). Furthermore, it is also possible for an active stateful PCE to create, maintain, and delete LSPs. This document defines the PCEP extension to associate two or more LSPs to provide end-to-end path protection.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8745'/>
  <seriesInfo name='DOI' value='10.17487/RFC8745'/>
</reference>

<reference anchor='RFC9059'>
  <front>
    <title>Path Computation Element Communication Protocol (PCEP) Extensions for Associated Bidirectional Label Switched Paths (LSPs)</title>
    <author fullname='R. Gandhi' initials='R.' role='editor' surname='Gandhi'/>
    <author fullname='C. Barth' initials='C.' surname='Barth'/>
    <author fullname='B. Wen' initials='B.' surname='Wen'/>
    <date month='June' year='2021'/>
    <abstract>
      <t>This document defines Path Computation Element Communication Protocol (PCEP) extensions for grouping two unidirectional MPLS-TE Label Switched Paths (LSPs), one in each direction in the network, into an associated bidirectional LSP. These PCEP extensions can be applied either using a stateful PCE for both PCE-initiated and PCC-initiated LSPs or using a stateless PCE. The PCEP procedures defined are applicable to the LSPs using RSVP-TE for signaling.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9059'/>
  <seriesInfo name='DOI' value='10.17487/RFC9059'/>
</reference>


<reference anchor='I-D.draft-ietf-pce-sr-p2mp-policy'>
   <front>
      <title>PCEP extensions for P2MP SR Policy</title>
      <author fullname='Hooman Bidgoli' initials='H.' surname='Bidgoli'>
         <organization>Nokia</organization>
      </author>
      <author fullname='Daniel Voyer' initials='D.' surname='Voyer'>
         <organization>Bell Canada</organization>
      </author>
      <author fullname='Anuj Budhiraja' initials='A.' surname='Budhiraja'>
         <organization>Cisco System</organization>
      </author>
      <author fullname='Rishabh Parekh (editor)' initials='R.' surname='Parekh'>
         <organization>Arrcus</organization>
      </author>
      <author fullname='Siva Sivabalan' initials='S.' surname='Sivabalan'>
         <organization>Ciena</organization>
      </author>
      <date day='19' month='February' year='2025'/>
      <abstract>
	 <t>   Segment Routing (SR) Point-to-Multipoint (P2MP) Policies are a set of
   policies that enable architecture for P2MP service delivery.  This
   document specifies extensions to the Path Computation Element
   Communication Protocol (PCEP) that allow a stateful PCE to compute
   and initiate P2MP paths from a Root to a set of Leaf nodes.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-pce-sr-p2mp-policy-11'/>
   
</reference>

<reference anchor='RFC8126'>
  <front>
    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
    <author fullname='M. Cotton' initials='M.' surname='Cotton'/>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <author fullname='T. Narten' initials='T.' surname='Narten'/>
    <date month='June' year='2017'/>
    <abstract>
      <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
      <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
      <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='26'/>
  <seriesInfo name='RFC' value='8126'/>
  <seriesInfo name='DOI' value='10.17487/RFC8126'/>
</reference>




    </references>



  </back>

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

-->

</rfc>

