<?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="std" docName="draft-chen-pce-forward-search-p2p-path-computation-20" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="Forward Search P2P Path">A Forward-Search P2P 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="2021" />
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup> 
    <abstract>
      <t>This document presents a forward search procedure for computing paths for Point-to-Point (P2P) Traffic Engineering (TE) Label Switched Paths (LSPs) crossing a number of domains 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" toc="default">
    	<t>It would be useful to extend MPLS TE capabilities across multiple domains (i.e., IGP areas or Autonomous Systems) to support inter-domain resources optimization, to provide strict QoS guarantees between two edge routers located within distinct domains.</t>
    	<t><xref target="RFC4105"/> "Requirements for Inter-Area MPLS TE" lists the requirements for computing a shortest path for a TE LSP crossing multiple IGP areas; and <xref target="RFC4216"/> "MPLS Inter-Autonomous System (AS) TE Requirements" describes the requirements for computing a shortest path for a TE LSP crossing multiple ASes.  <xref target="RFC4655"/> "A PCE-Based Architecture" discusses centralized and distributed computation models for the computation of a path for a TE LSP crossing multiple domains.</t>
    	<t>This document presents a forward search procedure to address these requirements using multiple Path Computation Elements (PCEs).  This procedure guarantees that the path found from the source to the destination is shortest.  It does not depend on any sequence of domains from the source node to the destination node.  Navigating a mesh of domains is simple and efficient.</t>
    </section>
    <section title="Terminology" toc="default">
      <t>The following terminology is used in this document.</t>
      <t>
        <list style="hanging">
          <t hangText="ABR:">Area Border Router. Router used to connect two IGP areas (Areas in OSPF or levels in IS-IS).</t>
          <t hangText="ASBR:">Autonomous System Border Router. Router used to connect together ASes of the same or different service providers via one or more inter-AS links.</t>
          <t hangText="BN:">Boundary Node. 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 hangText="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 hangText="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 hangText="Inter-area TE LSP:">a TE LSP that crosses an IGP area boundary.</t>
          <t hangText="Inter-AS TE LSP:">a TE LSP that crosses an AS boundary.</t>
          <t hangText="LSP:">Label Switched Path</t>
          <t hangText="LSR:">Label Switching Router</t>
          <t hangText="PCC:">Path Computation Client. Any client application requesting a path computation to be performed by a Path Computation Element.</t>
          <t hangText="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 hangText="PCE(i):">a PCE with the scope of domain(i).</t>
          <t hangText="TED:">Traffic Engineering Database.</t>
        </list>
      </t>
      <t>This document uses terminology defined in <xref target="RFC5440"/>.</t>
    </section>
    <section title="Conventions Used in This Document" toc="default">
        <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 <xref target="RFC2119"/>.</t>
      </section>
    <section title="Requirements" toc="default">
    	<t>This section summarizes the requirements specific for computing a path for a P2P Traffic Engineering (TE) LSP crossing multiple domains (areas or ASes).  More requirements for Inter-Area and Inter-AS MPLS  Traffic Engineering are described in <xref target="RFC4105"/> and <xref target="RFC4216"/>.</t>
    	<t>A number of requirements specific for a solution to compute a path for a P2P 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 Path Computation" toc="default"> 
    <t>This section gives an overview of the forward search path computation procedure (FSPC for short) to satisfy the requirements described above and describes the procedure in detail.</t>
    	<section title="Overview of Procedure" toc="default"> 
    		<t>Simply speaking, the idea of FSPC for computing a path for an MPLS TE P2P LSP crossing multiple domains from a source node to a destination node 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 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 the 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 topology, which contains those special links and the inter-domain links.</t>
		<t>Compute an optimal path in this special topology from the source node to the destination node using CSPF.</t>
    	</section>
    	<section title="Description of Procedure" toc="default"> 
    		<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. The information about each node C in CandidateNodeList consists of:</t>
		<t>
		<list style="symbols">
		<t>the cost of the path from the source node to node C,</t>
		<t>the hopcount 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 domain list of C (ABR or ASBR) where C has visibility to multiple domains and clearly mark the domain by which C is added to CandidateNodeList,</t>
		<t>the PCE responsible for C (i.e., the PCE responsible for the domain containing C. Alternatively, we may use the above mentioned 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 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.  Initially, CandidateNodeList contains only a Source Node, with path cost 0, PCE responsible for the source domain.</t>
		<t>A result path list or tree named as ResultPathTree, which contains the final optimal paths from the source node to the boundary nodes or the destination node.  Initially, ResultPathTree is empty. </t>
		<t>Alternatively, the result path list or tree can be combined into the CandidateNodeList.  We may set bit T to one in the NODE-FLAGS object 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 CandidateNodeList constitute the result path tree or list.</t>
		<t>FSPC for computing the path for the MPLS TE P2P LSP is described as follows:</t>
		<t>Initially, a PCC sets ResultPathTree to empty and CandidateNodeList to contain the source node and sends PCE responsible for the source domain a PCReq with the source node, the destination node, CandidateNodeList and ResultPathTree.</t> 
		<t>When the PCE responsible for a domain (called current domain) receives a request for computing the path for the MPLS TE P2P LSP, it obtains node Cm with the minimum path cost in the CandidateNodeList. The node Cm is the first node in the CandidateNodeList, which is sorted by path cost.  It checks whether the CurrentPCE is the PCE responsible for the node Cm(always expand node Cm only if it is an entry boundary node).  If it is, then remove Cm from CandidateNodeList and graft it into ResultPathTree (i.e., set flag bit T of node Cm to one); otherwise, a PCReq message is sent to the PCE for node Cm (see Section 5.3 for the case that there is not any direct session between the CurrentPCE and the PCE for node Cm).</t>
		<t>Suppose that node Cm is in the current domain.  The ResultPathTree is built from Cm in the following steps.</t>
		<t>If node Cm is the destination node, then the optimal path from the source node to the destination node is found, and a PCRep message with the path is sent to the PCE/PCC which sends the request to the CurrentPCE.</t>
		<t>If node Cm is an entry boundary node or the source node, then the optimal path segments from node Cm to the destination node (if it is in the current domain) 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 Cm 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 Cm and the cost of the special link (i.e., the path segment) between Cm and N. If node N is not in the CandidateNodeList, then node N is added into the list with the cost to node N, node Cm as its previous hop node and the PCE for node N. The PCE for node N is the CurrentPCE 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 CandidateNodeList and the cost to node N through node Cm 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 Cm and the previous hop to node N in the list with node Cm.</t> 
		<t>If node Cm is an exit boundary node and there are inter-domain links connecting to it (i.e., node Cm is an ASBR) and satisfying the constraints, then for every node N connecting to Cm, satisfying the constraints and not on the result path tree, it is merged into the CandidateNodeList.  The cost to node N is the sum of the cost to node Cm and the cost of the link between Cm and N. If node N is not in the CandidateNodeList, then node N is added into the list with the cost to node N, node Cm as its previous hop node and the PCE for node N. If node N is in the CandidateNodeList and the cost to node N through node Cm 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 Cm and the previous hop to node N in the list with node Cm.</t> 
		<t>After the CandidateNodeList is updated, there will be a new node Cm with the minimum cost in the updated CandidateNodeList.  If the CurrentPCE is the same as the PCE for the new node Cm, then the node Cm is removed from the CandidateNodeList and grafted to ResultPathTree (i.e., set flag bit T of node Cm to one), and the above steps are repeated; otherwise, a request message is to be sent to the PCE for node Cm.</t>
		<t>Note that if node Cm has visibility to multiple domains, do not remove it from the CandidateNodeList until it is expanded in all domains. Also mark in the domain list of node Cm, for which domains it is already expanded.</t>
    	</section>
    	<section title="Processing Request and Reply Messages" toc="default"> 
	    	<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 Cm with the minimum cost in the CandidateNodeList and there is a PCE session between the current domain and the next domain containing node Cm, the CurrentPCE sends the PCE for node Cm 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 Cm and there is not any PCE session between the CurrentPCE and the PCE for node Cm, a request message with T bit set to one in RP 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 CurrentPCE in reverse direction.  From the branch point, there is a downward path to the domain containing the previous hop node of node Cm on the result path tree and to the domain containing node Cm.  At this branch point, the request message with T bit set to zero is sent to the PCE for node Cm along the downward path.</t>
<!--
		<t>Suppose that node Cm has the minimum cost in CandidateNodeList when a PCE receives a request message or a reply message containing CandidateNodeList.</t>
		<t>When a PCE (CurrentPCE) for a domain (current domain) receives a reply message PCRep, it sends the reply to the PCE that sends the request to the CurrentPCE. When it receives a request message with T bit set to one in RP, it checks whether there is a path from the current domain to the domain containing the previous hop node of node Cm on ResultPathTree and to the domain containing node Cm.  If there is a path, the PCE sends a request PCReq with T bit set to zero to the PCE responsible for the next domain along the path.</t> 
		<t>When a PCE receives a request PCReq, it checks whether the current domain contains node Cm.  If it does, then node Cm is removed from CandidateNodeList and grafted to ResultPathTree (i.e., set flag bit T of node Cm 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 Cm on ResultPathTree and to the domain containing node Cm.</t>
-->
    	</section>
    </section> 
    <section title="Comparing to BRPC" toc="default">  
	    <t><xref target="RFC5441"/> 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 P2P TE LSP Inter-Domain Path Computation (FSPC).  Some of the differences are briefed below.</t> 
	    <t>First, 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.  It is a big burden and very challenging for users to provide a sequence of domains for every LSP path crossing domains in general.  In addition, it increases the cost of operation and maintenance of the network.  FSPC does not need any sequence of domains for computing a shortest path.</t>
	    <t>Secondly, 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) along the reverse order of the given sequence of domain.  It will get the shortest path within the given domain sesuence.  FSPC calculates an optimal path in a special topology from the source node to the destination node.  It will find the shortest path within all the domains.</t> 
	    <t>Moreover, if the sequence of domains from the source node to the destination node provided to BRPC does not contain the shortest path from the source to the destination, then the path computed by BRPC is not optimal.  FSPC guarantees that the path found is optimal.</t>
    </section>


    <section title="Extensions to PCEP" toc="default">  
    <t>This section describes the extensions to PCEP for FSPC.  The extensions include the definition of a new flag in the RP object, a result path list and a candidate node list in the PCReq and PCRep message.</t>
    	<section title="RP Object Extension" toc="default">  
	<t>The following flags are 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.</t>
<figure suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
       o F (FSPC bit - 1 bit):
           0: This indicates that this is not a PCReq/PCRep for FSPC.
           1: This indicates that this is a PCReq or PCRep for FSPC.
       ]]></artwork>
      </figure>
	<t>The T bit is added in the flag bits field of the RP object to tell the receiver of the message that the request is for transferring a request message to the domain containing the node with minimum cost in the candidate list.</t>
