<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xz-spring-srv6-rate-control-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="SRv6-based Rate Control ">SRv6-based Rate Control</title>
    <seriesInfo name="Internet-Draft" value="draft-xz-spring-srv6-rate-control-00"/>
    <author initials="Q." surname="Xiong" fullname="Quan Xiong">
      <organization>ZTE Corporation</organization>
      <address>
        <email>xiong.quan@zte.com.cn</email>
      </address>
    </author>
    <author initials="X." surname="Zhu" fullname="Xiangyang Zhu">
      <organization>ZTE Corporation</organization>
      <address>
        <email>zhu.xiangyang@zte.com.cn</email>
      </address>
    </author>
    <date year="2026" month="June" day="23"/>
    <workgroup>spring</workgroup>
    <abstract>
      <?line 33?>

<t>This document describes a rate control mechanism for
   Segment Routing over IPv6 (SRv6) network slices.  It addresses
   the challenge of balancing resource utilization and congestion
   avoidance in over-committed slice deployments.  The mechanism
   leverages a token-based scheduler to differentiate between
   Committed Information Rate (CIR) and Peak Information Rate (PIR) 
   traffic, and defines procedures for calculating initial PIR values
   and dynamically adjusting them based on network conditions.<br/>
   Dynamic rate adjustments are triggered by localized congestion 
   or underutilization, enabling proactive rate control and efficient
   bandwidth sharing among slices sharing common physical links.</t>
    </abstract>
  </front>
  <middle>
    <?line 48?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In Segment Routing over IPv6 (SRv6) networks, traffic engineering is primarily 
achieved by encoding explicit paths in the SRv6 Segment Identifier (SID) list, 
as specified in <xref target="RFC8754"/>. To meet Service Level Agreements (SLAs), slice 
resources are typically reserved for SRv6 SID according to user subscription 
requirements, ensuring the Committed Information Rate (CIR). The conventional 
approach involves allocating dedicated queues to each slice and enforcing 
bandwidth guarantees through token bucket mechanisms, often implemented using
exclusive modes (e.g., via flex-channel) to provide isolated queue and bandwidth 
access, thereby protecting the CIR. However, strictly enforcing such SLA-based 
slice configurations can result in low resource utilization, particularly when 
reserved bandwidth for critical services remains underutilized, leading to idle
network resources and increased operational costs.</t>
      <t>Therefore, in SRv6 network slice deployments, traffic is often over-
   committed.  In addition to set the CIR, a Peak Information Rate
   (PIR) is also defined to specify the maximum bandwidth a slice is
   allowed to use, accommodating burst traffic and balancing resource
   utilization with network stability.  In this scenario, queues and
   bandwidth for slices operate in shared mode, allowing traffic
   assigned to a specific slice to exceed its reserved or committed
   resources (e.g., bandwidth, queues).  If the PIR is set too low,
   bandwidth utilization remains suboptimal.  Conversely, if the PIR is
   set too high, simultaneous bursts from multiple intelligent computing
   slices may cause total traffic to exceed physical link capacity.
   Without timely rate adjustments and throttling, this can trigger
   chain-reaction congestion across the network, failing to meet the
   latency and packet loss requirements essential for intelligent
   computing interconnectivity.</t>
      <t>To ensure the efficient transmission in SRv6 network slicing, this 
   document proposes a rate control mechanism for SRv6-based networks.<br/>
   It is applicable to scenarios where traffic in SRv6 network slices 
   is over-committed. By collecting congestion information and rate control 
   parameters along the path, the method enables the dynamic rate control for
   traffic across the network.  The dynamic rate adjustment are
   triggered by localized congestion or underutilization, enabling
   proactive rate control and efficient bandwidth sharing among slices
   sharing common physical links. This mechanism not only guarantees the 
   committed rate of the slice but also improves overall link utilization 
   while aiming to ensure high-throughput transmission.</t>
    </section>
    <section anchor="conventions">
      <name>Conventions Used in This Document</name>
      <section anchor="abbreviations">
        <name>Abbreviations</name>
        <t>CIR:  Committed Information Rate</t>
        <t>PIR:  Peak Information Rate</t>
        <t>SID:  Segment Identifier</t>
        <t>SRv6: Segment Routing over IPv6</t>
      </section>
      <section anchor="requirements-language">
        <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"/> <xref target="RFC8174"/> when, and only when, they appear in all
   capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="rate-control">
      <name>SRv6-based Rate Control</name>
      <section anchor="token-based-queue-scheduling">
        <name>Token-Based Queue Scheduling</name>
        <t>The following figure illustrates this two-priority queuing model for SRv6-based slices:</t>
        <artwork><![CDATA[
                                         
                                          Token Bucket Scheduler
 CIR+PIR  +--------------------+           +----------------+
--------> | Queue 1 for Slice 1|---------->|  High Priority +----+----------+
          +--------------------+*** +----->+----------------+    |  SP      +----->
                                  * |                            | Scheduler|
 CIR+PIR  +--------------------+--*-+      +----------------+----+----------+
--------> |Queue 2 for Slice 2 |  ********>|  Low Priority  |
          +--------------------+**********>+----------------+
                           --------> traffic <= CIR (High Priority) 
                           ********> CIR< traffic <= PIR (low Priority) 
                                                                
                   Figure 1 Rate-based Queuing Scheuler for SRv6 Networks                                                               
]]></artwork>
        <t>In the described model, when a network node processes SRv6 slice
   traffic, queues utilize a token bucket scheduler to manage the
   scheduling of multiple traffic classes.  The scheduling strategy is
   as follows:</t>
        <ul spacing="normal">
          <li>
            <t>The token bucket scheduler assigns high-priority tokens to traffic
