<?xml version='1.0' encoding='utf-8'?>
<?rfc comments="yes"?>
<?rfc compact="yes"?>
<?rfc inline="yes"?>
<?rfc sortrefs="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc tocompact="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF"
docName="draft-ietf-idr-sr-policy-seglist-id-09" category="std" ipr="trust200902"
obsoletes="" updates="" xml:lang="en" symRefs="true" sortRefs="false" tocInclude="true"
version="3" consensus="true">
  <!-- xml2rfc v2v3 conversion 3.30.0 -->
  <!-- Generated by id2xml 1.5.2 on 2025-08-02T09:41:16Z -->
    <front>
    <title abbrev="BGP SR Policy Segment List Identifier">BGP SR Policy Extensions for Segment List Identifier</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-idr-sr-policy-seglist-id-09"/>
    <author initials="C." surname="Lin" fullname="Changwang Lin">
      <organization>New H3C Technologies</organization>
      <address>
        <postal>
          <street>8 Yongjia North Road</street>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <region>Haidian District</region>
          <code>100094</code>
          <country>China</country>
        </postal>
        <email>linchangwang.04414@h3c.com</email>
      </address>
    </author>
    <author initials="W." surname="Cheng" fullname="Weiqiang Cheng">
      <organization>China Mobile</organization>
      <address>
       <postal>
          <street>32 Xuanwumen West Street</street>
          <!-- Reorder these if your country does things differently -->
          <city>Beijing</city>
          <region>Xicheng District</region>
          <code>100053</code>
          <country>China</country>
        </postal>
        <email>chengweiqiang@chinamobile.com</email>      
      </address>
    </author>
    <author initials="Y." surname="Liu" fullname="Yao Liu">
      <organization>ZTE</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>liu.yao71@zte.com.cn</email> 
      </address>
    </author>
    <author initials="K." surname="Talaulikar" fullname="Ketan Talaulikar">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>ketant.ietf@gmail.com</email> 
      </address>
    </author>
    <author initials="M." surname="Chen" fullname="Mengxiao Chen">
      <organization>New H3C Technologies</organization>
      <address>
       <postal>
        <country>China</country>
        </postal>
        <email>chen.mengxiao@h3c.com</email> 
      </address>
    </author>
    <date year="2026"/>
    <workgroup>IDR</workgroup>
    <abstract>
      <t>
   Segment Routing (SR) is a source routing paradigm that explicitly
   indicates the forwarding path for packets at the ingress node. An SR
   Policy is a set of candidate paths, each consisting of one or more
   segment lists. This document defines extensions to BGP SR Policy to
   specify the identifier of a segment list.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sect-1" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
   Segment routing (SR) <xref target="RFC8402" format="default"/> is a source routing paradigm that
   explicitly indicates the forwarding path for packets at the ingress
   node. The ingress node steers packets into a specific path according
   to the Segment Routing Policy (SR Policy) as defined in <xref target="RFC9256" format="default"/>.
   In order to distribute SR policies to the headend, <xref target="RFC9830" format="default"/>
   specifies a mechanism by using BGP.</t>
      <t>
   However, there is no identifier for segment lists in BGP SR Policy,
   which may cause inconvenience for other mechanisms to designate
   segment lists distributed by BGP.</t>
      <t>
   Consider a scenario where a network controller distributes SR policies
   to the headend nodes, which need to collect traffic
   forwarding statistics per segment list. When a headend node reports
   each statistic to the controller, it needs to specify the segment
   list to which the statistic belongs. Due to the lack of an identifier,
   the headend node usually reports all SIDs in the associated segment
   list along with the statistic, and then the controller needs to
   compare the SIDs one by one to recognize which segment list it is.
   The advertisement of all SIDs in the segment list consumes a lot of
   octets, and the comparison of SIDs can be complicated.</t>
      <t>
   Consider a second example where a network controller distributes SR
   policies using BGP, and then uses NETCONF to set some
   configurations of the segment lists that are not suitable to be
   carried in BGP. The controller needs to specify which segment list
   these configurations belong to when it issues them. In this case, a
   simple identifier of the segment list can also be helpful.</t>
      <t>
   An identifier of a segment list may also serve as a user-friendly
   attribute for debugging and troubleshooting purposes, such as
   displaying an invalid segment list when its associated BFD session
   is down.</t>
      <t>
   Section 5.7.4 of <xref target="RFC9857" format="default"/> defines an 
   SR Segment List Identifier sub-TLV for reporting the identifier 
   associated with a specific SID list.
   This document defines extensions to BGP SR Policy to specify the 
   identifier of an SR Segment List.</t>
      <section anchor="sect-1.1" numbered="true" toc="default">
        <name>Requirements Language</name>
        <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" format="default"/> <xref target="RFC8174" format="default"/> when, and only when, they appear in all
   capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="sect-2" numbered="true" toc="default">
      <name>Segment List Identifier in SR Policy</name>
      <t>
   As defined in <xref target="RFC9830" format="default"/>, the SR policy encoding structure is as
   follows:</t>
   <figure align="center">
   <name>SR Policy Encoding</name>
            <artwork align="left"><![CDATA[SR Policy SAFI NLRI: <Distinguisher, Policy-Color, Endpoint>
Attributes:
   Tunnel Encapsulation Attribute (23)
      Tunnel Type: SR Policy (15)
          Binding SID
          SRv6 Binding SID
          Preference 
          Priority
          Policy Name
          Policy Candidate Path Name
          Explicit NULL Label Policy (ENLP)
          Segment List
              Weight 
              Segment 
              Segment 
              ... 
          ...

]]></artwork></figure>
    <t> 
   SR policy with segment list identifier is expressed as below: </t>
   <figure align="center">
   <name>SR policy with segment list identifier Encoding</name>
            <artwork align="left"><![CDATA[SR Policy SAFI NLRI: <Distinguisher, Policy-Color, Endpoint>
Attributes:
   Tunnel Encapsulation Attribute (23) 
      Tunnel Type: SR Policy (15)
          Binding SID
          SRv6 Binding SID
          Preference 
          Priority
          Policy Name
          Policy Candidate Path Name
          Explicit NULL Label Policy (ENLP)
          Segment List
              Weight 
              Segment List Identifier
              Segment 
              Segment 
              ... 
          ...

]]></artwork></figure>
      <t>
   The segment list identifier can be advertised using the Segment List
   ID sub-TLV, as defined in <xref target="sect-2.1" format="default"/>.</t>
   
      <section anchor="sect-2.1" numbered="true" toc="default">
        <name>Segment List ID Sub-TLV</name>
        <t>
   The Segment List ID sub-TLV is defined in the BGP Tunnel
   Encapsulation Attribute <xref target="RFC9012" format="default"/>. The Segment List ID sub-TLV can
   be carried in the BGP Tunnel Encapsulation Attribute with the tunnel
   type set to SR Policy.</t>
        <t>
   The Segment List ID sub-TLV specifies the identifier of the segment
   list by a 4-octet number. The Segment List ID is unique within the
   context of a Candidate Path.</t>
        <t>
   The Segment List ID sub-TLV is optional and it MUST NOT appear more
   than once inside the Segment List sub-TLV. If multiple instances are
   present, then the first one is considered valid and the other
   instances MUST be ignored and MUST NOT considered to be malformed.</t>
   <t>The Segment List ID sub-TLV has the following format:</t>
        <figure anchor="ure-segment-list-id-sub-tlv-where-o-type-tbd19.">
          <name>Segment List ID sub-TLV</name>
          <artwork name="" type="" align="left" alt=""><![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     |   RESERVED    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Segment List ID                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>Type: 19.</t>
          </li>
          <li>
            <t>Length: 6.</t>
          </li>
          <li>
            <t>Flags: 1 octet of flags. None are defined at this stage. Flags
      SHOULD be set to zero on transmission and MUST be ignored on
      receipt.</t>
          </li>
          <li>
            <t>RESERVED: 1 octet of reserved bits. SHOULD be set to zero on
      transmission and MUST be ignored on receipt.</t>
          </li>
          <li>
            <t>Segment List ID: 4 octets which carry a 32-bit unsigned non-zero
      number that serves as the identifier associated with the segment
      list. A value of 0 indicates that there is no identifier
      associated with the Segment List. The scope of this identifier is
      the SR Policy Candidate path.</t>
          </li>
        </ul>
        <t>
   The validation of an SR Policy NLRI with the Segment List ID sub-TLV
   in the BGP tunnel encapsulation attribute <xref target="RFC9012" format="default"/> follows the
   procedures in Section 4.2 of <xref target="RFC9830" format="default"/>.</t>
        <t>
   The Segment List ID sub-TLV is considered malformed if its format
   does not match the above description. If its format is considered
   malformed, the associated BGP SR Policy NLRI is considered malformed
   and the "treat-as-withdraw" strategy of <xref target="RFC7606" format="default"/> MUST be applied.</t>
      </section>
    </section>
    <section anchor="sect-3" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
   The protocol extensions defined in this document do not affect the
   base BGP security model. The security requirements and mechanisms
   described in <xref target="RFC9830" format="default"/> also apply to this document. SR operates
   within a trusted SR domain <xref target="RFC8402" format="default"/> and its security considerations
   also apply to BGP sessions when carrying SR Policy information.</t>
      <t>
   The Segment List ID sub-TLV is an optional sub-TLV that specifies an
   identifier associated with a segment list. The scope of this
   identifier is the SR Policy Candidate Path. The Segment List ID
   uniquely identifies a segment list within an SR Policy Candidate
   Path.</t>
      <t>
   The Segment List ID is assigned by a controller, distributed via
   BGP, and used as an identifier for the segment list. Since this
   identifier may expose mission-critical or commercially sensitive
   network information, it introduces a confidentiality risk.</t>
      <t>
   Network operators MUST ensure that only trusted nodes (including
   both routers and controller applications) within the SR domain are
   permitted to receive this information.</t>
    </section>
    <section anchor="sect-4" numbered="true" toc="default">
      <name>Implementation Status</name>
      <t>
   [Note to the RFC Editor - remove this section before publication,
   as well as remove the reference to <xref target="RFC7942" format="default"/>.]</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" format="default"/>. 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" format="default"/>, "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>
      <section anchor="sect-4.1" numbered="true" toc="default">
        <name>New H3C Technologies</name>
        <ul spacing="normal">
          <li>
            <t>Organization: New H3C Technologies.</t>
          </li>
          <li>
            <t>Implementation: H3C CR16000, CR19000 series routers
      implementation.</t>
          </li>
          <li>
            <t>Description: All sections including all the "MUST" and "SHOULD"
      clauses have been implemented in above-mentioned New H3C
      Products(running Version 7.1.099 and above).</t>
          </li>
          <li>
            <t>Maturity Level: Product</t>
          </li>
          <li>
            <t>Coverage: All sections.</t>
          </li>
          <li>
            <t>Version: Draft-03</t>
          </li>
          <li>
            <t>Licensing: N/A</t>
          </li>
          <li>
            <t>Implementation experience: Nothing specific.</t>
          </li>
          <li>
            <t>Contact: linchangwang.04414@h3c.com</t>
          </li>
          <li>
            <t>Last updated: February 10, 2025</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-4.2" numbered="true" toc="default">
        <name>ZTE Corp</name>
        <ul spacing="normal">
          <li>
            <t>Organization: ZTE Corporation</t>
          </li>
          <li>
            <t>Implementation: ZTE's ZXR10 core router</t>
          </li>
          <li>
            <t>Description: The implementation in lab has been completed. The
      commercial implementation is under development.</t>
          </li>
          <li>
            <t>Maturity Level: Product</t>
          </li>
          <li>
            <t>Coverage: All</t>
          </li>
          <li>
            <t> Version: Draft-03</t>
          </li>
          <li>
            <t> Licensing: N/A</t>
          </li>
          <li>
            <t> Implementation experience: Nothing specific.</t>
          </li>
          <li>
            <t> Contact: feng.jun99@zte.com.cn</t>
          </li>
          <li>
            <t> Last updated: February 6, 2025</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sect-5" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>
   This document defines a new Sub-TLV in the registry "SR Policy Segment List Sub-TLVs" <xref target="RFC9830" format="default"/>:</t>
      <artwork name="" type="" align="left" alt=""><![CDATA[
Value     Description                   Reference
-------------------------------------------------------
19        Segment List ID sub-TLV       This document
]]></artwork>
    </section>
    <section anchor="sect-6" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>
   The authors would like to thank Susan Hares, Hao Li, Haiyang Zhang,
   Yisong Liu, Ran Chen, Libin Liu, Lancheng Qin and Xinxin Yi for
   their review and discussion of this document.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7606.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9012.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9256.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9552.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9830.xml"/>
	    </references>
	    <references>
        <name>Informative References</name>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9857.xml"/>
        <!--<xi:include href="https://bib.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-pce-multipath.xml"/>-->
        <reference anchor="I-D.ietf-pce-multipath" target="https://datatracker.ietf.org/doc/html/draft-ietf-pce-multipath-24">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Signaling Multipath Information</title>
            <author fullname="Mike Koldychev"/>
            <author fullname="Samuel Sidor"/>
            <date day="21" month="April" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pce-multipath-24"/>
        </reference>
      </references>
	  </references>
    <section anchor="sect-A" numbered="true" toc="default">
      <name>Cross WG Information</name>
      <t>
        This section describes cross-working group information for the IETF review
        process. This section will be removed by the RFC Editor before publication.
        The RFC Editor will also remove the references to <xref target="I-D.ietf-pce-multipath" format="default"/>
        and <xref target="RFC9552" format="default"/>.</t>
      <section anchor="sect-A.1" numbered="true" toc="default">
        <name>Spring WG</name>
        <t>
		RFC9526 does not define any identifier for a Segment List.		
        The Segment List ID was introduced in all these protocols as a result of protocol 
		encoding and other operational requirements. </t>
	   <t>
	   Consider a scenario where a network controller distributes SR policies
	   to the headend nodes, which need to collect traffic
	   forwarding statistics per segment list. When a headend node reports
	   each statistic to the controller, it needs to specify the segment
	   list to which the statistic belongs. Due to the lack of an identifier,
	   the headend node usually reports all SIDs in the associated segment
	   list along with the statistic, and then the controller needs to
	   compare the SIDs one by one to recognize which segment list it is.
	   The advertisement of all SIDs in the segment list consumes a lot of
	   octets, and the comparison of SIDs can be complicated.</t>
		  <t>
	   Consider a second example where a network controller distributes SR
	   policies using BGP, and then uses NETCONF to set some
	   configurations of the segment lists that are not suitable to be
	   carried in BGP. The controller needs to specify which segment list
	   these configurations belong to when it issues them. In this case, a
	   simple identifier of the segment list can also be helpful.</t>
		  <t>
	   An identifier of a segment list may also serve as a user-friendly
	   attribute for debugging and troubleshooting purposes, such as
	   displaying an invalid segment list when its associated BFD session
	   is down.</t>
   
	   <t>
	   Section 5.7.4 of <xref target="RFC9857" format="default"/> defines an SR Segment 
	   List Identifier sub-TLV for reporting the identifier associated with a specific SID list.
	   Section 4.2 of <xref target="I-D.ietf-pce-multipath" format="default"/> defines a Path ID for SR Segment Lists.
	   Note that the names are different due to the objects/TLVs in respective protocols but the semantics are identical.
	   This document defines extensions to BGP SR Policy to specify the identifier of an SR Segment List.</t>
   
      </section>
      <section anchor="sect-A.2" numbered="true" toc="default">
        <name>PCE WG</name>
        <t>
        The BGP extension in this document for the identifier of segment list also could be implemented
        via PCEP according to Section 4.2 of <xref target="I-D.ietf-pce-multipath" format="default"/>. 
		The Path ID uniquely identifies a Path within the context of an LSP. 
		Path IDs MUST be unique across all these path types within the same LSP. In this document, 
		Path IDs correspond to the identifier of a segment list under CP.</t>
        <t>	
		Sections 4.3 and 4.4 of <xref target="I-D.ietf-pce-multipath" format="default"/> 
		describe the usage of Path IDs in load-balancing 
		and multiple paths for protection scenarios, respectively. 
		Additionally, Appendix A of <xref target="I-D.ietf-pce-multipath" format="default"/> specifies how Path IDs are 
		encapsulated within the PCEP protocol.
        </t>
    
      </section>
      <section anchor="sect-A.3" numbered="true" toc="default">
        <name>SRv6OPS</name>
        <t>
        This document is unrelated to SRv6OPS and only relates to BGP-TE extensions.</t>
        <t>
        <xref target="RFC9857" format="default"/> defines an optional sub-TLV (called SR Segment List
        Identifier sub-TLV) used to report an identifier associated with the specific SID list via BGP-LS.
        This sub-TLV is carried in the optional non-transitive BGP-LS Attribute defined in <xref target="RFC9552" format="default"/>
        and are associated with the SR Policy Candidate Path NLRI type.</t>
      </section>
    </section>
  </back>
</rfc>