<figure suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
       o T (Transfer request bit - 1 bit):
           0: This indicates that this is not a PCReq
              for transferring a request message.
           1: This indicates that this is a PCReq message
              for transferring a request message.]]></artwork>
      </figure>
	<t>Setting Transfer request T-bit in a RP Object to one indicates that a reqest 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 <xref target="RFC6006"/> can indicate whether the request/reply is for FSPC of an MPLS TE P2P LSP or an MPLS TE P2MP LSP.</t>
<figure suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
       o F = 1 and N = 0: This indicates that this is a PCReq/PCRep
                          message for FSPC of an MPLS TE P2P LSP.
       o F = 1 and N = 1: This indicates that this is a PCReq/PCRep
                          message for FSPC of an MPLS TE P2MP LSP.
       ]]></artwork>
      </figure>    	
    	</section>
    	<section title="NODE-FLAGS Object" toc="default">  
    	<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. The NODE-FLAGS object may also contain a set of TLVs.</t> 
	<t>The format of the NODE-FLAGS object body is as follows:</t>
<figure title="NODE-FLAGS Object Body" suppress-title="false" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![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|T|              Flags      |         Reserved              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      ~                      Optional TLVs                            ~
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
]]></artwork>
      </figure>
	<t>where</t>
	<t>
	<list style="symbols">
	<t>D = 1:  The node is a destination node.</t>
	<t>S = 1:  The node is a source node.</t>
	<t>T = 1:  The node is on the result path tree.</t>
	</list>
	</t>
	<t>Following are the TLVs defined to convey the characteristics of the candidate node.</t>
	<section title="PREVIOUS-NODE TLV" toc="default">
	<t>The PREVIOUS-NODE TLV contains the Previous Node Id of the candidate node. The PREVIOUS-NODE TLV has the following format: </t>
