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

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

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-pce-multipath-29" number="10066" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3" xml:lang="en" updates="" obsoletes="">

  <front>
    <title abbrev="PCEP Extensions for Multipath">Path Computation Element Communication Protocol (PCEP) Extensions for Signaling Multipath Information</title>
    <seriesInfo name="RFC" value="10066"/>
    <author initials="M." surname="Koldychev" fullname="Mike Koldychev" role="editor">
      <organization>Ciena Corporation</organization>
      <address>
        <email>mkoldych@ciena.com</email>
      </address>
    </author>
    <author initials="S." surname="Sidor" fullname="Samuel Sidor" role="editor">
      <organization>Cisco Systems.</organization>
      <address>
        <email>ssidor@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="October"/>
    <area>RTG</area>
    <workgroup>pce</workgroup>

<keyword>Segment Routing Policy</keyword>
<keyword>ECMP</keyword>
<keyword>load balancing</keyword>
<keyword>PATH-ATTRIB</keyword>

    <abstract>
<t>This document defines Path Computation Element Communication Protocol (PCEP)
extensions to signal multipath information, associating multiple forwarding
paths with a single PCEP Label Switched Path (LSP) to allow load balancing and
redundancy across diverse paths. The extensions are generic and applicable to
both stateless and stateful PCEP and are designed to be reusable for future
path types. Their primary application is Segment Routing Policy (SR Policy), where a
Candidate Path can contain multiple segment lists: current PCEP extensions for
SR Policy only allow signaling of a single segment list per Candidate Path.
These extensions enable multipath capabilities such as weighted or equal-cost
load balancing across paths.</t>
    </abstract>
  </front>
  <middle>

    <section anchor="introduction">
      <name>Introduction</name>
      <t>Segment Routing Policy (SR Policy) for Traffic Engineering
<xref target="RFC9256"/> details the concepts of Segment Routing 
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 specifications only allow for
signaling of one segment list per Candidate Path.  The PCEP extension to
support Segment Routing Policy Candidate Paths
<xref target="RFC9862"/> specifically kept the
signaling of multiple segment lists outside its scope.</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 technologies. For SR Policy, support for <xref target="RFC9862"/> is a
prerequisite for using the multipath extensions defined in this document
with SR Policy Candidate Paths.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/> <xref
    target="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
      </section>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The following terms are used in this document:</t>
	<dl spacing="normal" newline="true">
        <dt>ECMP:</dt>
        <dd>Equal-Cost Multipath, equally distributing traffic among multiple paths/links, where each path/link gets the same share of traffic as others.</dd>
        <dt>W-ECMP:</dt>
        <dd>Weighted Equal-Cost Multipath, unequally distributing traffic among multiple paths/links, where some paths/links get more traffic than others.</dd>
        <dt>PLSP:</dt>
        <dd>PCE Label Switched Path, a path or set of paths computed or controlled by the PCE. In the context of SR Policy, a PLSP corresponds to a Candidate Path.</dd>
        <dt>Segment List:</dt>
        <dd>An ordered list of segments that defines a forwarding path in Segment Routing, as defined in <xref target="RFC9256"/>. In PCEP for SR Policy, each segment list is encoded as an ERO or RRO.</dd>
        <dt>ERO:</dt>
        <dd>Explicit Route Object, defined in <xref target="RFC5440"/>, encodes an explicit path. In the context of SR Policy, an ERO encodes a segment list.</dd>
        <dt>RRO:</dt>
        <dd>Record Route Object, defined in <xref target="RFC5440"/>, encodes the actual signaled path. In the context of SR Policy, an RRO reports a segment list.</dd>
        <dt>Path:</dt>
        <dd>In the context of this document, a path refers to a single forwarding path encoded in an ERO or RRO. For SR Policy, a path corresponds to a segment list. The mechanisms defined in this document use the generic term "path" to allow applicability beyond SR Policy.</dd>
        <dt>LSP:</dt>
        <dd>Label Switched Path. The base PCEP specification <xref target="RFC4655"/> originally defined the use of the PCE architecture for MPLS and GMPLS networks with LSPs instantiated using the RSVP-TE signaling protocol <xref target="RFC3209"/>. Over time, support for additional path setup types such as SRv6 has been introduced <xref target="RFC9603"/>. The term "LSP" is used extensively in PCEP specifications and, while the multipath extensions defined in this document are applicable beyond SR Policy, in the context of PCEP for SR Policy <xref target="RFC9862"/>, an LSP object represents an SR Policy Candidate Path, which may be an SRv6 path (still represented using the LSP object as specified in <xref target="RFC8231"/>). A single LSP may contain multiple paths (segment lists).</dd>
        <dt>SR Policy:</dt>
        <dd>A Segment Routing Policy as defined in <xref target="RFC9256"/>, identified by the tuple (headend, color, endpoint).</dd>
      </dl>
      </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 
<xref target="RFC9862"/>. A single Candidate Path can consist of multiple segment lists. 
Each segment list is represented by an ERO. In 
existing PCEP specifications, a PCEP LSP object is associated 
with exactly one ERO. This restriction prevents the encoding of multiple 
segment lists (i.e., multiple EROs) within the single LSP.</t>
      </section>
      <section anchor="splitting-of-requested-bandwidth">
        <name>Splitting of Requested Bandwidth</name>
        <t>For example, a Path Computation Client (PCC) may request a path whose bandwidth 
demand cannot be accommodated on any single link along an available path in the 
network.  The PCE can return multiple paths that 
together can carry the requested bandwidth. The PCC can then equally or 
unequally split the incoming traffic among these paths.</t>
      </section>
      <section anchor="reverse-path-information">
        <name>Reverse Path Information</name>
        <t>PCEP extensions for 
Associated Bidirectional 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 mapping between segment lists of the forward 
and reverse Candidate Paths.</t>
        <t>Certain applications, such as Circuit Style SR Policy 
