<?xml version="1.0" encoding="US-ASCII"?>
<!-- Based on template at http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- Get references from the online citation libraries -->

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC4655 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4655.xml">
<!ENTITY RFC5920 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5920.xml">
<!ENTITY RFC5440 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5440.xml">
<!ENTITY RFC6006 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6006.xml">

<!ENTITY I-D.ietf-pce-stateful-pce SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-pce-stateful-pce.xml">
<!ENTITY I-D.crabbe-pce-pce-initiated-lsp SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.crabbe-pce-pce-initiated-lsp.xml">
<!ENTITY I-D.ali-pce-remote-initiated-gmpls-lsp SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ali-pce-remote-initiated-gmpls-lsp.xml">
<!ENTITY I-D.sivabalan-pce-segment-routing SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.sivabalan-pce-segment-routing.xml">
<!ENTITY I-D.ietf-pce-gmpls-pcep-extensions SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-pce-gmpls-pcep-extensions.xml">
]>

<!--************************* PROCESSING INSTRUCTIONS ***********************-->
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- See http://xml.resource.org/authoring/README.html. -->
<?rfc strict="yes" ?>    <!-- give errors on ID-nits and DTD validation -->
<?rfc toc="yes"?>        <!-- generate a ToC -->
<?rfc tocdepth="4"?>     <!-- the number of levels of subsections in ToC -->
<?rfc symrefs="yes"?>    <!-- use symbolic references tags -->
<?rfc sortrefs="yes" ?>  <!-- sort the reference entries alphabetically -->
<?rfc compact="yes" ?>   <!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?> <!-- keep one blank line between list items -->


