<?xml version="1.0" encoding="us-ascii"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"[]>
<?rfc toc="yes" ?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="no"?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc compact="yes" ?>
<?rfc iprnotified="Yes" ?>
<?rfc strict="no" ?>
<rfc ipr="trust200902" category="exp" docName="draft-chen-pce-forward-search-p2mp-path-25" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="Forward Search P2mP Path">A Forward-Search P2MP TE LSP Inter-Domain Path Computation</title>
    <author initials="H" surname="Chen" fullname="Huaimo Chen">
      <organization>Futurewei</organization>
      <address>
        <postal>
          <street></street>
          <city>Boston, MA</city>
          <region></region>
          <code></code>
          <country>USA</country>
        </postal>
        <email>Huaimo.chen@futurewei.com</email>
      </address>
    </author>
 <!--   
    <author initials="D" surname="Dhody" fullname="Dhruv Dhody">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Leela Palace</street>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <code>560008</code>
          <country>INDIA</country>
        </postal>
        <email>dhruv.dhody@huawei.com</email>
      </address>
    </author>
-->
    <date year="2024" />
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>

<abstract>
<t>     
This document presents a forward search procedure for computing a path
for a Point-to-MultiPoint (P2MP) Traffic Engineering (TE) Label Switched Path (LSP) 
crossing a number of domains through 
using multiple Path Computation Elements (PCEs). 
In addition, 
extensions to the Path Computation Element Communication Protocol (PCEP) 
for supporting the forward search procedure are described.
</t> 
</abstract>



</front>
<middle>
  
  


<section title="Introduction">

<t>
RFC 4105 "Requirements for Inter-Area MPLS TE"
lists the requirements for computing a shortest path 
for a TE LSP crossing multiple IGP areas;
and 
RFC 4216 "MPLS Inter-Autonomous System (AS) TE Requirements"
describes the requirements for computing a shortest path 
for a TE LSP crossing multiple ASes.

RFC 5671 "Applicability of PCE to P2MP MPLS and GMPLS TE"
examines the applicability of PCE to path computation
for P2MP TE LSPs in MPLS and GMPLS networks.
</t>

<t>
This document presents a forward search procedure to address these 
requirements for computing a path for a P2MP TE LSP crossing domains 
through using multiple Path Computation Elements (PCEs).
</t>

<t>
The procedure is called
"Forward Search Shortest P2MP LSP Path Crossing Domains" or FSPC for short.
The major characteristics of this procedure for computing  
a path for a P2MP TE LSP from a source node to 
a number of destination nodes crossing multiple domains
include the following three ones.
</t>

<t>
<list style="numbers">
  <t>
   It guarantees that the path computed 
   from the source node to the destination nodes is shortest. 
  </t>

  <t>
   It does not depend on any domain path tree or domain sequences
   from the source node to the destination nodes.
  </t>

  <t>
    Navigating a mesh of domains is simple and efficient.
  </t>
</list>
</t>

</section>


  
<section title="Terminology">

<t>
   ABR: Area Border Router.  Routers used to connect two IGP areas
   (areas in OSPF or levels in IS-IS).
</t>

<t>
   ASBR: Autonomous System Border Router.  Routers used to connect
   together ASes of the same or different service providers via one or
   more inter-AS links.
</t>

<t>
   Boundary Node (BN): a boundary node is either an ABR in the context
   of inter-area Traffic Engineering or an ASBR in the context of
   inter-AS Traffic Engineering.
</t>

<t>
   Entry BN of domain(n): a BN connecting domain(n-1) to domain(n) along
   the path found from the source node to the BN, 
   where domain(n-1) is the previous hop domain of domain(n).
</t>

<t>
   Exit BN of domain(n): a BN connecting domain(n) to domain(n+1) along
   the path found from the source node to the BN, 
   where domain(n+1) is the next hop domain of domain(n).
</t>

<t>
   Inter-area TE LSP: A TE LSP that crosses an IGP area boundary.
</t>

<t>
   Inter-AS TE LSP: A TE LSP that crosses an AS boundary.
</t>

<t>
   LSP: Label Switched Path.
</t>

<t>
   LSR: Label Switching Router.
</t>

<t>
   PCC: Path Computation Client.  Any client application requesting a
   path computation to be performed by a Path Computation Element.
</t>