<xref target="I-D.ietf-spring-cs-sr-policy"/>, require the knowledge of reverse paths per 
segment list, not just per Candidate Path. For example, when the headend knows 
the reverse segment list for each forward segment list, then Performance 
Measurement (PM) / Bidirectional Forwarding Detection (BFD) can run a separate 
session on every segment list, by imposing a double stack (forward stack 
followed by a 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 detection 
of link/node failures in both directions.</t>
      </section>
    </section>
    <section anchor="protocol-extensions">
      <name>Protocol Extensions</name>
      <section anchor="PATH-ATTRIB">
        <name>PATH-ATTRIB Object</name>
        <t>This document defines the PATH-ATTRIB object that is used to carry per-path
information and to act as a separator between EROs/RROs in the &lt;intended-path&gt;/&lt;actual-path&gt; Routing
Backus-Naur Form (RBNF) <xref target="RFC5511"/> element.
The PATH-ATTRIB object always precedes the ERO or RRO that it applies to.  If
multiple EROs or RROs are present, then each ERO or RRO <bcp14>MUST</bcp14> be
preceded by a 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>
        <t>The format of the PATH-ATTRIB object is shown in <xref target="fig-path-attrib"/>.</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>
        <dl spacing="normal" newline="false">
        <dt>Flags (32 bits):</dt>
        <dd><t><br/></t>
	<dl spacing="normal" newline="false">
          <dt>O (Operational - 3 bits):</dt><dd>Operational state of the path, same 
values as the identically named field in the LSP object <xref target="RFC8231"/>.
The relationship between the per-path Operational state and the
LSP-level Operational state in the LSP object is outside the scope
of this document; for SR Policy, the Candidate Path validity
criterion is defined in <xref target="RFC9256" section="2.8"/>.</dd>

<dt>R (Reverse - 1 bit):</dt><dd>Indicates the path flows in the reverse direction, i.e., it
originates on the LSP destination and terminates on the
LSP source (usually the PCC headend itself).
Paths with this flag set are not installed in the forwarding plane for
load-balancing purposes, but <bcp14>MAY</bcp14> be used by the PCC for operations
such as Performance Measurement (PM) or Bidirectional Forwarding
Detection (BFD).</dd>
          <dt>Unassigned bits</dt><dd><bcp14>MUST</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on receipt.</dd>
        </dl></dd>
        <dt>Path ID (32 bits):</dt><dd>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.</dd>
        <dt>Optional TLVs:</dt><dd>Variable length field that can contain zero or more
Type-Length-Value (TLV) elements
that carry additional per-path information.  The specific TLVs that can
be included are defined in subsequent sections of this document.</dd>
	</dl>
      </section>
      <section anchor="METRIC">
        <name>METRIC Object</name>
        <t>The PCEP METRIC object can continue to be used at the LSP level to 
describe properties of the overall LSP. 
Mechanisms for encoding per-path metrics (e.g., a separate METRIC 
for each path) are outside the scope of this document and would 
require further extensions.</t>
      </section>
      <section anchor="WEIGHT-TLV">
        <name>MULTIPATH-WEIGHT TLV</name>
        <t>A 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>
        <dl spacing="normal" newline="false">
        <dt>Type (16 bits):</dt><dd>61 for "MULTIPATH-WEIGHT" TLV.</dd>
        <dt>Length (16 bits):</dt><dd><bcp14>MUST</bcp14> be set to 4.</dd>
        <dt>Weight (32 bits):</dt><dd>unsigned integer weight of the path described by the 
enclosing PATH-ATTRIB object, if W-ECMP is desired. The fraction of flows that a specific 
ERO/RRO carries is derived from the ratio of its weight to the sum of the 
weights of all paths in the multipath (including that path): see <xref target="LOADBALANCING"/> for details.
For SR Policy, if the Weight value is 0, the corresponding segment list
is declared invalid per <xref target="RFC9256" section="5.1"/> and carries no
traffic. If all paths within an LSP have Weight 0, the sum of weights
is zero, making the candidate path invalid per 
<xref target="RFC9256" section="2.11"/>. Signaling a zero-weight path alongside paths with
non-zero weights can be used to drain traffic from a path while
retaining its forwarding instructions.</dd>
	</dl>
        <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 assumed to be 1.</t>
      </section>
      <section anchor="OPPDIR-PATH-TLV">
        <name>MULTIPATH-OPPDIR-PATH TLV</name>
        <t>A 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.
Each TLV instance identifies one opposite-direction path for the path 
described by this PATH-ATTRIB object. This provides per-path-level 
opposite-direction mapping within an LSP. In the context of SR Policy, 
this corresponds to per-Segment-List mapping within a Candidate Path, 
complementing the Candidate Path level bidirectional association defined 
in <xref target="RFC10067"/>, which also describes the usage of 
this TLV in the context of associated bidirectional SR Paths.
See <xref target="OPPDIR"/> for operational details.</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            |             Flags         |L|N|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                 Opposite-Direction Path ID                    |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
        </figure>
	<dl spacing="normal" newline="false">
        <dt>Type (16 bits):</dt><dd>63 for "MULTIPATH-OPPDIR-PATH" TLV</dd>
        <dt>Length (16 bits):</dt><dd><bcp14>MUST</bcp14> be set to 8.</dd>
        <dt>Reserved:</dt><dd>This field <bcp14>MUST</bcp14> be set to zero on transmission and <bcp14>MUST</bcp14> be
ignored on receipt.</dd>
        <dt>Flags (16 bits):</dt><dd><t><br/></t>
	<dl spacing="normal" newline="false">
            <dt>N (Node co-routed):</dt><dd>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 <bcp14>MAY</bcp14> traverse different links.
If not set, the paths are not guaranteed to be node co-routed
(they may or may not traverse the same set of nodes).</dd>
            <dt>L (Link co-routed):</dt><dd>If set, indicates this path is
link co-routed with its opposite-direction path, specified in this TLV.
Two opposite-direction paths are link co-routed if they
traverse the same links (but in opposite directions).
Link co-routing implies node co-routing; therefore, it is not
necessary to set the N-flag when the L-flag is set.</dd>
            <dt>The terms "link" and "node" used by the N-flag and L-flag</dt><dd>refer to the
links and nodes as represented in the topology that the PCE uses for path
computation. The exact nature of a link is determined by the PCE's
topology view and is out of scope of this document. The same notion of
"link" and "node" <bcp14>MUST</bcp14> be used consistently for both the forward and the
opposite-direction path when evaluating co-routing; a path and its
opposite-direction path are represented in the same topology view.</dd>
            <dt>Unassigned bits</dt><dd><bcp14>MUST</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be
ignored on receipt.</dd>
          </dl>
	</dd>
        <dt>Opposite-Direction Path ID (32 bits):</dt><dd>References the Path ID field 
(see <xref target="PATH-ID"/>) of a PATH-ATTRIB object that identifies a path going 
in the opposite direction to this path. The value 0 is reserved and 
<bcp14>MUST NOT</bcp14> be used in this field. If no opposite-direction path exists, 
the MULTIPATH-OPPDIR-PATH TLV <bcp14>MUST NOT</bcp14> be included in the PATH-ATTRIB 
object (see <xref target="OPPDIR"/>). If a PCEP speaker receives a 
MULTIPATH-OPPDIR-PATH TLV with Opposite-Direction Path ID set to 0, it 
<bcp14>MUST</bcp14> send a PCErr message with Error-Type = 19 ("Invalid Operation") 
and Error-Value = 37 ("Invalid opposite-direction path mapping").</dd>
	</dl>
      </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, this document makes use of the COLOR TLV, defined in
<xref target="RFC9863"/>. 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.
To achieve W-ECMP, the MULTIPATH-WEIGHT TLV (<xref target="WEIGHT-TLV"/>) is included 
alongside the COLOR TLV in each PATH-ATTRIB object.
Each PATH-ATTRIB object identifies one constituent color of the composite
candidate path.
If multiple COLOR TLVs are contained in the PATH-ATTRIB object, the first one 
is processed and the others <bcp14>MUST</bcp14> be ignored.</t>
        <t>An ERO <bcp14>MUST</bcp14> be included as per the existing RBNF; 
this ERO <bcp14>MUST</bcp14> contain no subobjects. This empty ERO serves as a placeholder
to maintain compatibility with existing implementations based on the RBNF defined in <xref target="RFC8231"/>.
If the headend receives a non-empty ERO for a composite candidate path,
it <bcp14>MUST</bcp14> send a PCErr message with Error-Type = 19 ("Invalid Operation")
and Error-Value = 21 ("Non-empty path").</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 the concept of the composite candidate path.
Each Path in a Per-Flow Candidate Path is assigned a 3-bit forwarding class value, 
which allows Quality-of-Service (QoS) classified traffic to be steered depending on the forwarding class.</t>
          <t>A 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            |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |T|                         Flags                         | FC  |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure>
	  <dl spacing="normal" newline="false">
          <dt>Type (16 bits):</dt><dd>76 for "MULTIPATH-FORWARD-CLASS" TLV.</dd>
          <dt>Length (16 bits):</dt><dd><bcp14>MUST</bcp14> be set to 4.</dd>
          <dt>Flags (32 bits):</dt><dd><t><br/></t>
          <dl spacing="normal" newline="false">
              <dt>T (1 bit):</dt><dd>MPLS Traffic Class (TC) type. This is the most significant bit of the 
Flags field. When set, indicates that the FC value is derived from the 
MPLS TC bits as described in 
<xref target="RFC9256" section="8.6"/>. When not set, the interpretation of the FC value is 
reserved for future use; a future specification <bcp14>MAY</bcp14> define a wider, 
right-aligned classifier value occupying additional low-order bits of 
the Flags field (e.g., for a non-MPLS data plane).</dd>
              <dt>FC (3 bits):</dt><dd>Forwarding class value. When the T-flag is set, this 
carries the MPLS TC-based forwarding class value as defined in <xref target="RFC9256" section="8.6"/>.
This value 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. The FC field allows 
up to 8 different forwarding classes (values 0-7). The semantics of specific FC 
values are significant at the headend node (PCC) that implements the SR Policy 
and are determined by that node's local QoS policy or configuration. 
Coordination of FC value meanings between PCEP peers (e.g., through out-of-band 
configuration management or operational procedures) is outside the scope of 
this document.</dd>
              <dt>Unassigned bits</dt><dd><bcp14>MUST</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on receipt.</dd>
            </dl>
	  </dd>
          </dl>
        </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>A new MULTIPATH-CAP TLV is defined. 
This TLV <bcp14>MAY</bcp14> be present in the OPEN object during PCEP session establishment.
It <bcp14>MAY</bcp14> also be present in the LSP object for each individual LSP from the PCC.</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    |C|F|O| |W|
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure>
	  <dl spacing="normal" newline="false">
          <dt>Type (16 bits):</dt><dd>60 for "MULTIPATH-CAP" TLV.</dd>
          <dt>Length (16 bits):</dt><dd><bcp14>MUST</bcp14> be set to 4.</dd>

          <dt>Number of Multipaths (16 bits):</dt><dd>When sent from a PCC, it indicates how many 
forward primary multipaths the PCC can install in the forwarding plane. 
From a PCE, it indicates how many forward primary multipaths the PCE can compute.
This value is per-LSP when carried in the LSP object; the effective value
governing a given LSP is the LSP object value if present; otherwise, it is the
OPEN object value (see below).
This count does not include reverse paths (R-flag=1, where the R-flag is
defined in <xref target="PATH-ATTRIB"/>), which are not 
installed in forwarding for load-balancing purposes. 
Therefore, the total number of PATH-ATTRIB objects in an LSP may exceed 
this value when reverse paths are also signaled.
The value 0 indicates an unlimited number.</dd>
          <dt>Flags (16 bits):</dt><dd><t><br/></t>
          <dl spacing="normal" newline="false">
              <dt>W-flag:</dt><dd>Indicates whether MULTIPATH-WEIGHT TLV is supported. This flag 
covers the use of MULTIPATH-WEIGHT for both regular and composite 
candidate paths.</dd>
              <dt>O-flag:</dt><dd>In the OPEN object, this flag indicates whether the 
MULTIPATH-OPPDIR-PATH TLV is supported. In the LSP object, this flag 
indicates that opposite-direction path information is requested or provided 
for that specific LSP. When set by the PCC (in PCRpt/PCReq), it requests that 
the PCE provide reverse path information. When set by the PCE (in 
PCInitiate/PCUpd/PCRep), it indicates the PCE is providing or will provide 
reverse path information. In both cases, the PCE <bcp14>SHOULD</bcp14> provide the reverse 
path information if it is able to. 
For PCC-Initiated LSPs, if the PCC has not set the O-flag in the 
MULTIPATH-CAP TLV of the LSP object, the PCE <bcp14>SHOULD NOT</bcp14> include reverse 
path information in the corresponding response. If the PCC receives 
unsolicited reverse path information, it <bcp14>MAY</bcp14> ignore it.</dd>
              <dt>F-flag:</dt><dd>Indicates whether the MULTIPATH-FORWARD-CLASS TLV is supported.</dd>
              <dt>C-flag:</dt><dd>Indicates whether the composite candidate path (<xref target="CCP"/>) is supported, 
including the use of the COLOR TLV in the PATH-ATTRIB object.</dd>
              <dt>Unassigned bits</dt><dd><bcp14>MUST</bcp14> be set to 0 on transmission and <bcp14>MUST</bcp14> be ignored on receipt.</dd></dl></dd>
          </dl>
          <t>Note that F-flag and C-flag can be set independently for capability
negotiation purposes. While Per-Flow Candidate Path (<xref target="PFP"/>) builds on
top of composite candidate path, the F-flag reflects whether the
MULTIPATH-FORWARD-CLASS TLV is supported, and the C-flag reflects whether
composite candidate path signaling is supported. A peer that supports
Per-Flow Candidate Path <bcp14>MUST</bcp14> set both the C-flag and F-flag. Note that the
F-flag is defined independently of the C-flag to allow for future use
cases that may use the MULTIPATH-FORWARD-CLASS TLV for purposes other
than Per-Flow Candidate Path; in such cases, the F-flag <bcp14>MAY</bcp14> be set
without the C-flag.</t>
          <t>When a PCE computes an LSP path, it <bcp14>MUST NOT</bcp14> return more forward 
multipaths than the minimum of the effective "Number of Multipaths" 
values of both the PCE and PCC. The effective value for a given LSP is 
determined by the per-LSP MULTIPATH-CAP TLV in the LSP object if 
present; otherwise, it defaults to the value from the MULTIPATH-CAP TLV 
in the OPEN object. This ensures the PCE does not exceed either 
its own computation capability or the PCC's installation capability. 
If this TLV is absent from both OPEN and LSP objects, the PCEP speaker 
does not support multipath and the behavior is consistent with existing 
PCEP specifications, where a single path is associated with each LSP.</t>

<t>If a PCC receives more paths than it advertised support for, it <bcp14>MUST</bcp14> 
send a PCErr message with Error-Type = 19 ("Invalid Operation") and 
Error-Value = 36 ("Unsupported multipath capability").
When a PCE receives a PCRpt message containing more paths
than its own computation capability, it <bcp14>MUST NOT</bcp14> treat this as an
error condition; PCRpt conveys PCC-reported Operational state and is
not subject to the PCE's computation limits.</t>

          <t>The PCC <bcp14>MAY</bcp14> also include the MULTIPATH-CAP TLV in the LSP object for each individual LSP, to specify per-LSP values.
The PCC <bcp14>MUST NOT</bcp14> 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. If a PCEP speaker receives a PATH-ATTRIB object but the multipath
capability was not successfully negotiated during session
establishment, it <bcp14>MUST</bcp14> treat this as an error. The PCEP speaker
<bcp14>MUST</bcp14> send a PCErr message with Error-Type = 10 ("Reception of an
invalid object") and Error-Value = 45 ("Unexpected PATH-ATTRIB
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>
          <t>Additionally, if a PCEP speaker receives a TLV within the PATH-ATTRIB object
(such as MULTIPATH-WEIGHT, MULTIPATH-OPPDIR-PATH, or
MULTIPATH-FORWARD-CLASS) but the corresponding capability flag was not set
in the negotiated MULTIPATH-CAP TLV, it <bcp14>MUST</bcp14> treat this as an error.
The PCEP speaker <bcp14>MUST</bcp14> send a PCErr message with Error-Type = 19
("Invalid Operation") and Error-Value = 36 ("Unsupported multipath capability").</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.
A single Path ID space is shared among all paths within the LSP, 
including forward paths and reverse paths (R-flag=1). Path IDs <bcp14>MUST</bcp14> be 
unique across forward and reverse paths within the same LSP.
The meaning of "Path" depends on the type of LSP:</t>
        <ul spacing="normal">
          <li>
            <t>For a regular SR Policy Candidate Path, the Paths within that LSP
are the segment lists.</t>
          </li>
          <li>
            <t>For a composite candidate path (<xref target="CCP"/>), the Paths within that LSP
are the constituent SR Policies, each of which is identified by its
color (carried in the COLOR TLV within the corresponding PATH-ATTRIB
object).</t>
          </li>
        </ul>
        <t>Value 0 indicates an unallocated Path ID.
The value of 0 <bcp14>MAY</bcp14> be used when this Path is not 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 PCRep/PCUpd/PCInitiate 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.
When LSP delegation changes (e.g., the PCC revokes delegation from the PCE),
the new path owner <bcp14>SHOULD</bcp14> retain the existing Path IDs to simplify path
correlation in the event of redelegation. If the new owner cannot retain
them, it <bcp14>MAY</bcp14> allocate new Path IDs.</t>
        <t>If a PCEP speaker detects that there are two Paths with the same non-zero 
Path ID, then the PCEP speaker <bcp14>MUST</bcp14> send a PCErr message with
Error-Type = 10 ("Reception of an invalid object") and
Error-Value = 38 ("Conflicting Path ID"). Multiple paths <bcp14>MAY</bcp14> have Path ID 
set to 0, as this value indicates those paths are not referenced and do 
not require unique identification.</t>
      </section>
      <section anchor="LOADBALANCING">
        <name>Signaling Multiple Paths for Load Balancing</name>
        <t>The PATH-ATTRIB object can be used to signal multiple paths and indicate
equal or unequal load balancing among the set of multipaths. In this case, the
PATH-ATTRIB is populated for each ERO as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The PCE <bcp14>MAY</bcp14> 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>
          </li>
          <li>
            <t>The PCE <bcp14>MAY</bcp14> include the MULTIPATH-WEIGHT TLV inside the PATH-ATTRIB object,
populating a weight value to reflect the relative share of traffic 
to be carried by the path. If the MULTIPATH-WEIGHT is not carried inside a
PATH-ATTRIB object, the PCC <bcp14>MUST</bcp14> assume the default weight of 1 when computing
the traffic share.</t>
          </li>
          <li>
            <t>The PCC derives the fraction of flows carried by a specific primary path
from the ratio of its weight to the sum of the weights of all paths in the multipath.
For SR Policy, the use of weights for load balancing between segment 
lists of a Candidate Path is described in <xref target="RFC9256" section="2.11"/>.</t>
          </li>
        </ol>
      </section>
      <section anchor="OPPDIR">
        <name>Signaling Opposite-Direction Path Information</name>
        <t>The PATH-ATTRIB object can be used to signal opposite-direction path 
associations within a PCEP LSP. This capability is used to establish 
bidirectional path relationships where forward and reverse paths can be 
explicitly mapped to each other. In this case, the
PATH-ATTRIB is populated for each ERO as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>The PCEP peer (PCC or PCE) allocates a unique Path ID to each path 
and populates it inside the PATH-ATTRIB object. The Path ID is unique 
within the context of a PLSP (PCE Label Switched Path).</t>
          </li>
          <li>
            <t>For paths that have opposite-direction counterparts, the 
MULTIPATH-OPPDIR-PATH TLV is added to the PATH-ATTRIB object. The 
Opposite-Direction Path ID field is set to reference the Path ID of 
the corresponding opposite-direction path.</t>
          </li>
          <li>
            <t>Multiple instances of the MULTIPATH-OPPDIR-PATH TLV <bcp14>MAY</bcp14> be present 
in the same PATH-ATTRIB object to support many-to-many mappings 
between forward and reverse paths. This allows a single forward path 
to map to multiple reverse paths and vice versa. A many-to-many 
mapping can occur when a segment list contains Node Segment(s) that 
traverse parallel links at a midpoint. The reverse of this segment 
list may require multiple reverse segment lists to cover all the 
parallel links at the midpoint.</t>
          </li>
          <li>
            <t>The N-flag and L-flag in the MULTIPATH-OPPDIR-PATH TLV <bcp14>MAY</bcp14> be set 
to indicate node co-routing or link co-routing respectively. These 
flags inform the receiver about the relationship between the forward 
and reverse paths.  </t>
            <t>
The N-flag and L-flag describe the relationship between the signaled
paths as known to the PCEP speaker at the time the message is sent. They
do not guarantee that transient local protection, local repair, or local
policy actions in the network will preserve node or link co-routing for
all forwarded traffic.</t>
          </li>
          <li>
            <t>For paths that have no opposite-direction counterpart, the 
MULTIPATH-OPPDIR-PATH TLV is omitted from the PATH-ATTRIB object.</t>
          </li>
        </ol>
        <t>Forward paths (R-flag=0) and reverse paths (R-flag=1) are included in the 
same PCEP LSP, allowing bidirectional relationships to be established 
in a single message exchange. The opposite-direction path associations <bcp14>MUST</bcp14> be symmetric
within the same LSP: for each (A -&gt; B) reference expressed via a
MULTIPATH-OPPDIR-PATH TLV instance in path A's PATH-ATTRIB object, the
corresponding (B -&gt; A) reference <bcp14>MUST</bcp14> also be present as a
MULTIPATH-OPPDIR-PATH TLV instance in path B's PATH-ATTRIB object.
Multiple MULTIPATH-OPPDIR-PATH TLV instances per PATH-ATTRIB object are
permitted, supporting many-to-many mappings. Additionally, the R-flags of
opposite-direction paths <bcp14>MUST</bcp14> have opposite values (one set to 0, the other to 1).</t>
        <t>If a PCEP speaker receives an opposite-direction path mapping that is 
asymmetric or where the R-flags are inconsistent, it <bcp14>MUST</bcp14> send a PCErr 
message with Error-Type = 19 ("Invalid Operation") and Error-Value = 37 
("Invalid opposite-direction path mapping").</t>
        <t>See <xref target="OPPDIREX"/> for an example of usage.</t>
      </section>
    </section>
    <section anchor="RBNF">
      <name>PCEP Message Extensions</name>
      <t>The RBNF of PCRpt and PCUpd messages, as defined in <xref target="RFC8231"/>, uses a 
combination of &lt;intended-path&gt; and/or &lt;actual-path&gt;. PCReq and PCRep 
messages, as defined in <xref target="RFC5440"/> and extended by <xref target="RFC8231"/>, directly 
include ERO and RRO within their respective message structures rather 
than encapsulating them within &lt;intended-path&gt; or &lt;actual-path&gt; constructs.</t>
      <t>As specified in <xref target="RFC8231" section="6.1"/>, within the context of messages 
that use these constructs, &lt;intended-path&gt; is represented by the ERO 
and &lt;actual-path&gt; is represented by the RRO:</t>
      <artwork><![CDATA[
   <intended-path> ::= <ERO>

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

      <t>This document extends <xref target="RFC8231"/> by allowing multiple EROs/RROs to be
present in the &lt;intended-path&gt;/&lt;actual-path&gt;:</t>
      <artwork><![CDATA[
   <intended-path> ::= <ERO> |
                       <PATH-ATTRIB><ERO>[<intended-path-multipath>]

   <intended-path-multipath> ::= <PATH-ATTRIB><ERO>
                                 [<intended-path-multipath>]

   <actual-path> ::= <RRO> |
                     <PATH-ATTRIB><RRO>[<actual-path-multipath>]

   <actual-path-multipath> ::= <PATH-ATTRIB><RRO>
                               [<actual-path-multipath>]]]></artwork>

      <t>Similarly, this document extends <xref target="RFC8281"/> by allowing multiple paths 
in the PCInitiate message by allowing multiple EROs with their 
associated path attributes. The PCE-initiated LSP instantiation format is 
updated to:</t>

      <artwork><![CDATA[
   <PCE-initiated-lsp-instantiation> ::= <SRP>
                                          <LSP>
                                          [<END-POINTS>]
                                          <intended-path>
                                          [<attribute-list>]]]></artwork>
      <t>where &lt;intended-path&gt; follows the recursive definition above, allowing 
multiple paths to be signaled in a single PCInitiate message. When multiple 
paths are present, each ERO <bcp14>MUST</bcp14> be preceded by a PATH-ATTRIB object that 
describes it. A single path <bcp14>MAY</bcp14> be sent as a bare ERO without PATH-ATTRIB 
for backward compatibility.</t>
      <t>This document also extends the PCRep and PCReq messages, defined in
<xref target="RFC5440"/>, to carry multipath information. Because these messages
include the ERO and RRO directly rather than within the
&lt;intended-path&gt;/&lt;actual-path&gt; constructs, the extension allows a
PATH-ATTRIB object to precede each ERO or RRO that it describes.</t>
      <t>In the PCRep message, the &lt;path&gt; element is updated to allow a
PATH-ATTRIB object to precede the ERO, with multiple &lt;path&gt; elements
in the existing &lt;path-list&gt; used to signal multiple paths:</t>
      <artwork><![CDATA[
   <path> ::= <ERO><attribute-list> |
              <PATH-ATTRIB><ERO><attribute-list>]]></artwork>
      <t>When multiple paths are returned for load balancing, each &lt;path&gt; in
the &lt;path-list&gt; <bcp14>MUST</bcp14> include a PATH-ATTRIB object preceding its ERO. A
single &lt;path&gt; <bcp14>MAY</bcp14> be sent as a bare ERO without PATH-ATTRIB for
backward compatibility.</t>
      <t>In the PCReq message, the existing path reported for reoptimization is
updated to allow multiple RROs, each preceded by a PATH-ATTRIB object:</t>
      <artwork><![CDATA[
   <request> ::= <RP>
                 <END-POINTS>
                 [<LSP>]
                 [<LSPA>]
                 [<BANDWIDTH>]
                 [<metric-list>]
                 [<reported-path>]
                 [<IRO>]
                 [<LOAD-BALANCING>]

   <reported-path> ::= <RRO>[<BANDWIDTH>] |
                       <PATH-ATTRIB><RRO>[<BANDWIDTH>]
                       [<reported-path-multipath>]

   <reported-path-multipath> ::= <PATH-ATTRIB><RRO>[<BANDWIDTH>]
                                 [<reported-path-multipath>]]]></artwork>

      <t>When multiple existing paths are reported, each RRO <bcp14>MUST</bcp14> be preceded by
a PATH-ATTRIB object. A single reported path <bcp14>MAY</bcp14> be sent as a bare RRO
without PATH-ATTRIB for backward compatibility.</t>
      <t>The LOAD-BALANCING object <xref target="RFC5440"/> and the multipath extensions
defined in this document are two different mechanisms for requesting
multiple paths and <bcp14>MUST NOT</bcp14> be combined. The LOAD-BALANCING object
requests a set of independent TE LSPs, each with its own bandwidth,
whereas these extensions return multiple paths within a single LSP.
Accordingly, a PCReq message <bcp14>MUST NOT</bcp14> contain both a LOAD-BALANCING
object and a MULTIPATH-CAP TLV (in the LSP object) for the same
request. A PCEP speaker that receives such a request <bcp14>MUST</bcp14> send a
PCErr message with Error-Type = 19 ("Invalid Operation") and
Error-Value = 38 ("LOAD-BALANCING and MULTIPATH-CAP TLV in the same
request").</t>
      <t>The capability negotiation and error handling defined in <xref target="OP"/> apply
equally to the PCReq and PCRep messages. In particular, a PCEP speaker
that receives a PATH-ATTRIB object, or a TLV within it, in a PCReq or
PCRep message without having negotiated the corresponding capability in
the MULTIPATH-CAP TLV <bcp14>MUST</bcp14> treat it as an error as specified in <xref target="OP"/>.</t>
      <t>The RBNF extensions defined in this section are additive and apply
only to sessions where the capabilities from the MULTIPATH-CAP TLV
have been successfully negotiated (<xref target="OP"/>). Legacy PCEP peers that do
not advertise the MULTIPATH-CAP TLV will not receive PATH-ATTRIB
objects introduced by the updated RBNF.</t>
    </section>

    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>All IANA actions in this section pertain to the "Path Computation 
Element Protocol (PCEP) Numbers" registry group, available at
<eref target="https://www.iana.org/assignments/pcep/" brackets="angle"/>.</t>
      <section anchor="pcep-object">
        <name>PCEP Object</name>
        <t>IANA has allocated the following in the "PCEP Objects" registry
   (<eref target="https://www.iana.org/assignments/pcep" brackets="angle"/>):</t>
<table>
  <thead>
    <tr>
      <th>Object-Class Value</th>
      <th>Name</th>
      <th>Object-Type Value</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td rowspan="3">45</td>
      <td rowspan="3">PATH-ATTRIB</td>
      <td>0: Reserved</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>1: PATH-ATTRIB</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>2-15: Unassigned</td>
      <td/>
    </tr>
  </tbody>
</table>

        <t>Object-Type values are managed via the IETF Review policy per <xref target="RFC8126"/>.</t>
      </section>
      <section anchor="pcep-tlv">
        <name>PCEP TLV</name>
        <t>IANA has allocated the following in the
   "PCEP TLV Type Indicators" registry
   (<eref target="https://www.iana.org/assignments/pcep" brackets="angle"/>):</t>

<table>
  <thead>
    <tr>
      <th>TLV Type Value</th>
      <th>TLV Name</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>60</td>
      <td>MULTIPATH-CAP</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>61</td>
      <td>MULTIPATH-WEIGHT</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>63</td>
      <td>MULTIPATH-OPPDIR-PATH</td>
      <td>RFC 10066</td>
    </tr>
  </tbody>
</table>
        <t>IANA has allocated the following in the
   "PCEP TLV Type Indicators" registry:</t>
<table>
  <thead>
    <tr>
      <th>TLV Type Value</th>
      <th>TLV Name</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>76</td>
      <td>MULTIPATH-FORWARD-CLASS</td>
      <td>RFC 10066</td>
    </tr>
  </tbody>
</table>

      </section>
      <section anchor="pcep-error-object">
        <name>PCEP-Error Object</name>
        <t>IANA has allocated the following in the
   "PCEP-ERROR Object Error Types and Values" registry
   (<eref target="https://www.iana.org/assignments/pcep" brackets="angle"/>):</t>
<table>
  <thead>
    <tr>
      <th>Error-Type</th>
      <th>Error-Value</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>10</td>
      <td>38 - Conflicting Path ID</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>19</td>
      <td>21 - Non-empty path</td>
      <td>RFC 10066</td>
    </tr>
  </tbody>
  </table>

        <t>IANA has allocated the following in the
   "PCEP-ERROR Object Error Types and Values" registry:</t>
<table>
  <thead>
    <tr>
      <th>Error-Type</th>
      <th>Error-Value</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>10</td>
      <td>45 - Unexpected PATH-ATTRIB object</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>19</td>
      <td>36 - Unsupported multipath capability</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>19</td>
      <td>37 - Invalid opposite-direction path mapping</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>19</td>
      <td>38 - LOAD-BALANCING and MULTIPATH-CAP TLV in the same request</td>
      <td>RFC 10066</td>
    </tr>
  </tbody>
</table>  

      </section>
      <section anchor="flags-in-the-multipath-cap-tlv">
        <name>Flags in the MULTIPATH-CAP TLV</name>
        <t>IANA created the "Flags in 
MULTIPATH-CAP TLV" registry to manage the Flag field of the MULTIPATH-CAP TLV.
New values are to be assigned by IETF Review <xref target="RFC8126"/>.</t>
<table>
  <thead>
    <tr>
      <th>Bit</th>
      <th>Description</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>0-10</td>
      <td>Unassigned</td>
      <td/>
    </tr>
    <tr>
      <td>11</td>
      <td>C-flag: Composite Candidate Path support</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>12</td>
      <td>F-flag: MULTIPATH-FORWARD-CLASS TLV support</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>13</td>
      <td>O-flag: MULTIPATH-OPPDIR-PATH TLV support</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>14</td>
      <td>Unassigned</td>
      <td/>
    </tr>
    <tr>
      <td>15</td>
      <td>W-flag: MULTIPATH-WEIGHT TLV support</td>
      <td>RFC 10066</td>
    </tr>
  </tbody>
  </table>

      </section>
      <section anchor="flags-in-the-path-attrib-object">
        <name>Flags in the PATH-ATTRIB Object</name>
        <t>IANA has created the "Flags in 
PATH-ATTRIB Object" registry to manage the Flag field of the PATH-ATTRIB object.
New values are to be assigned by IETF Review <xref target="RFC8126"/>.</t>
<table>
  <thead>
    <tr>
      <th>Bit</th>
      <th>Description</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>0-27</td>
      <td>Unassigned</td>
      <td/>
    </tr>
    <tr>
      <td>28</td>
      <td>R-flag: Reverse path</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>29-31</td>
      <td>O-flag: Operational state</td>
      <td>RFC 10066</td>
    </tr>
  </tbody>
</table>
      </section>
      <section anchor="flags-in-the-multipath-oppdir-path-tlv">
        <name>Flags in the MULTIPATH-OPPDIR-PATH TLV</name>
        <t>IANA has created the "Flags in 
MULTIPATH-OPPDIR-PATH TLV" registry to manage the Flag field of the 
MULTIPATH-OPPDIR-PATH TLV.
New values are to be assigned by IETF Review <xref target="RFC8126"/>.</t>
<table>
  <thead>
    <tr>
      <th>Bit</th>
      <th>Description</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>0-13</td>
      <td>Unassigned</td>
      <td/>
    </tr>
    <tr>
      <td>14</td>
      <td>L-flag: Link co-routed</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>15</td>
      <td>N-flag: Node co-routed</td>
      <td>RFC 10066</td>
    </tr>
  </tbody>
</table>
      </section>
      <section anchor="flags-in-the-multipath-forward-class-tlv">
        <name>Flags in the MULTIPATH-FORWARD-CLASS TLV</name>
        <t>IANA has created the "Flags in MULTIPATH-FORWARD-CLASS TLV" registry to manage the Flag field of the 
MULTIPATH-FORWARD-CLASS TLV.
New values are to be assigned by IETF Review <xref target="RFC8126"/>.</t>
<table>
  <thead>
    <tr>
      <th>Bit</th>
      <th>Description</th>
      <th>Reference</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>0</td>
      <td>T-flag: MPLS TC type</td>
      <td>RFC 10066</td>
    </tr>
    <tr>
      <td>1-28</td>
      <td>Unassigned</td>
      <td/>
    </tr>
    <tr>
      <td>29-31</td>
      <td>FC: Forwarding class</td>
      <td>RFC 10066</td>
    </tr>
  </tbody>
</table>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations described in <xref target="RFC5440"/>, <xref target="RFC8231"/>,
<xref target="RFC8281"/>, <xref target="RFC8664"/>, <xref target="RFC9256"/>,
<xref target="RFC9862"/>, and
<xref target="RFC9863"/> are applicable to this specification.</t>
      <t>As per <xref target="RFC8231"/>, it is <bcp14>RECOMMENDED</bcp14> that these PCEP extensions only
be activated on authenticated and encrypted sessions across PCEs and PCCs
belonging to the same administrative authority, using Transport Layer
Security (TLS) <xref target="RFC8253"/> <xref target="RFC9916"/> as per the 
recommendations and best current practices in <xref target="RFC9325"/>.</t>
      <t>The multipath extensions defined in this document allow a PCE to signal
multiple paths per LSP, which increases the per-LSP state maintained by
the PCC. A misbehaving or compromised PCE could exploit this to amplify
state at the PCC by maximizing multipath fan out. The "Number of Multipaths"
field in the MULTIPATH-CAP TLV provides an upper bound on the number of
paths a PCC will accept per LSP, and operators <bcp14>SHOULD</bcp14> configure a non-zero
value to limit exposure. The existing PCEP authentication and encryption
recommendations (TLS per <xref target="RFC8253"/>) mitigate the risk of unauthorized
PCE access.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>All manageability requirements and considerations listed in <xref target="RFC5440"/>,
<xref target="RFC8231"/>, <xref target="RFC8664"/>, and <xref target="RFC9256"/> apply to the PCEP protocol
extensions defined in this document. In addition, the requirements and
considerations listed in this section apply.</t>
      <section anchor="control-of-function-and-policy">
        <name>Control of Function and Policy</name>
        <t>A PCEP speaker (PCC or PCE) implementation should allow an operator to enable
or disable the multipath capabilities advertised in the MULTIPATH-CAP TLV
(see <xref target="OP"/>).</t>
      </section>
      <section anchor="information-and-data-models">
        <name>Information and Data Models</name>
        <t>It is expected that a future version of the PCEP YANG module
<xref target="RFC9826"/> will be extended to include the PCEP extensions
defined in this document.</t>
      </section>
      <section anchor="liveness-detection-and-monitoring">
        <name>Liveness Detection and Monitoring</name>
        <t>The mechanisms defined in this document do not introduce any new liveness
detection or monitoring requirements in addition to those already defined
in <xref target="RFC5440"/> and <xref target="RFC8231"/>.</t>
      </section>
      <section anchor="verify-correct-operations">
        <name>Verify Correct Operations</name>
        <t>In addition to the verification requirements in <xref target="RFC5440"/> and <xref target="RFC8231"/>,
the following considerations apply:</t>
        <ul spacing="normal">
          <li>
            <t>An implementation should allow an operator to view the capabilities
advertised in the MULTIPATH-CAP TLV by each PCEP peer for a session
and for individual LSPs.</t>
          </li>
          <li>
            <t>An implementation should allow an operator to view the PATH-ATTRIB
object and all its associated TLVs for each path within an LSP. This
includes the Path ID, weight, and opposite-direction path associations.</t>
          </li>
          <li>
            <t>An implementation should provide a mechanism to log and display
the new PCEP errors defined in this document.</t>
          </li>
        </ul>
      </section>
      <section anchor="requirements-on-other-protocols">
        <name>Requirements on Other Protocols</name>
        <t>The PCEP extensions defined in this document do not impose any new
requirements on other protocols.</t>
      </section>
      <section anchor="impact-on-network-operations">
        <name>Impact on Network Operations</name>
        <t>The mechanisms in this document allow for more complex LSP structures
with multiple paths. Network operators should be aware of the potential
increase in PCEP message sizes and the additional state that must be
maintained by PCEP speakers. The "Number of Multipaths" field in the
MULTIPATH-CAP TLV can be used to control the scale of multipath
computations and state.</t>
        <t>Paths within a single LSP may have significantly different properties,
such as MTU, latency, and available bandwidth. When flow-based
load balancing is used across such paths, individual flows are hashed to
a single path, so per-path MTU or latency divergence is a per-flow concern
rather than a per-packet one. However, operators should be aware that
advertising weighted load balancing across paths with very different
latencies can degrade application performance. Similarly, if paths have
different MTUs, the effective MTU for flows on each path will differ;
operators should ensure that PMTUD or consistent MTU configuration is
in place. For bidirectional applications relying on Performance Measurement
(PM) or BFD, note that forward and reverse paths may have asymmetric
properties, and implementations should account for this.</t>
        <t>PCE implementations should minimize unnecessary churn in multipath state.
With multiple paths per LSP, frequent recomputation or weight changes
cause flow redistribution across segment lists, which may perturb
congestion control state and trigger PMTUD rediscovery on a broader
scale than with single-path LSPs.</t>
        <t>For composite candidate paths, recursive policy resolution is therefore
bounded, as <xref target="RFC9256" section="2.2"/> prohibits constituent SR Policies
of a composite candidate path from themselves using composite candidate paths.</t>
      </section>
    </section>

  </middle>
  <back>
    <displayreference target="I-D.ietf-spring-cs-sr-policy" to="CS-SR-POLICY" />
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9256.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9862.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9603.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8231.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5511.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9863.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8281.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8664.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8253.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9916.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9325.xml"/>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4655.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3209.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9059.xml"/>
        <!-- in Q, missing reference -->
        <reference anchor="I-D.ietf-spring-cs-sr-policy" target="https://datatracker.ietf.org/doc/html/draft-ietf-spring-cs-sr-policy-17">
          <front>
            <title>Circuit Style Segment Routing Policy</title>
            <author fullname="Christian Schmutzer" initials="C." surname="Schmutzer" role="editor">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Zafar Ali" initials="Z." surname="Ali" role="editor">
              <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>
            <date day="12" month="March" year="2026"/>
            <abstract>
              <t>This document describes how Segment Routing (SR) policies can be used to satisfy the requirements for bandwidth, end-to-end recovery and persistent paths within a SR network. The association of two co- routed unidirectional SR Policies satisfying these requirements is called "Circuit Style" SR Policy (CS-SR Policy).</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-spring-cs-sr-policy-17"/>
        </reference>


<reference anchor="RFC10067" target="https://www.rfc-editor.org/info/rfc10067">
<front>
<title>Path Computation Element Communication Protocol (PCEP) Extensions for Associated Bidirectional Segment Routing (SR) LSPs</title>
<author initials='C.' surname='Li' fullname='Cheng Li' role="editor">
  <organization/>
</author>
<author initials='M.' surname='Chen' fullname='Mach(Guoyi) Chen'>
  <organization/>
</author>
<author initials='W.' surname='Cheng' fullname='Weiqiang Cheng'>
  <organization/>
</author>
<author initials='R.' surname='Gandhi' fullname='Rakesh Gandhi' role="editor">
  <organization/>
</author>
<author initials='Q.' surname='Xiong' fullname='Quan Xiong'>
  <organization/>
</author>
<date month='October' year='2026'/>
</front>
<seriesInfo name="RFC" value="10067"/>
<seriesInfo name="DOI" value="10.17487/RFC10067"/>
</reference>



        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9826.xml"/>
      </references>
    </references>

    <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.</t>
        <artwork><![CDATA[
SR policy POL1 <headend, color, endpoint>
    Candidate Path CP1 <protocol-origin = 20, originator-asn = 100,
                        originator-address = 192.0.2.1,
                        discriminator = 1>
        Preference 200
        Weight W1, SID-List1 <SID11...SID1i>
        Weight W2, SID-List2 <SID21...SID2j>
    Candidate Path CP2 <protocol-origin = 20, originator-asn = 100,
                        originator-address = 198.51.100.1,
                        discriminator = 2>
        Preference 100
        Weight W3, SID-List3 <SID31...SID3i>
        Weight W4, SID-List4 <SID41...SID4j>]]></artwork>
        <t>As specified in <xref target="RFC9862"/>, CP1 and CP2 
are signaled as separate state-report elements and each has 
a unique PLSP-ID, assigned by the PCC. 
For this example, PLSP-ID 100 is assigned to CP1 and PLSP-ID 200 to CP2.</t>
        <t>The state-report (as defined in <xref target="RFC8231"/>) for CP1 can be encoded as:</t>
        <artwork><![CDATA[
<state-report> =
    <LSP PLSP-ID=100>
    <ASSOCIATION>
    <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>
    <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>means that this is a PATH-ATTRIB object 
with the Path ID field set to 1 and 
with a MULTIPATH-WEIGHT TLV carrying the weight of "W1".</t>
      </section>
      <section anchor="CCPEX">
        <name>Composite Candidate Path</name>
        <t>Consider the following composite candidate path.</t>
        <artwork><![CDATA[
SR policy POL100 <headend = H1, color = 100, endpoint = E1>
    Candidate Path CP1 <protocol-origin = 20, originator-asn = 100,
                        originator-address = 192.0.2.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>
        <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
endpoints 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 Path ID=1 R-flag=0
        <OPPDIR-PATH-TLV OppositePath ID=3>>
    <ERO <H1,M1,M2,E1>>
    <PATH-ATTRIB Path ID=2 R-flag=0
        <OPPDIR-PATH-TLV OppositePath ID=4>>
    <ERO <H1,M3,M4,E1>>
    <PATH-ATTRIB Path ID=3 R-flag=1
        <OPPDIR-PATH-TLV OppositePath ID=1>>
    <ERO <E1,M2,M1,H1>>
    <PATH-ATTRIB Path ID=4 R-flag=1
        <OPPDIR-PATH-TLV OppositePath ID=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 Path ID=1 R-flag=0
        <OPPDIR-PATH-TLV OppositePath ID=3>>
    <ERO <H1,M5,M6,E1>>
    <PATH-ATTRIB Path ID=2 R-flag=0>
    <ERO <H1,M7,M8,E1>>
    <PATH-ATTRIB Path ID=3 R-flag=1
        <OPPDIR-PATH-TLV OppositePath ID=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 Path ID=1 R-flag=0
        <OPPDIR-PATH-TLV OppositePath ID=3>>
    <ERO <E1,M2,M1,H1>>
    <PATH-ATTRIB Path ID=2 R-flag=0
        <OPPDIR-PATH-TLV OppositePath ID=4>>
    <ERO <E1,M4,M3,H1>>
    <PATH-ATTRIB Path ID=3 R-flag=1
        <OPPDIR-PATH-TLV OppositePath ID=1>>
    <ERO <H1,M1,M2,E1>>
    <PATH-ATTRIB Path ID=4 R-flag=1
        <OPPDIR-PATH-TLV OppositePath ID=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 Path ID=1 R-flag=0
        <OPPDIR-PATH-TLV OppositePath ID=3>>
    <ERO <E1,M6,M5,H1>>
    <PATH-ATTRIB Path ID=2 R-flag=1>
    <ERO <H1,M7,M8,E1>>
    <PATH-ATTRIB Path ID=3 R-flag=1
        <OPPDIR-PATH-TLV OppositePath ID=1>>
    <ERO <H1,M5,M6,E1>>]]></artwork>
      </section>
    </section>

    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      <t>Thanks to <contact fullname="Adrian Farrel"/> for shepherding this
      document, <contact fullname="Ketan Talaulikar"/> for his thorough AD
      review, <contact fullname="Dhruv Dhody"/> for ideas and discussion, and
      <contact fullname="Diego Achaval"/>, <contact fullname="Quan Xiong"/>,
      <contact fullname="Giuseppe Fioccola"/>, <contact fullname="Italo
      Busi"/>, <contact fullname="Yuan Yaping"/>, <contact fullname="Cheng
      Li"/>, <contact fullname="Éric Vyncke"/>, <contact fullname="Mohamed
      Boucadair"/>, <contact fullname="Gunter Van de Velde"/>, <contact
      fullname="Christopher Inacio"/>, <contact fullname="Mike Bishop"/>,
      <contact fullname="Mahesh Jethanandani"/>, <contact fullname="Vidhi
      Goel"/>, <contact fullname="Gorry Fairhurst"/>, and <contact
      fullname="David Mandelberg"/> for their reviews.</t>
    </section>
    <section anchor="contributors" numbered="false">
      <name>Contributors</name>
           
        <t>The following individuals initiated and
developed the core work of this document. <contact fullname="Mike Koldychev"/> is also listed
as editor in the Authors' Addresses section. The other individuals
appear here rather than in the Authors' Addresses section due to the
IETF guidelines on the maximum number of listed authors, but they should be
considered co-authors of this document. <contact fullname="Samuel Sidor"/> joined the effort
at a later stage as an additional editor.</t>

   <contact fullname="Mike Koldychev Ed.">
     <organization>Ciena Corporation</organization>
     <address><email>mkoldych@ciena.com</email></address>
   </contact>

   <contact fullname="Siva Sivabalan">
     <organization>Ciena Corporation</organization>
     <address><email>ssivabal@ciena.com</email></address>
   </contact>

   <contact fullname="Tarek Saad">
     <organization>Cisco Systems</organization>
     <address><email>tsaad@cisco.com</email></address>
   </contact>

   <contact fullname="Vishnu Pavan Beeram">
     <organization>Juniper Networks, Inc.</organization> 
     <address><email>vbeeram@juniper.net</email></address>
   </contact>

   <contact fullname="Hooman Bidgoli">
     <organization>Nokia</organization>
     <address><email>hooman.bidgoli@nokia.com</email></address>
   </contact>

   <contact fullname="Shuping Peng">
     <organization>Huawei Technologies</organization>
     <address><email>pengshuping@huawei.com</email></address>                                                
   </contact>

   <contact fullname="Bhupendra Yadav">
     <organization>Ciena</organization>
     <address><email>byadav@ciena.com</email></address>
   </contact>

   <contact fullname="Gyan Mishra">
     <organization>Verizon Inc.</organization>
     <address><email>hayabusagsm@gmail.com</email></address>
   </contact>

              <t>The following individuals made contributions to this document:</t>

   <contact fullname="Zafar Ali">
     <organization>Cisco Systems</organization>
     <address><email>zali@cisco.com</email></address>
   </contact>

   <contact fullname="Andrew Stone">
     <organization>Nokia</organization>
     <address><email>andrew.stone@nokia.com</email></address>
   </contact>

   <contact fullname="Chen Ran">
     <organization>ZTE</organization>
     <address><email>chen.ran@zte.com.cn</email></address>
   </contact>

    </section>
  </back>

</rfc>