up to the CIR and low-priority tokens to traffic exceeding the CIR
(up to the PIR).  The scheduler MUST prioritize servicing
high-priority tokens to guarantee the CIR before processing
low-priority tokens.</t>
          </li>
          <li>
            <t>Queue resources (bandwidth) can be shared.  If CIR tokens for a
specific queue are not fully consumed, the unused capacity MAY be
utilized by low-priority traffic (PIR traffic) from other slices
after the scheduled traffic for the current slice is served.
However, if overall network bandwidth utilization becomes
excessively high, the PIR value for one or more slices MAY be
adjusted downward.</t>
          </li>
          <li>
            <t>When CIR traffic in a queue requires scheduling, high-priority CIR
traffic MUST be processed first.  Low-priority PIR traffic is
temporarily buffered.  If PIR traffic buffering accumulates
significantly (e.g., exceeds a high watermark), upstream or
headend nodes SHOULD be promptly notified to reduce the sending
rate or adjust the PIR to prevent buffer overflow and packet loss.</t>
          </li>
        </ul>
      </section>
      <section anchor="initial-rate-setting">
        <name>Initial Rate Setting</name>
        <t>When establishing an SRv6 slice, an initial minimum rate (e.g.,CIR) and
   maximum rate (e.g.,PIR) are configured.  The CIR is the committed,
   guaranteed rate per the service contract.  The initial PIR can be
   calculated based on several factors to allow for efficient burst
   accommodation without causing congestion.  A typical formula for
   calculating the initial PIR for a slice could be:</t>
        <t>Initial PIR = CIR + (maxBufferSize / RTT + maxLinkBw - sumCIR) * p;</t>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t>CIR: The Committed Information Rate for the slice.</t>
          </li>
          <li>
            <t>maxBufferSize: The maximum buffer size allocated to the slice's
queue at bottleneck nodes.</t>
          </li>
          <li>
            <t>RTT: The round-trip time of the slice's SRv6 path.</t>
          </li>
          <li>
            <t>maxLinkBw: The maximum available bandwidth of the bottleneck link
shared by the slices.</t>
          </li>
          <li>
            <t>sumCIR: The sum of the CIRs of all slices sharing the bottleneck
path.</t>
          </li>
          <li>
            <t>p: An allocation coefficient (0 &lt;= p &lt;= 1) for the specific slice,
calculated based on empirical values related to its traffic
characteristics (e.g., burstiness). The sum of 'p' for all slices
on the path equals 1.</t>
          </li>
        </ul>
      </section>
      <section anchor="dynamic-rate-adjusting">
        <name>Dynamic Rate Adjusting</name>
        <t>A statically configured PIR is inefficient; it may not meet peak
   demand during busy periods or may waste bandwidth during idle times.
   Networks are dynamic, and in wide-area SRv6 networks where multiple
   slices share physical links, dynamic PIR adjustment is necessary.</t>
        <ul spacing="normal">
          <li>
            <t>When other slices experience bursts and consume extra resources,
