<?xml version="1.0"?>
<!DOCTYPE rfc [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced.
    An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3063 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3063.xml">
<!ENTITY RFC3630 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3630.xml">
<!ENTITY RFC5305 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5305.xml">
<!ENTITY RFC5329 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5329.xml">
<!ENTITY RFC5440 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5440.xml">
<!ENTITY RFC7308 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7308.xml">
<!ENTITY RFC7942 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7942.xml">
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8231 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8231.xml">
<!ENTITY RFC8253 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8253.xml">
<!ENTITY RFC8281 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8281.xml">
<!ENTITY RFC8408 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8408.xml">
<!ENTITY RFC8664 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8664.xml">
<!ENTITY RFC8745 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8745.xml">
<!ENTITY RFC9012 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9012.xml">
<!ENTITY RFC9256 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9256.xml">
<!ENTITY RFC9325 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.9325.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-pce-pcep-color-07" ipr="trust200902" submissionType="IETF" consensus="true">
  <front>
    <title abbrev="PCEP Color">Path Computation Element Protocol(PCEP) Extension for Color</title>

    <author initials="B." surname="Rajagopalan" fullname="Balaji Rajagopalan">
      <organization>Juniper Networks</organization>
      <address>
	<email>balajir@juniper.net</email>
      </address>
    </author>

    <author initials="V." surname="Beeram" fullname="Vishnu Pavan Beeram">
      <organization>Juniper Networks</organization>
      <address>
	<email>vbeeram@juniper.net</email>
      </address>
    </author>

    <author initials="S." surname="Peng" fullname="Shaofu Peng">
      <organization>ZTE Corporation</organization>
      <address>
	<email>peng.shaofu@zte.com.cn</email>
      </address>
    </author>

    <author fullname="Mike Koldychev" initials="M." surname="Koldychev">
      <organization>Ciena Corporation</organization>
      <address>
        <email>mkoldych@proton.me</email>
      </address>
    </author>

    <author fullname="Gyan Mishra" initials="G." surname="Mishra">
      <organization>Verizon Communications Inc.</organization>
      <address>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>

    <date year="2025"/>

    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>

    <keyword>color</keyword>

    <abstract>
      <t>
      Color is a 32-bit numerical attribute that is used to associate 
      a Traffic Engineering (TE) tunnel or policy with an intent 
      or objective (e.g. low latency). This document specifies 
      extensions to Path Computation Element Protocol (PCEP) to carry 
      the color attribute.
      </t>
    </abstract>

  </front>

  <middle>
    <section title="Introduction" anchor='intro'>
      <t>
      A Traffic Engineering (TE) tunnel or Segment Routing (SR) policy can be associated
      with an intent or objective (e.g. low latency) by tagging it with a color. This 
      color attribute is used as a guiding criterion for mapping services onto the TE 
      tunnel (<xref target="RFC9012"/>) or SR policy (<xref target="RFC9256"/>).
      The term color used in this document is not to be interpreted as the 'thread color' 
      specified in <xref target="RFC3063"/> or the 'resource color' (or 'link color') 
      specified in <xref target="RFC3630"/>, <xref target="RFC5329"/>,
      <xref target ="RFC5305"/> and <xref target="RFC7308"/>.
      </t>

      <t>
      <xref target="RFC8231"/> specifies extensions to the Path Computation Element 
      Protocol (PCEP) that enable the deployment of a stateful Path Computation Element 
      (PCE) model. These extensions allow a Path Computation Client (PCC) to delegate 
      control of the Label Switched Paths (LSPs) associated with its TE Tunnels to a
      stateful PCE. <xref target="RFC8281"/> specifies extensions that allow a PCE to 
      instantiate and manage PCE-initiated LSPs on a PCC under the stateful PCE model. 
      <xref target="RFC8664"/> specifies extensions that enable stateful control of SR 
      paths via PCEP.
      </t>

      <t>
      This document introduces extensions to PCEP to carry the color attribute tagged 
      with TE paths that are setup using RSVP-TE (<xref target="RFC8408"/>) or Segment 
      Routing (SR) (<xref target ="RFC8664"/>) or any other path setup type supported 
      under the stateful PCE model. The only exception where the extensions defined in 
      this document are not used for carrying the color attribute is when an SR path is 
      setup using the extensions defined in <xref target="I-D.ietf-pce-segment-routing-policy-cp"/>. 
      For these SR paths, the associated color is already included as part of the SR 
      policy identifier encoding. 
      </t>

      <t>
      The mechanism used at the PCC for appropriately mapping services onto a TE path
      that is tagged with a color attribute is outside the scope of this document.
      </t>

   <section title="Requirements Language">
       <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
       "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this
       document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> 
       when, and only when, they appear in all capitals, as shown here.
       </t>
   </section>
    </section>

    <section title="Protocol Operation">
      <t>
        When the PCEP session is created, a PCEP (PCE/PCC) speaker sends
        an Open message with an OPEN object that contains the 
        STATEFUL-PCE-CAPABILITY TLV, as defined in <xref target="RFC8231"/>. A new
        STATEFUL-PCE-CAPABILITY TLV Flag (See <xref target="Color-Cap"/>)
        is introduced in this document to enable the PCEP speaker to advertise color
        capability.
      </t>
      <t>
        In PCRpt, PCUpd, and PCInitiate messages, the LSP object (<xref target="RFC8231"/>,  <xref target="RFC8281"/>)
        is a mandatory inclusion and is used to carry information specific to the target LSP. A new TLV called the Color TLV
        (see <xref target="TLV-Format"/>), which MAY be carried in the LSP object, is
        introduced in this document to carry the color attribute associated with the LSP. 
      </t>
      <t>
        A PCEP speaker that has advertised color capability MUST NOT
        send Color TLV encoded in the LSP object to a PCEP Peer that has not advertised color 
        capability. A PCEP speaker that advertises both color capability and
        SR Policy Association capability (<xref target="I-D.ietf-pce-segment-routing-policy-cp"/>) SHOULD
        NOT send Color TLV encoded in the LSP object for SR Paths.
        The Color TLV is ignored if it shows up in the LSP object of a message which
        carries an ASSOCIATION object of type SR Policy Association (<xref target="I-D.ietf-pce-segment-routing-policy-cp"/>).
        The color encoded in the SR Policy Association takes precedence in such a scenario.
      </t>
      
      <t>
	If a PCC is unable to honor a color value passed in a PCUpd
        or a PCInitiate message, the PCC MUST reject the message
        and send a PCErr message with Error-type=19 (Invalid Operation)
        and error-value=TBD1 (Invalid color).
      </t>
      <t>
        When LSPs that belong to the same TE tunnel are within the
        same Path Protection Association Group <xref target="RFC8745"/>, 
        they are all expected
        to be attached with the same color. If a PCEP speaker
	determines inconsistency in the color associated with the LSPs
        belonging to the same Path Protection Association Group, it MUST
        reject the message carrying the inconsistent color and send a 
        PCErr message with Error-type=19 (Invalid Operation) and
        error-value=TB2 (Inconsistent color).
      </t>
    </section>

    <section title="Protocol Extensions" anchor="Proto-Ext">
    <section title="Color Capability" anchor="Color-Cap">
      <t>
        Section 7.1.1 of <xref target="RFC8231"/> defines
        STATEFUL-PCE-CAPABILITY TLV flags. The following flag is used to
        indicate if the speaker supports color capability:
      </t>
      <t>
        <list>
          <t>
            C-bit (Bit 20 - Early allocation by IANA): A PCE/PCC that supports
            color capability must turn on this bit.
          </t>
        </list>
      </t>
    </section>
    <section title="Color TLV" anchor="TLV-Format">
      <figure anchor="color-tlv" title="Color TLV">
      <artwork xml:space="preserve" align="left">
   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                      |          Length=4             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |                             Color                             |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      </artwork>
      </figure>
      <t>
	  Type has the value 67 (Early allocation by IANA). Length carries a value of 4.
	  The 'color' field is 4-bytes long, and carries the actual color value.
      </t>
    </section>
    </section>

    <section title='Security Considerations' anchor='sec-con'>
      <t>
	This document defines a new TLV for color, and a new flag in
	capability negotiation, which do not add any new security
	concerns beyond those discussed in <xref target='RFC5440'/>,
	<xref target='RFC8231'/> and <xref target='RFC8281'/>.
      </t>
      <t>
	An unauthorized PCE may maliciously associate the LSP with an
	incorrect color. The procedures described in <xref
	target='RFC8253'/> and <xref target='RFC9325'/> can be used to
	protect against this attack.
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <section title="PCEP TLV Type Indicator">
         <t>
         This document introduces a new value in the
         "PCEP TLV Type Indicators" sub-registry of the
         PCEP Numbers registry as follows:
   <figure>
   <artwork align="left"><![CDATA[
 Value    Description             Reference
 ----------------------------------------------
 67       Color                   This document
   ]]></artwork>
   </figure>
         Note: The code point specified for the new TLV Type Indicator
         is an early allocation by IANA.
         </t>
      </section>
      <section title="STATEFUL-PCE-CAPABILITY TLV Flag Field">
         <t>
         This document introduces a new bit value in the
         "STATEFUL-PCE-CAPABILITY TLV Flag Field" sub-registry of the
         PCEP Numbers registry as follows:
   <figure>
   <artwork align="left"><![CDATA[
 Value    Description             Reference
 ----------------------------------------------
 20       COLOR-CAPABILITY        This document
   ]]></artwork>
   </figure>
         Note: The code point specified for the new STATEFUL-PCE-CAPABILITY
         TLV Flag is an early allocation by IANA.
         </t>
      </section>
      <section title="PCEP-Error Object">
      <t>
      This document introduces two new Error-values for Error-Type=19 (Invalid Operation)
      within the "PCEP-ERROR Object Error Types and Values" registry of the "Path
      Computation Element Protocol (PCEP) Numbers" registry group as follows:
   <figure>
   <artwork align="left"><![CDATA[
 Error-  Meaning            Error-value               Reference
 Type
 ------------------------------------------------------------------
 19      Invalid Operation  TBD1: Invalid Color       This document
                            TBD2: Inconsistent Color  This document
   ]]></artwork>
   </figure>
      </t>
      </section>
      <section title="LSP-ERROR-CODE TLV Error Code Field">
         <t>
   An earlier version of this document added a new error code in the 
   "LSP-ERROR-CODE TLV Error Code Field" registry of the PCEP Numbers 
   registry group, which was also early allocated by the IANA.  
         </t>
         <t>
   IANA is requested to cancel the early allocation made which is not
   needed anymore.  As per the instructions from the chairs, please mark 
   it as deprecated. 
         </t>
         <t>
   <figure>
   <artwork align="left"><![CDATA[
   Value    Meaning                         Reference
   ------------------------------------------------------
   9        Deprecated (Unsupported Color)  This document
   ]]></artwork>
   </figure>
         [Note to the RFC-Editor:  Please remove this section before publication.]
         </t>
      </section>
    </section>

    <section title="Implementation Status">
   <t>[Note to the RFC Editor - remove this section before publication, as
   well as remove the reference to RFC 7942.]</t>

   <t>This section records the status of known implementations of the
   protocol defined by this specification at the time of posting of this
   Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
   The description of implementations in this section is intended to
   assist the IETF in its decision processes in progressing drafts to
   RFCs.  Please note that the listing of any individual implementation
   here does not imply endorsement by the IETF.  Furthermore, no effort
   has been spent to verify the information presented here that was
   supplied by IETF contributors.  This is not intended as, and must not
   be construed to be, a catalog of available implementations or their
   features.  Readers are advised to note that other implementations may
   exist.</t>

   <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working groups
   to assign due consideration to documents that have the benefit of
   running code, which may serve as evidence of valuable experimentation
   and feedback that have made the implemented protocols more mature.
   It is up to the individual working groups to use this information as
   they see fit".</t>

   <t> At the time of publication of this version, there are no known 
   implementations. Juniper Networks has plans to implement the 
   extensions defined in this document.</t>
    </section>
    <section title='Acknowledgments'>
      <t>
	The authors would like to thank Kaliraj Vairavakkalai, Colby
	Barth, Natrajan Venkataraman, Tarek Saad, Dhruv Dhody, Adrian Farrel,
        Andrew Stone, Diego Achaval and Narasimha Kommuri for their review and
	suggestions.
      </t>
    </section>

    <section title='Contributors'>
     <t>The following people have contributed to this document</t>
    <author initials="Q." surname="Xiong" fullname="Quan Xiong">
      <organization>ZTE Corporation</organization>
      <address>
	<email>xiong.quan@zte.com.cn</email>
      </address>
    </author>
    </section>

</middle>

<back>
  <references title='Normative References'>
    &RFC2119;
    &RFC8174;
    &RFC5440;
    &RFC8231;
    &RFC8253;
    &RFC8281;
    &RFC8408;
    &RFC8664;
    &RFC8745;
    &RFC9012;
    &RFC9325;
  </references>
  <references title='Informative References'>
    &RFC3063;
    &RFC3630;
    &RFC5305;
    &RFC5329;
    &RFC7308;
    &RFC7942;
    &RFC9256;
    <?rfc include='reference.I-D.ietf-pce-segment-routing-policy-cp.xml'?>
  </references>
</back>
</rfc>
