<?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.35 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-calabria-bmwg-ai-fabric-training-bench-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="AI Fabric Bench">Benchmarking Methodology for AI Training Network Fabrics</title>
    <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-training-bench-01"/>
    <author initials="F." surname="Calabria" fullname="Fernando Calabria">
      <organization>Cisco</organization>
      <address>
        <email>fcalabri@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Pignataro" fullname="Carlos Pignataro">
      <organization>Blue Fern Consulting</organization>
      <address>
        <email>carlos@bluefern.consulting</email>
      </address>
    </author>
    <author initials="Q." surname="Wu" fullname="Qin Wu">
      <organization>Huawei</organization>
      <address>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>
    <author initials="G." surname="Fioccola" fullname="Giuseppe Fioccola">
      <organization>Huawei</organization>
      <address>
        <email>giuseppe.fioccola@huawei.com</email>
      </address>
    </author>
    <date year="2026" month="April" day="21"/>
    <area>Operations and Management</area>
    <workgroup>BMWG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 112?>

<t>This document defines benchmarking terminology, methodologies, and Key Performance Indicators (KPIs) for evaluating Ethernet-based AI training network fabrics.</t>
      <t>As large-scale distributed AI/ML training clusters grow to tens of thousands of accelerators (GPUs/XPUs), the backend network fabric becomes the critical bottleneck determining job completion time (JCT), training throughput, and accelerator utilization.</t>
      <t>This document establishes vendor-independent, reproducible test procedures for benchmarking fabric-level performance under realistic AI training workloads, covering RDMA/RoCEv2 transport, the Ultra Ethernet Transport (UET) protocol defined by the UEC Specification 1.0 <xref target="UEC-1.0"/>, congestion management (PFC, ECN, DCQCN, CBFC), load balancing strategies (ECMP, DLB, packet spraying), collective communication patterns (AllReduce, AlltoAll, AllGather), and scale/soak testing.</t>
      <t>The methodology enables direct, reproducible comparison across different switch ASICs, vendor implementations, NIC transport stacks (RoCEv2 vs. UET), and fabric architectures (2-tier Clos, 3-tier Clos, rail-optimized).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://fcalabri.github.io/bmwg-ai-fabric-training-bench/draft-calabria-bmwg-ai-fabric-training-bench.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-calabria-bmwg-ai-fabric-training-bench/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        BMWG Working Group mailing list (<eref target="mailto:bmwg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/bmwg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/bmwg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/fcalabri/bmwg-ai-fabric-training-bench"/>.</t>
    </note>
  </front>
  <middle>
    <?line 122?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The rapid growth of distributed AI/ML training workloads has fundamentally changed the performance requirements for data center network fabrics. Unlike traditional data center traffic characterized by diverse flow sizes and protocols, AI training workloads generate highly synchronized, bandwidth-intensive, east-west traffic patterns dominated by collective communication operations (AllReduce, AlltoAll, AllGather). These workloads impose unique demands: lossless transport (via RoCEv2 over RDMA), ultra-low tail latency, near-perfect load balancing across all fabric paths, and the ability to absorb coordinated micro-bursts from thousands of accelerators simultaneously.</t>
      <t>Existing BMWG methodologies, while foundational, do not adequately address the characteristics of AI training fabrics. <xref target="RFC2544"/> defines benchmarking for general network interconnect devices but does not account for RDMA transport semantics, collective communication patterns, or the unique congestion dynamics of GPU-to-GPU traffic. <xref target="RFC8238"/> and <xref target="RFC8239"/> establish data center benchmarking terminology and methodology but predate the AI fabric paradigm and do not address RoCEv2-specific behaviors such as Priority Flow Control (PFC) interactions, DCQCN congestion control convergence <xref target="DCQCN-PAPER"/>, or the impact of load balancing strategies on Job Completion Time (JCT). Industry experience deploying RoCEv2 at scale <xref target="META-ROCE"/> further highlights the need for standardized benchmarking methodology.</t>
      <t>The EVPN benchmarking methodology <xref target="EVPN-BENCH"/> provides a structural template for service-oriented benchmarking but is scoped to L2VPN services rather than RDMA fabrics.</t>
      <t>This document fills the gap by defining a comprehensive benchmarking methodology specifically designed for AI training network fabrics.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
        <?line -18?>

</section>
      <section anchor="scope-and-applicability">
        <name>Scope and Applicability</name>
        <t>This document applies to Ethernet-based AI training backend network fabrics employing RoCEv2 and/or UEC Ultra Ethernet Transport (UET) protocols. The scope includes leaf-spine (2-tier Clos) and leaf-spine-superspine (3-tier Clos) topologies.</t>
        <t>InfiniBand fabrics are explicitly <strong>out of scope</strong>, though many KPIs defined herein may be adapted for IB benchmarking by future documents. The DUT is the network fabric itself (the collection of switches and interconnecting links), not individual accelerators or host NICs, though host-side configuration <bcp14>MUST</bcp14> be documented as it materially affects results.</t>
        <t>The DUT boundary for all measurements in this document is the NIC-to-NIC Ethernet fabric segment.  Intra-node communication (NVLink, PCIe) and Individual GPU/accelerator performance are explicitly out of scope.