<t>
   PCE: Path Computation Element.  An entity (component, application, or
   network node) that is capable of computing a network path or route
   based on a network graph and applying computational constraints.
</t>

<t>
   PCE(i) is a PCE with the scope of domain(i).
</t>

<t>
   TED: Traffic Engineering Database.
</t>

<t>
This document uses terminologies defined in RFC5440.
</t>
</section>


<section title="Conventions Used in This Document">
<t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC2119.
</t>
</section>  
                                


<section title="Requirements">

<t>
This section summarizes the requirements specific for computing a path
for a Traffic Engineering (TE) LSP crossing multiple domains (areas or ASes). 
More requirements for Inter-Area and Inter-AS MPLS Traffic Engineering  
are described in RFC 4105 and RFC 4216.
</t>

<t>
A number of requirements specific for a solution to compute a path
for a TE LSP crossing multiple domains is listed as follows:
</t>
<t>
<list style="numbers">
  <t>
    The solution SHOULD provide the capability to compute a shortest 
    path dynamically, satisfying a set of specified constraints 
    across multiple IGP areas.
  </t>

  <t>
    The solution MUST provide the ability to reoptimize in a minimally 
    disruptive manner (make before break) an inter-area TE LSP, 
    should a more optimal path appear in any traversed IGP area.
  </t>

  <t>
    The solution SHOULD provide mechanism(s) to compute a shortest
    end-to-end path for a TE LSP crossing multiple ASes and 
    satisfying a set of specified constraints dynamically.
  </t>

  <t>
    Once an inter-AS TE LSP has been established, and should there be 
    any resource or other changes inside anyone of the ASes, 
    the solution MUST be able to re-optimize the LSP accordingly and 
    non-disruptively, either upon expiration of a configurable timer or 
    upon being triggered by a network event or 
    a manual request at the TE tunnel Head-End.
  </t>
</list>
</t>
</section>  
            

<section title="Forward Search P2MP Path Computation">

<t>
This section gives an overview of the forward search path computation 
procedure (FSPC) to satisfy the requirements for computing a path for 
a P2MP TE LSP crossing multiple domains described above 
and describes the procedure in details.
</t>


<section title="Overview of Procedure">
<t>
Simply speaking, the idea of FSPC for 
computing a path for an MPLS TE P2MP LSP crossing multiple domains 
from a source node to a number of destination nodes includes:
</t>

<t>
 	Start from the source node and the source domain.
</t>

<t>
 	Consider the optimal path segment from the source node to every exit 
boundary and destination node of the source domain as a special link; 
</t>

<t>
 	Consider the optimal path segment from an entry boundary node to every exit 
boundary node and destination node of a domain as a special link; 
and the optimal path segment is computed as needed.
</t>

<t>
 	The whole topology consisting of many domains can be considered as a 
special virtual topology, which contains those special links and the inter-domain links.
</t>

<t>
 	Compute a shortest path in this special topology from the source node to 
the multiple destination nodes using CSPF.
</t>

<t>
FSPC 
running at any PCE just grows the result path list/tree 
in the same way as normal CSPF on the special virtual topology. 
When the result path list/tree reaches all the destination nodes, 
the shortest path from the source node to the destination nodes 
is found and a PCRep message with the path is sent 
to the PCE/PCC that sends the PCReq message eventually.
</t>


</section>


<section title="Description of Procedure">

<t>
Suppose that we have the following variables:
</t>

<t>
A current PCE named as CurrentPCE which is currently computing the path.
</t>

<t>
A candidate node list named as CandidateNodeList, which contains 
the nodes to each of which 
the temporary optimal path from the source node is currently found
and satisfies a set of given constraints. 

Each node C in CandidateNodeList has the following information:
</t>

<t>
<list style="symbols">
<t>
 	the cost of the path from the source node to node C,
</t>

<t>
 	the previous hop node P and the link between P and C,
</t>

<t>
 	the PCE responsible for C 
        (i.e., the PCE responsible for the domain containing C. 
        Alternatively, we may use the domain instead of the PCE.), and
</t>

<t>
 	the flags for C.
</t>
</list>
</t>

<t>
The flags include:
<list style="symbols">

<t>
 	bit D indicating that C is a Destination node if it is set; 
</t>

<t>
 	bit S indicating that C is the Source node if it is set; 