<!--*************************** BEGINNING OF DOCUMENT ***********************-->
<rfc category="std" docName="draft-alvarez-pce-path-profiles-00" ipr="trust200902">

  <!--**************************** FRONT MATTER *****************************-->
  <front>
    <title abbrev="PCE Path Profiles">
        PCE Path Profiles
    </title>

    <!--***************************** AUTHORS *******************************-->
    <author fullname="Santiago Alvarez" initials="S." surname="Alvarez">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 West Tasman Drive</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>USA</country>
        </postal>
        <email>saalvare@cisco.com</email>
      </address>
    </author>
         
   <author fullname="Siva Sivabalan" initials="S." surname="Sivabalan">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>2000 Innovation Drive</street>
          <city>Kanata</city>
          <region>ON</region>
          <code>K2K-3E8</code>
          <country>Canada</country>
        </postal>
        <email>msiva@cisco.com</email>
      </address>
    </author>
    
    <date year="2013" />
    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>RFC</keyword>
    <keyword>Request for Comments</keyword>
    <keyword>I-D</keyword>
    <keyword>Internet-Draft</keyword>
    <keyword>XML</keyword>
    <keyword>Extensible Markup Language</keyword>

    <!--****************************** ABSTRACT *****************************-->
    <abstract>
      <t>This document describes extensions to the Path Computation Element (PCE) Communication Protocol (PCEP) to signal path profiles.  A stateful or stateless path computation element (PCE) can maintain an association between a set of path parameters and a profile. A PCC can use the path profile to initiate a path computation request without having to specify a detailed list of path parameters.  In addition, a PCC can use the path profile to implement local policies associated with a path.
      </t>
    </abstract>
  </front>

  <!--***************************** MIDDLE MATTER ***************************-->
  <middle>
  
    <!--************************ INTRODUCTION SECTION ***********************-->
    <section title="Introduction">
      <t>
      </t>

      <section title="Requirements Language">
        <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">RFC 2119</xref>.
        </t>
      </section>
    </section>

    <!--******************* BLAH *********************-->
    <section anchor="path-profiles" title="Path Profiles">
      <t>A path profile represents a list of path computation parameters or attributes that a PCE owns.  The PCC learns that association through the interaction with the PCE.  If the PCC initiates the path setup, it uses the path profile as part of the path computation request.  In its simplest form, the request will only include mandatory path request objects and a PATH-PROFILE object defined in <xref target="path-profile-object"/>.  The PCE uses the path profile to identify the appropriate path computation parameters.  Then, it performs the path computation and sends a reply listing the detailed path parameters used.  If the PCE initiates the path setup, the PCE signals the path parameters and includes a PATH-PROFILE object to indicate the path profile id associated with the path.</t>
    </section>
    <section anchor="path-profile-proc" title="Procedures">
      <section anchor="capability" title="Capability Advertisement">
        <t>PCEP speakers advertise their capability to support path profiles during the session initialization phase. They include the PATH-PROFILE-CAPABILITY TLV defined in <xref target="open"/> as part of the OPEN object. A PCEP speaker can only signal a path profile if both speakers advertised this capability.  A speaker MUST send a PCErr message with Error-Type=4 (Not supported object), Error-value=1 (Not supported object class) and close the session if it receives a message with a path profile id, it supports the extensions in this document and both speakers did not advertise this capability.
        </t>
      </section>
      <section anchor="pcc-initiated-paths" title="PCC-Initiated Paths">
        <t>A PCC MAY include a PATH-PROFILE object when sending a PCReq message. The PCE uses the path profile id to select the parameters to fullfil the request.  The means by which the PCC learns about a particular path profile id and decides to include it in a PCReq message are outside the scope of this document. Similarly, the means by which the PCE selects a set of parameters based on the profile id for a specific request are outside the scope of this document.  The PCE may be stateful or stateless.</t> 
        <t>A PCE may receive a path computation request with an unknown or invalid path profile id. The PCE sends a PCErr message with Error-Type=[TBA] (PATH-PROFILE Error), Error-value=1 (Unknown path profile) if the path profile id is not known to the PCE.  The PCE sends a PCErr message with Error-Type=[TBA] (PATH-PROFILE Error), Error-value=2 (Invalid path profile) if the PCE knows about the path profile id, but considers the request invalid. The profile may be invalid because of the path type, the PCEP session type or for the originating PCC.</t>
        <t>The PCE will determine whether to consider any additional optional objects included in a PCReq message based on policy.  As illustrated in <xref target="pce-initiated-p2p-paths"/> and <xref target="pce-initiated-p2mp-paths"/>, the PCC MAY include other optional objects along with a PATH-PROFILE object as part of a path computation request.  The PCC will use the processing-rule (P) flag in the common object header to signal whether it considers those objects mandatory or optional when the PCE performs path computation.  Those objects may overlap with the path parameters that the PCE associates with the path profile id.</t>
        <t>PCE policy may place different kinds of restrictions on PCReq messages that include a PATH-PROFILE object and additional parameters.  A PCE MUST send an error message if it receives a request with optional objects signaled as mandatory (P flag = 1) for path computation and PCE policy does not allow such behavior from the originating PCC.  In that case, the PCE sends a PCErr message with Error-Type=[TBA] (PATH-PROFILE Error), Error-value=3 (Unexpected mandatory object).  If the objects are signaled as optional (P flag = 0) for path computation, the PCE will decide based on policy whether to consider them or not.  When sending the PCRep message for the request, the PCE will use the ignore (I) flag in the common object header to indicate to the PCC whether an object was ignored.</t>

        <section anchor="pce-initiated-p2p-paths" title="Point-to-Point Paths">
          <t><xref target="RFC5440"/> defines the basic structure of a PCReq message for point-to-point paths. This documents extends the message format as follows:</t>
        <t><figure align="left">
             <artwork><![CDATA[
<PCReq Message>::= <Common Header>
                   [<svec-list>]
                   <request-list>
              ]]>
            </artwork>
           </figure></t>
        <t>where:
           <figure align="left">
             <artwork><![CDATA[
   <svec-list>::=<SVEC>[<svec-list>]
   <request-list>::=<request>[<request-list>]

   <request>::= <RP>
                <END-POINTS>
                [<PATH-PROFILE>]
                [<path-computation>]
             ]]>
             </artwork>
           </figure></t>
        <t>where:</t>
        <t>&lt;path-computation&gt; is the list of optional objects used for path computation as defined initially in <xref target="RFC5440"/> and modified in subsequent PCEP extensions.</t>
        <t>If present in a PCReq message, the PATH-PROFILE object MUST be the first optional object in the request portion of the message.</t>
        </section>
        <section anchor="pce-initiated-p2mp-paths" title="Point-to-Multipoint Paths">
          <t><xref target="RFC6006"/> defines the basic structure of a PCReq message for point-to-multipoint paths. This documents extends the message format as follows:</t>
        <t>TBD</t>
        </section>
      </section>
      <section anchor="pce-initiated-paths" title="PCE-Initiated Paths">
        <t>A PCE MAY include a PATH-PROFILE object when sending a PCInitiate message as defined in <xref target="I-D.crabbe-pce-pce-initiated-lsp"/>.  The PCC can use the path profile id to select local behavior to apply to the path.  The means by which the PCE selects a profile id for a specific PCInitiate message are outside the scope of this document.  Similarly, the means by which the PCC selects the local behavior to apply to a path based on a path profile id are outside the scope of this document. 
        </t>
        <t><xref target="I-D.crabbe-pce-pce-initiated-lsp"/> defines the basic structure of a PCInitiate message. This documents extends the message format as follows:</t>
        <t><figure align="left">
             <artwork><![CDATA[
<PCInitiate Message> ::= <Common Header>
                            <PCE-initiated-lsp-list>
Where:

  <PCE-initiated-lsp-list> ::= <PCE-initiated-lsp-request>
                               [<PCE-initiated-lsp-list>]

  <PCE-initiated-lsp-request> ::= (<PCE-initiated-lsp-instantiation>|
                                   <PCE-initiated-lsp-deletion>)

  <PCE-initiated-lsp-instantiation> ::= <SRP>
                                        <LSP>
                                        <END-POINTS>
                                        <ERO>
                                        [PATH-PROFILE>
                                        [<attribute-list>]

  <PCE-initiated-lsp-deletion> ::= <SRP>
                                   <LSP>

             ]]>
             </artwork>
           </figure></t>
        <t>where:</t>
        <t>&lt;attribute-list&gt; is defined in <xref target="RFC5440"/> and extended by PCEP extensions.</t>
      </section>
    </section>

    <!--******************* BLAH *********************-->
    <section anchor="objects" title="Object Extensions">
      <!-- <t> CONSIDER ADDING AN INTRO
      </t> -->
      <section anchor="open" title="OPEN Object">
        <t>This documents defines a new optional PATH-PROFILE-CAPABILITY TLV in the OPEN object.
        </t>
        <t><figure align="center" anchor="fig-path-profile-cap">
             <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Type=[TBA]          |            Length=4           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Reserved           |             Flags             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             ]]>
             </artwork>
             <postamble>PATH-PROFILE-CAPABILITY TLV</postamble>
           </figure>
        </t>
        <t><list style="hanging" hangIndent="3">
             <t hangText="Reserved (16 bits):"><vspace />
                MUST be set to zero on transmission and ignored on recepit.
           </t>
           <t hangText="Flags (16 bits):"><vspace />
              Unassigned bits are considered reserved.  They MUST be set to zero on transmission and ignored on recepit. No flags are currently defined.
           </t>
           </list>
        </t>
      </section>
      <section anchor="path-profile-object" title="PATH-PROFILE Object">
        <t>The PATH-PROFILE object may be carried in PCReq, PCInitiate and PCUpd messages.
        </t>
        <t>PATH-PROFILE Object-Class is [TBA].</t>
        <t>PATH-PROFILE Object-Type is 1.</t>
        <t><figure align="center" anchor="fig-path-profile-obj">
             <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Reserved           |         Path Profile Id       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
