<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.33 (Ruby 2.7.0) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-pce-multipath-08" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.1 -->
  <front>
    <title abbrev="PCEP Extensions for Multipath">PCEP Extensions for Signaling Multipath Information</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-pce-multipath-08"/>
    <author initials="M." surname="Koldychev" fullname="Mike Koldychev">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <email>mkoldych@cisco.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>Juniper Networks, Inc.</organization>
      <address>
        <email>tsaad@juniper.net</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="2023" month="May" day="01"/>
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>
    <abstract>
      <?line 63?>

<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 a mechanism to encode multiple paths for a single set of
objectives and constraints.
This is a generic PCEP mechanism, not specific to
any path setup type or dataplane.
The mechanism is applicable to both stateless and stateful PCEP.</t>
    </abstract>
  </front>
  <middle>
    <?line 74?>

<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, when each Candidate Path contains multiple Segment-Lists,<br/>
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) on 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 anchor="fig-path-attrib">
          <name>PATH-ATTRIB object format</name>
          <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="WEIGHT-TLV">
        <name>Multipath Weight TLV</name>
        <t>New MULTIPATH-WEIGHT TLV is optional in the PATH-ATTRIB object.</t>
        <figure anchor="fig-multipath-weight">
          <name>MULTIPATH-WEIGHT TLV format</name>
          <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 multipath ERO/RRO 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 path(s), similar to FRR or TI-LFA.
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.</t>
        <figure anchor="fig-multipath-backup">
          <name>MULTIPATH-BACKUP TLV format</name>
          <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 anchor="fig-multipath-oppdir">
          <name>MULTIPATH-OPPDIR-PATH TLV format</name>
          <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 the 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 absense 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 SHOULD 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-rajagopalan-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 anchor="fig-multipath-forward-class">
            <name>MULTIPATH-FORWARD-CLASS TLV format</name>
            <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 anchor="fig-multipath-cap">
            <name>MULTIPATH-CAP TLV format</name>
            <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      |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>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 is reserved to indicate the absense of a 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>
        <ol spacing="normal" type="1"><li>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.</li>
          <li>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.</li>
          <li>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.</li>
        </ol>
      </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>
        <ol spacing="normal" type="1"><li>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.</li>
          <li>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.</li>
          <li>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.</li>
        </ol>
        <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>
      <artwork><![CDATA[
   <intended-path> ::= <ERO>

   <actual-path> ::= <RRO>
]]></artwork>
      <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>
      <artwork><![CDATA[
   <intended-path> ::= (<ERO>|
                       (<PATH-ATTRIB><ERO>)
                       [<intended-path>])
              

   <actual-path> ::= (<RRO>|
                      (<PATH-ATTRIB><RRO>)
                      [<actual-path>])
]]></artwork>
    </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>
        <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>
        <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>
        <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>
        <t>The state-report for CP2 can be encoded as:</t>
        <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>
        <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>
        <artwork><![CDATA[
<PATH-ATTRIB Path_ID=1 <WEIGHT-TLV Weight=W1>>
]]></artwork>
        <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>
        <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>
        <t>Note that the syntax</t>
        <artwork><![CDATA[
<PATH-ATTRIB Path_ID=1 <BACKUP-TLV B=0, Backup_Paths=[3]>>
]]></artwork>
        <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>
        <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>
        <t>This is signaled in PCEP as:</t>
        <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>
      </section>
      <section anchor="OPPDIREX">
        <name>Opposite Direction Tunnels</name>
        <t>Consider the two opposite-direction SR Policies between
