<?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-dhody-pce-pcep-p2mp-per-destination-05" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="EXPLICIT-INC-EXC-ABSTRACT-NODES">Supporting Explicit Inclusion or Exclusion 
    of Abstract Nodes for a Subset of P2MP Destinations in Path Computation Element Communication 
    Protocol (PCEP). </title>
    <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.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="U" surname="Palle" fullname="Udayasree Palle">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Leela Palace</street>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <code>560008</code>
          <country>INDIA</country>
        </postal>
        <email>udayasree.palle@huawei.com</email>
      </address>
    </author>
    <author initials="V" surname="Kondreddy" fullname="Venugopal Reddy Kondreddy">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Leela Palace</street>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <code>560008</code>
          <country>INDIA</country>
        </postal>
        <email>venugopalreddyk@huawei.com</email>
      </address>
    </author>
    <date month="October" year="2013" />
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>
    <abstract>
      <t>The ability to determine paths of point-to-multipoint (P2MP) Multiprotocol 
      Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering Label 
      Switched Paths (TE LSPs) is one the key requirements for Path Computation Element 
      (PCE). <xref target="RFC6006"/> and <xref target="PCE-P2MP-PROCEDURES"/> describes 
      these mechanisms for intra and inter domain path computation via PCE(s). </t>
      <t>This document describes the motivation and PCEP extension for explicitly 
      specifying abstract nodes for inclusion or exclusion for a subset of destinations 
      during P2MP path computation via PCE(s).</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction" toc="default">
      <t>The PCE architecture is defined in <xref target="RFC4655"/>.  <xref target="RFC5862"/> 
      lay out the requirements for PCEP to support P2MP path computation. 
      <xref target="RFC6006"/> describe an extension to PCEP to compute optimal constrained 
      intra-domain (G)MPLS P2MP TE LSPs. <xref target="PCE-P2MP-PROCEDURES"/> describes the 
      mechanism for inter-domain P2MP path computation. </t>
      <t>Further <xref target="RFC6006"/> describes mechanism to specify a list of nodes that can be 
      used as branch nodes or a list of nodes that cannot be used as branch nodes via Branch 
      Node Capability (BNC) object. The BNC object is used to specify which nodes have the 
      capability to act as a branch nodes or which nodes lack the capabilty. It supports IPv4 
      and IPv6 prefix sub-objects only. </t>
      <t>This document explains the need to add 
      the capability to explicitly specify any abstract nodes (not just nodes with branch node 
      capabiltiy) for inclusion or exclusion for a subset of destinations.</t>
      <t><xref target="PCE-P2MP-PROCEDURES"/> describes the core-tree procedure to compute 
      inter-domain P2MP tree. It assumes that, due to deployment and commercial limitations, 
      the sequence of domains for a path (the path domain tree) will be known in advance. 
      For a group of destination which belong to a particular destination domain, the domain-sequence needs 
      to be encoded separately as described in [DOMAIN-SEQ]. The mechanism, as described in 
      this document, of explicitly specifying abstract nodes for inclusion or exclusion for 
      a subset of destinations can be used for this purpose, where abstract nodes are domains. </t>
      <section title="Requirements Language" 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>
    <section title="Terminology" toc="default">
      <t>The following terminology is used in this document.</t>
      <t>
        <list style="hanging">
          <t hangText="IRO:">Include Route Object.</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="PCEP:">Path Computation Element Protocol.</t>
          <t hangText="P2MP:">Point-to-Multipoint</t>
          <t hangText="P2P:">Point-to-Point</t>
          <t hangText="RRO:">Record Route Object</t>
          <t hangText="RSVP:">Resource Reservation Protocol</t>
          <t hangText="TE LSP:">Traffic Engineering Label Switched Path.</t>
          <t hangText="XRO:">Exclude Route Object.</t>
        </list>
      </t>
    </section>
    <section title="Motivation" toc="default">
    <section title="Domain Sequence Tree in Inter Domain P2MP Path Computation" toc="default">
      <t><xref target="PCE-P2MP-PROCEDURES"/> describes the core-tree procedure for inter-domain 
      path computation. The procedure assumes that the sequence of domains for a path (the path domain tree) 
      will be known in advance due to deployment and commercial limitations (e.g., inter-AS peering agreements).</t>
      <t>In the <xref target="fig1"/> below, D1 is the root domain; D5 and D6 are the destination domains. 
      The ingress is A in domain D1; egresses are X, Y in Domain D6 and Z in Domain D5. </t>
      <t>
          <figure title="Domain Topology Example" anchor="fig1" suppress-title="false" align="left" alt="" width="" height="">
            <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
                     -----------                      ----------
                    | Domain D3 |                    | Domain D6|
                    |           |                    |***   *** |
                   /|           |                    |*X*   *Y* |
                  / |           |                    |***   *** | 
                 /   -----------\                    /----------
                /                \                  /
               /                  \                /
              /                    \              /
 ------------/                      \------------/