Collective operation measurements (AllReduce, AllGather, AllToAll) are measured at the Ethernet fabric boundary; intra-node NVLink contributions <bcp14>MUST</bcp14> be reported separately when characterizing wide-EP or multi-node onfigurations.</t>
        <t>The methodology is designed for controlled laboratory environments per the BMWG charter; it is NOT intended for production network measurement.</t>
      </section>
      <section anchor="relationship-to-existing-bmwg-work">
        <name>Relationship to Existing BMWG Work</name>
        <table anchor="tab-existing-work">
          <name>Relationship to Existing BMWG Work</name>
          <thead>
            <tr>
              <th align="left">Document</th>
              <th align="left">Relationship</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <xref target="RFC1242"/></td>
              <td align="left">Base terminology for network benchmarking; terms reused herein</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="RFC2544"/></td>
              <td align="left">Base methodology; throughput/latency/loss tests adapted for RDMA</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="RFC2889"/></td>
              <td align="left">LAN switching methodology; MAC learning concepts adapted for ARP/ND scale</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="RFC8238"/></td>
              <td align="left">Data center terminology; buffer, congestion, and microburst terms extended</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="RFC8239"/></td>
              <td align="left">Data center methodology; line-rate and buffer tests adapted for RoCEv2</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="RFC9004"/></td>
              <td align="left">Back-to-back frame updates; burst absorption methodology referenced</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="LLM-BENCH"/></td>
              <td align="left">Complementary document benchmarking the inference serving stack. Treats the network as opaque SUT. This document benchmarks the fabric itself. The two documents <bcp14>MAY</bcp14> be used together but <bcp14>MUST NOT</bcp14> be combined in a single benchmarking report without explicit section demarcation.</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="UEC-1.0"/></td>
              <td align="left">UET protocol specification; transport services, congestion control, and link-layer enhancements benchmarked in <xref target="test-uec"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="terminology-and-definitions">
      <name>Terminology and Definitions</name>
      <t>The following terms are defined for use in this document. Where a term overlaps with <xref target="RFC1242"/> or <xref target="RFC8238"/>, the definition herein takes precedence in the context of AI fabric benchmarking.</t>
      <table anchor="tab-terminology">
        <name>Terminology and Definitions</name>
        <thead>
          <tr>
            <th align="left">Term</th>
            <th align="left">Definition</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <strong>AI Fabric</strong></td>
            <td align="left">The dedicated Ethernet backend network interconnecting accelerators (GPUs/XPUs) for distributed AI training, typically a non-blocking Clos topology running RoCEv2</td>
          </tr>
          <tr>
            <td align="left">
              <strong>JCT</strong> (Job Completion Time)</td>
            <td align="left">The wall-clock duration from start to completion of a training job, inclusive of all computation and communication phases</td>
          </tr>
          <tr>
            <td align="left">
              <strong>DUT Fabric</strong></td>
            <td align="left">All leaf switches, spine switches, superspine switches (if applicable), and interconnecting links forming the AI training fabric</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Roofline JCT</strong></td>
            <td align="left">Theoretical minimum JCT assuming perfect (zero-contention) network behavior</td>
          </tr>
          <tr>
            <td align="left">
              <strong>JCT Ratio</strong></td>
            <td align="left">Measured JCT / Roofline JCT; 1.0 = no network overhead; &gt;1.0 = fabric inefficiency</td>
          </tr>
          <tr>
            <td align="left">
              <strong>BusBW</strong> (Bus Bandwidth)</td>
            <td align="left">Effective per-accelerator throughput; algo_factor is collective- and algorithm-specific (see <xref target="test-collective"/>). Reports <bcp14>MUST</bcp14> state collective type, algorithm, and algo_factor</td>
          </tr>
          <tr>
            <td align="left">
              <strong>QP</strong> (Queue Pair)</td>
            <td align="left">RDMA communication endpoint (Send Queue + Receive Queue); multiple QPs per src-dst pair increase ECMP entropy</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Incast Ratio</strong></td>
            <td align="left">Ratio of senders to receivers (e.g., N:1 incast)</td>
          </tr>
          <tr>
            <td align="left">
              <strong>MMR</strong> (Max-Mean Ratio)</td>
            <td align="left">Flow count on most-loaded link / average flow count; quantifies ECMP imbalance (1.0 = perfect)</td>
          </tr>
          <tr>
            <td align="left">
              <strong>PFC Pause Event</strong></td>
            <td align="left">Single PFC PAUSE frame transmitted on a priority class</td>
          </tr>
          <tr>
            <td align="left">
              <strong>ECN Marking Ratio</strong></td>
            <td align="left">% of packets marked with Congestion Experienced (CE) over a measurement interval</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Collective Operation</strong></td>
            <td align="left">Coordinated cross-accelerator communication: AllReduce, AlltoAll, AllGather</td>
          </tr>
          <tr>
            <td align="left">
              <strong>DCQCN</strong></td>
            <td align="left">Data Center Quantized Congestion Notification: ECN + PFC for end-to-end congestion control with RoCEv2</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Packet Spray</strong></td>
            <td align="left">Load balancing distributing individual packets across all ECMP paths; maximizes utilization but may cause reordering</td>
          </tr>
          <tr>
            <td align="left">
              <strong>DLB/Flowlet</strong></td>
            <td align="left">Dynamic Load Balancing using flowlet detection; reroutes traffic at flow idle gaps</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Zero-Impact Failover</strong></td>
            <td align="left">Sub-microsecond path convergence upon link/switch failure with no measurable JCT impact</td>
          </tr>
          <tr>
            <td align="left">
              <strong>UET</strong> (Ultra Ethernet Transport)</td>
            <td align="left">Connectionless RDMA transport defined by UEC Spec 1.0; designed as next-generation replacement for RoCEv2</td>
          </tr>
          <tr>
            <td align="left">
              <strong>PDC</strong> (Packet Delivery Context)</td>
            <td align="left">Ephemeral, connectionless UET transport endpoint; analogous to but distinct from an RDMA QP</td>
          </tr>
          <tr>
            <td align="left">
              <strong>ROD</strong></td>
            <td align="left">Reliable Ordered Delivery: UET service semantically equivalent to RoCEv2 RC mode</td>
          </tr>
          <tr>
            <td align="left">
              <strong>RUD</strong></td>
            <td align="left">Reliable Unordered Delivery: UET service enabling native packet spray without receiver reorder buffer overhead</td>
          </tr>
          <tr>
            <td align="left">
              <strong>RUDI</strong></td>
            <td align="left">Reliable Unordered Delivery for Idempotent operations; simplified retransmission for RDMA Writes</td>
          </tr>
          <tr>
            <td align="left">
              <strong>UUD</strong></td>
            <td align="left">Unreliable Unordered Delivery: best-effort UET service for telemetry/speculative operations</td>
          </tr>
          <tr>
            <td align="left">
              <strong>LLR</strong> (Link Layer Retry)</td>
            <td align="left">Optional UEC per-hop error recovery (sub-microsecond) at the Ethernet link layer</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Packet Trimming</strong></td>
            <td align="left">Optional UEC enhancement; congested switches transmit packet header only instead of dropping the full packet</td>
          </tr>
          <tr>
            <td align="left">
              <strong>CBFC</strong> (Credit-Based Flow Control)</td>
            <td align="left">Optional UEC per-destination flow control; alternative to PFC that avoids head-of-line blocking</td>
          </tr>
          <tr>
            <td align="left">
              <strong>UEC Profile</strong></td>
            <td align="left">Defined UET feature subset: AI Base, AI Full, or HPC</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Entropy Value</strong></td>
            <td align="left">Explicit per-packet UET field for ECMP path selection; improves multipath utilization vs. 5-tuple hashing</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="test-topology-and-architecture">
      <name>Test Topology and Architecture</name>
      <section anchor="reference-fabric-topologies">
        <name>Reference Fabric Topologies</name>
        <t>Three reference topologies are defined. All tests <bcp14>MUST</bcp14> specify which topology is used. Results obtained under different topologies are NOT directly comparable without normalization.</t>
        <section anchor="topology-a-2-tier-clos-leaf-spine">
          <name>Topology A: 2-Tier Clos (Leaf-Spine)</name>
          <figure anchor="fig-topo-a">
            <name>Topology A: 2-Tier Clos (Leaf-Spine)</name>
            <artwork type="ascii-art"><![CDATA[
+--------+ +--------+ +--------+ +--------+
| Spine1 | | Spine2 | | Spine3 | | SpineN |
+---++---+ +---++---+ +---++---+ +---++---+
    ||          ||          ||          ||
    ||    Full Mesh Interconnect        ||
    ||    (ECMP / DLB / Spray)         ||
    ||          ||          ||          ||
+---++---+ +---++---+ +---++---+ +---++---+
| Leaf 1 | | Leaf 2 | | Leaf 3 | | Leaf N |
+---++---+ +---++---+ +---++---+ +---++---+
    ||          ||          ||          ||
[GPU/XPU]  [GPU/XPU]  [GPU/XPU]  [GPU/XPU]
Hosts w/   Hosts w/   Hosts w/   Hosts w/
RoCEv2 NIC             RoCEv2 NIC
]]></artwork>
          </figure>
          <t>The DUT boundary encompasses all leaf and spine switches and their interconnecting links. Traffic generators or actual GPU hosts connect at the leaf layer.</t>
        </section>
        <section anchor="topology-b-3-tier-clos-leaf-spine-superspine">
          <name>Topology B: 3-Tier Clos (Leaf-Spine-Superspine)</name>
          <t>For clusters exceeding thousands of accelerators, a superspine layer is added. Each pod consists of a leaf-spine fabric; pods interconnect via superspine switches. This topology scales to 32,000+ accelerators at 800GbE with current-generation ASICs. The DUT boundary encompasses all three tiers.</t>
        </section>
        <section anchor="topology-c-rail-optimized">
          <name>Topology C: Rail-Optimized</name>
          <figure anchor="fig-topo-c">
            <name>Topology C: Rail-Optimized</name>
            <artwork type="ascii-art"><![CDATA[
                       SPINE LAYER
+--------+ +--------+ +--------+ +--------+
| Spine1 | | Spine2 | | Spine3 | | SpineN |
+--+--+--+ +--+--+--+ +--+--+--+ +--+--+--+
 |     Full Mesh Interconnect (ECMP/Spray)  |
+--+--+--+ +--+--+--+ +--+--+--+ +--+--+--+
| Rail-0 | | Rail-1 | | Rail-2 | | Rail-7 |  RAIL (LEAF) LAYER
|  Leaf  | |  Leaf  | |  Leaf  | |  Leaf  |  one switch per NIC
+--+--+--+ +--+--+--+ +--+--+--+ +--+--+--+
  |   |       |   |       |   |      |   |
NIC-0 NIC-0 NIC-1 NIC-1 NIC-2 NIC-2 NIC-7 NIC-7
  |   |       |   |       |   |      |   |
+--------+ +--------+ +--------+ +--------+
| Host A | | Host B | | Host C | | Host D |  GPU HOSTS
| GPU[0] | | GPU[0] | | GPU[0] | | GPU[0] |  (each host has
| GPU[1] | | GPU[1] | | GPU[1] | | GPU[1] |   8 NICs, one
|  ...   | |  ...   | |  ...   | |  ...   |   per rail)
| GPU[7] | | GPU[7] | | GPU[7] | | GPU[7] |
+--------+ +--------+ +--------+ +--------+
|<------ Rail-0 ------->|         |<-Rail-7->|
]]></artwork>
          </figure>
          <t>In rail-optimized topologies, each NIC on a multi-NIC host connects to a dedicated leaf switch ("rail"), co-optimizing network locality with the collective communication library (NCCL/RCCL). The DUT boundary and rail mapping <bcp14>MUST</bcp14> be fully documented.</t>
        </section>
      </section>
      <section anchor="device-under-test-dut-identification">
        <name>Device Under Test (DUT) Identification</name>
        <table anchor="tab-dut-id">
          <name>DUT Identification Parameters</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Description</th>
              <th align="left">Example</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Switch Vendor/Model</td>
              <td align="left">Vendor name, product family, model number</td>
              <td align="left">Vendor Family Model</td>
            </tr>
            <tr>
              <td align="left">Switch ASIC</td>
              <td align="left">Silicon vendor, ASIC family, revision</td>
              <td align="left">Silicon Vendor ASIC Family Rev</td>
            </tr>
            <tr>
              <td align="left">NOS Version</td>
              <td align="left">Network operating system name and version</td>
              <td align="left">NOS Name Version</td>
            </tr>
            <tr>
              <td align="left">Port Speed</td>
              <td align="left">Per-port line rate</td>
              <td align="left">400GbE, 800GbE</td>
            </tr>
            <tr>
              <td align="left">Buffer Architecture</td>
              <td align="left">Shared/dedicated, total buffer per ASIC/port</td>
              <td align="left">32MB shared + 16MB VOQ per port</td>
            </tr>
            <tr>
              <td align="left">Optics/Cables</td>
              <td align="left">Transceiver type, cable type and length</td>
              <td align="left">OSFP 400G-DR4, DAC 3m copper</td>
            </tr>
            <tr>
              <td align="left">NIC Vendor/Model</td>
              <td align="left">RDMA NIC vendor, model, firmware</td>
              <td align="left">NIC Vendor Model Speed</td>
            </tr>
            <tr>
              <td align="left">NIC Firmware</td>
              <td align="left">NIC firmware version</td>
              <td align="left">Firmware Version</td>
            </tr>
            <tr>
              <td align="left">Host Config</td>
              <td align="left">OS, CCL lib version, driver, BIOS settings</td>
              <td align="left">OS Version, CCL Version, OFED Version</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="traffic-generator-requirements">
        <name>Traffic Generator Requirements</name>
        <section anchor="mandatory-functional-capabilities">
          <name>Mandatory Functional Capabilities</name>
          <t>The traffic generator <bcp14>MUST</bcp14> support: RoCEv2 transport emulation (QP establishment, RDMA Write/Read, ECN processing, DCQCN rate control); configurable QP scaling (1-256 QPs per source-destination pair); programmable collective communication patterns (AllReduce, AlltoAll, AllGather with configurable message sizes); and nanosecond-precision timestamping.</t>
        </section>
        <section anchor="minimum-measurement-accuracy-requirements">
          <name>Minimum Measurement Accuracy Requirements</name>
          <table anchor="tab-tgen-accuracy">
            <name>Minimum Measurement Accuracy Requirements</name>
            <thead>
              <tr>
                <th align="left">Parameter</th>
                <th align="left">Minimum Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Timestamp accuracy</td>
                <td align="left">&lt;= 100 nanoseconds</td>
              </tr>
              <tr>
                <td align="left">Frame rate accuracy</td>
                <td align="left">+/- 0.1% of specified rate</td>
              </tr>
              <tr>
                <td align="left">QP scaling range</td>
                <td align="left">1 to 256 QPs per src-dst pair</td>
              </tr>
              <tr>
                <td align="left">Message size range</td>
                <td align="left">1 KB to 8 GB</td>
              </tr>
              <tr>
                <td align="left">Flow counter resolution</td>
                <td align="left">Per-flow byte and packet counts</td>
              </tr>
              <tr>
                <td align="left">Loss measurement</td>
                <td align="left">0 ppm resolution</td>
              </tr>
              <tr>
                <td align="left">Burst generation</td>
                <td align="left">1-1000 frames at line rate</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="acceptable-implementations">
          <name>Acceptable Implementations</name>
          <t>The platform used <bcp14>MUST</bcp14> be identified in all test reports.</t>
          <t><strong>(a) Hardware Traffic Generator</strong> — dedicated hardware capable of line-rate RDMA emulation meeting Section 3.3.2 accuracy requirements. Suitable for point-to-point RDMA tests (Sections 5 and 6).  For collective tests (Section 9), the following limitations <bcp14>MUST</bcp14> be documented: whether synchronization barriers are reproduced, whether flow patterns are schedule-driven or gradient-driven, and whether