</t>

<t>
 	bit E indicating that C is an Exit boundary node if it is set;
</t>

<t>
 	bit I indicating that C is an entry boundary node if it is set; and
</t>

<t>
 	bit T indicating that C is on result path Tree if it is set. 
</t>

</list>
</t>

<t>
The nodes in CandidateNodeList are ordered by path cost. 
</t>

<t>
Initially, 
CandidateNodeList contains a Source Node, with path cost 0, PCE 
responsible for the source domain, and flags with S bit set.
It also contains every destination node, with path cost infinity and 
flags with D bit set. 
</t>


<t>
A result path list or tree named as ResultPathTree, which contains 
the shortest paths from the source node to the boundary nodes 
and destination nodes. 
Initially, ResultPathTree is empty.
</t>


<t>
Alternatively, the result path list or tree can be combined into the candidate node list. We may set bit T to one in the node flags for the candidate node when grafting it into the existing result path list or tree. Thus all the candidate nodes with bit T set to one in the candidate list constitute the result path tree or list.
</t>


<t>
FSPC for computing a path for 
an MPLS TE P2MP LSP crossing a number of domains from a source node to 
a number of destination nodes can be described as follows:
</t>

<t>
Initially, a PCC sends a PCE responsible 
for the source domain a request with  
CandidateNodeList and ResultPathTree initialized.  
</t>

<t>
When the PCE responsible for a domain (called current domain) receives a 
request for computing the path for the MPLS TE P2MP LSP, it checks whether 
the current PCE is the PCE responsible for the node C with the minimum cost 
in the CandidateNodeList. If it is, then remove C from CandidateNodeList and 
graft it into ResultPathTree (i.e., set flag bit T of node C to one); 
otherwise, a PCReq message is sent to the PCE for node C.
</t>

<t>
Suppose that node C is in the current domain. 
The ResultPathTree is built from C in the following steps.
</t>

<t>
If node C is a destination node (i.e., the Destination Node (D) bit 
in the Flags is set), 
then check whether the path cost to node C is infinity. 
If it is, then we can not find any path for the P2MP LSP,
and a repply message with failure reasons is sent;
otherwise, if all the destinations are on 
the result path tree, then the shortest path is found and a PCRep 
message with the path is sent to the PCE/PCC which sends the request 
to the current PCE.
</t>


<t>
If node C is an entry boundary node or the source node,
then the optimal path segments from node C to every destination node and 
every exit boundary node of the current domain that 
is not on the result path tree and satisfies the given constraints 
are computed through using CSPF and as special links. 
</t>

<t>
For every node N connected to node C through a special link 
(i.e., the optimal path segment satisfying the given constraints), 
it is merged into CandidateNodeList. 

The cost to node N is the sum of the cost to node C and 
the cost of the special link (i.e., the path segment) between C and N. 

If node N is not in the candidate node list,
then node N is added into the list with 
the cost to node N, node C as its previous hop node
and a PCE for node N.

The PCE for node N is the current PCE if node N is an ASBR; 
otherwise 
(node N is an ABR, an exit boundary node of the current domain 
and an entry boundary node of the domain next to the current domain) 
the PCE for node N is the PCE for the next domain.

If node N is in the candidate node list and 
the cost to node N through node C is less than the cost to node N in the list,
then replace 
the cost to node N in the list with the cost to node N through node C and
the previous hop to node N in the list with node C. 
</t>

<t>
If node C is an exit boundary node and there are inter-domain links 
connecting to it (i.e., node C is an ASBR) and satisfying the constraints, 
then for every node N connecting to C, satisfying the constraints
and not on the result path tree, 
it is merged into the candidate node list. 

The cost to node N is the sum of the cost to node C and 
the cost of the link between C and N. 

If node N is not in the candidate node list,
then node N is added into the list with 
the cost to node N, node C as its previous hop node
and the PCE for node N.

If node N is in the candidate node list and 
the cost to node N through node C is less than the cost to node N in the list,
then replace 
the cost to node N in the list with the cost to node N through node C and
the previous hop to node N in the list with node C.
</t>

<t>
If the CurrentPCE is the same as the PCE for the node D with the minimum cost in 
CandidateNodeList, then the node D is removed from CandidateNodeList and grafted 
to ResultPathTree (i.e., set flag bit T of node D to one), 
and the above steps are repeated; 

