<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- 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 RFC6241 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml">
<!ENTITY RFC7950 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7950.xml">
<!ENTITY RFC7149 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7149.xml">
<!ENTITY RFC7426 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7426.xml">
<!ENTITY RFC8299 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8299.xml">
<!ENTITY RFC8309 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8309.xml">
<!ENTITY RFC8340 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8340.xml">
<!ENTITY RFC8453 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8453.xml">
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8345 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8345.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-he-idr-bgpls-sr-policy-pm-00"
     ipr="trust200902">
  <front>
    <title>Advertisement of SR Policy Performance Metrics Using BGP-LS</title>

    <author fullname="Xiaoming He" initials="X." surname="He">
      <organization>China Telecom</organization>

      <address>
        <email>hexm4@chinatelecom.cn</email>
      </address>
    </author>

     <author fullname="Cancan Huang" initials="C." surname="Huang">
      <organization>China Telecom</organization>

      <address>
        <email>Huangcanc@chinatelecom.cn</email>
      </address>
    </author>   

    <author fullname="Quan Xiong" initials="Q." surname="Xiong">
      <organization>ZTE Corporation</organization>

      <address>
        <email>xiong.quan@zte.com.cn</email>
      </address>
    </author>
    

    <date year="2026"/>

    <area>IDR</area>

    <workgroup>IDR Working Group</workgroup>

    <keyword>SR Policy Performance Metric</keyword>

    <abstract>
      <t>This document defines several Type-Length-Values (TLVs) to advertise the performance metrics
   for Segment Routing (SR) Policy using BGP Link State (BGP-LS). It complements RFC9857 for the advertisement of SR Policy performance metrics. Such
   information can be used by the operators for monitoring the performance and state of the candidate path .</t>
    </abstract>
  </front>

  <middle>
    <section anchor="Introduction" title="Introduction">
      <t>When a Segment Routing (SR) Policy is running, the operators need to monitor the performance and state of the candidate path. Such
   information can be used by the operators for path optimization, fault diagnosis, as well as Service Level Agreement (SLA) compliance verification for user services.</t>

	<t>RFC9857 describes a mechanism used to collect SR Policy configuration and state information that is locally available in an SR Policy headend node and
   advertise it into BGP-Link State (BGP-LS) updates [RFC9552]. [I-D.lin-idr-bgpls-te-policy-pm] describes a way to advertise SR Policy performance metrics
   using BGP-LS, and it defines 4 round-trip SR Policy performance metrics for advertisement. But SR Policy path is unidirectional, these round-trip performance metrics cannot accurately reflect the actual candidate path or Segment List performance.</t> 

      <t>There several measurement methods that can be used to measure SR path performance, including active measurement methods such as [I-D.ietf-spring-stamp-srpm-mpls] and [I-D.ietf-spring-stamp-srpm-srv6] for measuring path delay, delay variation and loss, 
      using STAMP [RFC8762]; on-path detection techniques such as 
    [RFC9947] for measuring path delay, delay variation and loss in SRv6 network, using Alternate-Marking method (AltMark)[RFC9341]; and [I-D.he-ippm-ioam-trace-type-bandwidth] using IOAM [RFC9197] for collecting
 the available bandwidth of a path. The measurement methods and procedures for performance metrics of the candidate path are out of the scope of this document. </t>
   
      <t>This document defines four Type-Length-Values (TLVs) to advertise the performance metrics
   for SR Policy using BGP-LS. They are Unidirectional Available Bandwidth TLV, 
   Unidirectional Segment List Delay TLV, Unidirectional Segment List Delay Variation TLV and Unidirectional Segment List Loss TLV. It complements RFC9857 for the advertisement of SR Policy performance metrics.</t>
    </section>

    <section title="Conventions">
    
     <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 title="Terminology">
      <t>Abbreviations used in this document:</t>
      <t>BGP-LS:    BGP-Link State</t>
	 <t>IOAM:     	In situ Operation, Administration, and Maintenance</t>    
      <t>NLRI:     	Network Layer Reachability Information</t>
      <t>SR:        Segment Routing</t>
      <t>STAMP:     Simple Two-Way Active Measurement Protocol</t>
     </section>
    </section>
    
    <section title="Extensions for SR Policy Performance Metrics">
      <t>This section defines four SR Policy performance metric TLVs that enable the SR Policy headend node to
   report the performance metrics at the SR Policy candidate path level and SR Segment List level. They are Unidirectional Available Bandwidth TLV, 
   Unidirectional Segment List Delay TLV, Unidirectional Segment List Delay Variation TLV and Unidirectional Segment List Loss TLV.
 These TLVs are carried in the optional non-transitive BGP-
   LS Attribute defined in [RFC9552] and are associated with the SR
   Policy Candidate Path NLRI type defined in [RFC9857].</t>

     <section title="Unidirectional Available Bandwidth TLV">
	 <t>The Unidirectional Available Bandwidth TLV is an optional TLV that is used to
   carry the available bandwidth of the candidate path.  In order to be associated with the specified candidate path, 
   when advertising the Unidirectional Available Bandwidth TLV, the SR Policy Name TLV and the SR Candidate Path Name TLV defined in Section 5.4 and Section 5.5 of [RFC9857] also MUST be present. 
   Only a single instance of this TLV is advertised for a given candidate path.
   If multiple instances are present, then the first valid one (i.e.,
   not determined to be malformed as per Section 8.2.2 of [RFC9552]) is
   used and the rest are ignored.</t>

     <t>The TLV has the following format:<figure
   title="Unidirectional Available Bandwidth TLV">
     <artwork>
  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           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                    Available Bandwidth                        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     </artwork>
     </figure></t>
   
     <t>Where:</t>

     <t>Type:  TBA</t>

     <t>Length:  4 octets</t>

     <t>Bandwidth:  4-octet field that specifies the available bandwidth (in unit of
      bytes per second) over a configurable interval, encoded in IEEE floating point format [IEEE.754-2019]. </t>
	 </section>

	<section title="Unidirectional Segment List Delay TLV">
	<t>The Unidirectional Segment List Delay TLV is a sub-TLV of the SR Segment List TLV defined in Section 5.7 of [RFC9857]. It is an optional TLV that is used to
   carry the average unidirectional delay of a SR Segment List. In order to be associated with the specified SR Segment List 
   when advertising the Unidirectional Segment List Delay TLV, the SR Segment List Identifier sub-TLV defined in Section 5.7.4 of [RFC9857] also MUST be present.
   Only a single instance of this TLV is advertised for a given Segment List.
   If multiple instances are present, then the first valid one (i.e.,
   not determined to be malformed as per Section 8.2.2 of [RFC9552]) is
   used and the rest are ignored.</t>

    <t>The TLV has the following format:<figure
    title="Unidirectional Segment List Delay TLV">
     <artwork>
  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           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                     Segment List Delay                        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     </artwork>
     </figure></t>
   
     <t>Where:</t>

     <t>Type:  TBA</t>

     <t>Length:  4 octets</t>

     <t>Segment List Delay:  4-octet unsigned integer field that specifies the average unidirectional delay (in unit of
      microseconds) over a configurable interval. When set to 0, it has not been measured.</t>
	</section>

	<section title="Unidirectional Segment List Delay Variation TLV">
	<t>The Unidirectional Segment List Delay Variation TLV is a sub-TLV of the SR Segment List TLV defined in Section 5.7 of [RFC9857]. It is an optional TLV that is used to
   carry the average unidirectional delay variation of a SR Segment List. In order to be associated with the specified SR Segment List 
   when advertising the Unidirectional Segment List Delay TLV, the SR Segment List Identifier Sub-TLV defined in Section 5.7.4 of [RFC9857] also MUST be present.
   Only a single instance of this TLV is advertised for a given Segment List.
   If multiple instances are present, then the first valid one (i.e.,
   not determined to be malformed as per Section 8.2.2 of [RFC9552]) is
   used and the rest are ignored.</t>

    <t>The TLV has the following format:<figure
    title="Unidirectional Segment List Delay Variation TLV">
     <artwork>
  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           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                 Segment List Delay Variation                  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     </artwork>
     </figure></t>
   
     <t>Where:</t>

     <t>Type:  TBA</t>

     <t>Length:  4 octets</t>

     <t>Segment List Delay Variation:  4-octet unsigned integer field that specifies the average unidirectional delay variation (in unit of
      microseconds) over a configurable interval. When set to 0, it has not been measured.</t>
	</section>	

	<section title="Unidirectional Segment List Loss TLV">
	<t>The Unidirectional Segment List Loss TLV is a sub-TLV of the SR Segment List TLV defined in Section 5.7 of [RFC9857]. It is an optional TLV that is used to
   carry the average unidirectional Loss of a SR Segment List. In order to be associated with the specified SR Segment List 
   when advertising the Unidirectional Segment List Delay TLV, the SR Segment List Identifier sub-TLV defined in Section 5.7.4 of [RFC9857] also MUST be present.
   Only a single instance of this TLV is advertised for a given Segment List.
   If multiple instances are present, then the first valid one (i.e.,
   not determined to be malformed as per Section 8.2.2 of [RFC9552]) is
   used and the rest are ignored.</t>

    <t>The TLV has the following format:<figure
    title="Unidirectional Segment List Loss TLV">
     <artwork>
  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           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Segment List Loss                       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     </artwork>
     </figure></t>
   
     <t>Where:</t>

     <t>Type:  TBA</t>

     <t>Length:  4 octets</t>

     <t>Segment List Loss:  4-octet unsigned integer field that specifies the average unidirectional loss as a
      percentage of the total traffic sent over a configurable interval. This field is restricted to
   [0x00000000,0xffffffff], with value 0x00000000 indicating a packet loss of
   0%, and value 0xffffffff indicating a packet loss of 100%. The resolution is 0.00023ppm.</t>
	</section> 
    </section> 
	
    <section anchor="IANA" title="IANA Considerations">
        <t>IANA maintains a registry called "BGP-LS NLRI and Attribute TLVs"
   under the "Border Gateway Protocol - Link State (BGP-LS) Parameters"
   registry group.</t> 

        <t>IANA is requested to allocate the following code point from the
        "BGP-LS NLRI and Attribute TLVs" registry:
     <artwork>
 +================+=====================================+===============+
 | TLV Code Point | Description                         | Reference     |
 +================+=====================================+===============+
 | TBA            | Unidirectional Available Bandwidth  | This document |
 +----------------+-------------------------------------+---------------+
 | TBA            | Unidirectional Segment List Delay   | This document |
 +----------------+-------------------------------------+---------------+
 | TBA            | Unidirectional Segment List         | This document |
 |                | Delay Variation                     |               |
 +----------------+-------------------------------------+---------------+
 | TBA            | Unidirectional Segment List Loss    | This document |
 +----------------+-------------------------------------+---------------+    
     </artwork></t>
      </section>

    <section anchor="scecurity" title="Security Considerations">
      <t>The protocol extensions defined in this document do
   not affect the BGP security model. The security considerations of the base BGP-LS specification as described
   in [RFC9552] apply. Since this document is the extensions to RFC9857, accordingly inheriting security issues from RFC9857, thus the security considerations in [RFC9857] apply in the same way.</t>

     <t>The TLVs introduced in this document allow a SR Policy headend node to
   report the performance metrics to the external entity. Therefore, precaution
   is necessary to ensure that the configured advertisement frequency SHOULD NOT overload the headend node and the receiving entity.</t>
    </section>
  </middle>

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

      <?rfc include="reference.RFC.8174.xml"?>

      <?rfc include="reference.RFC.9552.xml"?>

      <?rfc include="reference.RFC.9857.xml"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.8762.xml"?>
      <?rfc include="reference.RFC.9197.xml"?>

      <?rfc include="reference.RFC.9341.xml"?>

      <?rfc include="reference.RFC.9947.xml"?>
      
      <?rfc include="reference.I-D.lin-idr-bgpls-te-policy-pm.xml"?>
      
      <?rfc include="reference.I-D.ietf-spring-stamp-srpm-mpls.xml"?>

      <?rfc include="reference.I-D.ietf-spring-stamp-srpm-srv6.xml"?>
      <?rfc include="reference.I-D.he-ippm-ioam-trace-type-bandwidth.xml"?>
    </references>
  </back>
</rfc>