straggler behavior is modeled.</t>
          <t><strong>(b) Accelerator Cluster</strong> — cluster running an actual collective communication library with RDMA tooling.  Preferred for Section 9 collective benchmarks.  Host configuration (accelerator model,
collective library name and version, PCIe topology, BIOS power management settings) <bcp14>MUST</bcp14> be documented.  Any non-fabric overhead in timing measurements <bcp14>MUST</bcp14> be quantified and reported separately.</t>
          <t>When a hardware generator is used for collective benchmarks, results <bcp14>SHOULD</bcp14> be cross-validated against an accelerator cluster at one or more overlapping (message_size, N) configurations.</t>
          <t>Discrepancies exceeding 10% in BusBW or JCT Ratio <bcp14>MUST</bcp14> be investigated and reported.</t>
        </section>
      </section>
    </section>
    <section anchor="kpi-framework-and-metrics-taxonomy">
      <name>KPI Framework and Metrics Taxonomy</name>
      <ul empty="true">
        <li>
          <t>Target values in this section are NON-NORMATIVE illustrative reference points derived from current industry practice. They do NOT constitute benchmarking acceptance criteria. Per BMWG charter, defining acceptance criteria is explicitly out of scope. Implementers <bcp14>MAY</bcp14> use these values as contextual references; they <bcp14>MUST NOT</bcp14> be used as pass/fail thresholds.</t>
        </li>
      </ul>
      <section anchor="primary-kpis">
        <name>Primary KPIs</name>
        <table anchor="tab-primary-kpis">
          <name>Primary KPIs</name>
          <thead>
            <tr>
              <th align="left">KPI</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
              <th align="left">Reference Target (Non-Normative)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Job Completion Time (JCT)</td>
              <td align="left">seconds</td>
              <td align="left">Wall-clock time for benchmark iteration (compute + communication)</td>
              <td align="left">Minimize</td>
            </tr>
            <tr>
              <td align="left">JCT Ratio</td>
              <td align="left">dimensionless</td>
              <td align="left">Measured JCT / Roofline JCT</td>
              <td align="left">&lt;= 1.05 (&lt;= 1.15 acceptable)</td>
            </tr>
            <tr>
              <td align="left">Bus Bandwidth (BusBW)</td>
              <td align="left">Gbps/accelerator</td>
              <td align="left">Effective per-accelerator throughput during collective; algo_factor is collective- and algorithm-specific; see <xref target="test-collective"/>. Reports <bcp14>MUST</bcp14> state collective type, algorithm, and algo_factor</td>
              <td align="left">&gt;= 90% of NIC line rate (intra-pod)</td>
            </tr>
            <tr>
              <td align="left">Aggregate Throughput</td>
              <td align="left">Tbps</td>
              <td align="left">Total fabric goodput during collective phase</td>
              <td align="left">&gt;= 95% of bisection BW</td>
            </tr>
            <tr>
              <td align="left">Packet Drop Rate</td>
              <td align="left">ppm</td>
              <td align="left">Frames lost end-to-end not retransmitted</td>
              <td align="left">0 ppm (lossless)</td>
            </tr>
            <tr>
              <td align="left">Tail Latency (P99/P99.9)</td>
              <td align="left">us</td>
              <td align="left">99th/99.9th percentile one-way fabric latency</td>
              <td align="left">Minimize</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="secondary-kpis">
        <name>Secondary KPIs</name>
        <table anchor="tab-secondary-kpis">
          <name>Secondary KPIs</name>
          <thead>
            <tr>
              <th align="left">KPI</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ECN Marking Ratio</td>
              <td align="left">%</td>
              <td align="left">Percentage of packets marked CE over measurement interval</td>
            </tr>
            <tr>
              <td align="left">PFC Pause Count</td>
              <td align="left">events/sec</td>
              <td align="left">Rate of PFC PAUSE frames per priority per port</td>
            </tr>
            <tr>
              <td align="left">PFC Pause Duration</td>
              <td align="left">us</td>
              <td align="left">Cumulative time a port is in PFC-paused state per interval</td>
            </tr>
            <tr>
              <td align="left">RDMA Retransmission Rate</td>
              <td align="left">retx/sec</td>
              <td align="left">NIC-level retransmissions due to timeouts or NAKs</td>
            </tr>
            <tr>
              <td align="left">ECMP Imbalance (MMR)</td>
              <td align="left">dimensionless</td>
              <td align="left">Max-Mean Ratio of flow counts across parallel uplinks</td>
            </tr>
            <tr>
              <td align="left">Jain Fairness Index (JFI)</td>
              <td align="left">0.0-1.0</td>
              <td align="left">Fairness of traffic distribution; 1.0 = perfect</td>
            </tr>
            <tr>
              <td align="left">Queue Depth (P95/Max)</td>
              <td align="left">bytes or cells</td>
              <td align="left">95th percentile and maximum egress queue occupancy per port</td>
            </tr>
            <tr>
              <td align="left">Congestion Control Convergence</td>
              <td align="left">us</td>
              <td align="left">Time from congestion onset to DCQCN rate stabilization</td>
            </tr>
            <tr>
              <td align="left">Out-of-Order Packet Rate</td>
              <td align="left">pkt/sec</td>
              <td align="left">Packets delivered out of sequence (relevant for packet spray)</td>
            </tr>
            <tr>
              <td align="left">CTS/ACK Delay</td>
              <td align="left">us</td>
              <td align="left">Delay for control messages (Clear-to-Send, ACKs)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="fabric-health-indicators">
        <name>Fabric Health Indicators</name>
        <table anchor="tab-fabric-health">
          <name>Fabric Health Indicators</name>
          <thead>
            <tr>
              <th align="left">Indicator</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Switch CPU Utilization</td>
              <td align="left">%</td>
              <td align="left">Average and peak CPU usage on DUT control plane during test</td>
            </tr>
            <tr>
              <td align="left">Switch Memory Utilization</td>
              <td align="left">%</td>
              <td align="left">Average and peak memory usage, including FIB/MAC table occupancy</td>
            </tr>
            <tr>
              <td align="left">FIB/Route Convergence Time</td>
              <td align="left">ms</td>
              <td align="left">Time to converge routing after topology change</td>
            </tr>
            <tr>
              <td align="left">Link Flap Count</td>
              <td align="left">events</td>
              <td align="left">Spurious link state changes during test period</td>
            </tr>
            <tr>
              <td align="left">CRC/FCS Error Rate</td>
              <td align="left">errors/sec</td>
              <td align="left">Physical layer errors indicating cable or optics issues</td>
            </tr>
            <tr>
              <td align="left">Power Consumption</td>
              <td align="left">Watts</td>
              <td align="left">Per-switch and per-port power draw under test load</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="test-rdma">
      <name>Test Category 1: RDMA Transport Benchmarks</name>
      <t>These tests establish baseline fabric performance for RDMA traffic independent of collective communication patterns. They extend <xref target="RFC2544"/> and <xref target="RFC8239"/> methodology for RoCEv2 semantics.</t>
      <section anchor="baseline-throughput">
        <name>Baseline Throughput</name>
        <t><strong>Objective:</strong> Determine the maximum sustainable RDMA Write throughput through the DUT fabric at each tested message size.</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Configure N host pairs, each establishing Q Queue Pairs per pair</t>
          </li>
          <li>
            <t>Initiate RDMA Write operations and measure aggregate goodput</t>
          </li>
          <li>
            <t>Test <bcp14>MUST</bcp14> run for at least 60 seconds at each rate</t>
          </li>
          <li>
            <t>Binary search per <xref target="RFC2544"/> Section 26.1 <bcp14>SHOULD</bcp14> be used</t>
          </li>
          <li>
            <t>Message sizes: 64B, 256B, 1KB, 4KB, 64KB, 256KB, 1MB, 4MB</t>
          </li>
          <li>
            <t>QP counts: 1, 4, 16, 32 per src-dst pair</t>
          </li>
          <li>
            <t>Test both unidirectional and bidirectional traffic</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Report aggregate throughput (Tbps), per-port utilization (%), and throughput efficiency (measured/theoretical). Present as table indexed by message size x QP count, and as graph (message size on X-axis).</t>
      </section>
      <section anchor="latency-characterization">
        <name>Latency Characterization</name>
        <t><strong>Objective:</strong> Determine one-way and round-trip RDMA latency distribution at the throughput rate from <xref target="baseline-throughput"/>.</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Inject tagged frames at 60s into a 120s stream (per <xref target="RFC2544"/> Section 26.2)</t>
          </li>
          <li>
            <t>Nanosecond-precision timestamping</t>
          </li>
          <li>
            <t><bcp14>MUST</bcp14> report: min, mean, P50, P95, P99, P99.9, max</t>
          </li>
          <li>
            <t>Repeat at least 20 times; report averages</t>
          </li>
          <li>
            <t>Test under both zero-load (single QP) and loaded (full fabric utilization) conditions</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Tabulate latency statistics per message size. Provide histogram and CDF plot. Report latency increase factor (loaded/unloaded).</t>
      </section>
      <section anchor="back-to-back-burst-absorption">
        <name>Back-to-Back Burst Absorption</name>
        <t><strong>Objective:</strong> Characterize the DUT fabric's ability to absorb back-to-back RDMA bursts without loss, extending <xref target="RFC9004"/> methodology for RoCEv2.</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Transmit bursts at line rate with minimum inter-frame gap</t>
          </li>
          <li>
            <t>Increase burst length until first frame loss is detected</t>
          </li>
          <li>
            <t>Test incast ratios: 2:1, 4:1, 8:1, 16:1, 32:1</t>
          </li>
          <li>
            <t>Repeat at least 50 times per burst length</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Report burst absorption capacity (frames and bytes) for each message size and incast ratio. Plot burst capacity vs. incast ratio.</t>
      </section>
    </section>
    <section anchor="test-uec">
      <name>Test Category 1A: UEC Transport Protocol Benchmarks</name>
      <t>The Ultra Ethernet Consortium (UEC) Specification 1.0 <xref target="UEC-1.0"/> defines UET, a connectionless RDMA transport designed to replace RoCEv2 for AI/HPC workloads. All UET tests use the libfabric API <xref target="LIBFABRIC"/> and run on UEC 1.0-compliant NICs.</t>
      <t>The UEC compliance profile (AI Base, AI Full, or HPC) used during testing <bcp14>MUST</bcp14> be documented.</t>
      <section anchor="uet-throughput-by-transport-service">
        <name>UET Throughput by Transport Service</name>
        <t><strong>Objective:</strong> Determine maximum sustainable throughput under each UET transport service (ROD, RUD, RUDI, UUD) and compare to RoCEv2 RC/UC on the same DUT fabric.</t>
        <t><strong>Procedure:</strong> Use UEC 1.0-compliant NICs; establish PDCs; use libfabric fi_write. Apply binary search (<xref target="RFC2544"/> Section 26.1). Vary PDC counts: 1, 4, 16, 32. A parallel RoCEv2 test series <bcp14>MUST</bcp14> be executed. Both unidirectional and bidirectional configurations <bcp14>MUST</bcp14> be tested.</t>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-uet-throughput">
          <name>UET Throughput by Transport Service</name>
          <thead>
            <tr>
              <th align="left">Metric</th>
              <th align="left">ROD</th>
              <th align="left">RUD</th>
              <th align="left">RUDI</th>
              <th align="left">UUD</th>
              <th align="left">RoCEv2 RC</th>
              <th align="left">RoCEv2 UC</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Throughput @ 1MB (Gbps)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">Throughput @ 4MB (Gbps)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">Efficiency (% line rate)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">PDC/QP Setup Time (us)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">Max Sustained PDC/QP Count</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="uet-latency-characterization">
        <name>UET Latency Characterization</name>
        <t><strong>Objective:</strong> Measure latency distribution for UET transport services; quantify differential vs. RoCEv2, with particular attention to connectionless PDC establishment overhead.</t>
        <t><strong>Procedure:</strong> Measure latency for: (a) steady-state PDC transfers; (b) first-packet latency (PDC + first data packet, measuring "data before handshake"); (c) zero-load baseline. Test ROD and RUD separately to isolate reordering-related latency.</t>
        <t><strong>Reporting:</strong> Tabulate latency statistics per (transport_service, message_size, load_condition) tuple. Plot latency CDF for UET ROD, UET RUD, and RoCEv2 RC side-by-side.</t>
      </section>
      <section anchor="packet-spray-efficacy-under-uet-rud">
        <name>Packet Spray Efficacy Under UET RUD</name>
        <t><strong>Objective:</strong> Quantify the load balancing improvement achieved by UET's native per-packet spray with RUD, which eliminates the receiver reorder buffer constraint.</t>
        <t><strong>Procedure:</strong> Test four configurations:</t>
        <ul spacing="normal">
          <li>
            <t>UET RUD + packet spray</t>
          </li>
          <li>
            <t>UET ROD + packet spray</t>
          </li>
          <li>
            <t>RoCEv2 RC + packet spray</t>
          </li>
          <li>
            <t>RoCEv2 RC + standard ECMP (baseline)</t>
          </li>
        </ul>
        <t>Measure MMR, JFI, out-of-order delivery rate, retransmission rate, and effective goodput. Vary ECMP paths: 4, 8, 16, 32.</t>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-uet-spray">
          <name>Packet Spray Efficacy Under UET RUD</name>
          <thead>
            <tr>
              <th align="left">Load Balancing Config</th>
              <th align="left">MMR</th>
              <th align="left">JFI</th>
              <th align="left">OOO Rate</th>
              <th align="left">Retx Rate</th>
              <th align="left">Effective Goodput (%)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">UET RUD + Packet Spray</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">UET ROD + Packet Spray</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">RoCEv2 RC + Packet Spray</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">RoCEv2 RC + ECMP (baseline)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">UET RUD + DLB/Flowlet</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
        <ul empty="true">
          <li>
            <t>UET RUD <bcp14>SHOULD</bcp14> achieve zero host-visible reordering despite per-packet spray because the transport layer natively tolerates unordered delivery.</t>
          </li>
        </ul>
      </section>
      <section anchor="uet-congestion-control-benchmarks">
        <name>UET Congestion Control Benchmarks</name>
        <t><strong>Objective:</strong> Evaluate UET's dual-sided (sender + receiver) congestion control under N:1 incast conditions vs. RoCEv2 DCQCN.</t>
        <t><strong>Procedure:</strong> Measure: (a) incast throughput at N = {2, 4, 8, 16, 32, 64}; (b) convergence time after doubling active senders (until all flows within 10% of fair share); (c) PFC avoidance with PFC disabled on the DUT; (d) receiver credit utilization.</t>
        <t><strong>Reporting:</strong> Tabulate incast throughput, convergence time, peak queue depth, PFC event count, and packet drop rate for UET vs. DCQCN per incast ratio. <strong>Critical differentiator:</strong> report whether UET achieves zero application-visible loss without PFC.</t>
      </section>
      <section anchor="link-layer-enhancement-benchmarks">
        <name>Link Layer Enhancement Benchmarks</name>
        <t><strong>Objective:</strong> Measure performance impact of optional link-layer enhancements: LLR, Packet Trimming (PT), and CBFC.</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t><strong>(a) LLR Retry Latency:</strong> inject controlled bit errors; measure LLR retry latency (expected sub-microsecond per hop) vs. transport-layer retransmission (~10-100us RTT). Run with 80% background load.</t>
          </li>
          <li>
            <t><strong>(b) Packet Trimming Effectiveness:</strong> configure 2:1 oversubscription bottleneck; measure time from congestion onset to first retransmission request, bandwidth saved vs. full-packet drops.</t>
          </li>
          <li>
            <t><strong>(c) CBFC vs. PFC:</strong> identical N:1 (N=32) incast scenarios; measure head-of-line blocking duration (CBFC is per-destination, PFC is per-priority), pause propagation hops, and throughput of non-congested flows.</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Before/after comparison table for each enhancement. Note which features are hardware-supported vs. software-emulated.</t>
      </section>
      <section anchor="uet-collective-communication-performance">
        <name>UET Collective Communication Performance</name>
        <t><strong>Objective:</strong> Measure collective communication (AllReduce, AllToAll, AllGather) performance over UET and compare directly to RoCEv2, isolating the transport protocol contribution to collective efficiency.</t>
        <t><strong>Procedure:</strong> Execute the collective benchmark suite from <xref target="test-collective"/> over UET RUD transport using a UEC-compliant collective library. The same accelerator count (N), message sizes, and fabric topology <bcp14>MUST</bcp14> be used for both UET and RoCEv2 runs to ensure a valid comparison. Run UET RUD + packet spray as the primary configuration and UET ROD + ECMP as the secondary baseline.</t>
        <t>For AllReduce, if UET group keying (transport-layer reduction support per UEC Spec 1.0) is active on the DUT NIC, this <bcp14>MUST</bcp14> be noted explicitly.</t>
        <t>When group keying is active, algo_factor <bcp14>MUST</bcp14> be recomputed from observed bytes transferred rather than applying the closed-form formula, since group keying alters the effective number of pass-through hops.</t>
        <t>Document the group keying state (active / inactive) as a required result field. For all collectives, the algo_factor used <bcp14>MUST</bcp14> be stated per message-size bucket. See <xref target="test-collective"/> for reference values.</t>
        <t><strong>Reporting:</strong>  Report the percentage improvement in BusBW and JCT attributable to UET native packet spray and congestion control.</t>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-uet-collective">
          <name>UET Collective Communication Performance</name>
          <thead>
            <tr>
              <th align="left">Collective</th>
              <th align="left">Msg Size</th>
              <th align="left">N Accels</th>
              <th align="left">UET RUD BusBW</th>
              <th align="left">UET ROD BusBW</th>
              <th align="left">RoCEv2 RC BusBW</th>
              <th align="left">Delta UET/RoCEv2</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AlltoAll</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="uet-pdc-scalability-and-connection-setup-rate">
        <name>UET PDC Scalability and Connection Setup Rate</name>
        <t><strong>Objective:</strong> Measure PDC establishment rate and maximum concurrent PDC count vs. RoCEv2 QP-based connections.</t>
        <t><strong>Procedure:</strong> (a) PDC establishment rate: initiate PDC creation to M = {100, 1000, 10000, 100000} remote endpoints. (b) Data-before-handshake: measure first-byte latency for UET vs. RoCEv2 RDMA Write. (c) Maximum concurrent PDC count: scale until per-PDC throughput drops below 90% of single-PDC rate. The UEC specification <xref target="UEC-1.0"/> targets up to 1 million endpoints.</t>
      </section>
    </section>
    <section anchor="test-congestion">
      <name>Test Category 2: Congestion Management</name>
      <t>AI training workloads generate repetitive micro-congestion during the back-propagation gradient synchronization phase.</t>
      <section anchor="ecn-marking-accuracy-and-threshold">
        <name>ECN Marking Accuracy and Threshold</name>
        <t><strong>Objective:</strong> Verify that the DUT marks packets with ECN CE at the configured threshold with correct granularity.</t>
        <t><strong>Procedure:</strong> Configure threshold T on DUT egress queue. Verify: (a) no packets marked below T; (b) 100% marked above maximum threshold; (c) appropriate WRED/RED probability ramp between thresholds. Test thresholds: low (~100KB), medium (~1MB), high (~5MB).</t>
        <t><strong>Reporting:</strong> Plot ECN marking probability vs. instantaneous queue depth. Report measured threshold accuracy (deviation from configured).</t>
      </section>
      <section anchor="pfc-behavior-under-incast">
        <name>PFC Behavior Under Incast</name>
        <t><strong>Objective:</strong> Characterize DUT's PFC generation behavior under N:1 incast conditions.</t>
        <t><strong>Procedure:</strong> Generate N:1 incast at 100% line rate, N = {2, 4, 8, 16, 32, 64}. Measure PFC PAUSE frame count/sec per hop, PFC PAUSE duration per port, PFC storm onset, and end-to-end throughput. Test <bcp14>SHOULD</bcp14> verify correct headroom sizing and PFC watchdog effectiveness.</t>
      </section>
      <section anchor="dcqcn-convergence-time">
        <name>DCQCN Convergence Time</name>
        <t><strong>Objective:</strong> Measure time for DCQCN to converge to fair-share rate after congestion onset.</t>
        <t><strong>Procedure:</strong> Establish M flows through a common bottleneck. At T0, inject additional M flows (creating 2:1 oversubscription). Measure time until all 2M flows achieve rates within 10% of fair share. Repeat for M = {4, 16, 64, 256}. Vary DCQCN parameters and report sensitivity.</t>
      </section>
      <section anchor="pfc-storm-and-deadlock-resilience">
        <name>PFC Storm and Deadlock Resilience</name>
        <t><strong>Objective:</strong> Verify the DUT does not enter PFC deadlock or sustained PFC storm under adversarial traffic.</t>
        <t><strong>Procedure:</strong> Generate cyclic traffic patterns known to cause PFC deadlocks. Run for 300 seconds. The DUT <bcp14>MUST</bcp14> demonstrate resilience via PFC watchdog or architectural immunity (e.g., VOQ-based scheduling).</t>
      </section>
    </section>
    <section anchor="test-lb">
      <name>Test Category 3: Load Balancing Efficacy</name>
      <t>Load balancing across parallel fabric paths is critical for AI training fabrics because the traffic consists of a small number of high-bandwidth, long-lived elephant flows.</t>
      <section anchor="ecmp-entropy-and-polarization">
        <name>ECMP Entropy and Polarization</name>
        <t><strong>Objective:</strong> Quantify traffic polarization under standard ECMP hashing for AI training flow patterns.</t>
        <t><strong>Procedure:</strong> Configure standard 5-tuple ECMP. Generate traffic with Q = {1, 4, 8, 16, 32} QPs per src-dst pair. Measure per-link utilization, MMR, and JFI. Test with and without BTH-aware hashing. Repeat for fabric sizes of 8, 16, 32, and 64 leaf switches.</t>
      </section>
      <section anchor="dynamic-load-balancing-flowlet">
        <name>Dynamic Load Balancing (Flowlet)</name>
        <t><strong>Objective:</strong> Evaluate DUT's flowlet-based DLB performance and compare to baseline ECMP.</t>
        <t><strong>Procedure:</strong> Configure vendor-specific DLB (document algorithm type). Generate traffic with Q=4 QPs. Measure MMR, JFI, per-link utilization, out-of-order rate. Vary flowlet gap timer and report sensitivity.</t>
      </section>
      <section anchor="packet-spraying">
        <name>Packet Spraying</name>
        <t><strong>Objective:</strong> Evaluate DUT's per-packet spraying performance and quantify the utilization vs. reordering tradeoff.</t>
        <t><strong>Procedure:</strong> Configure per-packet load balancing. Measure MMR (expected ~1.0), JFI (expected ~1.0), out-of-order rate, and RDMA retransmission impact. If the DUT provides an in-fabric reorder buffer, document per <xref target="asic-features"/>.</t>
      </section>
      <section anchor="jain-fairness-index-measurement">
        <name>Jain Fairness Index Measurement</name>
        <t><strong>Objective:</strong> Single-number summary of load balancing quality comparable across all strategies.</t>
        <t><strong>Formula:</strong></t>
        <figure anchor="fig-jfi">
          <name>Jain Fairness Index Formula</name>
          <artwork type="ascii-art"><![CDATA[
JFI = (Sum LinkTx_i)^2 / (N x Sum LinkTx_i^2)
]]></artwork>
        </figure>
        <t>where LinkTx_i = transmitted traffic on fabric link i, N = total parallel links. Range: 1/N (worst) to 1.0 (perfect).</t>
        <t><strong>Reporting:</strong> Report JFI for each load balancing strategy. Provide bar chart comparing ECMP, DLB, and packet spray.</t>
      </section>
    </section>
    <section anchor="test-collective">
      <name>Test Category 4: Collective Communication Benchmarks</name>
      <t>These tests evaluate the fabric's performance under realistic collective communication patterns. Unlike synthetic RDMA tests in <xref target="test-rdma"/> and <xref target="test-uec"/>, these exercise the full stack including the collective library (NCCL <xref target="NCCL"/>, RCCL, or equivalent).</t>
      <section anchor="allreduce-benchmark">
        <name>AllReduce Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllReduce operations,the dominant collective for gradient synchronization in data-parallel training.</t>
        <t><strong>Procedure:</strong> Using N accelerators connected through the DUT fabric, execute AllReduce (sum) operations using the collective communication library benchmark suite (e.g., nccl-tests or equivalent).</t>
        <t>Test parameters:</t>
        <ul spacing="normal">
          <li>
            <t>Message sizes: 1 MB, 8 MB, 64 MB, 256 MB, 1 GB, 4 GB</t>
          </li>
          <li>
            <t>Accelerator counts (N): 8, 16, 32, 64, 128, 256, 512, 1024</t>
          </li>
          <li>
            <t>Minimum iterations per (message_size, N) pair: 100</t>
          </li>
          <li>
            <t>Load balancing strategies: ECMP, DLB, packet spray</t>
          </li>
        </ul>
        <t>For each (message_size, N) pair, record average, P50, P95, and P99 BusBW, ECN marking ratio, PFC pause count, and per-link utilization. The collective algorithm in use <bcp14>MUST</bcp14> be verified via library tracing for each message size bucket and reported alongside the BusBW result. If the library selects the algorithm dynamically (e.g., tree-based for small messages, ring for large messages), algo_factor varies with message size and <bcp14>MUST</bcp14> be reported per bucket, not as a single value.
