<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?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-03" ipr="trust200902">
  <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>Cisco Systems Inc.</organization>
      <address>
        <email>mkoldych@cisco.com</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="2024"/>

    <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 an 
      extension to Path Computation Element Protocol (PCEP) to carry 
      the color attribute.
      </t>
    </abstract>

    <note 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"/>.
      </t>
    </note>
  </front>

  <middle>
    <section title="Introduction" anchor='intro'>
      <t>
      A Traffic Engineering (TE) tunnel or policy can be associated 
      with an intent or objective (e.g. low latency) by marking it 
      with a color. This color attribute is used as a guiding criterion 
      for mapping services onto the TE tunnel or policy (<xref target="RFC9012"/>).
      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>
      Color is part of the tuple that identifies a Segment Routing (SR) 
      policy (<xref target="I-D.ietf-spring-segment-routing-policy"/>) and 
      is included in the Path Computation Element Protocol (PCEP) extensions 
      defined for carrying the SR policy identifiers 
      (<xref target="I-D.ietf-pce-segment-routing-policy-cp"/>). The color 
      encoding specified in SR policy identifier cannot be reused for other 
      types of path setup.
      </t>
      <t>
      This document introduces a generic optional PCEP TLV called the 
      Color TLV to carry the color attribute and discusses its usage with 
      RSVP-TE Label Switched Paths (LSPs). 
      </t>
      <t>
      In addition to catering to the use-case discussed in this document, the Color 
      TLV can also be used to reference SR Composite Candidate Paths as specified 
      in  (<xref target="I-D.ietf-pce-multipath"/>). An implementation MAY 
      also provide a local policy option to use this TLV to reference a set 
      of path constraints and optimization objectives.
      </t>
    </section>

    <section title ="Use case: RSVP-TE Color">
      <t>
      The color attribute can be used as one of the guiding criteria in 
      selecting the RSVP-TE LSP as a next hop for service prefixes. While 
      the specific details of how the service prefixes are associated 
      with the appropriate RSVP-TE LSPs are outside the scope of this 
      specification, the envisioned high level usage of the color 
      attribute is as follows.
      </t>
      <t>
      The service prefixes are marked with some indication of the type of
      underlay they need.  The underlay LSPs carry corresponding markings,
      which we refer to as color in this specification, enabling an ingress 
      node to associate the service prefixes with the appropriate
      underlay LSPs.
      </t>
      <t>
      As an example, for a BGP-based service, the originating PE could 
      attach some community, e.g. the Color Extended Community 
      <xref target="RFC9012"/> with the service route.  A receiving PE 
      could use locally configured policies to associate service routes 
      carrying Color Extended Community 'X' with underlay RSVP-TE LSPs of 
      color 'Y'.
      </t>
      <t>
      BGP Color Extended Community is commonly used to perform service mapping,
      although this specification does not mandate its usage.
      </t>
      <t>
      The procedure discussed for service mapping in this section can be
      applied to any underlay path setup type.
      </t>
    </section>
    <section title="Protocol Operation">
      <t>
	The STATEFUL-PCE-CAPABILITY negotiation message is enhanced to
	carry the color capability, which allows PCC (Path Computation 
        Client) and PCE (Path Computation Element) to
	determine how incompatibility should be handled, should only
	one of them support color. An older implementation that does
	not recognize the new color TLV would ignore it upon
	receipt. This can sometimes result in undesirable
	behavior. For example, if PCE passes color to a PCC that does
	not understand colors, the LSP may not be used as intended. A
	PCE that clearly knows the PCC's color capability can handle
	such cases better, and vice versa. Following are the rules for
	handling mismatch in color capability.
      </t>
      <t>
	A PCE that has color capability MUST NOT send color TLV to a
	PCC that does not have color capability. A PCE that does not
	have color capability can ignore color marking reported by
	PCC.
      </t>
      <t>
	When a PCC is interacting with a PCE that does not have color
	capability, the PCC
	<list style="symbols">
	  <t>
	    SHOULD NOT report color to the PCE.
	  </t>
	  <t>
	    MUST NOT override the local color, if it is configured,
	    based on any messages coming from the PCE.
	  </t>
	</list>
      </t>
      <t>
	<xref target="TLV-Format" /> defines the format of the color TLV.
  The placement of the TLV depends on the purpose for which it is used.
  For RSVP's service mapping use case discussed in this document, the color
  TLV is carried in the LSP Object defined in <xref target="RFC8231"/>.
      </t>
      <t>
	If a PCC is unable to honor a color value passed in an LSP
	Update request, the PCC must keep the LSP in DOWN state, and
	include an LSP Error Code value of "Unsupported Color" (TBA3)
	in LSP State Report message.
      </t>
      <t>
        When LSPs that belong to the same TE tunnel are with in the
        same Path Protection Association Group <xref target="RFC8745"/>, 
        the color is attached only to the primary LSP. If PCC receives
	color TLV for a secondary LSP, it SHOULD respond with an error
	code of 4 (Unacceptable Parameters).
      </t>
    </section>

    <section title="TLV Format" 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 TBA1. Length carries a value of 4.
	  The 'color' field is 4-bytes long, and carries the actual color value.
      </t>
      <t>
	Section 7.1.1 of RFC8231 <xref target="RFC8231"/> defines
	STATEFUL-PCE-CAPABILITY flags. The following flag is used to
	indicate if the speaker supports color capability:
      </t>
      <t>
	<list>
	  <t>
	    C-bit (TBA2): A PCE/PCC that supports
	    color capability must turn on this bit.
	  </t>
	</list>
      </t>
    </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='RFC7525'/> can be used to
	protect against this attack.
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <section title="PCEP TLV Type Indicator">
         <t>
         IANA is requested to allocate 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
   ----------------------------------------------
   TBA1     Color                   This document
   ]]></artwork>
   </figure>
         </t>
      </section>
      <section title="STATEFUL-PCE-CAPABILITY TLV Flag Field">
         <t>
         IANA is requested to allocate 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
   ----------------------------------------------
   TBA2     COLOR-CAPABILITY        This document
   ]]></artwork>
   </figure>
         </t>
      </section>
      <section title="LSP-ERROR-CODE TLV Error Code Field">
         <t>
         IANA is requested to allocate a new error code in the 
         "LSP-ERROR-CODE TLV Error Code Field" sub-registry of the 
         PCEP Numbers registry as follows:
   <figure>
   <artwork align="left"><![CDATA[
   Value    Meaning                 Reference
   ----------------------------------------------
   TBA3     Unsupported Color       This document
   ]]></artwork>
   </figure>
         </t>
      </section>
    </section>

    <section title='Acknowledgments'>
      <t>
	The authors would like to thank Kaliraj Vairavakkalai, Colby
	Barth, Natrajan Venkataraman and Tarek Saad 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'>
    <?rfc include='reference.RFC.2119'?>
    <?rfc include='reference.RFC.5440'?>
    <?rfc include='reference.RFC.7525'?>
    <?rfc include='reference.RFC.8231'?>
    <?rfc include='reference.RFC.8253'?>
    <?rfc include='reference.RFC.8281'?>
    <?rfc include='reference.RFC.8745'?>
    <?rfc include='reference.RFC.9012'?>
  </references>
  <references title='Informative References'>
    <?rfc include='reference.RFC.3063'?>
    <?rfc include='reference.RFC.3630'?>
    <?rfc include='reference.RFC.5305'?>
    <?rfc include='reference.RFC.5329'?>
    <?rfc include='reference.RFC.7308'?>
    <?rfc include='reference.I-D.ietf-spring-segment-routing-policy'?>
    <?rfc include='reference.I-D.ietf-pce-segment-routing-policy-cp'?>
    <?rfc include='reference.I-D.ietf-pce-multipath'?>
  </references>
</back>
</rfc>
