<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<rfc
      xmlns:xi="http://www.w3.org/2001/XInclude"
      category="std"
      docName="draft-liu-rtgwg-wan-flowctrl-detect-01"
      ipr="trust200902"
      obsoletes=""
      updates=""
      submissionType="IETF"
      xml:lang="en"
      tocInclude="true"
      tocDepth="4"
      symRefs="true"
      sortRefs="true"
      version="3">

 <!-- * FRONT MATTER * -->

 <front>
   <title abbrev="Flow Control Detection">Proactive Flow Control Point Detection in WAN</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-rtgwg-wan-flowctrl-detect-01"/>
	
   <author fullname="Yisong Liu" surname="Liu">
      <organization>China Mobile</organization>
      <address>
        <email>liuyisong@chinamobile.com</email>
     </address>
    </author>

	
   <author fullname="Yao Liu" surname="Liu">
      <organization>ZTE Corporation</organization>
      <address>
        <email>liu.yao71@zte.com.cn</email>
     </address>
    </author>
	
	
    <date year="2026"/>

   <!-- Meta-data Declarations -->

   <area></area>
    <workgroup>RTGWG</workgroup>
   <keyword>Flow Control</keyword>
   <keyword>WAN</keyword>


   <abstract>

	<t>[I-D.ietf-rtgwg-net-notif-ps] establishes usecases and requirements for fast notification delivery for network events (e.g., failure, congestion or state change) in modern network applications.</t>
	  
	  <t>This document proposes a proactive detection mechanism that enables the flow control notification message generating downstream node to be aware of the nearest upstream node capable of processing the message . The mechanism operates in the data plane, uses probe packets that follow the same path as data traffic, and maintains state only where needed. While proposed for flow control, the same mechanism may support other fast notification use cases that require distributed recipient node discovery.</t>
	  
	  
    </abstract>
  </front>
  <middle>
    <section numbered="true" toc="default">
      <name>Introduction</name>  

<t><xref target="I-D.ietf-rtgwg-net-notif-ps"></xref> establishes requirements for sub-millisecond to millisecond fast notification delivery for network events (e.g., failure, congestion or state change) in modern network applications.</t>

<t>An example where this fast network notification problem arises is flow control in wide-area networks (WANs). With the growth of intelligent computing services, scenarios such as disaggregated computing and real-time inference require the lossless transmission of large volumes of bursty traffic over WANs. To achieve lossless data transmission over WAN, there're some recent works aiming to deploy flow control mechanisms in WAN to avoid packet loss in case of congestion, e.g, <xref target="I-D.ruan-spring-priority-flow-control-sid"></xref> discusses how to deploy PFC(Priority-based Flow Control, <xref target="IEEE802.1Qbb" format="default" sectionFormat="of" derivedContent="IEEE802.1Qbb"/>) in WAN based on SRv6 data plane, and <xref target="I-D.liu-rtgwg-srv6-cc"></xref> proposes the method of precise/fine-grained flow control to achieve flow control at the network slice <xref target="RFC9543" format="default"></xref> level.</t>

<t>As in <xref target="I-D.ietf-rtgwg-net-notif-ps"></xref>, the fast network notification recipient nodes include adjacent routers/switches, non-adjacent routers/switches, ingress nodes, end hosts, and controllers.</t>

<t>To deploy flow control mechanism in WAN, the node facing congestion needs to generate a flow control message and sends it to the upstream point which is able to perform the flow control action (e.g, stop sending the corresponding traffic or reducing the sending rate). In this case, the recipient node may be the adjacent router/switch, non-adjacent router/switch or the ingress node. </t>

<t>To control the sending of the flow control message, one of the following mechanisms may be used:</t>
		<ul spacing="normal">
		<li>Multicast. Although standard PFC propagates congestion information via Ethernet multicast frames, multicast-based mechanism is not preferred in WAN since it cannot accurately reach upstream nodes, potentially leading to incorrect flow suppression and impacting unrelated services.</li>
		<li>Centralized configuration. The controller, with the awareness of all the node and the path information in the network, can configure the information of the upstream flow control point on each node that may generate the flow control  message. But this methods will bring extra burden for the controller in large scale networks.</li>
		<li>Distributed decision. The congested node decides the upstream node itself. The difficulty is that the congested node needs to be aware of the necessary information to make the proper decision. </li>
		</ul>
	<t>Based on the above considerations, this document proposes a proactive detection mechanism for the distributed decision mechanism, letting the congested node to know precisely which upstream point should the flow control message be sent to. Besides flow control in WAN, this mechanism potentially can support other types of network fast notification use cases if the distributed decision mechanism is required.</t>
	
<t>The detailed flow control mechanism itself on the recipient node is out of the scope of this document. </t>
	  </section>

<section numbered="true" toc="default">
        <name>Terminology</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> <xref target="RFC8174" format="default"></xref> when, and only when, they appear in all capitals, as shown here.</t>
      </section>


	<section numbered="true" toc="default">
	<name>Flow Control in WAN</name>
	

<figure>