For ring AllReduce, algo_factor = 2*(n-1)/n.  See <xref target="test-collective"/> for the full algo_factor reference table and mandatory reporting requirements.</t>
        <t><strong>Reporting</strong> : Tabulate BusBW for each (message_size, N, LB_strategy, algo_factor) combination.  The algo_factor column is <bcp14>REQUIRED</bcp14>; results without it are incomplete.  Plot BusBW vs. N for each message size. Report BusBW efficiency = BusBW / NIC_line_rate.</t>
      </section>
      <section anchor="alltoall-benchmark">
        <name>AlltoAll Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllToAll operations the dominant collective for Mixture-of-Experts (MoE) expert parallelism dispatch and pipeline-parallel communication.</t>
        <t><strong>Procedure:</strong> Using the same message sizes, accelerator counts, iteration count, and load balancing strategies as <xref target="allreduce-benchmark"/>, execute AllToAll operations via the collective communication library.</t>
        <t>AllToAll generates the worst-case fabric stress pattern: every accelerator simultaneously sends a unique payload to every other accelerator in the group, creating maximum entropy and N-to-N incast
at every fabric link.  This makes AllToAll JCT the most sensitive single indicator of fabric congestion management quality.</t>
        <t>For AllToAll, algo_factor = (n-1)/n regardless of topology or library implementation.  BusBW reports <bcp14>MUST</bcp14> state this value explicitly. See <xref target="test-collective"/>.</t>
        <t><strong>Measurement:</strong>  Report BusBW (average, P50, P95, P99), JCT per iteration, ECN marking ratio, PFC pause count, and per-link utilization for each (message_size, N, LB_strategy) combination.</t>
        <t><strong>Reporting:</strong> Same table format as <xref target="allreduce-benchmark"/>, with algo_factor column required.  Additionally report JCT for each configuration; JCT degradation relative to the ECMP baseline <bcp14>SHOULD</bcp14>
