<?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-avantika-pce-multi-src-dest-01" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
  <front>
    <title abbrev="PCE-MULTI-SRC-DEST">PCEP Extensions for Supporting Multiple Sources and Destinations</title>
  

    <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="Avantika" surname="S" fullname="Avantika">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Leela Palace</street>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <code>560008</code>
          <country>INDIA</country>
        </postal>
        <email>avantika.sushilkumar@huawei.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.ietf@gmail.com</email>
      </address>
    </author>    
    <date month="February" year="2014" />
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>
    <abstract>
      <t>The Path Computation Element (PCE) provides functions of path
   computation in support of traffic engineering in networks controlled
   by Multi-Protocol Label Switching (MPLS) and Generalized MPLS
   (GMPLS).</t>
   <t>This document provides extensions for the Path Computation Element 
   Protocol (PCEP) to support multiple sources and destinations 
   in a single path request.</t>
    </abstract>
  </front>
  <middle>
    <section title="Introduction" toc="default">
    <t><xref target="RFC5440"/> specifies the Path Computation Element Communication
   Protocol (PCEP) for communications between a Path Computation Client
   (PCC) and a Path Computation Element (PCE), or between two PCEs, in
   compliance with <xref target="RFC4657"/>.</t>
   
   <t>As per <xref target="RFC5440"/>, a single Path Computation Request 
   (PCReq) message may carry more than one path computation request. 
    Each request is uniquely identified by a request-id number. In some 
    scenarios (refer <xref target="SEC_M"/>), there is a need to send 
    multiple requests with the same constraints and attributes to the PCE.
    Currently these requests are either sent in a separate PCReq messages or 
    clubbed together in one (or more) PCReq messages. In either case, the 
    constraints and attributes need to be encoded separately for each request
    even though they are exactly identical.</t>
    
    <t>Also note that, the PCE may choose to respond to each of the request independently 
    in a separate Path Computation Reply (PCRep) messages or choose to bundle them in one 
    (or more) PCRep messages. 
    In some scenarios (refer <xref target="SEC_M"/>) one should wait for responses for
    all request before proceeding further.</t>
    
    <t>A mechanism to request path computation between multiple sources and destinations 
    in a single path computation request would be helpful.</t>
    
    <t>Note that the scope of this work is point-to-point (P2P) path computation and
    is unrelated to MP2MP LSP (<xref target="RFC6388"/>).</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="LSR:">Label Switch Router.</t>
          <t hangText="MPLS:">Multiprotocol Label Switching.</t>
          <t hangText="NMS:">Network Management System.</t>
          <t hangText="P2P:">Point-to-Point.</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 Communication Protocol.</t>          
        </list>
      </t>
    </section>
    <section title="Motivation" toc="default" anchor="SEC_M">
    <t>Following key scenarios are identified where a mechanism to request path computation 
    between multiple sources and destinations in a single path computation request would be helpful.</t>
    <t>
        <list style="hanging">
          <t hangText="Hierarchical PCE:"><xref target="RFC6805"/> describes the procedure for 
             inter-domain path computation using Hierarchical PCE. In case of end to end path 
             computation by Parent PCE, it needs to issue 
             multiple path computation requests to child PCEs. In case of transit domain(s), the Parent 
             PCE issues requests from each entry boundary node to each exit boundary node to the child 
             PCE(s). Similarly for ingress domain, the Parent PCE issues requests from source to each 
             exit boundary node, where as for egress domain, the Parent PCE issues requests from
             each entry boundary node to the destination. All requests to a particular child PCE,
             need to be encoded separately even though they are exactly identical (they have the 
             same constraints and attributes). Also the Parent PCE needs to wait for responses for
             all requests before proceeding further.</t>
          <t hangText="Inter-Layer PCE:"><xref target="RFC5623"/> describes inter-layer path computation 
             framework. In case of cooperating PCEs per layer, where each PCE has
             topology visibility restricted to its own layer and collaborate to compute 
             an end-to-end path across layers. The higher layer PCE may need to issue 
             multiple requests to lower layer PCE requesting paths from each entry boundary 
             node to each exit boundary node. All these requests need to be encoded separately 
             even though they are exactly identical (they have the same constraints and attributes). 
             Also the higher layer PCE needs to wait for responses for all requests before proceeding
             further.</t>
          <t hangText="Management-Based PCE:"><xref target="RFC4655"/> describes a case where 
             PCC is not necessarily an LSR, but for example, maybe a NMS or a planning tool etc. 
             Such a PCC may issue multiple requests to PCE with identical constraints and attributes 
             to select among the several source-destination pairs.</t>
          <t hangText="Using Multiple P2P Path Computations for MP2MP TE LSP:">In case where, for establishing 
             a MP2MP TE LSP tunnel, multiple P2P path computation requests 
             are sent to the PCE, one for each source-destination pair with identical constraints and attributes.
             </t>
        </list>
      </t>
      <t>In these scenarios, a mechanism to request path computation between multiple sources and destinations 
    in a single path computation request would be helpful.</t>
    <section title="Example" toc="default">
    <t>Consider the topology example mentioned in Section 4.6 of <xref target="RFC6805"/> - </t>