<figure title="PREVIOUS-NODE TLV format" suppress-title="false" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     address-type              |          Reserved             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    ~                      Previous Node Id                         ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
]]></artwork>
      </figure>
	<t>The Type of PREVIOUS-NODE TLV is to be assigned by IANA.</t>
	<t>The length is 8 if the address type is IPv4 or 20 if the address type is IPV6.</t>
	<t>Address Type (16 bits): Indicates the address type of Previous Node Id. 1 means IPv4 address type, 2 means IPv6 address type.</t>
	<t>Reserved(16 bits): SHOULD be set to zero on transmission and MUST be ignored on receipt.</t>
	<t>Previous Node Id : IP address of the node.</t>
	</section>
	<section title="DOMAIN-ID TLV" toc="default">
	<t>The DOMAIN-ID TLV contains the domain Id of the candidate node (ABR or ASBR). The NODE-FLAG Object may include multiple DOMAIN-ID TLVs when the candidate node has visibility into multiple Domains.</t>
	<t>The DOMAIN-ID TLV has the following format:</t>
<figure title="DOMAIN-ID TLV format" suppress-title="false" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![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 
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |       Domain Type             |         Flags             |C|V|
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                       Domain ID                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
	<t>The Type of DOMAIN-ID TLV is to be assigned by IANA.</t>
	<t>The length is 8.</t>
	<t>Domain Type (8 bits): Indicates the domain type.  There are two types of domain defined currently:</t>
	<t>
	<list style="symbols">
	<t>Type=1: the Domain ID field carries an IGP Area ID.</t>
	<t>Type=2: the Domain ID field carries an AS number. </t>
	</list>
	</t>
	<t>C Flag (1 bit): If the flag is set to 1, it indicates the candidate node is added into Candidate Node List by this domain.</t>
	<t>V Flag (1 bit): If the flag is set to 1, it indicates the candidate node has been expanded in this domain.</t>                             	
	<t>Domain ID (32 bits): With the Domain Type set to 1, this indicates the 32-bit Area ID of an IGP area where the candidate belongs. With Domain Type set to 2, this indicates an AS number of an AS where the candidate belongs.  When the AS number is coded in two octets, the AS Number field MUST have its first two octets set to 0.  </t>
	<t>[Editor's note: <xref target="PCE-HIERARCHY-EXT"/>, section 3.1.3 deals with the encoding of Domain-Id TLV in OPEN Object. Later on DOMAIN-ID TLV defined here can be incorporate with this draft]</t>	
	</section>
	<section title="PCE-ID TLV" toc="default">
	<t>The PCE-ID TLV is used to indicate the PCE that added this node to the CandidateList. The PCE-ID TLV has the following format:</t>
<figure title="PCE-ID TLV format" suppress-title="false" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |           Address Type        |            Reserved           |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                               |
      ~                     PCE IP Address                            ~
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure> 
	<t>The type of PCE-ID TLV is to be assigned by IANA.</t>
	<t>The length is 8.</t>
	<t>Address Type (16 bits): Indicates the address type of PCE IP Address. 1 means IPv4 address type, 2 means IPv6 address type.</t>
	<t>PCE IP Address: Indicates the reachable address of a PCE.</t> 
	<t>[Editor's note: <xref target="PCE-HIERARCHY-EXT"/>, section 3.1.4 deals with the encoding of PCE-Id TLV in OPEN Object. Later on PCE-ID TLV defined here can be incorporate with this draft]</t>	
	</section>
	</section>
    <section title="Candidate Node List" toc="default">
    <t>The Candidate Node List has the following format:</t>
<figure  suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
         
         <candidate-node-list>::= <node>
                                  [<candidate-node-list>]                              
         where

         <node>::= <ERO>  <NODE-FLAGS>
                   <attribute-list>
                                       
         <attribute-list>::=<metric-list>
                            [<IRO>]
         
         <metric-list>::=<METRIC>[<metric-list>]                   
                            
]]></artwork>
      </figure>
	<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 <xref target="RFC5440"/>, but the ERO in the candidate node just contain the tail end node of the path and its previous hop, and the candidate path may contain a new object NODE-FLAGS along with new TLVs.</t>
    </section>     
    <section title="Result Path List" toc="default">
    <t>The Result Path List has the following format:</t>
<figure  suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
         
         <result-path-list>::= <node>
                               [<result-path-list>]                                  
         where
                                           
         <node>::= <ERO>  <NODE-FLAGS>
                   <attribute-list>
                             
         <attribute-list>::=<metric-list>
                            [<IRO>]
	 
	 <metric-list>::=<METRIC>[<metric-list>]                            
                            
]]></artwork>
      </figure>
	<t>The usage of ERO, NODE-FLAGS objects etc, is similar to Candidate Node List. The T-bit of NODE-FLAGS Object would be set denoting that the best path to this node is already found.</t>
    </section> 
    <section title="Request Message Extension" toc="default">
    <t>Below is the message format for a request message with the extension of result-path-list and candidate-node-list:</t>