end-points H1 and E1.</t>
        <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>
        <t>The state-report for POL1, CP1 can be encoded as:</t>
        <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>
        <t>The state-report for POL1, CP2 can be encoded as:</t>
        <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>
        <t>The state-report for POL2, CP1 can be encoded as:</t>
        <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>
        <t>The state-report for POL2, CP2 can be encoded as:</t>
        <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>
      </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>
        <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>
      </section>
      <section anchor="ciena-corp">
        <name>Ciena Corp</name>
        <artwork><![CDATA[
Organization: Ciena Corp
Implementation: Head-end and controller
Maturity Level: Proof of concept
Coverage: Full
Contact: byadav@ciena.com
]]></artwork>
      </section>
      <section anchor="huawei-technologies">
        <name>Huawei Technologies</name>
        <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>
      </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>
        <artwork><![CDATA[
 +--------------+-------------+-------------------+-----------------+
 | Object-Class | Name        | Object-Type       | Reference       |
 | Value        |             | Value             |                 |
 +--------------+-------------+-------------------+-----------------+
 | 45           | PATH-ATTRIB | 1                 | This document   |
 +--------------+-------------+-------------------+-----------------+
]]></artwork>
      </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>
        <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>
      </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>
        <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>
      </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>
        <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>
      </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>
        <artwork><![CDATA[
 +------------+-----------------------------------+-----------------+
 | Bit        | Description                       | Reference       |
 +------------+-----------------------------------+-----------------+
 | 0-12       | Unassigned                        | This document   |
 +------------+-----------------------------------+-----------------+
 | 13-15      | O-flag: Operational state         | This document   |
 +------------+-----------------------------------+-----------------+
]]></artwork>
      </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>
        <artwork><![CDATA[
 +------------+-----------------------------------+-----------------+
 | Bit        | Description                       | Reference       |
 +------------+-----------------------------------+-----------------+
 | 0-14       | Unassigned                        | This document   |
 +------------+-----------------------------------+-----------------+
 | 15         | B-flag: Pure backup               | This document   |
 +------------+-----------------------------------+-----------------+
]]></artwork>
      </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>
        <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>
      </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.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <artwork><![CDATA[
   Andrew Stone
   Nokia

   Email: andrew.stone@nokia.com
]]></artwork>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <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="RFC9256">
          <front>
            <title>Segment Routing Policy Architecture</title>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils">
              <organization/>
            </author>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar">
              <organization/>
            </author>
            <author fullname="D. Voyer" initials="D." surname="Voyer">
              <organization/>
            </author>
            <author fullname="A. Bogdanov" initials="A." surname="Bogdanov">
              <organization/>
            </author>
            <author fullname="P. Mattes" initials="P." surname="Mattes">
              <organization/>
            </author>
            <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>PCEP extension to support Segment Routing Policy Candidate Paths</title>
            <author fullname="Mike Koldychev" initials="M." surname="Koldychev">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Siva Sivabalan" initials="S." surname="Sivabalan">
              <organization>Ciena Corporation</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="21" month="April" year="2023"/>
            <abstract>
              <t>   A Segment Routing (SR) Policy [RFC9256] is a non-empty set of SR
   Candidate Paths, that share the same &lt;headend, color, endpoint&gt;
   tuple.  This document extends [RFC8664] to fully support the SR
   Policy construct.  SR Policy is modeled in PCEP as an Association of
   one or more SR Candidate Paths.  PCEP extensions are defined to
   signal additional attributes of an SR Policy, which are not covered
   by [RFC8664].  The mechanism is applicable to all data planes of SR
   (MPLS, SRv6, etc.).


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pce-segment-routing-policy-cp-10"/>
        </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">
              <organization/>
            </author>
            <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 "circuit-style"
   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">
              <organization/>
            </author>
            <author fullname="I. Minei" initials="I." surname="Minei">
              <organization/>
            </author>
            <author fullname="J. Medved" initials="J." surname="Medved">
              <organization/>
            </author>
            <author fullname="R. Varga" initials="R." surname="Varga">
              <organization/>
            </author>
            <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-rajagopalan-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="Quan Xiong" initials="Q." surname="Xiong">
              <organization>ZTE Corporation</organization>
            </author>
            <author fullname="Mike Koldychev" initials="M." surname="Koldychev">
              <organization>Cisco Systems Inc.</organization>
            </author>
            <author fullname="Gyan Mishra" initials="G. S." surname="Mishra">
              <organization>Verizon Communications Inc.</organization>
            </author>
            <date day="3" month="January" year="2023"/>
            <abstract>
              <t>   Color is a 32-bit numerical attribute that is used to associate a
   Traffic Engineering (TE) tunnel or policy with an intent or objective
   (e.g. low latency).  This document specifies an extension to Path
   Computation Element Protocol (PCEP) to carry the color attribute.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-rajagopalan-pce-pcep-color-03"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer">
              <organization/>
            </author>
            <author fullname="A. Farrel" initials="A." surname="Farrel">
              <organization/>
            </author>
            <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>
        <name>Informative References</name>
        <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">
              <organization/>
            </author>
            <author fullname="S. Sivabalan" initials="S." surname="Sivabalan">
              <organization/>
            </author>
            <author fullname="C. Barth" initials="C." surname="Barth">
              <organization/>
            </author>
            <author fullname="I. Minei" initials="I." surname="Minei">
              <organization/>
            </author>
            <author fullname="M. Negi" initials="M." surname="Negi">
              <organization/>
            </author>
            <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">
              <organization/>
            </author>
            <author fullname="C. Barth" initials="C." surname="Barth">
              <organization/>
            </author>
            <author fullname="B. Wen" initials="B." surname="Wen">
              <organization/>
            </author>
            <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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton">
              <organization/>
            </author>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <author fullname="T. Narten" initials="T." surname="Narten">
              <organization/>
            </author>
            <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>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