|  Domain D1 |                      |  Domain D4 |
| ***        |                      |            |
| *A*        |                      |            |
| ***        |                      |            |
 ------------\                      /------------\
              \                    /              \
               \                  /                \
                \                /                  \
                 \   -----------/                    \----------
                  \ | Domain D2 |                    | Domain D5|
                   \|           |                    |***       |
                    |           |                    |*Z*       |
                    |           |                    |***       |
                     -----------                      ----------        
]]></artwork>
          </figure>
        </t>
      <t>In the <xref target="fig2"/> below, the P2MP tree spans 5 domains. Destination 
      in D6 (X and Y) would use the domain-sequence: D1-D3-D4-D6; and destination in D5 (Z) 
      would use the domain-sequence: D1-D3-D4-D5.</t>
      <t>
          <figure title="Domain Sequence Tree" anchor="fig2" suppress-title="false" align="left" alt="" width="" height="">
            <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
                            D3    D6
                           /  \  /
                          D1   D4
                                 \   
                                  D5         
]]></artwork>
          </figure>
        </t>
      <t>Since destinations in different destination domain will have different domain sequence 
      within the domain tree, it requires following encoding-</t>  
      <t>
      <list style="symbols">
      <t>Destination X and Y: D1-D3-D4-D6</t>
      <t>Destination Z      : D1-D3-D4-D5</t>
      </list>
      </t>
      <t>An extension in P2MP Path Computation request is needed to support this. 
      (Refer <xref target="SEC_REQ"/>)</t>
      <t>The abstract nodes MAY include (but not limited to) domain subobjects AS number 
      and IGP Area as described in <xref target="DOMAIN-SEQ"/>.</t>
      <t><xref target="PCE-P2MP-PROCEDURES"/> also mentions PCE-sequence (i.e. list of PCE for  
      each domain in the path domain tree). <xref target="RFC5886"/> specify PCE-ID object 
      (used to specify a PCE's IP address) 
      and &lt;pce-list&gt; (list of PCE or PCE-sequence). Like domain-sequence as explained 
      above, PCE-sequence 
      will be different for different destinations and thus should be encoded per destination.
      </t>
    </section>
    <section title="Explicit inclusion or exclusion of abstract nodes" toc="default">	        
        <t><xref target="RFC6006"/> describes four possible types of leaves in a P2MP 
        request encoded in P2MP END-POINTS object.</t>
	<t>
	<list style="symbols">   
	<t>New leaves to add </t>
	<t>Old leaves to remove </t>
	<t>Old leaves whose path can be modified/reoptimized </t>
	<t>Old leaves whose path must be left unchanged </t>
	</list>
	</t>
        <t><xref target="RFC6006"/> only allows to encode a list of nodes that have 
        (or have not) the branch node capability by using the Branch Node Capability (BNC) 
        Object. This object apply to all destinations (old and new) in the P2MP tree.</t>
	<t>For an existing P2MP tree with an overloaded branch node, when adding a set of 
	new leaves, administrator may want to exclude that particular branch node to balance 
	the final P2MP tree. This cannot be achieved via the BNC object but by explicitly 
	excluding a particular node or including a different node, for the P2MP END-POINTS 
	object for new leaves only.</t>
	<t>Administrator at the Ingress can exert stronger control by providing explicit 
	inclusion or exclusion of any abstract nodes (not limited to specifying nodes with 
	branch node capability) for a group (subset) of destinations and not all destinations.</t>
    </section>          
    
    </section>
    <section title="Detailed Description" toc="default">
      <section title="Objective" toc="default">
        <t><xref target="RFC6006"/> defines Request Message Format and Objects, along with 
        &lt;end-point-rro-pair-list&gt;. This section introduce the use of &lt;pce-list&gt;, &lt;IRO&gt;  
        and &lt;XRO&gt; which are added to the &lt;end-point-rro-pair-list&gt;.</t>
        <t>To allow abstract nodes to be explicitly included or excluded for a subset of 
        destinations (encoded in one &lt;END-POINTS&gt; object), changes are made as 
        shown below.</t>  
	<t>The abstract node (encoded as subobject in &lt;IRO&gt; and &lt;XRO&gt;) MAY be 
	an absolute hop, IP-Prefix, Autonomous system or IGP Area. The subobjects are described 
	in <xref target="RFC3209"/>, <xref target="RFC3477"/>, <xref target="RFC4874"/> 
	and <xref target="DOMAIN-SEQ"/>.</t>  
	<t>Note that one P2MP Path request can have multiple &lt;END-POINTS&gt; objects and each 
	P2MP &lt;END-POINTS&gt; object may have multiple destinations, the &lt;pce-list&gt;, &lt;IRO&gt; and &lt;XRO&gt; 
	is applied for all destinations in one such P2MP &lt;END-POINTS&gt; object.</t>
      </section>
      <section title="Request Message Format" toc="default" anchor="SEC_REQ">
      <t>The format of PCReq message is modified as follows:</t>
        <t>
          <figure title="" suppress-title="false" align="left" alt="" width="" height="">
            <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
        <PCReq Message>::= <Common Header>
                           <request>
        where:
        <request>::= <RP>
                     <end-point-pce-iro-xro-rro-pair-list>
                     [<OF>]
                     [<LSPA>]
                     [<BANDWIDTH>]
                     [<metric-list>]
                     [<IRO>]
                     [<LOAD-BALANCING>]

        where:
        <end-point-pce-iro-xro-rro-pair-list>::=
                     <END-POINTS>
                     [<pce-list>]
                     [<IRO>]
                     [<XRO>]
                     [<RRO-List>][<BANDWIDTH>]
                     [<end-point-pce-iro-xro-rro-pair-list>]

        <pce-list>::=<PCE-ID>[<pce-list>]
               
        <RRO-List>::=<RRO>[<BANDWIDTH>][<RRO-List>]
               
        <metric-list>::=<METRIC>[<metric-list>]
                ]]></artwork>
          </figure>
        </t>
        <t>From <xref target="RFC6006"/> usage of &lt;end-point-rro-pair-list&gt; is changed 
        to &lt;end-point-pce-iro-xro-rro-pair-list&gt; in this document.</t>
        <t><xref target="RFC6006"/> describes Branch Node Capability (BNC) Object which is 
        different from the use of &lt;IRO&gt; and &lt;XRO&gt; to specify inclusion/exclusion of 
        abstract nodes for a subset of destinations as described here.</t>
        <t>&lt;pce-list&gt; can be used to specify the Pce-sequence instead of domain-sequence.</t>
      </section>
