<?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-rtgwg-ppfc-notification-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Precise Priority-based Flow Control Notification ">Precise Priority-based Flow Control Notification</title>
    <seriesInfo name="Internet-Draft" value="draft-xz-rtgwg-ppfc-notification-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="12"/>
    <workgroup>tsvwg</workgroup>
    <abstract>
      <?line 31?>

<t>This document specifies the notification mechanism for Precise 
   Priority-based Flow Control (PPFC), defining the message formats 
   and network actions for communicating congestion information among 
   network nodes.  The PPFC notification enables rapid congestion 
   signaling, allowing per-flow flow control for traffic from source.</t>
    </abstract>
  </front>
  <middle>
    <?line 40?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Driven by the rapid development of big data and artificial intelligence (AI) technologies, the demand for 
high-performance and low-latency data transmission has become critical across various industries. 
Data transfers typically rely on transport layer protocols such as the Transmission Control Protocol (TCP), 
Quick UDP Internet Connections (QUIC), or Remote Direct Memory Access over Converged Ethernet (RoCEv2). 
These protocols primarily employ end-to-end congestion control algorithms, which adjust sending rates based 
on network status feedback by manipulating congestion windows. Traditional end-to-end congestion control 
mechanisms depend on signals such as:</t>
      <ul spacing="normal">
        <li>
          <t>Explicit Congestion Notification (ECN), where packets are marked by congested queues to signal the sender to slow down.</t>
        </li>
        <li>
          <t>Measurements of delay and bandwidth (e.g., Round-trip Time (RTT), One-Way Delay (OWD)), used to infer network status and available capacity.</t>
        </li>
        <li>
          <t>In-band Network Telemetry (INT), which provides fine-grained per-packet queuing information.</t>
        </li>
      </ul>
      <t>A fundamental limitation of these end-to-end approaches is that the congestion feedback path is coupled 
with the data return path. When congestion occurs, the notification must traverse the reverse path to the 
sender, incurring at least one RTT of delay. In long-distance or highly dynamic networks, this delay prevents 
timely rate adjustment, leading to prolonged congestion, increased latency, and packet loss.</t>
      <section anchor="motivation-and-overview">
        <name>Motivation and Overview</name>
        <t>Precise Priority-based Flow Control (PPFC) can address this limitation by enabling per-flow control to instantly pause the traffic
sources based on explicit notifications from the network. The proposed PPFC mechanism operates as follows: When a 
network node (e.g., a switch or router) detects congestion it can generate a PPFC Notification message. This message
is sent to the ingress gateway(s) from which the congested flows originated. The notification contains key information such as:</t>
        <ul spacing="normal">
          <li>
            <t>The congested destination identifier (e.g., IP address).</t>
          </li>
          <li>
            <t>A recommended flow control action (e.g., PAUSE) and its duration.</t>
          </li>
          <li>
            <t>Optional context about the congestion severity.</t>
          </li>
        </ul>
        <t>This document specifies the notification mechanism for PPFC, defining the message formats and network actions
for communicating congestion information. The PPFC notification enables rapid congestion 
signaling, allowing per-flow flow control for traffic from source.</t>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions Used in This Document</name>
      <section anchor="abbreviations">
        <name>Abbreviations</name>
        <t>RTT:  Round-Trip Time</t>
        <t>TCP:  Transfer Control Protocol</t>
        <t>RDMA: Remote Direct Memory Access Round-Trip Time</t>
        <t>QUIC: Quick UDP Internet Connections</t>
        <t>ECN: Explicit Congestion Notification</t>
        <t>PFC: Priority-based Flow Control</t>
        <t>PPFC: Precise Priority-based Flow Control</t>
        <t>RoCEv2: RDMA over Converged Ethernet version 2</t>
        <t>QP: Queue Pair</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="ppfc-notification">
      <name>PPFC Notification</name>
      <t>When the per-flow congestion occurs at Node Y, it will trigger the PPFC notification 
