<?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-xf-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-xf-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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
K33J44+U1cr/AIHzaNH0FwAA

-->

</rfc>
