<?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-rocv2-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 with RoCEv2 ">Precise Priority-based Flow Control Notification with RoCEv2</title>
    <seriesInfo name="Internet-Draft" value="draft-xz-rtgwg-ppfc-rocv2-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="15"/>
    <workgroup>rtgwg</workgroup>
    <abstract>
      <?line 30?>

<t>This document defines a format for  Precise Priority-based Flow Control (PPFC) notifications within RoCEv2 
(RDMA over Converged Ethernet version 2) networks. The proposed format enables network 
devices experiencing congestion to generate explicit congestion signals that can be 
efficiently carried back to the source clients. This facilitates fast, fine-grained 
flow control, complementing traditional end-to-end congestion control and improving 
performance in high-throughput, low-latency environments.</t>
    </abstract>
  </front>
  <middle>
    <?line 40?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>RoCEv2 (RDMA over Converged Ethernet version 2) is widely deployed in data centers and high-performance 
computing clusters to provide low-latency, kernel-bypass networking. However, managing congestion in these
environments remains a challenge. End-to-end congestion control mechanisms, such as those using ECN or CNP
(Congestion Notification Packets), can incur Round-Trip Time (RTT) delays before a sending host adjusts its rate.</t>
      <t>Precise Priority-based Control (PPFC) <xref target="I-D.xz-rtgwg-ppfc-notification"/> is a technique to instantly pause the traffic
sources, based on explicit notifications from the network. The PPFC notification can be also sent to the 
traffic source directly with the message format which is designed to be:</t>
      <ul spacing="normal">
        <li>
          <t>Efficient: Adds minimal overhead.</t>
        </li>
        <li>
          <t>Explicit: Carries detailed information about the congestion event (e.g., destination address, recommended action).</t>
        </li>
        <li>
          <t>Interoperable: Can be processed by both network and hosts.</t>
        </li>
      </ul>
      <t>This document defines a lightweight, generic encapsulation format for PPFC notifications within RoCEv2 networks.</t>
    </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>CNP: Congestion Notification Packet</t>
        <t>GRH: Global Routing Header (InfiniBand)</t>
        <t>PPFC: Source Flow Control</t>
        <t>RoCEv2: RDMA over Converged Ethernet version 2</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 with RoCEv2</name>
      <t>The PPFC Notification message reuses the basic RoCEv2 encapsulation but is identified as a new extension. 
The proposed packet format is as follows:</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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Ethernet Header (Destined to PPFC Target)              | ^
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
|                       IP Header (IPv4/IPv6)                   | | L2-L4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Headers
|         UDP Header (Dest Port = RoCEv2 message (4791))        | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
           BTH (Base Transport Header, 96 bits):                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| OpCode (0x81) |S|M|Pad| TVer  |       Partition Key           | |
+---------------+-+-+---+-------+-------------------------------+ |
|F|B|P| RSV(5b) |              DestQP (24 bits)                 | |
+-+-+-+-+-+-+-+-+-----------------------------------------------+ |
|A|  RSV (7b)   |              PSN (24 bits)                    | |
+-+-------------+-----------------------------------------------+ v
             PPFC Extension Fields (present when P=1):
+---------------------------------------------------------------+       
~           Congested Destination IP (128 bits for IPv6)        ~
+---------------------------------------------------------------+
|                     Flags  |PT|       Congestion Port         |
+---------------------------------------------------------------+
|     Reserved                  |            Pause Duration     |
+---------------------------------------------------------------+
|                      ICRC (32 bits)                           |
+---------------------------------------------------------------+
|                      FCS  (32 bits)                           |
+---------------------------------------------------------------+

]]></artwork>
      <t>where:</t>
      <ul spacing="normal">
        <li>
          <t>UDP Destination Port:  SHOULD be used to distinguish the RoCEv2 traffic. It indicates the
RoCEv2 Base Transport Header (BTH).</t>
        </li>
        <li>
          <t>P (1 bit): A new bit MUST be set to 1 for PPFC notification. This bit indicates 
that PPFC Extension Fields follow the BTH.</t>
        </li>
        <li>
          <t>Congested Destination IP (variable) : Indicates the IPv4 or IPv6 address of the congested network node.</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>Congestion Port (16bits):  Identifier of the congested port.</t>
        </li>
        <li>
          <t>Pause Duration (16bits): Recommended pausing interval, in microseconds.</t>
        </li>
      </ul>
      <t>The other fields are identical to the BTH fields.</t>
    </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>TBD.</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>
      <reference anchor="I-D.xz-rtgwg-ppfc-notification">
        <front>
          <title>Precise Priority-based Flow Control 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="12" month="June" year="2026"/>
          <abstract>
            <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>
        <seriesInfo name="Internet-Draft" value="draft-xz-rtgwg-ppfc-notification-00"/>
      </reference>
    </references>
    <?line 158?>



  </back>
  <!-- ##markdown-source:
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
JY8/UlYr/wPbfPVa9BcAAA==

-->

</rfc>