be highlighted as the primary congestion sensitivity indicator.</t>
      </section>
      <section anchor="allgather-benchmark">
        <name>AllGather Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllGather operations, the dominant collective for weight and activation distribution in tensor-parallel and pipeline-parallel training.</t>
        <t><strong>Procedure:</strong> Using the same message sizes, accelerator counts, iteration count, and load balancing strategies as <xref target="allreduce-benchmark"/>, execute AllGather operations via the collective communication library.</t>
        <t>AllGather consists of a gather phase only — each accelerator contributes a shard and receives the full concatenated tensor.
There is no reduce phase, which produces lower peak fabric load than AllReduce at equivalent message size and N.  This makes AllGather a useful baseline for isolating the gather-path fabric contribution from the combined send-and-reduce cost.</t>
        <t>For ring AllGather, algo_factor = (n-1)/n.  BusBW reports <bcp14>MUST</bcp14> state this value explicitly.  See <xref target="test-collective"/>.</t>
        <t><strong>Measurement:</strong> Report BusBW (average, P50, P95, P99), JCT per iteration, ECN marking ratio, PFC pause count, and per-link utilization for each (message_size, N, LB_strategy) combination.</t>
        <t><strong>Reporting:</strong> Same table format as <xref target="allreduce-benchmark"/>, with algo_factor column required.  Report BusBW efficiency = BusBW / NIC_line_rate.  Where results are compared to AllReduce under identical parameters, the BusBW ratio (AllGather / AllReduce) quantifies the fabric overhead attributable to the reduce phase.</t>
      </section>
      <section anchor="collective-communication-library-bus-bandwidth-summary">
        <name>Collective Communication Library Bus Bandwidth Summary</name>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-ccl-summary">
          <name>Collective Communication Bus Bandwidth Summary</name>
          <thead>
            <tr>
              <th align="left">Collective</th>
              <th align="left">Msg Size</th>
              <th align="left">N Accels</th>
              <th align="left">ECMP BusBW (Gbps/accel)</th>
              <th align="left">DLB BusBW (Gbps/accel)</th>
              <th align="left">Spray BusBW (Gbps/accel)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AlltoAll</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AlltoAll</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="test-jct">
      <name>Test Category 5: Job Completion Time (JCT) Benchmarks</name>
      <t>JCT is the single most important user-facing KPI for AI training fabrics, directly determining accelerator utilization and training cost.</t>
      <section anchor="synthetic-jct-under-controlled-conditions">
        <name>Synthetic JCT Under Controlled Conditions</name>
        <ul empty="true">
          <li>
            <t><strong>Objective:</strong> Measure JCT for a defined synthetic workload with a known computation-to-communication ratio to isolate fabric-induced overhead.</t>
            <t><strong>Procedure:</strong> Define a synthetic training iteration as a strictly sequential model:</t>
            <ol spacing="normal" type="1"><li>
                <t>Computation phase of C milliseconds (simulated sleep or GPU compute kernel)</t>
              </li>
              <li>
                <t>Communication phase: AllReduce of S bytes across N accelerators</t>
              </li>
            </ol>
            <table anchor="tab-synthetic-jct-params">
              <name>Synthetic JCT Test Parameters</name>
              <thead>
                <tr>
                  <th align="left">Parameter</th>
                  <th align="left">Values</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">Computation time C</td>
                  <td align="left">10 ms, 50 ms, 100 ms, 500 ms</td>
                </tr>
                <tr>
                  <td align="left">Message size S</td>
                  <td align="left">256 MB, 1 GB, 4 GB</td>
                </tr>
                <tr>
                  <td align="left">Accelerator count N</td>
                  <td align="left">64, 128, 256, 512, 1024</td>
                </tr>
                <tr>
                  <td align="left">Iterations</td>
                  <td align="left">1000</td>
                </tr>
              </tbody>
            </table>
            <t>Execute 1000 iterations and measure total wall-clock JCT.</t>
            <figure anchor="fig-jct-formula">
              <name>JCT Ratio Calculation</name>
              <artwork><![CDATA[
Roofline_seq = Iterations x (C + S x algo_factor / NIC_line_rate)
JCT Ratio    = Measured_JCT / Roofline_seq
]]></artwork>
            </figure>
            <t>This model assumes strictly sequential compute and communication phases