otherwise, 
a request message is to be sent to the PCE for node D.
</t>

</section> 

<section title="Processing Request and Reply Messages">

<t>
In this section, we describe the processing of the request and reply messages with Forward search bit set for FSPC. Each of the request and reply messages mentioned below has its Forward search bit set even though we do not indicate this explicitly. 
</t>

<t>
In the case that a reply message is a final reply, 
which contains the optimal path from the source to the destination,
the reply message is sent toward the PCC along 
the path that the request message goes from the PCC to the current PCE
in reverse direction.
</t>

<t>
In the case that a request message is to be sent to the PCE for node D
with the minimum cost in the candidate node list
and 
there is a PCE session between the current domain and the next domain 
containing node D,
the current PCE sends the PCE for node D through the session
a request message with the source node, the destination node,
CandidateNodeList and ResultPathTree.
</t>

<t>
In the case that a request message is to be sent to the PCE for node D
and there is not any PCE session between the current PCE and the PCE for node D,
a reply message is sent toward a branch point on the result path tree
from the current domain 
along the path that the request message goes from the PCC to the current PCE
in reverse direction. 
From the branch point, there is a downward path to 
the domain containing the previous hop node of node D 
on the result path tree and to the domain containing node D.
At this branch point, 
the request message is sent to the PCE for node D
along the downward path.
</t>


<t>
Suppose that node D has the minimum cost in CandidateNodeList 
when a PCE receives a request message or a reply message 
containing CandidateNodeList.
</t>

<t>
When a PCE (current PCE) for a domain (current domain) 
receives a reply message PCRep,
it checks whether the reply is 
a final reply with the optimal path from the source to the destination.

If the reply is the final reply,
the current PCE sends the reply to the PCE 
that sends the request to the current PCE;

otherwise,
it checks whether there is a path 
from the current domain to 
the domain containing the previous hop node of node D 
on ResultPathTree and to the domain containing node D.

If there is a path, the PCE sends a request PCReq 
to the PCE responsible for the next domain along the path;
otherwise,
it sends a reply PCRep to the PCE
that sends the request to the current PCE.
</t>


<t>
When a PCE receives a request PCReq,
it checks whether the current domain contains node D.

If it does,
then node D is removed from CandidateNodeList and grafted 
to ResultPathTree (i.e., set flag bit T of node D to one), 
and the above steps in the previous sub section are repeated; 

otherwise, 
the PCE sends a request PCReq 
to the PCE responsible for the next domain along the path 
from the current domain to 
the domain containing the previous hop node of node D 
on ResultPathTree and to the domain containing node D.
</t>

</section> 



</section> 


<section title="Comparing to BRPC">
<t> 
RFC 5441 describes the Backward Recursive Path Computation (BRPC) algorithm or procedure for computing an MPLS TE P2P LSP path from a source node to a destination node crossing multiple domains. Comparing to BRPC, there are a number of differences between BRPC and the Forward-Search P2MP TE LSP Inter-Domain Path Computation (FSPC). Some of the differences are briefed below. 
</t>

<t>
At first, BRPC is for computing a shortest path from a source node to a destination node crossing multiple domains. 
FSPC
is for computing a shortest path from a source node to a number of destination nodes crossing multiple domains.
</t>

<t> 
Secondly, for BRPC to compute a shortest path from a source node to a destination node crossing multiple domains, we MUST provide a sequence of domains from the source node to the destination node to BRPC in advance. FSPC does not need any sequence of domains for computing a shortest inter-domain P2MP path. 
</t>

<t> 
Moreover, for a given sequence of domains domain(1), domain(2), ... , domain(n), BRPC searches the shortest path from domain(n), to domain(n-1), until domain(1). 
Thus it is hard for BRPC to be extended for computing 
a shortest path from a source node to a number of destination nodes crossing multiple domains.
FSPC calculates a shortest path in a special topology from the source node to the destination nodes using CSPF. 
</t>

</section> 



<section title="Extensions to PCEP">
<t>
The extensions to PCEP for FSPC include the definition of a new flag in the RP object, 
a result path list/tree and a candidate node list in a request message.
</t>


<section title="RP Object Extension">

<t> 
The following flag is added into the RP Object: 
</t>