dynamically reducing the current slice's PIR can prevent the total
link capacity from being exceeded, avoiding network-wide congestion.</t>
          </li>
          <li>
            <t>When link resources are underutilized, dynamically increasing a
slice's PIR allows its traffic to utilize the spare bandwidth,
enhancing overall transmission efficiency and resource utilization.</t>
          </li>
        </ul>
        <t>This dynamic adjustment enables coordinated resource allocation
   across the network, helping to prevent localized congestion from
   spreading.  The PIR at a given node 'h' can be adjusted iteratively
   based on the PIR from the previous hop and local conditions:</t>
        <t>PIR(h) = CIR + (PIR(h-1) - CIR) * a;</t>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t>PIR(h): The maximum rate limit at the current node h.</t>
          </li>
          <li>
            <t>PIR(h-1): The maximum rate limit at the previous hop (node h-1).</t>
          </li>
          <li>
            <t>a: An empirical allocation ratio coefficient (0 &lt;= a &lt;= 1)
determined by the current node based on local state such as
bandwidth utilization, traffic policy, and traffic priority.</t>
          </li>
        </ul>
        <t>The end-to-end PIR for a flow traversing N nodes is the minimum
   PIR value encountered along the path:</t>
        <t>End-to-end PIR = min { PIR(h) }, for h = 1, 2, ... N;</t>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t>N is the nodes' number along the path.</t>
          </li>
        </ul>
      </section>
      <section anchor="rate-update-trigger">
        <name>Rate Update Trigger</name>
        <t>A transit or egress node SHOULD generate a rate notification to trigger a
   PIR update (e.g., using a mechanism as described in
   <xref target="I-D.xz-rtgwg-srv6-rate-notification"/>) when one of the following
   conditions is met:</t>
        <ul spacing="normal">
          <li>
            <t>Impending Congestion: Conditions indicate impending congestion
for a specific slice or queue.  This could be:
            </t>
            <ul spacing="normal">
              <li>
                <t>Buffer occupancy exceeding a configured high watermark (e.g., 80%
of queue depth) for a sustained period.</t>
              </li>
              <li>
                <t>Sustained high queuing delay for a particular traffic priority.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>Congestion Mitigation / Underutilization: Conditions indicate
that congestion has subsided or bandwidth is underutilized.
This could be:
            </t>
            <ul spacing="normal">
              <li>
                <t>Queue buffer occupancy is consistently low (e.g., below 20%) AND
the link utilization for the traffic class is lower than a
configured watermark (e.g., 80%) for a sustained period.</t>
              </li>
            </ul>
          </li>
        </ul>
        <t>Alternatively, an egress node MAY track the minimum PIR value
   discovered along the forward path (e.g., using a mechanism such as
   Hop-by-Hop option described in <xref target="I-D.xz-6man-rate-option"/>) and use
   this value to update or inform the source about the effective
   bottleneck PIR.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>To be discussed in future versions of this document.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not currently require any IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC768">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC4443">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <author fullname="A. Conta" initials="A." surname="Conta"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta"/>
            <date month="March" year="2006"/>
            <abstract>
              <t>This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol). ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="89"/>
          <seriesInfo name="RFC" value="4443"/>
          <seriesInfo name="DOI" value="10.17487/RFC4443"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8754">
          <front>
            <title>IPv6 Segment Routing Header (SRH)</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="D. Dukes" initials="D." role="editor" surname="Dukes"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="J. Leddy" initials="J." surname="Leddy"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <date month="March" year="2020"/>
            <abstract>
              <t>Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header (SRH). This document describes the SRH and how it is used by nodes that are Segment Routing (SR) capable.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8754"/>
          <seriesInfo name="DOI" value="10.17487/RFC8754"/>
        </reference>
        <reference anchor="I-D.xz-rtgwg-srv6-rate-notification">
          <front>
            <title>SRv6-based Rate Notification</title>
            <author fullname="Quan Xiong" initials="Q." surname="Xiong">
              <organization>ZTE Corporation</organization>
            </author>
            <author fullname="Xiangyang Zhu" initials="X." surname="Zhu">
              <organization>ZTE Corporation</organization>
            </author>
            <date day="23" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies a rate notification mechanism for Segment
   Routing over IPv6 (SRv6) networks.  It enables a transit or egress
   node to dynamically notify the ingress (headend) node about a
   recommended rate range (MinRate and MaxRate) when localized
   congestion is detected or when underutilized bandwidth is identified,
   allowing the headend to perform proactive traffic shaping and rate
   enforcement.  This mechanism enhances transmission efficiency in SRv6
   networks by enabling fine-grained, congestion-aware rate control.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-xz-rtgwg-srv6-rate-notification-00"/>
        </reference>
        <reference anchor="I-D.xz-6man-rate-option">
          <front>
            <title>IPv6 Rate Hop-by-Hop Option</title>
            <author fullname="Quan Xiong" initials="Q." surname="Xiong">
              <organization>ZTE Corporation</organization>
            </author>
            <author fullname="Xiangyang Zhu" initials="X." surname="Zhu">
              <organization>ZTE Corporation</organization>
            </author>
            <date day="23" month="June" year="2026"/>
            <abstract>
              <t>   This document defines a new IPv6 Hop-by-Hop Option that enables
   Minimum Rate Limit Discovery along the forward path between a source
   host and a destination host.  Each router along the path can update
   the option with the minimum of its local Maximum Rate (MRate) and the
   recorded value.  The discovered rate can then be communicated back to
   the source via a return mechanism, enabling the source to adapt its
   transmission rate to match the bottleneck link capacity and queue
   buffer.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-xz-6man-rate-option-00"/>
        </reference>
      </references>
    </references>
    <?line 273?>



  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA6VabXPbNhL+7hn/B0wyndiJpMZpLsm5beacOJ14xnEc25n2
