<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-calabria-bmwg-ai-fabric-training-bench-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.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-00"/>
    <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="February" day="26"/>
    <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 apples-to-apples 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 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 during a collective: (data_size x algo_factor) / time</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>Qualifying platforms: (a) dedicated hardware traffic generators at line-rate RDMA emulation meeting the accuracy requirements of <xref target="minimum-measurement-accuracy-requirements"/>, or (b) instrumented GPU clusters with RDMA tooling with fully documented host configuration. When GPU clusters are used, any non-fabric overhead <bcp14>MUST</bcp14> be quantified and reported separately.</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</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 to RoCEv2.</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. Same accelerator count, message sizes, and fabric topology. Run UET RUD + packet spray as primary; UET ROD + ECMP as secondary baseline.</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 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></t>
        <ul spacing="normal">
          <li>
            <t>Message sizes: 1MB, 8MB, 64MB, 256MB, 1GB, 4GB</t>
          </li>
          <li>
            <t>Accelerator counts: N = {8, 16, 32, 64, 128, 256, 512, 1024}</t>
          </li>
          <li>
            <t>Execute at least 100 iterations per (message_size, N) pair</t>
          </li>
          <li>
            <t>Report average, P50, P95, P99 BusBW</t>
          </li>
          <li>
            <t>Run under each load balancing strategy (ECMP, DLB, spray)</t>
          </li>
        </ul>
      </section>
      <section anchor="alltoall-benchmark">
        <name>AlltoAll Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AlltoAll operations -- used in Mixture-of-Experts (MoE) models and expert parallelism.</t>
        <t><strong>Procedure:</strong> Execute AlltoAll with same parameters as <xref target="allreduce-benchmark"/>. AlltoAll creates the worst-case congestion scenario: every accelerator simultaneously sends to every other. Report JCT per iteration -- the most sensitive indicator of fabric congestion management quality.</t>
      </section>
      <section anchor="allgather-benchmark">
        <name>AllGather Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllGather operations -- used for parameter distribution in tensor-parallel and pipeline-parallel training.</t>
        <t><strong>Procedure:</strong> Execute AllGather with same parameter sweeps as <xref target="allreduce-benchmark"/>. Measure BusBW, JCT, and fabric health indicators.</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">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>
      </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>
        <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:</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">10ms, 50ms, 100ms, 500ms</td>
            </tr>
            <tr>
              <td align="left">Message size S</td>
              <td align="left">256MB, 1GB, 4GB</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>
        <figure anchor="fig-jct-formula">
          <name>JCT Ratio Calculation</name>
          <artwork type="ascii-art"><![CDATA[
Roofline JCT = Iterations x (C + S x algo_factor / NIC_line_rate)
JCT Ratio    = Measured_JCT / Roofline_JCT
]]></artwork>
        </figure>
        <ul empty="true">
          <li>
            <t>JCT Ratio &lt; 1.05 = excellent fabric performance; &gt; 1.15 = significant fabric-induced overhead.</t>
          </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="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="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="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-00"/>
        </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 726?>

<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:
H4sIAAAAAAAAA+1963bbVpLufz7FPs7KGtIhSFGWHVtq57RESY46ulmUk+np
1ZMFkqCINkkwAChZbTnPcp7lPNmpr6r2BbzIdmfm15msmAJBYF9q16571Y6i
qFam5STZNU8OktlgPI3z9+nsxpwl5TgbZpPs5t6Mstzsn5jrPE5n+O08Ke+y
/L05jvt5Oiie1OJ+P09uqQl6Sm4abuxJbZgNZvGUWh/m8aiMBvEEP8dRf3p3
E8VpNOKno1Kbjvp4Ldraqg3iMrnJ8vtdk85GWa1WLPrTtCjSbFbez6m9k6Pr
41o6z3dNmS+Kcntr69XWdi3Ok5iGcTFP8rikZwsTz4bmLJ7FN8k0mZVPahj4
TZ4t5pjw2S9vntTeJ/d0c0hNzsoknyVldIixUpclvfxrPMlm1N99UtQKAk75
62+LrEyKXTPLavN01/ytzAZNU2R5mSejgq7up7j4e43g8axWu01mi2S3Zox2
ij7pm0zil0yA/Qa/0d1pnE52DWDz5zQpR60sv8GbaTle9Gm8IwVf+1HoPaFX
JgS9oqRXxmU5L3bbbftqSxprpdnjjbS/Zr1a43I6eVKrxQvCmRyTjYys+jEB
lICYma42RL8ZWlEC33GrepPmumu6aTHI+GsisLDj/vMAv7QG2TRovRvnk6ww
l+nNLC7jPPONd1tLd7n1g8ki4SGZLqHGYlLSDMLOBtzen/v02Iieot6Cp2yn
b9OZ+WXhu3rbsl+5jx8X8V2Shq3208mkdbf485h/WZrCm3RRJPM5DSvNBoNs
EgDoTat6c0PzN9pCa6QPhx3VZlk+pZ1wyyh4ddztbO9s6+V2p/PKXj7f2bGX
L1/auy8739u7L7efvfSX9oFXW1v8wLujbtRpbe3ysCw1eTchJDFH5Zj3FIjH
rJjTLjH1d0fXDdObJ4N0lA54mxp6+wm/7VEI/0Uy6aWmsHjUULqY8mNDwvVd
s721/TzaeiFDiPObJMT+BRpI9H3sKkJWkJUqbF687DzH5dHPl+fRwdF598fq
jB6lj3iJic3lwUGEL+vnwyvba5m/xIOsr3eN4kJvMRwTcoU/6Qs/tcx1mi9u
k2Q4Xig6+Pd+SgvqI1l9xEHmWbT1ku8USZ4mBaZuh1QlepZOg/rInk9u5zPQ
kqjToTdOT8++GjKnWA36nN0siAqbs2yYTEwvyW/p4UeA9CZO39/Fw6ahFY8n
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
icIAAA==

-->

</rfc>