<t>
The F bit is added in the flag bits field of the RP object to tell
the receiver of the message that the request/reply is for 
FSPC.
<figure>
  <artwork> <![CDATA[  
    o F (FSPC bit - 1 bit):
        0: This indicates that this is not PCReq/PCRep for FSPC.
        1: This indicates that this is PCReq or PCRep message for FSPC.
  ]]>
  </artwork>
</figure>
</t>


<t>
The T bit is added in the flag bits field of the RP object to tell
the receiver of the message that the reply is for 
transferring a request message to the domain containing
the node with minimum cost in the candidate list.
</t>
<figure>
  <artwork> <![CDATA[  
    o T (Transfer request bit - 1 bit):
        0: This indicates that this is not a PCRep 
           for transferring a request message.
        1: This indicates that this is a PCRep message 
           for transferring a request message.
  ]]>
  </artwork>
</figure>
<t>
Setting Transfer request T-bit in a RP Object to one indicates
that a reply message containing the RP Object
is for transferring a request message to the domain containing
the node with minimum cost in the candidate list.
</t>

<t>
The IANA request is referenced in Section below (Request Parameter Bit
Flags) of this document.
</t>

<t>
This F bit with the N bit defined in RFC6006 can indicate whether
the request/reply is for FSPC of 
an MPLS TE P2MP LSP or an MPLS TE P2P LSP.
</t>
<figure>
  <artwork> <![CDATA[  
    o F = 1 and N = 1: This indicates that this is a PCReq/PCRep
                       message for FSPC of an MPLS TE P2MP LSP.
    o F = 1 and N = 0: This indicates that this is a PCReq/PCRep
                       message for FSPC of an MPLS TE P2P LSP.
  ]]>
  </artwork>
</figure>
</section>



<section title="PCE Object">

<t>
The figure below illustrates a PCE IPv4 object body (Object-Type=1), 
which comprises a PCE 
IPv4 address. The PCE IPv4 address object indicates the IPv4 address of a PCE
, with which a PCE session may be established and to which a request message 
may be sent.
</t>