<figure  suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
           <PCReq Message>::= <Common Header>
                              [<svec-list>]
                              <request-list>
                              
           <request-list>::=<request>[<request-list>]
           
           <request>::= <RP> <END-POINTS> [<OF>] [<LSPA>] [<BANDWIDTH>]
                        [<metric-list>]  [<RRO>[<BANDWIDTH>]]  [<IRO>]
                        [<LOAD-BALANCING>]
                        [<result-path-list>]
                        [<candidate-node-list>]
        where:
                        <result-path-list> and <candidate-node-list> 
                        are as defined above.
]]></artwork>
      </figure> 
      </section>   
      <section title="Reply Message Extension" toc="default">
      <t>Below is the message format for a reply message with the extension of result-path-list and candidate-node-list:</t>
<figure  suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[

           <PCRep Message> ::= <Common Header>
                              <response-list>

           <response-list> ::=<response>[<response-list>]

           <response> ::= <RP> [<NO-PATH>] [<attribute-list>]
                          [<path-list>]
                          [<result-path-list>]
                          [<candidate-node-list >]
        where:
                        <result-path-list> and <candidate-node-list> 
                        are as defined above.
]]></artwork>
      </figure> 

<!--
<t>If the path from the source to the destination 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 consisting of the information of the candidate-node-list and result-path-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="Suggestion to improve performance" toc="default">
    <t>To get much better performance all the candidate nodes of current domain can be expanded before moving on to a new domain. Note in this case, after expanding the least cost candidate node, PCE can look for and expand any other candidates in this domain.</t>
    </section>
    <section title="Manageability Considerations" toc="default">
      <section title="Control of Function and Policy" toc="default">
        <t>TBD</t>
      </section>
      <section title="Information and Data Models" toc="default">
        <t>TBD</t>
      </section>
      <section title="Liveness Detection and Monitoring" toc="default">
        <t>TBD</t>
      </section>
      <section title="Verify Correct Operations" toc="default">
        <t>TBD</t>
      </section>
      <section title="Requirements On Other Protocols" toc="default">
        <t>TBD</t>
      </section>
      <section title="Impact On Network Operations" toc="default">
        <t>TBD</t>
      </section>
    </section>  
    <section title="Security Considerations" toc="default">
    <t> The mechanism described in this document does not raise any new security issues for the PCEP protocols.</t>
    </section>
    <section title="IANA Considerations" toc="default">
      <t>This section specifies requests for IANA allocation.</t>
      <section title="Request Parameter Bit Flags" toc="default">
      <t>Two new RP Object Flags have been defined in this document.  IANA is requested to make the following allocation from the "PCEP RP Object Flag Field" Sub-Registry:</t>