//                      Optional TLVs                          //
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             ]]>
             </artwork>
             <postamble>PATH-PROFILE Object</postamble>
           </figure>
        </t>
        <t><list style="hanging" hangIndent="3">
             <t hangText="Reserved (16 bits):"><vspace />
                MUST be set to zero on transmission and ignored on recepit.
           </t>
           <t hangText="Path Profile Id (16 bits):"><vspace />
              (non-zero) unsigned path profile identifier.
           </t>
           </list>
        </t>
        <t>The PATH-PROFILE object has a variable length and may contain additional TLVs.  No TLVs are currently defined.</t>
      </section>
    </section>

    <!--******************* BLAH *********************-->
    <section anchor="error-codes" title="Error Codes for PATH-PROFILE Object">
      <t><figure align="center">
             <artwork><![CDATA[
Error-Type       Meaning                  Error-Value
  <TBA>     PATH-PROFILE Error     1: Unknown path profile
                                   2: Invalid path profile
                                   3: Unexpected mandatory object
             ]]>
             </artwork>
           </figure>
      </t>
    </section>
          
    <!--************************ ACKNOWLEDGEMENTS ***************************-->
<!--
    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD</t>
    </section>
-->

    <!--********************** IANA CONSIDERATIONS **************************-->
    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is requested to assign the following code points.
      <list>
        <t>PATH-PROFILE-CAPABILITY TLV</t>
        <t>PATH-PROFILE Object-Class</t>
        <t>PATH-PROFILE Object-Type</t>
        <t>PATH-PROFILE Error-Type</t>
      </list></t>
    </section>

    <!--******************** SECURITY CONSIDERATIONS ************************-->
    <section anchor="Security" title="Security Considerations">
      <t>TBD</t>
    </section>

  </middle>

  <!--***************************** BACK MATTER *****************************-->
  <back>

    <!--********************** NORMATIVE REFERENCES *************************-->
    <references title="Normative References">
      &RFC2119;
      &RFC5440;
      &RFC6006;
      &I-D.ietf-pce-stateful-pce;
      &I-D.ietf-pce-gmpls-pcep-extensions;
      &I-D.crabbe-pce-pce-initiated-lsp;
      &I-D.ali-pce-remote-initiated-gmpls-lsp;
      &I-D.sivabalan-pce-segment-routing;
    </references>

    <!--******************** INFORMATIVE REFERENCES *************************-->
    <references title="Informative References">
      &RFC4655; 
    </references>
  </back>
</rfc>
<!--***************************** END OF DOCUMENT ***************************-->