and represents a conservative upper bound on communication overhead.
Many frameworks overlap these phases via gradient bucketing or asynchronous collectives, reducing the effective communication overhead visible in wall-clock JCT.</t>
            <t>Implementations using overlapped execution <bcp14>SHOULD</bcp14> additionally report:</t>
            <figure anchor="fig-overlap-formula">
              <name>Overlap Fraction Calculation</name>
              <artwork><![CDATA[
Overlap_Fraction = 1 - (Measured_JCT - C_total) / Comm_time

  where:
    C_total   = Iterations x C
    Comm_time = Iterations x S x algo_factor / NIC_line_rate
]]></artwork>
            </figure>
            <t>An Overlap_Fraction of 0 indicates fully sequential execution; 1.0 indicates communication is perfectly hidden behind compute.</t>
            <t>When overlap is present, the residual fabric overhead <bcp14>SHOULD</bcp14> be reported as:</t>
            <artwork><![CDATA[
Effective_Comm_Overhead = Measured_JCT - C_total
]]></artwork>
            <t>The Overlap_Fraction and communication library overlap configuration (e.g., bucket size, number of async streams) <bcp14>MUST</bcp14> be documented as part of the test configuration when this optional measurement is reported.</t>
            <t><strong>Reporting:</strong> Tabulate JCT Ratio for each (C, S, N, LB_strategy combination.  Plot JCT Ratio vs. N to characterize fabric scalability.</t>
            <ul empty="true">
              <li>
                <t>NOTE: JCT Ratio &lt; 1.05 indicates excellent fabric performance; 1.15 indicates significant fabric-induced overhead. These are non-normative illustrative reference values only.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="mlperf-aligned-jct">
        <name>MLPerf-Aligned JCT</name>
        <t><strong>Objective:</strong> Measure JCT using MLPerf Training benchmark workloads <xref target="MLPERF"/> to enable comparison with published industry results.</t>
        <t><strong>Procedure:</strong> Execute MLPerf Training closed-division workloads (e.g., BERT, ResNet, GPT-3 175B) per MLPerf submission rules. Simultaneously capture all fabric KPIs from <xref target="kpi-framework-and-metrics-taxonomy"/>. Report time-to-train and/or tokens-per-second.</t>
      </section>
      <section anchor="multi-tenant-jct-interference">
        <name>Multi-Tenant JCT Interference</name>
        <t><strong>Objective:</strong> Quantify JCT impact when multiple training jobs share the same fabric.</t>
        <t><strong>Procedure:</strong> Configure two or more independent training jobs. Jobs <bcp14>SHOULD</bcp14> overlap in spine-layer link usage. Measure baseline JCT (isolated) and contention JCT (simultaneous).</t>
        <figure anchor="fig-jct-interference">
          <name>JCT Interference Factor</name>
          <artwork type="ascii-art"><![CDATA[
JCT Interference Factor = Contention_JCT / Baseline_JCT
]]></artwork>
        </figure>
        <t>Test with spine link overlap: 0%, 25%, 50%, 75%.</t>
      </section>
    </section>
    <section anchor="test-scale">
      <name>Test Category 6: Scale and Convergence</name>
      <section anchor="fabric-scale-limits">
        <name>Fabric Scale Limits</name>
        <t><strong>Objective:</strong> Determine the maximum fabric scale at which the DUT maintains acceptable KPI performance.</t>
        <t><strong>Procedure:</strong> Progressively increase active accelerator endpoints from N=64 to maximum topology support while running AllReduce (<xref target="allreduce-benchmark"/>, S=1GB). At each scale point record JCT Ratio, BusBW, ECN ratio, PFC count, CPU and memory utilization. Also measure BGP/routing convergence time after clearing all adjacencies (analogous to <xref target="EVPN-BENCH"/> Sections 3.10, 3.11, 4.9, 4.10).</t>
      </section>
      <section anchor="link-failure-convergence">
        <name>Link Failure Convergence</name>
        <t><strong>Objective:</strong> Measure traffic disruption and JCT impact when a fabric link fails during active training.</t>
        <t><strong>Procedure:</strong> With the fabric fully loaded (AllReduce, N=128, S=1GB), administratively fail a spine uplink. Measure:</t>
        <ul spacing="normal">
          <li>
            <t>Duration of packet loss</t>
          </li>
          <li>
            <t>Packets lost</t>
          </li>
          <li>
            <t>JCT overhead for the failure iteration vs. steady state</t>
          </li>
          <li>
            <t>Time for load balancing mechanism to redistribute flows</t>
          </li>
        </ul>
        <t>Repeat for: leaf uplink failure, spine switch failure, superspine link failure (if applicable). Test under each load balancing strategy.</t>
      </section>
      <section anchor="zero-impact-failover-measurement">
        <name>Zero-Impact Failover Measurement</name>
        <t><strong>Objective:</strong> Verify vendor claims of zero-impact or sub-microsecond failover.</t>
        <t><strong>Procedure:</strong> Execute <xref target="link-failure-convergence"/> with nanosecond-precision measurement. A failure is considered "zero-impact" if the measured JCT for the failure iteration is within the P99 JCT of steady-state iterations.</t>
      </section>
    </section>
    <section anchor="test-soak">
      <name>Test Category 7: Soak and Stability</name>
      <section anchor="soak-24h">
        <name>24-Hour Sustained Load</name>
        <t><strong>Objective:</strong> Verify DUT fabric stability under sustained AI training load over an extended period, following the methodology pattern from <xref target="EVPN-BENCH"/> Sections 3.12, 4.11.</t>
        <t><strong>Procedure:</strong> Configure DUT at maximum validated scale from <xref target="fabric-scale-limits"/>. Generate bidirectional collective communication traffic (alternating AllReduce and AlltoAll). Run continuously for 24 hours. Sample all KPIs from <xref target="kpi-framework-and-metrics-taxonomy"/> every 60 seconds.</t>
        <t>There <bcp14>SHOULD NOT</bcp14> be any memory leaks, crashes, or CPU spikes. Any anomaly <bcp14>MUST</bcp14> be reported with timestamp and duration.</t>
        <t><strong>Reporting:</strong> Time-series plots of JCT Ratio, BusBW, ECN ratio, PFC count, CPU, and memory over the 24-hour period. Report standard deviation of JCT Ratio (stability metric).</t>
      </section>
      <section anchor="resource-leak-detection">
        <name>Resource Leak Detection</name>
        <t><strong>Objective:</strong> Detect memory leaks, handle exhaustion, or gradual performance degradation in DUT software.</t>
        <t><strong>Procedure:</strong> Record per-process memory usage at T=0, T=1h, T=6h, T=12h, T=24h. Compute linear regression slope of memory usage over time. A slope exceeding <strong>1MB/hour</strong> for any process indicates a potential memory leak and <bcp14>MUST</bcp14> be reported. Also monitor forwarding-plane counter wraparounds and hardware table occupancy trends.</t>
      </section>
    </section>
    <section anchor="reporting">
      <name>Reporting Format</name>
      <t>Test reports <bcp14>MUST</bcp14> include the following sections:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>DUT Identification:</strong> Complete parameters from <xref target="device-under-test-dut-identification"/> for all fabric components.</t>
        </li>
        <li>
          <t><strong>Test Topology:</strong> Diagram and description per <xref target="reference-fabric-topologies"/>, including physical cabling.</t>
        </li>
        <li>
          <t><strong>Test Configuration:</strong> All DUT configuration parameters: QoS policies (ECN thresholds, PFC headroom, DCQCN parameters), load balancing mode, buffer allocation, and vendor-specific tuning.</t>
        </li>
        <li>
          <t><strong>Host Configuration:</strong> Complete host stack description per <xref target="device-under-test-dut-identification"/> including NIC firmware, driver, collective library version, and any tuning. For UET tests, additionally report: UEC compliance profile, libfabric provider version, NIC UEC firmware version, and enabled optional link-layer features (LLR, Packet Trimming, PRI, CBFC).</t>
        </li>
        <li>
          <t><strong>Test Results:</strong> For each test from <xref target="test-rdma"/> through <xref target="test-soak"/>, provide specified tables, graphs, and statistical summaries. For <xref target="test-uec"/> tests, results <bcp14>MUST</bcp14> include side-by-side UET vs. RoCEv2 comparison data on the identical DUT fabric.</t>
        </li>
        <li>
          <t><strong>Anomalies:</strong> Any deviations from specified procedures, test failures, or unexpected behaviors <bcp14>MUST</bcp14> be documented.</t>
        </li>
        <li>
          <t><strong>Repeatability Statement:</strong> Report iteration count and coefficient of variation (std deviation / mean) for each test's primary metric. CV below 5% is <bcp14>RECOMMENDED</bcp14> for test validity.</t>
        </li>
      </ol>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document defines benchmarking methodologies for controlled laboratory environments and does not introduce new security mechanisms or protocols.</t>
      <t>Per <xref target="RFC6815"/>, the tests defined herein <bcp14>MUST NOT</bcp14> be performed on production networks. The use of dedicated test IP address ranges per <xref target="RFC2544"/> Appendix C (198.18.0.0/15) is <bcp14>RECOMMENDED</bcp14> to prevent accidental interaction with production infrastructure.</t>
      <t>When RDMA/RoCEv2 traffic is used, the test environment <bcp14>SHOULD</bcp14> be isolated from production RDMA fabrics to prevent QP number space collisions or inadvertent PFC propagation. When UET traffic is used (<xref target="test-uec"/>), the test environment <bcp14>MUST</bcp14> ensure that UDP port 4793 traffic does not leak to production networks and that PDC identifier spaces are isolated. UET's optional transport security sub-layer (TSS) <bcp14>SHOULD NOT</bcp14> be enabled during performance benchmarking unless transport security overhead is explicitly being measured.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no request of IANA.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1242">
          <front>
            <title>Benchmarking Terminology for Network Interconnection Devices</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="July" year="1991"/>
            <abstract>
              <t>This memo discusses and defines a number of terms that are used in describing performance benchmarking tests and the results of such tests. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1242"/>
          <seriesInfo name="DOI" value="10.17487/RFC1242"/>
        </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="RFC2544">
          <front>
            <title>Benchmarking Methodology for Network Interconnect Devices</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <author fullname="J. McQuaid" initials="J." surname="McQuaid"/>
            <date month="March" year="1999"/>
            <abstract>
              <t>This document is a republication of RFC 1944 correcting the values for the IP addresses which were assigned to be used as the default addresses for networking test equipment. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2544"/>
          <seriesInfo name="DOI" value="10.17487/RFC2544"/>
        </reference>
        <reference anchor="RFC2889">
          <front>
            <title>Benchmarking Methodology for LAN Switching Devices</title>
            <author fullname="R. Mandeville" initials="R." surname="Mandeville"/>
            <author fullname="J. Perser" initials="J." surname="Perser"/>
            <date month="August" year="2000"/>
            <abstract>
              <t>This document is intended to provide methodology for the benchmarking of local area network (LAN) switching devices. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2889"/>
          <seriesInfo name="DOI" value="10.17487/RFC2889"/>
        </reference>
        <reference anchor="RFC8238">
          <front>
            <title>Data Center Benchmarking Terminology</title>
            <author fullname="L. Avramov" initials="L." surname="Avramov"/>
            <author fullname="J. Rapp" initials="J." surname="Rapp"/>
            <date month="August" year="2017"/>
            <abstract>
              <t>The purposes of this informational document are to establish definitions and describe measurement techniques for data center benchmarking, as well as to introduce new terminology applicable to performance evaluations of data center network equipment. This document establishes the important concepts for benchmarking network switches and routers in the data center and is a prerequisite for the test methodology document (RFC 8239). Many of these terms and methods may be applicable to network equipment beyond the scope of this document as the technologies originally applied in the data center are deployed elsewhere.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8238"/>
          <seriesInfo name="DOI" value="10.17487/RFC8238"/>
        </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="RFC8239">
          <front>
            <title>Data Center Benchmarking Methodology</title>
            <author fullname="L. Avramov" initials="L." surname="Avramov"/>
            <author fullname="J. Rapp" initials="J." surname="Rapp"/>
            <date month="August" year="2017"/>
            <abstract>
              <t>The purpose of this informational document is to establish test and evaluation methodology and measurement techniques for physical network equipment in the data center. RFC 8238 is a prerequisite for this document, as it contains terminology that is considered normative. Many of these terms and methods may be applicable beyond the scope of this document as the technologies originally applied in the data center are deployed elsewhere.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8239"/>
          <seriesInfo name="DOI" value="10.17487/RFC8239"/>
        </reference>
        <reference anchor="RFC9004">
          <front>
            <title>Updates for the Back-to-Back Frame Benchmark in RFC 2544</title>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>Fundamental benchmarking methodologies for network interconnect devices of interest to the IETF are defined in RFC 2544. This memo updates the procedures of the test to measure the Back-to-Back Frames benchmark of RFC 2544, based on further experience.</t>
              <t>This memo updates Section 26.4 of RFC 2544.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9004"/>
          <seriesInfo name="DOI" value="10.17487/RFC9004"/>
        </reference>
        <reference anchor="UEC-1.0" target="https://ultraethernet.org">
          <front>
            <title>Ultra Ethernet Transport (UET) Specification 1.0</title>
            <author>
              <organization>Ultra Ethernet Consortium</organization>
            </author>
            <date year="2025" month="June"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6815">
          <front>
            <title>Applicability Statement for RFC 2544: Use on Production Networks Considered Harmful</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <author fullname="K. Dubray" initials="K." surname="Dubray"/>
            <author fullname="J. McQuaid" initials="J." surname="McQuaid"/>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <date month="November" year="2012"/>
            <abstract>
              <t>The Benchmarking Methodology Working Group (BMWG) has been developing key performance metrics and laboratory test methods since 1990, and continues this work at present. The methods described in RFC 2544 are intended to generate traffic that overloads network device resources in order to assess their capacity. Overload of shared resources would likely be harmful to user traffic performance on a production network, and there are further negative consequences identified with production application of the methods. This memo clarifies the scope of RFC 2544 and other IETF BMWG benchmarking work for isolated test environments only, and it encourages new standards activity for measurement methods applicable outside that scope. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6815"/>
          <seriesInfo name="DOI" value="10.17487/RFC6815"/>
        </reference>
        <reference anchor="EVPN-BENCH">
          <front>
            <title>Benchmarking Methodology for EVPN and PBB-EVPN</title>
            <author initials="S." surname="Jacob" fullname="Sudhin Jacob">
              <organization/>
            </author>
            <author initials="K." surname="Tiruveedhula" fullname="Kishore Tiruveedhula">
              <organization/>
            </author>
            <date year="2023" month="August"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-bmwg-evpntest-11"/>
        </reference>
        <reference anchor="LLM-BENCH">
          <front>
            <title>Benchmarking Methodology for Large Language Model Serving</title>
            <author initials="" surname="Gaikwad, et al">
              <organization/>
            </author>
            <date year="2026" month="January"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gaikwad-llm-benchmarking-methodology"/>
        </reference>
        <reference anchor="META-ROCE">
          <front>
            <title>RDMA over Ethernet for Distributed AI Training at Meta Scale</title>
            <author initials="A." surname="Gangidi" fullname="Anirudh Gangidi">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="DOI" value="ACM SIGCOMM 2024"/>
        </reference>
        <reference anchor="DCQCN-PAPER">
          <front>
            <title>Congestion Control for Large-Scale RDMA Deployments</title>
            <author initials="Y." surname="Zhu" fullname="Yibo Zhu">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="DOI" value="ACM SIGCOMM 2015"/>
        </reference>
        <reference anchor="NCCL" target="https://developer.nvidia.com/nccl">
          <front>
            <title>NVIDIA Collective Communications Library (NCCL)</title>
            <author>
              <organization>NVIDIA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="LIBFABRIC" target="https://ofiwg.github.io/libfabric/">
          <front>
            <title>libfabric: Open Fabric Interfaces</title>
            <author>
              <organization>OpenFabrics Interfaces Working Group</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MLPERF" target="https://mlcommons.org">
          <front>
            <title>MLPerf Training Benchmark Suite</title>
            <author>
              <organization>MLCommons</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 802?>

<section anchor="kpi-to-test-mapping-summary">
      <name>KPI-to-Test Mapping Summary</name>
      <table anchor="tab-kpi-mapping">
        <name>KPI-to-Test Mapping Summary</name>
        <thead>
          <tr>
            <th align="left">KPI</th>
            <th align="left">Test Section</th>
            <th align="left">Measurement Method</th>
            <th align="left">Reporting Unit</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Throughput Rate</td>
            <td align="left">
              <xref target="baseline-throughput"/></td>
            <td align="left">Binary search, zero-loss</td>
            <td align="left">Tbps, % line rate</td>
          </tr>
          <tr>
            <td align="left">Latency (P99)</td>
            <td align="left">
              <xref target="latency-characterization"/></td>
            <td align="left">Tagged frame, loaded / unloaded</td>
            <td align="left">us</td>
          </tr>
          <tr>
            <td align="left">Burst Absorption</td>
            <td align="left">
              <xref target="back-to-back-burst-absorption"/></td>
            <td align="left">Max burst without loss</td>
            <td align="left">frames, bytes</td>
          </tr>
          <tr>
            <td align="left">ECN Accuracy</td>
            <td align="left">
              <xref target="ecn-marking-accuracy-and-threshold"/></td>
            <td align="left">Queue depth vs. marking</td>
            <td align="left">threshold deviation %</td>
          </tr>
          <tr>
            <td align="left">PFC Behavior</td>
            <td align="left">
              <xref target="pfc-behavior-under-incast"/></td>
            <td align="left">Incast sweep N=2..64</td>
            <td align="left">PAUSE events/sec, duration</td>
          </tr>
          <tr>
            <td align="left">DCQCN Convergence</td>
            <td align="left">
              <xref target="dcqcn-convergence-time"/></td>
            <td align="left">Rate stabilization after onset</td>
            <td align="left">us</td>
          </tr>
          <tr>
            <td align="left">PFC Deadlock</td>
            <td align="left">
              <xref target="pfc-storm-and-deadlock-resilience"/></td>
            <td align="left">Cyclic adversarial traffic</td>
            <td align="left">observed/reported, watchdog events</td>
          </tr>
          <tr>
            <td align="left">ECMP Imbalance</td>
            <td align="left">
              <xref target="ecmp-entropy-and-polarization"/></td>
            <td align="left">MMR, JFI per QP count</td>
            <td align="left">dimensionless ratios</td>
          </tr>
          <tr>
            <td align="left">DLB Efficacy</td>
            <td align="left">
              <xref target="dynamic-load-balancing-flowlet"/></td>
            <td align="left">Throughput delta vs. ECMP</td>
            <td align="left">%, out-of-order rate</td>
          </tr>
          <tr>
            <td align="left">Spray Efficacy</td>
            <td align="left">
              <xref target="packet-spraying"/></td>
            <td align="left">JFI, retransmission rate</td>
            <td align="left">dimensionless, retx/sec</td>
          </tr>
          <tr>
            <td align="left">AllReduce BusBW</td>
            <td align="left">
              <xref target="allreduce-benchmark"/></td>
            <td align="left">CCL benchmark</td>
            <td align="left">Gbps per accelerator</td>
          </tr>
          <tr>
            <td align="left">AlltoAll JCT</td>
            <td align="left">
              <xref target="alltoall-benchmark"/></td>
            <td align="left">CCL benchmark</td>
            <td align="left">seconds per iteration</td>
          </tr>
          <tr>
            <td align="left">AllGather BusBW</td>
            <td align="left">
              <xref target="allgather-benchmark"/></td>
            <td align="left">CCL benchmark</td>
            <td align="left">Gbps per accelerator</td>
          </tr>
          <tr>
            <td align="left">Synthetic JCT Ratio</td>
            <td align="left">
              <xref target="synthetic-jct-under-controlled-conditions"/></td>
            <td align="left">Measured / Roofline</td>
            <td align="left">dimensionless</td>
          </tr>
          <tr>
            <td align="left">MLPerf JCT</td>
            <td align="left">
              <xref target="mlperf-aligned-jct"/></td>
            <td align="left">Time-to-train</td>
            <td align="left">minutes, tokens/sec</td>
          </tr>
          <tr>
            <td align="left">Multi-Tenant Impact</td>
            <td align="left">
              <xref target="multi-tenant-jct-interference"/></td>
            <td align="left">Contention / Baseline JCT</td>
            <td align="left">interference factor</td>
          </tr>
          <tr>
            <td align="left">Scale Limit</td>
            <td align="left">
              <xref target="fabric-scale-limits"/></td>
            <td align="left">Max N with JCT Ratio characterized</td>
            <td align="left">accelerator count</td>
          </tr>
          <tr>
            <td align="left">Failover Time</td>
            <td align="left">
              <xref target="link-failure-convergence"/></td>
            <td align="left">Loss duration on link fail</td>
            <td align="left">us</td>
          </tr>
          <tr>
            <td align="left">24h Stability</td>
            <td align="left">
              <xref target="soak-24h"/></td>
            <td align="left">JCT Ratio std deviation</td>
            <td align="left">dimensionless</td>
          </tr>
          <tr>
            <td align="left">UET Throughput (RUD)</td>
            <td align="left">
              <xref target="uet-throughput-by-transport-service"/></td>
            <td align="left">Binary search per transport service</td>
            <td align="left">Gbps, % line rate</td>
          </tr>
          <tr>
            <td align="left">UET First-Packet Latency</td>
            <td align="left">
              <xref target="uet-latency-characterization"/></td>
            <td align="left">PDC establish + first data</td>
            <td align="left">us</td>
          </tr>
          <tr>
            <td align="left">UET Spray Efficacy</td>
            <td align="left">
              <xref target="packet-spray-efficacy-under-uet-rud"/></td>
            <td align="left">JFI/MMR under RUD spray</td>
            <td align="left">dimensionless, OOO rate</td>
          </tr>
          <tr>
            <td align="left">UET PFC-Free Loss Rate</td>
            <td align="left">
              <xref target="uet-congestion-control-benchmarks"/></td>
            <td align="left">Incast without PFC enabled</td>
            <td align="left">%, retx overhead</td>
          </tr>
          <tr>
            <td align="left">LLR Retry Latency</td>
            <td align="left">
              <xref target="link-layer-enhancement-benchmarks"/></td>
            <td align="left">Per-hop error recovery time</td>
            <td align="left">nanoseconds</td>
          </tr>
          <tr>
            <td align="left">Packet Trimming Savings</td>
            <td align="left">
              <xref target="link-layer-enhancement-benchmarks"/></td>
            <td align="left">BW saved during congestion</td>
            <td align="left">% bandwidth</td>
          </tr>
          <tr>
            <td align="left">CBFC vs PFC HOL Blocking</td>
            <td align="left">
              <xref target="link-layer-enhancement-benchmarks"/></td>
            <td align="left">Head-of-line blocking duration</td>
            <td align="left">us</td>
          </tr>
          <tr>
            <td align="left">UET Collective BusBW</td>
            <td align="left">
              <xref target="uet-collective-communication-performance"/></td>
            <td align="left">AllReduce/AlltoAll over UET</td>
            <td align="left">Gbps per accelerator</td>
          </tr>
          <tr>
            <td align="left">PDC Establishment Rate</td>
            <td align="left">
              <xref target="uet-pdc-scalability-and-connection-setup-rate"/></td>
            <td align="left">Sustained PDC creation rate</td>
            <td align="left">PDCs/second</td>
          </tr>
          <tr>
            <td align="left">Max Concurrent PDCs</td>
            <td align="left">
              <xref target="uet-pdc-scalability-and-connection-setup-rate"/></td>
            <td align="left">Scale limit per NIC</td>
            <td align="left">count</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="asic-features">
      <name>ASIC Feature Categories (Informational)</name>
      <t>This appendix identifies ASIC feature categories relevant to AI fabric performance. Implementers <bcp14>SHOULD</bcp14> document which categories are present and enabled on the DUT. Specific vendor names are intentionally omitted.</t>
      <table anchor="tab-asic-features">
        <name>ASIC Feature Categories</name>
        <thead>
          <tr>
            <th align="left">Feature Category</th>
            <th align="left">Sub-types</th>
            <th align="left">Relevance to AI Fabric</th>
            <th align="left">What to Report</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Aggregate Switching BW</td>
            <td align="left">ASIC-level capacity</td>
            <td align="left">Cluster scale, bisection BW</td>
            <td align="left">Total Tbps; per-port speed (400/800GbE)</td>
          </tr>
          <tr>
            <td align="left">Buffer Architecture</td>
            <td align="left">Shared, VOQ, Cut-through</td>
            <td align="left">Microburst absorption, PFC behavior, lossless operation</td>
            <td align="left">Buffer type; total bytes; shared vs. dedicated split; per-port/queue allocation</td>
          </tr>
          <tr>
            <td align="left">Packet Distribution</td>
            <td align="left">Per-flow, Per-packet, Flowlet</td>
            <td align="left">ECMP load balancing quality and reordering risk</td>
            <td align="left">Supported granularities; in-fabric reorder buffer (yes/no)</td>
          </tr>
          <tr>
            <td align="left">Congestion Control</td>
            <td align="left">ECN marking, PFC, DCQCN</td>
            <td align="left">DCQCN convergence and lossless behavior</td>
            <td align="left">ECN granularity (port/queue/VOQ); PFC priorities; DCQCN parameter range</td>
          </tr>
          <tr>
            <td align="left">Adaptive Routing</td>
            <td align="left">Flowlet, ECMP, Spray, Topology-aware</td>
            <td align="left">Load balancing quality under collective patterns</td>
            <td align="left">Algorithm type; flowlet gap timer range; topology-aware support</td>
          </tr>
          <tr>
            <td align="left">Telemetry</td>
            <td align="left">Per-port, Per-queue, Per-flow</td>
            <td align="left">Required for KPI measurement during benchmarking</td>
            <td align="left">Monitoring granularity; streaming interval; INT support</td>
          </tr>
          <tr>
            <td align="left">Cluster Scale Support</td>
            <td align="left">2-tier, 3-tier</td>
            <td align="left">Applicable topology scales</td>
            <td align="left">Max cluster size per topology; ASIC count</td>
          </tr>
        </tbody>
      </table>
      <t>All values <bcp14>MUST</bcp14> be reported based on vendor documentation or measured capability. Additional DUT capabilities affecting benchmark results <bcp14>MUST</bcp14> also be documented.</t>
    </section>
    <section anchor="rocev2-frame">
      <name>RoCEv2 Test Frame Format</name>
      <table anchor="tab-rocev2-frame">
        <name>RoCEv2 Test Frame Format</name>
        <thead>
          <tr>
            <th align="left">Offset</th>
            <th align="left">Field</th>
            <th align="left">Size</th>
            <th align="left">Value / Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">00</td>
            <td align="left">Ethernet Dst MAC</td>
            <td align="left">6B</td>
            <td align="left">DUT next-hop MAC</td>
          </tr>
          <tr>
            <td align="left">06</td>
            <td align="left">Ethernet Src MAC</td>
            <td align="left">6B</td>
            <td align="left">Test equipment MAC</td>
          </tr>
          <tr>
            <td align="left">12</td>
            <td align="left">EtherType</td>
            <td align="left">2B</td>
            <td align="left">0x8100 (802.1Q) or 0x0800 (IPv4)</td>
          </tr>
          <tr>
            <td align="left">14</td>
            <td align="left">VLAN Tag (optional)</td>
            <td align="left">4B</td>
            <td align="left">PCP=3 (RoCEv2 priority), VID</td>
          </tr>
          <tr>
            <td align="left">18</td>
            <td align="left">IPv4 Header</td>
            <td align="left">20B</td>
            <td align="left">DSCP=26 (ECN-capable), Proto=17 (UDP)</td>
          </tr>
          <tr>
            <td align="left">38</td>
            <td align="left">UDP Header</td>
            <td align="left">8B</td>
            <td align="left">DstPort=4791 (RoCEv2), SrcPort=var</td>
          </tr>
          <tr>
            <td align="left">46</td>
            <td align="left">BTH (Base Transport Header)</td>
            <td align="left">12B</td>
            <td align="left">OpCode, DstQP, PSN, P_Key</td>
          </tr>
          <tr>
            <td align="left">58</td>
            <td align="left">RETH (if Write)</td>
            <td align="left">16B</td>
            <td align="left">VA, R_Key, DMA Length</td>
          </tr>
          <tr>
            <td align="left">74</td>
            <td align="left">Payload</td>
            <td align="left">var</td>
            <td align="left">Test data (incrementing octets)</td>
          </tr>
          <tr>
            <td align="left">var</td>
            <td align="left">ICRC</td>
            <td align="left">4B</td>
            <td align="left">Invariant CRC</td>
          </tr>
          <tr>
            <td align="left">var+4</td>
            <td align="left">FCS</td>
            <td align="left">4B</td>
            <td align="left">Ethernet Frame Check Sequence</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="uet-frame">
      <name>UET (Ultra Ethernet Transport) Frame Format</name>
      <t>UET runs over UDP/IP using IANA-assigned destination port 4793.</t>
      <table anchor="tab-uet-frame">
        <name>UET Frame Format</name>
        <thead>
          <tr>
            <th align="left">Offset</th>
            <th align="left">Field</th>
            <th align="left">Size</th>
            <th align="left">Value / Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">00</td>
            <td align="left">Ethernet Dst MAC</td>
            <td align="left">6B</td>
            <td align="left">DUT next-hop MAC</td>
          </tr>
          <tr>
            <td align="left">06</td>
            <td align="left">Ethernet Src MAC</td>
            <td align="left">6B</td>
            <td align="left">Test equipment MAC</td>
          </tr>
          <tr>
            <td align="left">12</td>
            <td align="left">EtherType</td>
            <td align="left">2B</td>
            <td align="left">0x8100 (802.1Q) or 0x0800 (IPv4)</td>
          </tr>
          <tr>
            <td align="left">14</td>
            <td align="left">VLAN Tag (optional)</td>
            <td align="left">4B</td>
            <td align="left">PCP=3 (UET priority class), VID</td>
          </tr>
          <tr>
            <td align="left">18</td>
            <td align="left">IPv4 Header</td>
            <td align="left">20B</td>
            <td align="left">DSCP=26, ECN=ECT(0), Proto=17 (UDP)</td>
          </tr>
          <tr>
            <td align="left">38</td>
            <td align="left">UDP Header</td>
            <td align="left">8B</td>
            <td align="left">DstPort=4793 (UET), SrcPort=entropy</td>
          </tr>
          <tr>
            <td align="left">46</td>
            <td align="left">UET Common Header</td>
            <td align="left">16B</td>
            <td align="left">Version, OpCode, PDC ID, PSN, Entropy Value, Flags</td>
          </tr>
          <tr>
            <td align="left">62</td>
            <td align="left">SES Header (Semantic)</td>
            <td align="left">var</td>
            <td align="left">Operation-specific (Write/Send/etc.)</td>
          </tr>
          <tr>
            <td align="left">var</td>
            <td align="left">PDS Header (Pkt Delivery)</td>
            <td align="left">var</td>
            <td align="left">Sequence, Credit, Ack fields</td>
          </tr>
          <tr>
            <td align="left">var</td>
            <td align="left">CMS Header (Cong. Mgmt)</td>
            <td align="left">var</td>
            <td align="left">ECN feedback, rate signals</td>
          </tr>
          <tr>
            <td align="left">var</td>
            <td align="left">Payload</td>
            <td align="left">var</td>
            <td align="left">Application data</td>
          </tr>
          <tr>
            <td align="left">var</td>
            <td align="left">ICRC</td>
            <td align="left">4B</td>
            <td align="left">Invariant CRC</td>
          </tr>
          <tr>
            <td align="left">var+4</td>
            <td align="left">FCS</td>
            <td align="left">4B</td>
            <td align="left">Ethernet Frame Check Sequence</td>
          </tr>
        </tbody>
      </table>
      <section anchor="key-differences-from-rocev2">
        <name>Key Differences from RoCEv2</name>
        <table anchor="tab-rocev2-vs-uet">
          <name>RoCEv2 vs. UET Comparison</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">RoCEv2 Value</th>
              <th align="left">UET Value</th>
              <th align="left">Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">UDP Dst Port</td>
              <td align="left">4791</td>
              <td align="left">4793</td>
              <td align="left">IANA-assigned for each protocol</td>
            </tr>
            <tr>
              <td align="left">Transport Endpoint</td>
              <td align="left">QP Number (24b)</td>
              <td align="left">PDC ID (variable)</td>
              <td align="left">Connectionless in UET</td>
            </tr>
            <tr>
              <td align="left">Sequence Number</td>
              <td align="left">PSN (24b)</td>
              <td align="left">PSN (extended)</td>
              <td align="left">Larger range for RUD OOO tolerance</td>
            </tr>
            <tr>
              <td align="left">Congestion Signal</td>
              <td align="left">ECN bits only</td>
              <td align="left">ECN + CMS sub-header</td>
              <td align="left">Sender + receiver signals in UET</td>
            </tr>
            <tr>
              <td align="left">Entropy Source</td>
              <td align="left">UDP src port</td>
              <td align="left">Explicit entropy field</td>
              <td align="left">Deterministic spray in UET</td>
            </tr>
            <tr>
              <td align="left">Ordering Guarantee</td>
              <td align="left">Always in-order (RC)</td>
              <td align="left">Per-service (ROD/RUD)</td>
              <td align="left">RUD allows OOO delivery</td>
            </tr>
            <tr>
              <td align="left">Min Header Overhead</td>
              <td align="left">~74B (Write)</td>
              <td align="left">~78B (est. Write)</td>
              <td align="left">Slight increase for sub-layer headers</td>
            </tr>
          </tbody>
        </table>
        <ol spacing="normal" type="1"><li>
            <t><strong>UDP Destination Port:</strong> UET uses port 4793 vs. RoCEv2 port 4791.</t>
          </li>
          <li>
            <t><strong>Entropy Value:</strong> Explicit entropy field for ECMP path selection. Test equipment <bcp14>MUST</bcp14> vary this field to achieve uniform path distribution.</t>
          </li>
          <li>
            <t><strong>Transport Service Indicator:</strong> Header encodes transport service (ROD/RUD/RUDI/UUD). Tests <bcp14>MUST</bcp14> set this to match the service being benchmarked.</t>
          </li>
          <li>
            <t><strong>PDC Identifier:</strong> Connectionless PDC ID replaces RoCEv2's Destination QP. Test equipment <bcp14>MUST</bcp14> track PDC lifecycle for accurate measurement.</t>
          </li>
          <li>
            <t><strong>Layered Sub-Headers:</strong> UET uses four sub-layers (SES, PDS, CMS, TSS) with variable-length headers. Implementations <bcp14>MUST</bcp14> follow <xref target="UEC-1.0"/> Section 4 for wire format details.</t>
          </li>
          <li>
            <t><strong>Optional Link Layer Headers:</strong> When LLR, Packet Trimming, or PRI features are enabled, additional link-layer framing may be present. Test equipment <bcp14>MUST</bcp14> be configured to recognize and parse these.</t>
          </li>
        </ol>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Contributions and review are solicited from the BMWG mailing list (bmwg@ietf.org). The BMWG chairs and Area Director are identified at https://datatracker.ietf.org/group/bmwg/about/.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
k0XdiO6KwrSVNFVbGend0XWLi7Q8nuig+Qyc4sT5C1b+kAItHUQuu1pXEpzL
+QgsS6l90LhCjmb/8gTZxbbqpIo74MY0VcCCJhlxFmIK7QcxNpp7jx/tDzCf
Sri1aayLp26KhTEQisOQjnowB+YcmIaICflN6UlQ/iOcY5UoFXAFIYOMSNVc
DRvu37i6OGyZq3fy56Rl3r07bNqMyrlWinFJFZ13HFQDwBY4Vp6CLJ1s865I
1oB1L5B0Lw/xHbvld2qUvr+DfNXm6ij3JEaEYlBjnQxErP1n3EdDrhRfaDhv
XbBedZwKKaXqNohkgcGC3SAHXyTXVJ0EbhiRTdsVauAKJTHpe1AjPyxFFwgn
ox2Qv2zVki8un8V9ftddZVSu6bcBRv0Rop1pwBALywaLRV/7oT7izn/GiEeB
rPatp/m/Z0ja+w4Jbb2kXMzVqr74XXM8iz+anpwtOtI6vNWNf9ugVs1cJGUU
qjqiZ34BOVBzCO78YllTrfurpckRVwVaQR4Kl+1579MWUsJ5sBhBx5awaDpY
JPqQRATFRhOT1fYQEnmczUrEinMtLhOQ+pRplrsGfndO07mPxASBEXneNDma
Lry8zPhtvop9uoEbv1OhgAvWyQ0tVdtwOp/w9X4ygmdwjAjtcfwhedKkYQfN
QI608nVbuCoOL8gCjm9Q8IVWnxYZy4g+zzHKUQ6BK7XwvNpfLVg23C69111q
marjEnN870TXpuFUGxUV7KAQPe22MwvgD2ADvBJHdVB+KOrfcxki9Y0F6aJy
hBGUILGIOsgS9r21SMQsuZpeqtlCUvBqME6TW5veeE1iqU3A8wlIPglP5ivZ
NwliE5CMK2U71uXmsf8S+fjlMr7xXo6yRV6j6LsQUnVlhEHhNOwPFyt+8DB8
9CdbqU+M6A2LWs2NDYv/Z2dXLfOnY+LNmZh4ZUVDmzsIdGvVcwPlIvYycd42
tUYom/S5urvgkS8dm3yUY9UScV18Hk2S/tIsEX53cWGNfVdJ+dF+9m6/N+ro
IgX+MVa28RCAvYJ2X03G/S79vnHCnfvPG6m29b9xeQymIIH69/AlOWTWFff5
Ew+W9IObhhqj9DQz4ZRiZojphYQa5H2TnD9PyxUnvJ9Ijng5TgLGJHZioQpM
Y9l1jCRzl+NqD4YXr1f4XryWs0SsjqToeaIUCLnuTP5gP+CyCwRmS1+aq1Ls
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

-->

</rfc>