<name>Flow Control in WAN</name>
		  <artwork align="center"><![CDATA[
+----------+                                        +----------+
|   Data   |                                        |   Data   |
| center A |                                        | center B |
+----------+                                        +----------+
     |                                Congestion         ^
     |                                      |            |
     v                                      v            |
   +----+  -->  +----+  -->  +----+  -->  +----+  -->  +----+
   | R1 |       | R2 |       | R3 |       | R4 |       | R5 |
   +----+       +----+       +----+       +----+       +----+
           ]]></artwork>
</figure>		
	
<t>As shown in Figure 1, data center A and data center B are connected via a path(R1-R2-R3-R4-R5) in WAN.</t>
<t>R1,R2,R4 and R5 are able to perform the function of flow control, and R3 is a legacy device which doesn't support any flow control technology.</t>
<t>When congestion occurs at R4, R4 generates a flow control message (e.g, the PFC pause frame defined in <xref target="IEEE802.1Qbb" format="default" sectionFormat="of" derivedContent="IEEE802.1Qbb"/>, the congestion notification message defined in <xref target="I-D.liu-rtgwg-srv6-cc"></xref>) to the nearest upstream stream node that is able to perform flow control, i.e, node R2.</t>

<t>R2 receives the notification and performs the flow control based on the content of the notification message and local capacity. If R2 cannot handle the congestion, a flow control message is forwarded further upstream to R1.</t> 

</section>


<section numbered="true" toc="default">
	<name>Proactive Detection Mechanism Requirements</name>
	
	<t>For the distributed decision mechanism, what is needed is a lightweight, data-plane method that allows each notification message generating node to be aware of the identity of the nearest upstream point capable of handling a specific class of fast notifications.  This discovery should be:</t>
	   <ul spacing="normal">
		<li>Proactive: information is available before the event occurs, so that the notification can be sent immediately when needed.</li>
		<li>Same-path: follows the same path as the data traffic, ensuring that the discovered node is topologically relevant.</li>
		<li>State-efficient: only the nodes that may generate notifications need to maintain the discovered information.</li>
		</ul>

	
</section>

	
<section numbered="true" toc="default">
	<name>Proactive Control Point Detection Method</name>
	
<t>The basic concept of the proactive control point detection method in this document is to send a control point detection packet along the packet forwarding path.</t>

<t>When receiving the control detection packet, the node that is capable of flow control updates the packet with its own information(e.g, the interface address or the corresponding SRv6 ajacency SID of the interface), so the detection packet will always carry the information of the nearest upstream node that's capable of flow control and the node receiving the detection packet would store this information and use it as the destination of the flow control message when congestion occurs.</t>

</section>

<section numbered="true" toc="default">
	<name>Proactive Control Point Detection Packet Format</name>


<t>A new Hop-by-Hop option (Section 4.3 of <xref target="RFC8200" format="default"></xref>) type is defined in this document to carry the fields above for control point detection. Its format is shown in Figure 2.</t>
<figure>
<name>Control Point Detection Option</name>
		  <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
                                     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                     |  Option Type  | Opt Data Len  |  
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  Message Type | Upstream Type | Context Type  |   Reversed    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~            Upstream Point Info (4 or 16 octets)               ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+	 
     ~                        Context (optional)                     ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           ]]></artwork>
</figure>

		<ul spacing="normal">
		<li>Option Type: TBA for the control point detection option.</li>
		<li>Opt Data Len: 8-bit unsigned integer indicates the length of the option Data field of this option, in octets.</li>
		<li>Message Type: 8-bit identifier of the type of the message. The type of Flow Control Detection message is TBD1.</li>
		<li>Upstream Type: indicates the type of the upstream point that is able perform corresponding control for the traffic. When set to 1, the upstream Point Info carries a 128-bit IPv6 interface address, when set to 2, the upstream Point Info carries a 128-bit SRv6 adj-SID.</li>
		<li>Upstream Point Info: Variable-length field carrying the corresponding upstream point information based on the value of the Upstream Type.</li>
		<li>Context Type: The Context Type field is an 8-bit bitmap that specifies which contexts are included in the Context field of the packet. Each bit in this field corresponds to a specific context. When a bit is set to 1, it indicates the presence of the corresponding context.</li>
		<li>Context: Optional, Context-Type-specific information.</li>
		</ul>

<t>The packet fields defined above can be carried in-band or out-band as long as the packet is forwarded along the same path of the normal traffic flow. </t>	


	</section> 	

			   

	
<section numbered="true" toc="default">
	<name>Processing Procedures</name>	
