<?xml version="1.0" encoding="US-ASCII"?>
<!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-idr-bgp-ls-te-path-02"
     ipr="trust200902">
  <front>
    <title abbrev="Advertising TE Paths using BGP-LS">Advertisement of Traffic
    Engineering Paths using BGP Link-State</title>

    <author fullname="Stefano Previdi" initials="S." surname="Previdi">
      <organization>Individual</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>stefano@previdi.net</email>
      </address>
    </author>

    <author fullname="Ketan Talaulikar" initials="K." role="editor"
            surname="Talaulikar">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country>India</country>
        </postal>

        <email>ketant.ietf@gmail.com</email>
      </address>
    </author>

    <author fullname="Jie Dong" initials="J." surname="Dong">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>jie.dong@huawei.com</email>
      </address>
    </author>

    <author fullname="Hannes Gredler" initials="H." surname="Gredler">
      <organization>RtBrick Inc.</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <email>hannes@rtbrick.com</email>
      </address>
    </author>

    <author fullname="Jeff Tantsura" initials="J." surname="Tantsura">
      <organization>Nvidia</organization>

      <address>
        <email>jefftant.ietf@gmail.com</email>
      </address>
    </author>

    <date year=""/>

    <area>Routing</area>

    <workgroup>Inter-Domain Routing</workgroup>

    <keyword>BGP</keyword>

    <keyword>BGP-LS</keyword>

    <keyword>Traffic Engineering</keyword>

    <keyword>MPLS</keyword>

    <abstract>
      <t>This document describes a mechanism to collect the Traffic
      Engineering Path information that is locally available in a node and
      advertise it into BGP Link-State (BGP-LS) updates. Such information can
      be used by external components for path computation, re-optimization,
      service placement, network visualization, etc.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="Introduction" title="Introduction">
      <t>In many network environments, traffic engineering (TE) paths are
      instantiated into various forms:<list style="symbols">
          <t>MPLS Traffic Engineering Label Switched Paths (TE-LSPs).</t>

          <t>Local MPLS cross-connect configuration</t>
        </list></t>

      <t>All this information can be grouped into the same term: TE Paths. In
      the rest of this document we refer to TE Paths as the set of information
      related to the various instantiation of policies: MPLS TE LSPs, Local
      MPLS cross-connects, etc.</t>

      <t>TE Paths are generally instantiated at the head-end and are based on
      either local configuration or controller-based programming of the node
      using various APIs and protocols, e.g., PCEP.</t>

      <t>In many network environments, the configuration, and state of each TE
      Path that is available in the network is required by a controller which
      allows the network operator to optimize several functions and operations
      through the use of a controller aware of both topology and state
      information.</t>

      <t>One example of a controller is the stateful Path Computation Element
      (PCE) <xref target="RFC8231"/>, which could provide benefits in path
      optimization. While some extensions are proposed in the Path Computation
      Element Communication Protocol (PCEP) for the Path Computation Clients
      (PCCs) to report the LSP states to the PCE, this mechanism may not be
      applicable in a management-based PCE architecture as specified in
      section 5.5 of <xref target="RFC4655"/>. As illustrated in the figure
      below, the PCC is not an LSR in the routing domain, thus the head-end
      nodes of the TE-LSPs may not implement the PCEP protocol. In this case,
      a general mechanism to collect the TE-LSP states from the ingress LERs
      is needed. This document proposes a TE Path state collection mechanism
      complementary to the mechanism defined in <xref
      target="RFC8231"/>.<figure>
          <artwork><![CDATA[                                 -----------
                                |   -----   |
            Service             |  | TED |<-+----------->
            Request             |   -----   |  TED synchronization
               |                |     |     |  mechanism (e.g.,
               v                |     |     |  routing protocol)
         ------------- Request/ |     v     |
        |             | Response|   -----   |
        |     NMS     |<--------+> | PCE |  |
        |             |         |   -----   |
         -------------           -----------
       Service |
       Request |
               v
          ----------  Signaling   ----------
         | Head-End | Protocol   | Adjacent |
         |  Node    |<---------->|   Node   |
          ----------              ----------

               Figure 1.  Management-Based PCE Usage
]]></artwork>
        </figure></t>

      <t>In networks with composite PCE nodes as specified in section 5.1 of
      <xref target="RFC4655"/>, PCE is implemented on several routers in the
      network, and the PCCs in the network can use the mechanism described in
      <xref target="RFC8231"/> to report the TE Path information to the PCE
      nodes. An external component may also need to collect the TE Path
      information from all the PCEs in the network to obtain a global view of
      the LSP state in the network.</t>

      <t>In multi-area or multi-AS scenarios, each area or AS can have a child
      PCE to collect the TE Paths in its domain, in addition, a parent PCE
      needs to collect TE Path information from multiple child PCEs to obtain
      a global view of LSPs inside and across the domains involved.</t>

      <t>In another network scenario, a centralized controller is used for
      service placement. Obtaining the TE Path state information is quite
      important for making appropriate service placement decisions with the
      purpose of both meeting the application's requirements and utilizing
      network resources efficiently.</t>

      <t>The Network Management System (NMS) may need to provide global
      visibility of the TE Paths in the network as part of the network
      visualization function.</t>

      <t>BGP has been extended to distribute link-state and traffic
      engineering information to external components <xref target="RFC9552"/>.
      BGP-LS is extended to carry TE Path information via <xref
      target="I-D.ietf-idr-bgp-ls-sr-policy"/> so that the same protocol may
      be used to also collect Segment Routing traffic engineering paths
      information such that external components like controllers can use the
      same protocol for network information collection. This document
      specifies similar extensions to BGP-LS for the advertisement of
      information other TE Paths to external components.</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 anchor="TEINFOINBGP"
             title="Carrying TE Policy Information in BGP">
      <t>The "Link-State NLRI" defined in <xref target="RFC9552"/> is extended
      to carry the TE Path information. New TLVs carried in the Link_State
      Attribute defined in <xref target="RFC9552"/> are also defined to carry
      the attributes of a TE Path in the subsequent sections.</t>

      <t>The format of "Link-State NLRI" is defined in <xref
      target="RFC9552"/> as follows:<figure>
          <artwork align="center"><![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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            NLRI Type          |     Total NLRI Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
//                  Link-State NLRI (variable)                 //
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
        </figure></t>

      <t>Additional "NLRI Types" are defined for TE Path Information as
      following:</t>

      <t><list style="symbols">
          <t>MPLS-TE LSP NLRI (value TBD)</t>

          <t>MPLS Local Cross-connect NLRI (value TBD)</t>
        </list></t>

      <t>The common format for these NLRI types is defined in <xref
      target="TEPOLICYNLRI"/> below.</t>
    </section>

    <section anchor="TEPOLICYNLRI" title="TE Path NLRI Types">
      <t>This document defines TE Path NLRI Types with their common format as
      shown in the following figure:</t>

      <t><figure>
          <artwork align="center"><![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
+-+-+-+-+-+-+-+-+
|  Protocol-ID  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Identifier                             |
|                        (64 bits)                              | 
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//            Node Descriptor TLV (for the Headend)            //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                 TE Path Descriptors (variable)              //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
        </figure><list style="symbols">
          <t>Protocol-ID field specifies the component that owns the TE Path
          state in the advertising node. The existing protocol-id value of 5
          for Static Configuration applies for some of the NLRI types and the
          "RSVP-TE" Protocol-ID (value 8) is defined for some of the other
          types in this document.</t>

          <t>"Identifier" is an 8 octet value as defined in <xref
          target="RFC9552"/>.</t>

          <t>"Local Node Descriptor" (TLV 256) as defined in <xref
          target="RFC9552"/> that describes the headend node.</t>

          <t>"TE Path Descriptors" consists of one or more of the TLVs listed
          as below for use with the respective NLRI type advertisements as
          specified in <xref target="DESCRIPTORS"/>:<figure>
              <artwork><![CDATA[+-----------+----------------------------------+
| Codepoint |       Descriptor TLVs            |
+-----------+----------------------------------+
|  550      | Tunnel ID                        |
|  551      | LSP ID                           |
|  552      | IPv4/6 Tunnel Head-end address   |
|  553      | IPv4/6 Tunnel Tail-end address   |
|  555      | Local MPLS Cross Connect         |
+-----------+----------------------------------+]]></artwork>
            </figure></t>
        </list></t>

      <t>The Local Node Descriptor TLV MUST include the following Node
      Descriptor TLVs:<list style="symbols">
          <t>BGP Router-ID (TLV 516) <xref target="RFC9086"/>, which contains
          a valid BGP Identifier of the node originating the TE Path
          advertisement.</t>

          <t>Autonomous System Number (TLV 512) <xref target="RFC9552"/>,
          which contains the ASN or AS Confederation Identifier (ASN) <xref
          target="RFC5065"/>, if confederations are used, of the node
          originating the TE Path advertisement.</t>
        </list></t>

      <t>The Local Node Descriptor TLV SHOULD include at least one of the
      following Node Descriptor TLVs:<list style="symbols">
          <t>IPv4 Router-ID of Local Node (TLV 1028) <xref target="RFC9552"/>,
          which contains the IPv4 TE Router-ID of the local node when one is
          provisioned.</t>

          <t>IPv6 Router-ID of Local Node (TLV 1029) <xref target="RFC9552"/>,
          which contains the IPv6 TE Router-ID of the local node when one is
          provisioned.</t>
        </list></t>

      <t>The Local Node Descriptor TLV MAY include the following Node
      Descriptor TLVs:<list style="symbols">
          <t>BGP Confederation Member (TLV 517) <xref target="RFC9086"/>,
          which contains the ASN of the confederation member (i.e. Member-AS
          Number), if BGP confederations are used, of the local node.</t>

          <t>Node Descriptors as defined in <xref target="RFC9552"/>.</t>
        </list></t>
    </section>

    <section anchor="DESCRIPTORS" title="TE Path Descriptors">
      <t>This section defines the TE Path Descriptors TLVs which are used to
      describe the TE Path being advertised by using the NLRI types defined in
      <xref target="TEPOLICYNLRI"/>.</t>

      <section anchor="TUNNELID" title="Tunnel Identifier">
        <t>The Tunnel Identifier TLV contains the Tunnel ID defined in <xref
        target="RFC3209"/> and is used with the Protocol-ID set to RSVP-TE to
        advertise the MPLS-TE LSP NLRI Type. It is a mandatory TE Path
        Descriptor TLV for MPLS-TE LSP NLRI type. It has the following
        format:<figure>
            <artwork align="center"><![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              |          Length               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Tunnel ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
          </figure><list style="symbols">
            <t>Type: 550</t>

            <t>Length: 2 octets.</t>

            <t>Tunnel ID: 2 octets as defined in <xref target="RFC3209"/>.</t>
          </list></t>
      </section>

      <section anchor="LSPID" title="LSP Identifier">
        <t>The LSP Identifier TLV contains the LSP ID defined in <xref
        target="RFC3209"/> and is used with the Protocol-ID set to RSVP-TE to
        advertise the MPLS-TE LSP NLRI Type. It is a mandatory TE Path
        Descriptor TLV for MPLS-TE LSP NLRI type. It has the following
        format:<figure>
            <artwork align="center"><![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              |          Length               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            LSP ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
          </figure><list style="symbols">
            <t>Type: 551</t>

            <t>Length: 2 octets.</t>

            <t>LSP ID: 2 octets as defined in <xref target="RFC3209"/>.</t>
          </list></t>
      </section>

      <section anchor="TUNNELHEAD" title="IPv4/IPv6 Tunnel Head-End Address">
        <t>The IPv4/IPv6 Tunnel Head-End Address TLV contains the Tunnel
        Head-End Address defined in <xref target="RFC3209"/> and is used with
        the Protocol-ID set to RSVP-TE to advertise the MPLS-TE LSP NLRI Type.
        It is a mandatory TE Path Descriptor TLV for MPLS-TE LSP NLRI type. It
        has the following format:<figure>
            <artwork align="center"><![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              |          Length               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//        IPv4/IPv6 Tunnel Head-End Address (variable)         //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
          </figure><list style="symbols">
            <t>Type: 552</t>

            <t>Length: 4 or 16 octets.</t>
          </list></t>

        <t>When the IPv4/IPv6 Tunnel Head-end Address TLV contains an IPv4
        address, its length is 4 (octets).</t>

        <t>When the IPv4/IPv6 Tunnel Head-end Address TLV contains an IPv6
        address, its length is 16 (octets).</t>
      </section>

      <section anchor="TUNNELTAIL" title="IPv4/IPv6 Tunnel Tail-End Address">
        <t>The IPv4/IPv6 Tunnel Tail-End Address TLV contains the Tunnel
        Tail-End Address defined in <xref target="RFC3209"/> and is used with
        the Protocol-ID set to RSVP-TE to advertise the MPLS-TE LSP NLRI Type.
        It is a mandatory TE Path Descriptor TLV for MPLS-TE LSP NLRI type. It
        has the following format:<figure>
            <artwork align="center"><![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              |          Length               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//        IPv4/IPv6 Tunnel Tail-End Address (variable)         //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
          </figure><list style="symbols">
            <t>Type: 553</t>

            <t>Length: 4 or 16 octets.</t>
          </list></t>

        <t>When the IPv4/IPv6 Tunnel Tail-end Address TLV contains an IPv4
        address, its length is 4 (octets).</t>

        <t>When the IPv4/IPv6 Tunnel Tail-end Address TLV contains an IPv6
        address, its length is 16 (octets).</t>
      </section>

      <section anchor="CROSSCONNECT" title="Local MPLS Cross Connect">
        <t>The Local MPLS Cross Connect TLV identifies a local MPLS state in
        the form of an incoming label and interface followed by an outgoing
        label and interface. The outgoing interface may appear multiple times
        (for multicast states). It is used with Protocol ID set to "Static
        Configuration" value 5 as defined in <xref target="RFC9552"/>. It is a
        mandatory TE Path Descriptor TLV for MPLS Local Cross-connect NLRI
        type.</t>

        <t>The Local MPLS Cross Connect TLV has the following format: <figure>
            <artwork align="center"><![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              |          Length               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Incoming label (4 octets)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Outgoing label (4 octets)                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                          Sub-TLVs (variable)                //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
          </figure><list style="symbols">
            <t>Type: 555</t>

            <t>Length: variable.</t>

            <t>Incoming and Outgoing labels: 4 octets each.</t>

            <t>Sub-TLVs: following Sub-TLVs are defined:<list>
                <t>Interface Sub-TLV</t>

                <t>Forwarding Equivalent Class (FEC)</t>
              </list></t>
          </list></t>

        <t>The Local MPLS Cross Connect TLV:<list>
            <t>MUST have an incoming label.</t>

            <t>MUST have an outgoing label.</t>

            <t>MAY contain an Interface Sub-TLV having the I-flag set.</t>

            <t>MUST contain at least one Interface Sub-TLV having the I-flag
            unset.</t>

            <t>MAY contain multiple Interface Sub-TLV having the I-flag unset.
            This is the case of a multicast MPLS cross-connect.</t>

            <t>MAY contain an FEC Sub-TLV.</t>
          </list></t>

        <t>The following sub-TLVs are defined for the Local MPLS Cross Connect
        TLV:</t>

        <t><figure>
            <artwork><![CDATA[+-----------+----------------------------------+
| Codepoint |       Descriptor TLV             |
+-----------+----------------------------------+
|  556      | MPLS Cross Connect Interface     |
|  557      | MPLS Cross Connect FEC           |
+-----------+----------------------------------+]]></artwork>
          </figure></t>

        <t>These are defined in the following sub-sections.</t>

        <section anchor="INTF" title="MPLS Cross Connect Interface">
          <t>The MPLS Cross Connect Interface sub-TLV is optional and contains
          the identifier of the interface (incoming or outgoing) in the form
          of an IPv4/IPv6 address and/or a local interface identifier.</t>

          <t>The MPLS Cross Connect Interface sub-TLV has the following
          format: <figure>
              <artwork align="center"><![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              |          Length               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+
|     Flags     |
+-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Local Interface Identifier (4 octets)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//         Interface Address (4 or 16 octets)                  //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
            </figure><list style="symbols">
              <t>Type: 556</t>

              <t>Length: 9 or 21.</t>

              <t>Flags: 1 octet of flags defined as follows:<figure>
                  <artwork align="center"><![CDATA[ 0 1 2 3 4 5 6 7 
+-+-+-+-+-+-+-+-+
|I|             |
+-+-+-+-+-+-+-+-+

where:]]></artwork>
                </figure><list>
                  <t>I-Flag is the Interface flag. When set, the Interface
                  Sub-TLV describes an incoming interface. If the I-flag is
                  not set, then the Interface Sub-TLV describes an outgoing
                  interface.</t>
                </list></t>

              <t>Local Interface Identifier: a 4-octet identifier.</t>

              <t>Interface address: a 4-octet IPv4 address or a 16-octet IPv6
              address.</t>
            </list></t>
        </section>

        <section anchor="FECTLV" title="MPLS Cross Connect FEC">
          <t>The MPLS Cross Connect FEC sub-TLV is optional and contains the
          FEC associated with the incoming label.</t>

          <t>The MPLS Cross Connect FEC sub-TLV has the following format:
          <figure>
              <artwork align="center"><![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              |          Length               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Flags       |  Masklength   |   Prefix (variable)          //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                     Prefix (variable)                       //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
            </figure><list style="symbols">
              <t>Type: 557</t>

              <t>Length: variable.</t>

              <t>Flags: 1 octet of flags defined as follows:<figure>
                  <artwork align="center"><![CDATA[ 0 1 2 3 4 5 6 7 
+-+-+-+-+-+-+-+-+
|4|             |
+-+-+-+-+-+-+-+-+

where:]]></artwork>
                </figure><list>
                  <t>4-Flag is the IPv4 flag. When set, the FEC Sub-TLV
                  describes an IPv4 FEC. If the 4-flag is not set, then the
                  FEC Sub-TLV describes an IPv6 FEC.</t>
                </list></t>

              <t>Mask Length: 1 octet of prefix length.</t>

              <t>Prefix: an IPv4 or IPv6 prefix whose mask length is given by
              the " Mask Length" field padded to an octet boundary.</t>
            </list></t>
        </section>
      </section>
    </section>

    <section anchor="TEPOLICYSTATE" title="MPLS-TE Path State TLV">
      <t>A new TLV called "MPLS-TE Path State TLV", is used to describe the
      characteristics of the MPLS-TE LSP NLRI type and it is carried in the
      optional non-transitive BGP Attribute "LINK_STATE Attribute" defined in
      <xref target="RFC9552"/>. These MPLS-TE LSP characteristics include the
      characteristics and attributes of the LSP, its dataplane, explicit path,
      Quality of Service (QoS) parameters, route information, the protection
      mechanisms, etc.</t>

      <t>The MPLS-TE Path State TLV has the following format:</t>

      <t><figure title="MPLS-TE Path State TLV">
          <artwork align="center"><![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             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Object-origin | Address Family|            RESERVED           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//          MPLS-TE Path State Objects (variable)              //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

where:]]></artwork>
        </figure><list style="symbols">
          <t>Type: 1200</t>

          <t>Length: the total length of the MPLS-TE Path State TLV not
          including the Type and Length fields.</t>

          <t>Object-origin: identifies the component (or protocol) from which
          the contained object originated. This allows for objects defined in
          different components to be collected while avoiding the possible
          codepoint collisions among these components. The following
          object-origin codepoints are defined in this document. <figure>
              <artwork><![CDATA[+----------+------------------+
|  Code    |     Object       |
|  Point   |     Origin       |
+----------+------------------+
|    1     | RSVP-TE          |
|    2     | PCEP             |
|    3     | Local/Static     |
+----------+------------------+]]></artwork>
            </figure></t>

          <t>Address Family: describes the address family used to set up the
          MPLS-TE path. The following address family values are defined in
          this document:<figure>
              <artwork><![CDATA[+----------+------------------+
|  Code    |    Dataplane     |
|  Point   |                  |   
+----------+------------------+
|    1     | MPLS-IPv4        |
|    2     | MPLS-IPv6        |
+----------+------------------+]]></artwork>
            </figure></t>

          <t>RESERVED: 16-bit field. SHOULD be set to 0 on transmission and
          MUST be ignored on receipt.</t>

          <t>TE Path State Objects: Rather than replicating all these objects
          in this document, the semantics and encodings of the objects as
          defined in RSVP-TE and PCEP are reused.</t>
        </list></t>

      <t>The state information is carried in the "MPLS-TE Path State Objects"
      with the following format as described in the sub-sections below.</t>

      <section anchor="RSVPOBJ" title="RSVP Objects">
        <t>RSVP-TE objects are encoded in the "MPLS-TE Path State Objects"
        field of the MPLS-TE Path State TLV and consists of MPLS TE LSP
        objects defined in RSVP-TE <xref target="RFC3209"/> <xref
        target="RFC3473"/>. Rather than replicating all MPLS TE LSP-related
        objects in this document, the semantics and encodings of the MPLS TE
        LSP objects are re-used. These MPLS TE LSP objects are carried in the
        MPLS-TE Path State TLV.</t>

        <t>When carrying RSVP-TE objects, the "Object-Origin" field is set to
        "RSVP-TE".</t>

        <t>The following RSVP-TE Objects are defined:</t>

        <t><list style="symbols">
            <t>SENDER_TSPEC and FLOW_SPEC <xref target="RFC2205"/></t>

            <t>SESSION_ATTRIBUTE <xref target="RFC3209"/></t>

            <t>EXPLICIT_ROUTE Object (ERO) <xref target="RFC3209"/></t>

            <t>ROUTE_RECORD Object (RRO) <xref target="RFC3209"/></t>

            <t>FAST_REROUTE Object <xref target="RFC4090"/></t>

            <t>DETOUR Object <xref target="RFC4090"/></t>

            <t>EXCLUDE_ROUTE Object (XRO) <xref target="RFC4874"/></t>

            <t>SECONDARY_EXPLICIT_ROUTE Object (SERO) <xref
            target="RFC4873"/></t>

            <t>SECONDARY_RECORD_ROUTE (SRRO) <xref target="RFC4873"/></t>

            <t>LSP_ATTRIBUTES Object <xref target="RFC5420"/></t>

            <t>LSP_REQUIRED_ATTRIBUTES Object <xref target="RFC5420"/></t>

            <t>PROTECTION Object <xref target="RFC3473"/><xref
            target="RFC4872"/><xref target="RFC4873"/></t>

            <t>ASSOCIATION Object <xref target="RFC4872"/></t>

            <t>PRIMARY_PATH_ROUTE Object <xref target="RFC4872"/></t>

            <t>ADMIN_STATUS Object <xref target="RFC3473"/></t>

            <t>LABEL_REQUEST Object <xref target="RFC3209"/><xref
            target="RFC3473"/></t>
          </list></t>

        <t>For the MPLS TE LSP Objects listed above, the corresponding
        sub-objects are also applicable to this mechanism. Note that this list
        is not exhaustive, other MPLS TE LSP objects which reflect specific
        characteristics of the MPLS TE LSP can also be carried in the LSP
        state TLV.</t>
      </section>

      <section anchor="PCEPOBJ" title="PCEP Objects">
        <t>PCEP objects are encoded in the "MPLS-TE Path State Objects" field
        of the MPLS-TE Path State TLV and consist of PCEP objects defined in
        <xref target="RFC5440"/>. Rather than replicating all MPLS TE
        LSP-related objects in this document, the semantics, and encodings of
        the MPLS TE LSP objects are re-used. These MPLS TE LSP objects are
        carried in the MPLS-TE Path State TLV.</t>

        <t>When carrying PCEP objects, the "Object-Origin" field is set to
        "PCEP".</t>

        <t>The following PCEP Objects are defined:</t>

        <t><list style="symbols">
            <t>METRIC Object <xref target="RFC5440"/></t>

            <t>BANDWIDTH Object <xref target="RFC5440"/></t>
          </list>For the MPLS TE LSP Objects listed above, the corresponding
        sub-objects are also applicable to this mechanism. Note that this list
        is not exhaustive, other MPLS TE LSP objects which reflect specific
        characteristics of the MPLS TE LSP can also be carried in the TE Path
        State TLV.</t>
      </section>
    </section>

    <section anchor="Procedures" title="Procedures">
      <t>The BGP-LS advertisements for the TE Path NLRI types are originated
      by the headend node for the TE Paths that are instantiated on its local
      node.</t>

      <t>For MPLS TE LSPs signaled via RSVP-TE, the NLRI descriptor TLVs as
      specified in <xref target="TUNNELID"/>, <xref target="LSPID"/>, <xref
      target="TUNNELHEAD"/>, and <xref target="TUNNELTAIL"/> are used. Then
      the TE LSP state is encoded in the BGP-LS Attribute field as MPLS-TE
      Path State TLV as described in <xref target="TEPOLICYSTATE"/>. The
      RSVP-TE objects that reflect the state of the LSP are included as
      defined in <xref target="RSVPOBJ"/>. When the TE LSP is setup with the
      help of PCEP signaling then another MPLS-TE Path State TLV SHOULD be
      used to encode the related PCEP objects corresponding to the LSP as
      defined in <xref target="PCEPOBJ"/>.</t>

      <t>When a SR Policy <xref target="RFC9256"/> is setup with the help of
      PCEP signaling <xref target="RFC8664"/> then a MPLS-TE Path State TLV
      MAY be used to encode the related PCEP objects corresponding to the LSP
      as defined in <xref target="PCEPOBJ"/> specifically to report
      information and status that is not covered by the SR Policy State TLVs
      specified in #draft-ietf-idr-bgp-ls-sr-policy#. In the event of a
      conflict of information, the receiver MUST prefer the information
      originated via the SR Policy State TLVs over the PCEP objects reported
      via the TE Path State TLV.</t>
    </section>

    <section anchor="Manageability" title="Manageability Considerations">
      <t>The Existing BGP operational and management procedures apply to this
      document. No new procedures are defined in this document. The
      considerations as specified in <xref target="RFC9552"/> apply to this
      document.</t>

      <t>In general, it is assumed that the TE Path head-end nodes are
      responsible for the advertisement of TE Path state information, while
      other nodes, e.g. the nodes in the path of a policy, MAY report the TE
      Path information (if available) when needed. For example, the border
      routers in the inter-domain case will also distribute LSP state
      information since the ingress node may not have the complete information
      for the end-to-end path.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This section describes the code point allocation by IANA for this
      document.</t>

      <section anchor="NLRITYPES" title="BGP-LS NLRI-Types">
        <t>IANA maintains a registry called "BGP-LS NLRI-Types" in the "Border
        Gateway Protocol - Link State (BGP-LS) Parameters" registry group.</t>

        <t>The following table lists the code points pending allocation by
        IANA:</t>

        <t><figure>
            <artwork><![CDATA[ +------+-------------------------------+---------------+
 | Type | NLRI Type                     |   Reference   |
 +------+-------------------------------+---------------+
 | TBD  | MPLS-TE LSP NLRI              | this document |
 | TBD  | MPLS Local Cross-connect NLRI | this document |
 +------+-------------------------------+---------------+
]]></artwork>
          </figure></t>
      </section>

      <section anchor="PROTOCOLIDS" title="BGP-LS Protocol-IDs">
        <t>IANA maintains a registry called "BGP-LS Protocol-IDs" in the
        "Border Gateway Protocol - Link State (BGP-LS) Parameters" registry
        group.</t>

        <t>The following Protocol-ID codepoints have been allocated by
        IANA:</t>

        <t><figure>
            <artwork><![CDATA[ +-------------+----------------------------------+---------------+
 | Protocol-ID | NLRI information source protocol |   Reference   |
 +-------------+----------------------------------+---------------+
 |     8       |          RSVP-TE                 | this document |
 +-------------+----------------------------------+---------------+
]]></artwork>
          </figure></t>
      </section>

      <section anchor="BGPLSTLVS" title="BGP-LS TLVs">
        <t>IANA maintains a registry called "Node Anchor, Link Descriptor and
        Link Attribute TLVs" in the "Border Gateway Protocol - Link State
        (BGP-LS) Parameters" registry group.</t>

        <t>The following table lists the status of TLV code points that have
        been allocated by IANA:</t>

        <t><figure>
            <artwork><![CDATA[+-------+----------------------------------------+---------------+
| Code  |             Description                | Value defined |
| Point |                                        |       in      |
+-------+----------------------------------------+---------------+
|   550 |   Tunnel ID                            | this document |
|   551 |   LSP ID                               | this document |
|   552 |   IPv4/6 Tunnel Head-end address       | this document |
|   553 |   IPv4/6 Tunnel Tail-end address       | this document |
|   555 |   MPLS Local Cross Connect             | this document |
|   556 |   MPLS Cross Connect Interface         | this document |
|   557 |   MPLS Cross Connect FEC               | this document |
|  1200 |   MPLS-TE Path State                   | this document |
+-------+----------------------------------------+---------------+]]></artwork>
          </figure></t>
      </section>

      <section anchor="OBJORIGINS" title="BGP-LS TE State Object Origin">
        <t>This document requests IANA to maintain a new registry under
        "Border Gateway Protocol - Link State (BGP-LS) Parameters" registry
        group with the allocation policy of "Expert Review" <xref
        target="RFC8126"/> using the guidelines for Designated Experts as
        specified in <xref target="RFC9552"/>. The new registry is called "TE
        State Path Origin" and contains the codepoints allocated to the
        "Object Origin" field defined in <xref target="TEPOLICYSTATE"/>. The
        registry contains the following codepoints, with initial values, to be
        assigned by IANA with the reference set to this document:<figure>
            <artwork><![CDATA[+----------+------------------------------------------+
|  Code    |     Object                               |
|  Point   |     Origin                               |
+----------+------------------------------------------+
|    0     | Reserved (not to be used)                |
|    1     | RSVP-TE                                  |
|    2     | PCEP                                     |
|    3     | Local/Static                             |
|  4-250   | Unassigned                               |
|  251-255 | Private Use (not to be assigned by IANA) |
+----------+------------------------------------------+]]></artwork>
          </figure></t>
      </section>

      <section anchor="AFI" title="BGP-LS TE State Address Family">
        <t>This document requests IANA to maintain a new registry under
        "Border Gateway Protocol - Link State (BGP-LS) Parameters" registry
        group with the allocation policy of "Expert Review" <xref
        target="RFC8126"/> using the guidelines for Designated Experts as
        specified in <xref target="RFC9552"/>. The new registry is called "TE
        State Address Family" and contains the codepoints allocated to the
        "Address Family" field defined in <xref target="TEPOLICYSTATE"/>. The
        registry contains the following codepoints, with initial values, to be
        assigned by IANA with the reference set to this document:<figure>
            <artwork><![CDATA[+----------+------------------------------------------+
|  Code    |   Address                                |
|  Point   |   Family                                 |   
+----------+------------------------------------------+
|    0     | Reserved (not to be used)                |
|    1     | MPLS-IPv4                                |
|    2     | MPLS-IPv6                                |
|   3-250  | Unassigned                               |
| 251-255  | Private Use (not to be assigned by IANA) |
+----------+------------------------------------------+]]></artwork>
          </figure></t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Procedures and protocol extensions defined in this document do not
      affect the BGP security model. See <xref target="RFC6952"/> for
      details.</t>
    </section>

    <section anchor="Contributors" title="Contributors">
      <t>The following people have substantially contributed to the editing of
      this document:</t>

      <t><figure>
          <artwork><![CDATA[Clarence Filsfils
Cisco Systems
Email: cfilsfil@cisco.com

]]></artwork>
        </figure><figure>
          <artwork><![CDATA[Mach (Guoyi) Chen
Huawei Technologies
Email: mach.chen@huawei.com

]]></artwork>
        </figure></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Dhruv Dhody, Mohammed Abdul Aziz
      Khalid, Lou Berger, Acee Lindem, Siva Sivabalan, Arjun Sreekantiah,
      Dhanendra Jain, Francois Clad, Zafar Ali, Stephane Litkowski, and
      Aravind Babu Mahendra Babu for their review and valuable comments.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include='reference.RFC.2205'?>

      <?rfc include='reference.RFC.3209'?>

      <?rfc include='reference.RFC.3473'?>

      <?rfc include='reference.RFC.4090'?>

      <?rfc include='reference.RFC.4872'?>

      <?rfc include='reference.RFC.4873'?>

      <?rfc include='reference.RFC.4874'?>

      <?rfc include='reference.RFC.8664'?>

      <?rfc include='reference.RFC.5420'?>

      <?rfc include='reference.RFC.5440'?>

      <?rfc include='reference.RFC.9552'?>

      <?rfc include='reference.RFC.8174'?>

      <?rfc include='reference.RFC.8126'?>

      <?rfc include='reference.RFC.9256'?>

      <?rfc include='reference.RFC.9086'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.4655'?>

      <?rfc include='reference.I-D.ietf-idr-bgp-ls-sr-policy'?>

      <?rfc include='reference.RFC.6952'?>

      <?rfc include='reference.RFC.8231'?>

      <?rfc include='reference.RFC.5065'?>
    </references>
  </back>
</rfc>