in ICMP or UDP message to the ingress or the gateway or the client in RoCEv2 message.
This document defines the message formats and network actions
for communicating congestion information to the ingress or the gateway.</t>
      <artwork><![CDATA[
 PPFC Notification in RoCEv2           PPFC Notification
         **************************************************
         *                    *                           *
         *                    *                           *
         *                    *                           *
         V                    V                           *
    +--------+ Traffic     +-------+     +-------+     +---+---+     +-------+
    |Client A|<----------->|Gateway|<--->|Node X |<--->|Node Y |<--->|Server |
    +--------+      +----->+-------+     +-------+     +-------+     +-------+
             Traffic|                                 Congestion
    +--------+      |                                   Occurs                 
    |Client B+<-----+  
    +--------+
                                 
                         Figure 1: PPFC Notification

]]></artwork>
    </section>
    <section anchor="ppfc-notification-message-formats">
      <name>PPFC Notification Message Formats</name>
      <section anchor="icmp-message-format">
        <name>ICMP Message Format</name>
        <t>The PPFC Notification message sent from gateway may be a ICMP message which is formatted as Figure 2.</t>
        <artwork><![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 = TBD1   |  Code = TBD2  |           Checksum            |
   +------------+--+---------------+-------------------------------+
   |     Flags  |PT|    Priority   |       Congestion Port         |
   +------------+--+---------------+-------------------------------+
   |       Reserved                |       Pause Duration          |
   --------------------------------+-------------------------------+   
   ~                    Source Address                             ~
   ----------------------------------------------------------------+ 
   ~                    Destination Address                        ~
   ----------------------------------------------------------------+
   ~                    Router Identifier                          ~
   ----------------------------------------------------------------+   
   |                    Flow Identifier                            | 
   --------------------------------+-------------------------------+    
   
           Figure 2: PPFC Notification Message Format with ICMP   
]]></artwork>
        <artwork><![CDATA[
Where:
]]></artwork>
        <ul spacing="normal">
          <li>
            <t>Type and Code: TBD 1 (8bits) and TBD2 (8bits), the fields indicate the PPFC notification type and code.</t>
          </li>
          <li>
            <t>PT (2bits): indicates the action type of the PPFC notification for the ingress to take actions of traffic. 
It can be set to 00 "stop", 01 "resume", 10 "alarm", 11 "hold".</t>
          </li>
          <li>
            <t>Priority (8bits): Corresponds to IP DSCP or flow priority.</t>
          </li>
          <li>
            <t>Router Identifier (variable): indicates IPv4 or IPv6 address of the congested node.</t>
          </li>
          <li>
            <t>Congestion Port (16bits):  Identifier of the congested port.</t>
          </li>
          <li>
            <t>Pause Duration (16bits): Recommended pausing interval, in microseconds.</t>
          </li>
          <li>
            <t>Source Address (variable): indicates the IPv4 or IPv6 address of the sender.</t>
          </li>
          <li>
            <t>Destination Address (variable): indicates the IPv4 or IPv6 address of the receiver.</t>
          </li>
          <li>
            <t>Flow Identifier (variable): It indicates the IP 5 tuples when transmitting TCP or QUIC data 
and it also can be mapped at ingress to source and destination QP when transmitting RDMA data.</t>
          </li>
        </ul>
      </section>
      <section anchor="udp-message-format">
        <name>UDP Message Format</name>
        <t>The PPFC Notification message sent from gateway may be a UDP message which is formatted as Figure 3.</t>
        <artwork><![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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        UDP Source Port        |  UDP Destination Port = TBD3  |
   +------------+--+---------------+-------------------------------+
   |     Flags  |PT|    Priority   |       Congestion QID          |
   +------------+--+---------------+-------------------------------+
   |       Reserved                |       Pause Duration          |
   --------------------------------+-------------------------------+   
   ~                    Source Address                             ~
   ----------------------------------------------------------------+ 
   ~                    Destination Address                        ~
   ----------------------------------------------------------------+
   |                    Flow Identifier                            | 
   --------------------------------+-------------------------------+  
   
        Figure 3: PPFC Notification Message Format with UDP 
]]></artwork>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t>UDP Header: The UDP header as specified in <xref target="RFC768"/> includes the UDP 
source port, UDP destination port, UDP length, and UDP checksum.</t>
          </li>
          <li>
            <t>UDP Destination port: TBD3, indicates a new well-known UDP destination port 
needs to be allocated for this PPFC notification message.</t>
          </li>
          <li>
            <t>The other fields are identical to the fields defined in Section 4.1.</t>
          </li>
        </ul>
      </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 requests IANA to allocate a new ICMP message type and UDP port.</t>
    </section>
  </middle>
  <back>
    <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>
    </references>
    <?line 236?>



  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