<figure title="An example topology" suppress-title="false" align="left" alt="" width="" height="" anchor="FIG1">
        <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[
 -----------------------------------------------------------------
|   Domain 5                                                      |
|                              -----                              |
|                             |PCE 5|                             |
|                              -----                              |
|                                                                 |
|    ----------------     ----------------     ----------------   |
|   | Domain 1       |   | Domain 2       |   | Domain 3       |  |
|   |                |   |                |   |                |  |
|   |        -----   |   |        -----   |   |        -----   |  |
|   |       |PCE 1|  |   |       |PCE 2|  |   |       |PCE 3|  |  |
|   |        -----   |   |        -----   |   |        -----   |  |
|   |                |   |                |   |                |  |
|   |            ----|   |----        ----|   |----            |  |
|   |           |BN11+---+BN21|      |BN23+---+BN31|           |  |
|   |   -        ----|   |----        ----|   |----        -   |  |
|   |  |S|           |   |                |   |           |D|  |  |
|   |   -        ----|   |----        ----|   |----        -   |  |
|   |           |BN12+---+BN22|      |BN24+---+BN32|           |  |
|   |            ----|   |----        ----|   |----            |  |
|   |                |   |                |   |                |  |
|   |         ----   |   |                |   |   ----         |  |
|   |        |BN13|  |   |                |   |  |BN33|        |  |
|    -----------+----     ----------------     ----+-----------   |
|                \                                /               |
|                 \      ----------------        /                |
|                  \    |                |      /                 |
|                   \   |----        ----|     /                  |
|                    ----+BN41|      |BN42+----                   |
|                       |----        ----|                        |
|                       |                |                        |
|                       |        -----   |                        |
|                       |       |PCE 4|  |                        |
|                       |        -----   |                        |
|                       |                |                        |
|                       | Domain 4       |                        |
|                        ----------------                         |
|                                                                 |
 -----------------------------------------------------------------
	]]></artwork>
    </figure>     
    <t>The following 11 individual requests are generated by parent PCE (PCE 5) - </t>
    <t>
	<list style="hanging">
	<t hangText="Domain 1:">S-BN11; S-BN12; S-BN13;</t>	
	<t hangText="Domain 2:">BN21-BN23; BN21-BN24; BN22-BN23; BN22-BN24;</t>	
	<t hangText="Domain 3:">BN31-D; BN32-D; BN33-D;</t>	
	<t hangText="Domain 4:">BN41-BN42;</t>	
	</list>
       </t>
	<t>The above requests for each domain, need to be encoded separately even though
	they are exactly identical.  A mechanism to request them together
        in a single path computation request would be helpful, in which case total 4
        requests would be generated by parent PCE.</t> 
    </section> 
    </section>  
    <section title="PCEP Requirements" toc="default">
    <t>Following key requirements are identified for PCEP to enable  multiple sources and destinations 
    in a single path computation request:</t>
    <t>
        <list style="numbers">
          <t>It MUST be possible for a single Path Computation Request to list multiple sources and destinations.</t>
          <t>It MUST be possible for a single Path Computation Reply to be sent for multiple sources and destinations.</t>
          <t>It MUST NOT be possible to set different constraints, traffic parameters, or quality-of-service requirements for different
             source and destination pair within a single computation request.</t>
        </list>
      </t>
    </section>  
    <section title="Extension to PCEP" toc="default">
    <t>This document extends the existing END-POINTS object
   <xref target="RFC5440"/> and <xref target="RFC6006"/> by defining two new END-POINTS object types.</t>
    <section title="The New MP2MP END-POINTS Object" toc="default">
    <t>The END-POINTS object is used in a PCReq message to specify the
   source IP address and the destination IP address of the path for
   which a path computation is requested. This document extends the 
   existing END-POINT object to support multiple sources and destinations 
   in a single path request.</t> 
    <t>Two new MP2MP END-POINTS objects for IPv4 and IPv6 are defined.</t>
    <t>The format of the MP2MP END-POINTS object body for IPv4 (Object-Type=5 (TBD)) is as follows:</t>
    <figure title="The new MP2MP END-POINTS Object Body Format for IPv4" suppress-title="false" align="left" alt="" width="" height="" anchor="FIG2">
        <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      No of Sources  (2 bytes) |  No of Destinations  (2 bytes)|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                 Source IPv4 address 1 (4 bytes)               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ......                              ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                 Source IPv4 address m (4 bytes)               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              Destination IPv4 address 1 (4 bytes)             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ......                              ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              Destination IPv4 address n (4 bytes)             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
	]]></artwork>
    </figure>
    <t>The format of the MP2MP END-POINTS object body for IPv6 (Object-Type=6 (TBD)) is as follows:</t>
    <figure title="The new MP2MP END-POINTS Object Body Format for IPv6" suppress-title="false" align="left" alt="" width="" height="" anchor="FIG3">
    <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      No of Sources  (2 bytes) |  No of Destinations  (2 bytes)|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                 Source IPv6 address 1 (16 bytes)              |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ......                              ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                 Source IPv6 address m (16 bytes)              |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |              Destination IPv6 address 1 (16 bytes)            |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ......                              ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |              Destination IPv6 address n (16 bytes)            |
    |                                                               |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+    
	]]></artwork>
    </figure>
    <t>The MP2MP END-POINTS object body has a variable length. These are multiples 
    of 4 bytes for IPv4, and multiples of 16 bytes for IPv6, plus 4 bytes.</t>
    <t>On receiving MP2MP END-POINTS object, PCE computes m*n P2P paths, i.e, 
    point to point path is computed between each combination of source and destination received 
    in MP2MP END-POINTS object.</t>
    </section>
    </section>
    <section title="Other Considerations" toc="default">
    <section title="Identification of Source-Destination Pair in PCRep Message" toc="default">
    <t>Since the END-POINTS object is not carried in the PCRep message (<xref target="RFC5440"/>),
    the implementation supporting this extension SHOULD encode the source and the destination 
    as the first and the last hop in the ERO. This is done to easily identify that which ERO 
    corresponds to which source-destination pair.</t>
    </section>
    <section title="Request-ID" toc="default">
    <t>As per <xref target="RFC5440"/>, each request is uniquely identified by 
    a request-id number. </t>
    <t>Since a single request is used for multiple sources 
    and destinations sharing the same request-id number, along with request and response, 
    the request-id number in RP object used in other PCEP messages (PCNtf, PCErr ...) 
    applies to all sources and destinations (in the single request).</t>
    </section>
    <section title="Backward Compatibility" toc="default">
    <t>If PCE receives new END-POINTS type in path request and it 
    understands the END-POINTS type, but the PCE
   is not capable of/support multiple sources and destinations 
   in a single path request, the PCE MUST send a
   PCErr message with a PCEP-ERROR Object Error-Type = 4 (Not supported
   object) <xref target="RFC5440"/>.  The path computation request MUST then be
   cancelled.</t>

   <t>If the PCE does not understand the new END-POINTS type, then the PCE MUST
   send a PCErr message with a PCEP-ERROR Object Error-Type = 3 (Unknown
   object) <xref target="RFC5440"/>.</t>
   </section>
   <section title="Overloading the PCE" toc="default">
   <t>The new END-POINTS type could be used to issue multiple computations together 
   hence overloading the PCE. The PCE MUST allow for the use of policies to accept/reject
   such a request.</t>
    </section>
    </section>
    <section title="Security Considerations" toc="default">
      <t>This document defines new END-POINTS types which does not add any new
      security concerns beyond those discussed in <xref target="RFC5440"/>.</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="IANA Considerations" toc="default">
    <t>IANA assigns values to PCEP parameters in registries defined in
    <xref target="RFC5440"/>.  IANA is requested to make the following 
    additional assignments.</t>
    <section title="New END-POINTS Object Types" toc="default">
    <t>Two new END-POINTS Object-Types are defined in this document. IANA is requested to make 
    the following Object-Type allocations from the "PCEP Objects" sub-registry:</t>
    <figure title="" suppress-title="true" align="left" alt="" width="" height="">
    <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[   
    Object-Class Value    4
    Name                  END-POINTS   
    Object-Type           5: MP2MP IPv4
                          6: MP2MP IPv6
                          7-15: Unassigned
    Reference             This.I-D
    ]]></artwork>
    </figure>
    </section>
    </section>
    
    <section title="Acknowledgments" toc="default">
      <t>Thanks to Quintin Zhao for his suggestions.</t>
    </section>    
  </middle>
  <back>
    <references title="Normative References">
    <?rfc include="reference.RFC.2119.xml" ?>
    <?rfc include="reference.RFC.4657.xml" ?>
    </references>
    <references title="Informative References">
      <?rfc include="reference.RFC.4655.xml" ?>
      <?rfc include="reference.RFC.5440.xml" ?>
      <?rfc include="reference.RFC.5623.xml" ?>
      <?rfc include="reference.RFC.6006.xml" ?>
      <?rfc include="reference.RFC.6388.xml" ?>
      <?rfc include="reference.RFC.6805.xml" ?>
      
    </references>
  <section title="Evaluation of Message Size Reduction" toc="default">
  <t>Consider the domain 2 in <xref target="FIG1"/>, where 4 path requests 
  need to be encoded (from 2 entry boundary nodes to 2 exit boundary nodes 
  with the exact same constraints).</t>

  <t>Following figure illustrates the existing mechanism of carrying multiple 
  requests in single PCReq message (as per <xref target="RFC5440"/>):</t>
    <figure title="" suppress-title="true" align="left" alt="" width="" height="">
    <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[  
          +--------------+ +--------------+ +--------------+ 
          |RP            | |RP            | |RP            | 
+-------+ |END-POINTS(8) | |END-POINTS    | |END-POINTS    | 
|COMMON |+|BANDWIDTH     |+|BANDWIDTH     |+|BANDWIDTH     |
|HEADER | |METRIC        | |METRIC        | |METRIC        | 
+-------+ |METRIC        | |METRIC        | |METRIC        | 
          +--------------+ +--------------+ +--------------+ 
4 Bytes     36 Bytes         36 Bytes         36 Bytes          

          +--------------+
          |RP            |
          |END-POINTS(20)|
        + |BANDWIDTH     | = 148 Bytes
          |METRIC        |
          |METRIC        |
          +--------------+
            36 Bytes    
]]></artwork>
    </figure>                                                                                      
<t>Combining multiple requests into a single request by using MP2MP END-POINTS object is illustrated below:</t>
    <figure title="" suppress-title="true" align="left" alt="" width="" height="">
    <artwork xml:space="preserve" name="" type="" align="left" alt="" width="" height=""><![CDATA[  
          +--------------+
          |RP            |
+-------+ |END-POINTS(20)|
|COMMON |+|BANDWIDTH     | = 54 Bytes
|HEADER | |METRIC        |
+-------+ |METRIC        |
          +--------------+
4 Bytes     48 Bytes            
]]></artwork>
    </figure>
<t>There is message size reduction of 64% in this example for just one domain. </t>
  </section>
  </back>
</rfc>