<figure suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
         Bit       Description                         Reference
         TBA       FSPC                     (F-bit)    This I-D
         TBA       Transfer Request         (T-bit)    This I-D
]]></artwork>
      </figure>    
      <t>Setting FSPC F-bit in a RP Object to one indicates that a request/reply message containing the RP Object is for FSPC.</t>  
      <t>Setting Transfer Request T-bit in a RP Object to one indicates that a request 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>
      </section>
      <section title="New PCEP Object" toc="default">
      <section title="NODE-FLAGS Object" toc="default">
      <t>The NODE-FLAGS Object-Type and Object-Class has been defined in this document. IANA is requested to make the following allocation:</t>
      <t>NODE-FLAGS Object-Type : TBA</t>
      <t>NODE-FLAGS Object-Class: TBA</t>
      <t>Flag field of the NODE-FLAG Object:</t>        
<figure suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
         Bit      Description                           Reference
           0      The node is a destination node        This I-D 
           1      The node is a source node             This I-D
           2      The node is on the result path tree   This I-D  ]]></artwork>
      </figure>
      <t>Each bit should be tracked with the following qualities:</t>
      <t>
      <list style="symbols">
      <t>Bit number (counting from bit 0 as the most significant bit)</t>
      <t>Name flag</t>
      <t>Reference</t>
      </list></t>
      </section>
      </section>
      <section title="New PCEP TLV" toc="default">
      <t>IANA is requested to make the following allocation:</t>