<section title="Backward Compatibility" toc="default">	            	          
          <t>A legacy implementation that does not support explicit inclusion or exclusion of 
          abstract nodes for a subset of P2MP destinations will act according to the procedures 
          set out in <xref target="RFC5440"/>, that is it will find the P2MP Path Request message 
          out of order with respect to the format specified in <xref target="RFC6006"/>.</t>
    </section>      
      
    </section>
    <section title="IANA Considerations" toc="default">
      <t>There are no new IANA allocation in this document.</t>
    </section>
    <section title="Security Considerations" toc="default">
    <t>PCEP security mechanisms as described in <xref target="RFC5440"/>, <xref target="RFC6006"/> 
    and 	<xref target="PCE-P2MP-PROCEDURES"/> are applicable for this document.</t>
    <t>The new explicit inclusion or exclusion of abstract nodes for a subset of P2MP destination 
    defined in this document allow finer and more specific control of the path computed by a PCE.  
    Such control increases the risk if a PCEP message is intercepted, modified, or spoofed because 
    it allows the attacker to exert control over the path that the PCE will compute or to make the 
    path computation impossible.  Therefore, the security techniques described in <xref target="RFC5440"/>, 
    <xref target="RFC6006"/> and <xref target="PCE-P2MP-PROCEDURES"/> are considered more important.</t>
    <t>Note, however, that the route exclusion mechanisms also provide the operator with the ability to route 
    around vulnerable parts of the network and may be used to increase overall network security.</t>
    </section>
    <section title="Manageability Considerations" toc="default">
      <section title="Control of Function and Policy" toc="default">
        <t>Mechanisms defined in this document do not add any new control function/policy requirements 
        in addition to those already listed in <xref target="RFC6006"/>.</t>
      </section>
      <section title="Information and Data Models" toc="default">
        <t>Mechanisms defined in this document do not imply any new MIB requirements.</t>
      </section>
      <section title="Liveness Detection and Monitoring" toc="default">
        <t>Mechanisms defined in this document do not imply any new liveness detection and monitoring 
        requirements in addition to those already listed in <xref target="RFC6006"/>.</t>
      </section>
      <section title="Verify Correct Operations" toc="default">
        <t>Mechanisms defined in this document do not imply any new operation verification requirements 
        in addition to those already listed in <xref target="RFC6006"/>.</t>
      </section>
      <section title="Requirements On Other Protocols" toc="default">
        <t>Mechanisms defined in this document do not imply any requirements on other protocols in addition 
        to those already listed in <xref target="RFC6006"/>.</t>
      </section>
      <section title="Impact On Network Operations" toc="default">
        <t>Mechanisms defined in this document do not have any impact on network operations in addition 
        to those already listed in <xref target="RFC6006"/>.</t>
      </section>
    </section>
    <section title="Acknowledgments" toc="default">
      <t>We would like to thank Pradeep Shastry,  Suresh babu, Quintin Zhao, Daniel King and Chen Huaimo
       for their useful comments and suggestions.</t>
    </section>
  </middle>
  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119.xml" ?>
    </references>
    <references title="Informative References">
      <?rfc include="reference.RFC.3209.xml" ?>
      <?rfc include="reference.RFC.3477.xml" ?>
      <?rfc include="reference.RFC.4655.xml" ?>
      <?rfc include="reference.RFC.4874.xml" ?>
      <?rfc include="reference.RFC.5440.xml" ?>
      <?rfc include="reference.RFC.5862.xml" ?>
      <?rfc include="reference.RFC.5886.xml" ?>
      <?rfc include="reference.RFC.6006.xml" ?>
      <!--PCE-P2MP-PROCEDURES-->
      <reference anchor="PCE-P2MP-PROCEDURES">
        <front>
          <title>PCE-based Computation Procedure To Compute 
          Shortest Constrained P2MP Inter-domain Traffic Engineering 
          Label Switched Paths (draft-ietf-pce-pcep-inter-domain-p2mp-procedures-05)</title>
          <author initials="Q" surname="Zhao" fullname="Zhao Q">
            <organization />
          </author>
          <author initials="D" surname="Dhody" fullname="Dhody D">
            <organization />
          </author>
          <author initials="Z" surname="Ali" fullname="Ali Z">
            <organization />
          </author>
          <author initials="T" surname="Saad," fullname="Saad T">
            <organization />
          </author>
          <author initials="S" surname="Sivabalan," fullname="Sivabalan S">
            <organization />
          </author>
          <author initials="R" surname="Casellas" fullname="Casellas R">
            <organization />
          </author>
          <date month="July" year="2013" />
        </front>
      </reference>      
      <!--DOMAIN-SEQ-->
      <reference anchor="DOMAIN-SEQ">
        <front>
          <title>Standard Representation Of Domain Sequence (draft-ietf-pce-pcep-domain-sequence-03)</title>
          <author initials="D" surname="Dhody" fullname="Dhruv Dhody">
            <organization />
          </author>
          <author initials="U" surname="Palle" fullname="Udayasree Palle">
            <organization />
          </author>
          <author initials="R" surname="Casellas" fullname="Ramon Casellas">
            <organization />
          </author>
          <date month="July" year="2013" />
        </front>
      </reference>      
    </references>
  </back>
</rfc>