+g0iIQkXimQJ0o7y0t9+z+4CICjLTm5OM21kEVgs9vXZXY7H4+2ty3310/ZW
XmWlXpp9lTd61o4/fhq7urHlfOyayyfjRrdmnFVl21TF+OHD7a1Mt/vKtfn2
luumS+ucxcNVjf1Hry5+295qbVvgj/MzbJ5qZ3J1BhLqpZDY3tLTaWNw8vPt
LSWfG5dezXES87K9hY1du6iaffo6VsLxu06X6g8wMCdiVYP1f168AoGmrsA4
HtDvZqltsa8+0rrJX9jyr0+tmWTVcpKVdD6t6Wn+YXU5X+E/9eei+w6ynxbd
5GPYk1AmPsuqWWL9pdmnDWe/vXz65Fn4+mhv75/h+7O9p4/D98ePH//El7Tl
bH37s6f/kHVH48MJFNW086tUT2XV2pnNmMV03ZOlLmVFVftnLMbxWOmpaxud
tfILpHGxsE7BJrqlKVuVG5c1dmqc0ooIKG8KammyhS6tWypwyRvPzZy3nFVd
C5Wp6tI06uj08onaIQ3vqtK0V1XzQbnCZsZNwF2rdJ43xjnjmES7wAELXRSm
nBtVzdRUF7rMiBpWVV2TGQXihf3EV1S6zImhuXFBKUpfVjbHHqNsySzAeJdL
27awLj4YV6qLakWsEg8XODLehSkUBrv0nK/cVh9M6W3TZQuTdwUu1VYqt7OZ
aUDDklCmuJkxwsDLeNxRUCA4ZcPeeXl0tstMnxr9YcPzU3oukoAvQpMjXp2b
mS3BT91UGViAKEjoKtNF1hWahW1LC1YKBQrqUhedFyjvXsGwYRRFsYK4/9M5
3gBRL5VcDMcH1UCYuSWGSDRM4VB2i/JlO4tO6caASzufQwy5mq5UUeEM+8mk
KhEa4LUrc9MkqhspU+ppQZzgVrA/WPnQwIh1QzKwOI7JTPHTlc3bhXILTVFB
6SVO8vYUfyR94+R6sXJ0a4VDPrhJsPelzfPC0F93oQCclHcZc/r5rk3+/Eor
jsrvNmo3CirDxebQlmFeLCnNLsEYhI8Qli0srIvFZcqsymmN+VjjArZVtW4X
jsyW3ICox9OPcrK0mcXZO+dHh7u4k2tHRBDXrk1Gj3La+fmzjxJfv07URQXL
Ni2oNJdk+Mc4ulAH88YYUeHO+fGB2x15v9jeCj7mlbuqvdXgd5DACWR1wtjR
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
OAMUMUgtAAA=

-->

</rfc>