<t>
<figure>
  <artwork> <![CDATA[  
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                       PCE  IPv4 address                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

<t>
The format of the PCE object body for IPv6 (Object-Type=2) is
as follows:
</t>
<t>
<figure>
  <artwork> <![CDATA[  
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                 PCE  IPv6 address (16 bytes)                  |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

</section>





<section title="Candidate Node List Object">

<t>
The candidate-node-list-obj object contains a list of
candidate nodes. 
A new PCEP object class and type are requested for it.
The format of the candidate-node-list-obj object body is
as follows:
</t>

<t>
<figure>
  <artwork> <![CDATA[  
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   //                     <candidate-node-list>                   //
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

<t>
The following is the definition of the candidate node list. 
</t>

<t>
<figure>
  <artwork> <![CDATA[
      <candidate-node-list>::= <candidate-node>	
                               [<candidate-node-list>]
      <candidate-node>::= <ERO>
                          <candidate-attribute-list>

      <candidate-attribute-list>::= [<attribute-list>]
                                    [<PCE>]
                                    [<Node-Flags>]

  ]]>
  </artwork>
</figure>
</t>

<t>
The ERO in a candidate node contain just the path segment of the last link of the path, which is from the previous hop node of the tail end node of the path to the tail end node. With this information, we can graft the candidate node into the existing result path list or tree. 
</t>

<t>
Simply speaking, a candidate node has the same or similar format of a path defined in RFC 5440, but the ERO in the candidate node just contain the tail end node of the path and its previous hop, and the candidate node may contain two new objects PCE and node flags.
</t>
</section>



<section title="Node Flags Object">

<t>
The Node Flags object is used to indicate the characteristics of 
the node in a candidate node list in a request or reply message 
for FSPC. The Node
Flags object comprises a Reserved field, and a number of Flags. 
</t>

<t>
The format of the Node Flags object body is as follows:
</t>

<t>
<figure>
  <artwork> <![CDATA[  
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |D|S|I|E|N|          Flags      |         Reserved              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

<t>
where 
</t>

<t>
<figure>
  <artwork> <![CDATA[  
    o D = 1:  The node is a destination node.
    o S = 1:  The node is a source node.
    o I = 1:  The node is an entry boundary node.
    o E = 1:  The node is an exit boundary node.
    o T = 1:  The node is on the result path tree.
  ]]>
  </artwork>
</figure>
</t>
</section>


<section title="Request Message Extension">

<t>
Below is the message format for a request message with 
the extension of a result path list and a candidate node list:
</t>

<figure anchor="ReqMsgFormat" title="The Format for a Request Message">
  <artwork> <![CDATA[
        <PCReq Message>::= <Common Header>
                           <request>
        <request>::= <RP> <END-POINT-RRO-PAIR-LIST>  [<OF>]  [<LSPA>]
                     [<BANDWIDTH>]  [<metric-list>]  [<RRO>[<BANDWIDTH>]]
                     [<IRO>] [<LOAD-BALANCING>]
                     [<result-path-list>]
                     [<candidate-node-list-obj>]
     where: 
        <result-path-list>::=<path>[<result-path-list>]
        <path>::= <ERO><attribute-list>
        <attribute-list>::=[<LSPA>]  [<BANDWIDTH>]  [<metric-list>]
                           [<IRO>]

        <candidate-node-list-obj> contains a <candidate-node-list>

        <candidate-node-list>::= <candidate-node>
                                 [<candidate-node-list>]
        <candidate-node>::= <ERO>
                            <candidate-attribute-list>

        <candidate-attribute-list>::= [<attribute-list>]
                                      [<PCE>]
                                      [<Node-Flags>]
  ]]>
  </artwork>
</figure>

<t>
The definition for the result path list that may be added 
into a request message
is the same as that for the path list in a reply message that is
described in RFC5440.
</t>

</section>


<section title="Reply Message Extension">
<t>
Below is the message format for a reply message with 
the extension of a result path list and a candidate node list:
</t>
<figure>
  <artwork> <![CDATA[
        <PCRep Message> ::= <Common Header>
                            <response>
        <response> ::= <RP>  [<END-POINT-PATH-PAIR-LIST>]
                       [<NO-PATH>] [<attribute-list>]
                       [<result-path-list>]
                       [<candidate-node-list-obj>]
     where: 
        <candidate-node-list-obj> contains a <candidate-node-list>
  ]]>
  </artwork>
</figure>
<t>
If the path from the source to the destinations is not found yet and
there are still chances to find a path (i.e., the candidate list is not
empty),
the reply message contains candidate-node-list-obj 
consisting of the information of the candidate list, 
which is encoded.
In this case, the Transfer request T-bit in the RP Object is set to one.
</t>

<t>
If the path from the source to the destination is found,
the reply message contains path-list comprising the 
information of the path.
</t>

</section>
</section>




<section title="Security  Considerations">
<t>
The mechanism described in this document does not raise any new 
security issues for the PCEP protocols.
</t>
</section>




<section anchor="IANA" title="IANA Considerations">
<t>
This section specifies requests for IANA allocation.
</t>


<section anchor="IANA-RP-BITS" title="Request Parameter Bit Flags">
<t>
A new RP Object Flag has been defined in this document. 
IANA is requested to make the following allocation
from the "PCEP RP Object Flag Field" Sub-Registry:

<figure>
  <artwork> <![CDATA[  
      Bit       Description                         Reference
       18       FSPC (F-bit)                        This I-D
       19       Transfer Request         (T-bit)    This I-D
  ]]>
  </artwork>
</figure>
</t>
</section>


</section>

<section title="Acknowledgement">
<t>
  The author would like to appreciate Dhruv Dhody for his great contributions and
  to thank Julien Meuric, Daniel King,
  Cyril Margaria, Ramon Casellas, Olivier Dugeon
  and Oscar Gonzalez de Dios
  for their valuable comments on this draft.
</t> 
</section>


</middle>
  <!--  *****BACK MATTER ***** -->
<back>



    <!-- References split into informative and normative -->

    <!-- Thre are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->


<references title="Normative References">
   <?rfc include="reference.RFC.2119" ?>

   <?rfc include="reference.RFC.3209" ?> 
   <?rfc include="reference.RFC.5440" ?> 
  
   <?rfc include="reference.RFC.6006" ?> 

</references>

<references title="Informative References">
   <?rfc include="reference.RFC.4655" ?>

   <?rfc include="reference.RFC.5862" ?>

</references>
 
    <!-- Change Log

  -->
</back>


</rfc>
<?Pub *0000024293?>