<t>As in Figure 1, the traffic of network slice 1 is forwarded along an SRv6 path, the corresponding SID list is &lt;SID-R12,SID-R23,SID-R45&gt;, whereas SID-R12 is the adjacency SID of R1 for the adjacency between R1 and R2, SID-R23 and SID-R45 are also the corresponding adj-SID on R2 and R4.</t>
<t>And precise flow control is enabled in the network to control the congestion at the network slice level. </t>
<t>R1,R2,R4 and R5 are able to perform flow control at the network slice level, and R3 is a legacy device which doesn't support any flow control technology.</t>
<t>To detect the flow control point along the path of slice 1, R1 sends a flow control detection packet in band with the traffic of slice 1, since R1 is capable of flow control, R1 puts SID-R12 into the Upstream Point Info.</t>
<t>When R2 receives the packet, it stores the mapping between slice 1 and SID-R12, and updates the Upstream Point Info with its own information, i.e, SID-R23.</t>
<t>Since R3 doesn't recognize the flow control detection packet, it just forwards the packet based on the SID-list and slice-ID of the packet.</t>
<t>When R4 receives the packet, it stores the mapping between slice 1 and SID-R23, and updates the Upstream Point Info with its own information, i.e, SID-R45.</t>
<t>When R5 receives the packet, it stores the mapping between slice 1 and SID-R45, and since R5 is the endpoint, it stops processing the packet further.</t>
<t>When congestion occurs at R4 in slice 1, R4 would generate a flow control message for slice 1, and based on the local information, R4 finds the information of  upstream flow control point, i.e, SID-R23, and uses it as the destination of the flow control message.</t>	
<t>When R2 receives the flow control message with DA set as local adj-SID SID-R23, R2 perform the flow control for slice 1 on the port related with SID-R23 based on the context of the flow control message.</t>
<t>If R2 is not able to control the congestion and generates a flow control message further, R2 would send the message with DA set to SID-R12 based on the local information.</t>
	</section> 


<section numbered="true" toc="default">
	<name>Considerations for Other Usecases</name>
<t>The proactive control point detection mechanism described in this
document is not limited to flow control in WAN. It provides a
generic recipient discovery primitive for fast network
notification scenarios for the distributed decision method, especially when intended recipient node is a non-adjacent node on the forwarding path.</t>
<t>Future version of this document will discuss more about other fast network notification usecases.</t>
	
</section>	
	


<section numbered="true" toc="default">
	<name>Security Considerations</name>
		
		<t>The security considerations with IPv6 Hop-by-Hop Options header are described in <xref target="RFC8200" format="default"></xref>,<xref target="RFC7045" format="default">, </xref><xref target="RFC9098" format="default"></xref>, <xref target="RFC9099" format="default"></xref>, <xref target="RFC9673" format="default"></xref>. This document introduces a new IPv6 Hop-by-Hop option which is either processed in the fast path or ignored by network nodes, thus it does not introduce additional security issues.</t>
		
		
</section>	

<section numbered="true" toc="default">
	<name>IANA Considerations</name>
		<t>This document requests IANA to assign a new option type from "Destination Options and Hop-by-Hop Options" registry <xref target="IANA-HBH" format="default" sectionFormat="of" derivedContent="IANA-HBH"/>.</t>
		
		  <artwork align="center" name=""><![CDATA[
  Hex Value   Binary Value   Description      Reference
              act chg rest
  --------------------------------------------------------
  TBA         00   0  tba   Control Point    [this document]
                            Detection Option      

           ]]></artwork>		
	
	

	</section>



	
  </middle>
  <!--  *BACK MATTER * -->

 <back>

   <references>
      <name>References</name>
      <references>
        <name>Normative References</name>

		<?rfc include="reference.RFC.2119.xml"?>
		<?rfc include="reference.RFC.8174.xml"?>		
		<?rfc include="reference.RFC.8200.xml"?>
		<?rfc include="reference.RFC.7045.xml"?>
		<?rfc include="reference.RFC.9098.xml"?>		
 		<?rfc include="reference.RFC.9099.xml"?>
		<?rfc include="reference.RFC.9673.xml"?> 
		<reference anchor="IANA-HBH" target="https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml" quoteTitle="true" derivedAnchor="IANA-HBH">
          <front>
            <title>Internet Protocol Version 6 (IPv6) Parameters</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
	  
      </references>
      <references>
        <name>Informative References</name>
	<?rfc include="reference.I-D.ruan-spring-priority-flow-control-sid.xml"?>
	<?rfc include="reference.I-D.liu-rtgwg-srv6-cc.xml"?>
<?rfc include="reference.I-D.ietf-rtgwg-net-notif-ps.xml"?>	
	<?rfc include="reference.RFC.9543.xml"?>
      <reference anchor="IEEE802.1Qbb" target="https://standards.ieee.org/ieee/802.1Qbb/4361.html" quoteTitle="true" derivedAnchor="IEEE802.1Qbb">
        <front>
          <title>IEEE Standard for Local and metropolitan area networks--Media Access Control (MAC) Bridges and Virtual Bridged Local Area Networks--Amendment 17: Priority-based Flow Control</title>
          <author>
            <organization showOnFrontPage="true">IEEE</organization>
          </author>
          <date month="September" year="2011"/>
        </front>
        <seriesInfo name="DOI" value="10.1109/IEEESTD.2011.6032693"/>
        <seriesInfo name="IEEE Std" value="802.1Qbb-2011"/>
      </reference> 	
      </references>
    </references>


 </back>
</rfc>