<figure suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
         Value         Meaning                    Reference
           TBA         DOMAIN-ID TLV              This I-D
           TBA         PCE-ID TLV                 This I-D
           TBA         PREVIOUS-NODE TLV          This I-D
  ]]></artwork>
      </figure>      
      <section title="DOMAIN-ID TLV" toc="default">
	<t>IANA is requested to make the following allocation:</t>
        <t>Flag field of the DOMAIN-ID TLV</t>
<figure suppress-title="true" align="left" alt="" width="" height="">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
         Bit  Name    Description                           Reference 
          15  V-bit   Candidate Node has been expanded by   This I-D
                      the domain  
          14  C-bit   Candidate Node added by the domain    This I-D
  ]]></artwork>
      </figure>	
	<t>Each bit should be tracked with the following qualities:</t>
      <t>
      <list style="symbols">
      <t>Bit number (counting from bit 0 as the most significant bit)</t>
      <t>Name flag</t>
      <t>Reference</t>
      </list></t>
      </section>
      </section>
    </section>
    
    
    <section title="Acknowledgement" toc="default">
      <t>The authors would like to appreciate Dhruv Dhody for his great 
         contributions and to thank Julien Meuric, Daniel King,  
         Ramon Casellas, Cyril Margaria,Olivier Dugeon, Oscar Gonzalez de Dios, 
         Udayasree Palle, Reeja Paul and Sandeep Kumar Boina for their valuable 
         comments on this draft.</t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
    <?rfc include="reference.RFC.2119.xml" ?>
    <?rfc include="reference.RFC.4655.xml" ?>
    <?rfc include="reference.RFC.5440.xml" ?>
    </references>
    <references title="Informative References">
      <?rfc include="reference.RFC.4105.xml" ?>
      <?rfc include="reference.RFC.4216.xml" ?>
      <?rfc include="reference.RFC.5441.xml" ?>
      <?rfc include="reference.RFC.6006.xml" ?>
      <!--PCE-HIERARCHY-EXT-->
      <reference anchor="PCE-HIERARCHY-EXT">
        <front>
          <title>Extensions to Path Computation Element Communication Protocol (PCEP) for Hierarchical Path Computation Elements (PCE) (draft-zhang-pce-hierarchy-extensions-02)</title>
          <author initials="F" surname="Zhang" fullname="Zhang F">
            <organization />
          </author>
          <author initials="Q" surname="Zhao" fullname="Zhao Q">
            <organization />
          </author>
          <author initials="O" surname="King" fullname="Gonzalez de Dios O">
            <organization />
          </author>
          <author initials="R" surname="Casellas" fullname="Casellas R">
            <organization />
          </author>
          
          <author initials="D" surname="King" fullname="King D">
            <organization />
          </author>
          <date month="August" year="2012" />
        </front>
      </reference>       
    </references>
  </back>
</rfc>