<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-calabria-bmwg-ai-fabric-training-bench-02" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="AI Fabric Bench">Benchmarking Methodology for AI Training Network Fabrics</title>
    <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-training-bench-02"/>
    <author initials="F." surname="Calabria" fullname="Fernando Calabria">
      <organization>Cisco</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>fcalabri@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Pignataro" fullname="Carlos Pignataro">
      <organization>Blue Fern Consulting</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>carlos@bluefern.consulting</email>
      </address>
    </author>
    <author initials="Q." surname="Wu" fullname="Qin Wu">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>
    <author initials="G." surname="Fioccola" fullname="Giuseppe Fioccola">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>Italy</country>
        </postal>
        <email>giuseppe.fioccola@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Reddy" fullname="Sowjanya Reddy">
      <organization>Apple</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>sowjredd@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="04"/>
    <area>Operations and Management</area>
    <workgroup>BMWG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 116?>

<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 Artificial Intelligence / Machine Learning (AI/ML) training clusters grow to tens of thousands of accelerators (GPUs or generic accelerator processing units (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 Remote Direct Memory Access (RDMA) over Converged Ethernet version 2 (RoCEv2) transport, the Ultra Ethernet Transport (UET) protocol defined by the Ultra Ethernet Consortium (UEC) Specification 1.0 <xref target="UEC-1.0"/>, congestion management (Priority Flow Control (PFC), Explicit Congestion Notification (ECN), Data Center Quantized Congestion Notification (DCQCN), Credit-Based Flow Control (CBFC)), load balancing strategies (Equal-Cost Multi-Path (ECMP), Dynamic Load Balancing (DLB), packet spraying), collective communication patterns (AllReduce, AllToAll, AllGather), and scale/soak testing.</t>
      <t>The methodology enables direct, reproducible comparison across different switch ASICs, vendor implementations, NIC transport stacks (RoCEv2 vs. UET), and fabric architectures (2-tier Clos, 3-tier Clos, rail-optimized).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://fcalabri.github.io/bmwg-ai-fabric-training-bench/draft-calabria-bmwg-ai-fabric-training-bench.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-calabria-bmwg-ai-fabric-training-bench/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        BMWG Working Group mailing list (<eref target="mailto:bmwg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/bmwg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/bmwg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/fcalabri/bmwg-ai-fabric-training-bench"/>.</t>
    </note>
  </front>
  <middle>
    <?line 126?>

<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 Ethernet Virtual Private Network (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; host-side configuration is documented in the test report as it materially affects results.</t>
        <t>The DUT boundary for all measurements in this document is the NIC-to-NIC Ethernet fabric segment.  Intra-node communication (proprietary accelerator interconnects, e.g., NVLink, Infinity Fabric/xGMI, or PCIe) and individual GPU/accelerator performance are explicitly out of scope.
Collective operation measurements (AllReduce, AllGather, AllToAll) are measured at the Ethernet fabric boundary; intra-node accelerator-interconnect contributions are reported separately when characterizing wide Expert Parallelism (wide-EP) or multi-node configurations.</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 Address Resolution Protocol (ARP) / Neighbor Discovery (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">
      <name>Terminology</name>
      <t>Terminology used in this document is defined in <xref target="TERMINOLOGY"/>. Readers should consult that document before applying the methodology defined here. Where a term overlaps with <xref target="RFC1242"/> or <xref target="RFC8238"/>, the terminology document provides AI fabric context extensions; the foundational definitions in those RFCs remain authoritative for general network benchmarking.</t>
      <t>All terminology used in this document — including the AI fabric, RoCEv2, UET, RDMA transport, congestion control (PFC, DCQCN, ECN, CBFC), load balancing (ECMP, Packet Spray, DLB/Flowlet), collective communication, and KPI vocabulary (JCT, JCT Ratio, BusBW, MMR, etc.) — is defined normatively in <xref target="TERMINOLOGY"/> and is not redefined here. The following table lists the single bench-specific extension introduced by this document:</t>
      <table anchor="tab-terminology">
        <name>Bench-Specific Terminology Extensions</name>
        <thead>
          <tr>
            <th align="left">Term</th>
            <th align="left">Definition</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <strong>PFC Pause Event</strong></td>
            <td align="left">A single PFC PAUSE frame transmitted on a priority class. Used in this document as the unit of count for PFC event-rate metrics (events/sec, cumulative duration) reported by the methodology in <xref target="test-congestion"/>.</td>
          </tr>
        </tbody>
      </table>
      <t>In addition to the BusBW reporting requirements specified in <xref target="TERMINOLOGY"/>, the runtime algorithm selected by the collective library <bcp14>MUST</bcp14> be verified via library tracing and documented as part of the test conditions for any AllReduce, AllGather, ReduceScatter, or AllToAll benchmark in this document.</t>
      <t>The scope of the DUT for the tests defined in this document is the set of leaf switches, spine switches, superspine switches (if applicable), and interconnecting links forming the AI training fabric, consistent with the Fabric DUT Boundary defined in <xref target="TERMINOLOGY"/>.</t>
      <section anchor="acronyms">
        <name>Acronyms</name>
        <t>Acronyms used in this document are expanded in the Acronyms appendix of <xref target="TERMINOLOGY"/>. Acronyms unique to the methodology defined herein are expanded on first use in the body of this document.</t>
      </section>
    </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. Every test report identifies which topology was 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 communications library (CCL) in use (e.g., NCCL, RCCL, oneCCL). The DUT boundary and rail mapping are fully documented in the test report.</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">Octal Small Form-factor Pluggable (OSFP) 400G-DR4, Direct Attach Copper (DAC) 3m cable</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 supports: RoCEv2 transport emulation (QP establishment, RDMA Write/Read, ECN processing, DCQCN rate control); configurable QP scaling (1-256 QPs per source-destination pair); programmable collective communication patterns (AllReduce, AllToAll, AllGather with configurable message sizes); and nanosecond-precision timestamping.</t>
        </section>
        <section anchor="minimum-measurement-accuracy-requirements">
          <name>Minimum Measurement Accuracy Requirements</name>
          <table anchor="tab-tgen-accuracy">
            <name>Minimum Measurement Accuracy Requirements</name>
            <thead>
              <tr>
                <th align="left">Parameter</th>
                <th align="left">Minimum Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Timestamp accuracy</td>
                <td align="left">&lt;= 100 nanoseconds</td>
              </tr>
              <tr>
                <td align="left">Frame rate accuracy</td>
                <td align="left">+/- 0.1% of specified rate</td>
              </tr>
              <tr>
                <td align="left">QP scaling range</td>
                <td align="left">1 to 256 QPs per src-dst pair</td>
              </tr>
              <tr>
                <td align="left">Message size range</td>
                <td align="left">1 KB to 8 GB</td>
              </tr>
              <tr>
                <td align="left">Flow counter resolution</td>
                <td align="left">Per-flow byte and packet counts</td>
              </tr>
              <tr>
                <td align="left">Loss measurement</td>
                <td align="left">0 ppm resolution</td>
              </tr>
              <tr>
                <td align="left">Burst generation</td>
                <td align="left">1-1000 frames at line rate</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="acceptable-implementations">
          <name>Acceptable Implementations</name>
          <t>The platform used is identified in all test reports.</t>
          <t><strong>(a) Hardware Traffic Generator</strong> — dedicated hardware capable of line-rate RDMA emulation meeting the Measurement Accuracy Requirements specified in this document. Suitable for point-to-point RDMA tests (<xref target="test-rdma"/> and <xref target="test-uec"/>).  For collective tests (<xref target="test-collective"/>), the following limitations are documented: whether synchronization barriers are reproduced, whether flow patterns are schedule-driven or gradient-driven, and whether straggler behavior is modeled.</t>
          <t><strong>(b) Accelerator Cluster</strong> — cluster running an actual collective communication library with RDMA tooling.  Preferred for the collective benchmarks in <xref target="test-collective"/>.  Host configuration (accelerator model, collective library name and version, PCIe topology, BIOS power management settings) is documented.  Any non-fabric overhead in timing measurements is quantified and reported separately.</t>
          <t>When a hardware generator is used for collective benchmarks, results should be cross-validated against an accelerator cluster at one or more overlapping (message_size, N) configurations.</t>
          <t>Discrepancies exceeding 10% in BusBW or JCT Ratio are investigated and reported.</t>
        </section>
      </section>
    </section>
    <section anchor="kpi-framework-and-metrics-taxonomy">
      <name>KPI Framework and Metrics Taxonomy</name>
      <ul empty="true">
        <li>
          <t>NOTE: Per BMWG charter, the definition of acceptance criteria or performance requirements is explicitly outside the scope of this Working Group. The KPI tables in this section define what is measured and how it is reported; they do not set thresholds. Indicative non-normative reference values reflecting current industry observations are provided in <xref target="indicative-reference-values"/>; those values <bcp14>MUST NOT</bcp14> be used as pass/fail thresholds in vendor evaluations.</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>
            </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>
            </tr>
            <tr>
              <td align="left">JCT Ratio</td>
              <td align="left">dimensionless</td>
              <td align="left">Measured JCT / Roofline JCT</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. See the BusBW definition in <xref target="TERMINOLOGY"/></td>
            </tr>
            <tr>
              <td align="left">Aggregate Throughput</td>
              <td align="left">Tbps</td>
              <td align="left">Total fabric goodput during collective phase</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>
            </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>
            </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">Clear-to-Send (CTS) / Acknowledgment (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">Forwarding Information Base (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>Each test runs for at least 60 seconds at each rate</t>
          </li>
          <li>
            <t>Binary search per <xref target="RFC2544"/> Section 26.1 is 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>Reported statistics: 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 is documented in the test report.</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 Reliable Connected (RC) / Unreliable Connected (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 is executed for comparison. Both unidirectional and bidirectional configurations are 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 is expected to achieve zero host-visible reordering despite per-packet spray because the transport layer natively tolerates unordered delivery.</t>
          </li>
        </ul>
      </section>
      <section anchor="uet-congestion-control-benchmarks">
        <name>UET Congestion Control Benchmarks</name>
        <t><strong>Objective:</strong> Evaluate UET's dual-sided (sender + receiver) congestion control under N:1 incast conditions vs. RoCEv2 DCQCN.</t>
        <t><strong>Procedure:</strong> Measure: (a) incast throughput at N = {2, 4, 8, 16, 32, 64}; (b) convergence time after doubling active senders (until all flows within 10% of fair share); (c) PFC avoidance with PFC disabled on the DUT; (d) receiver credit utilization.</t>
        <t><strong>Reporting:</strong> Tabulate incast throughput, convergence time, peak queue depth, PFC event count, and packet drop rate for UET vs. DCQCN per incast ratio. <strong>Critical differentiator:</strong> report whether UET achieves zero application-visible loss without PFC.</t>
      </section>
      <section anchor="link-layer-enhancement-benchmarks">
        <name>Link Layer Enhancement Benchmarks</name>
        <t><strong>Objective:</strong> Measure performance impact of optional link-layer enhancements: LLR, Packet Trimming (PT), and CBFC.</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t><strong>(a) LLR Retry Latency:</strong> inject controlled bit errors; measure LLR retry latency (expected sub-microsecond per hop) vs. transport-layer retransmission (~10-100us RTT). Run with 80% background load.</t>
          </li>
          <li>
            <t><strong>(b) Packet Trimming Effectiveness:</strong> configure 2:1 oversubscription bottleneck; measure time from congestion onset to first retransmission request, bandwidth saved vs. full-packet drops.</t>
          </li>
          <li>
            <t><strong>(c) CBFC vs. PFC:</strong> identical N:1 (N=32) incast scenarios; measure head-of-line blocking duration (CBFC is per-destination, PFC is per-priority), pause propagation hops, and throughput of non-congested flows.</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Before/after comparison table for each enhancement. Note which features are hardware-supported vs. software-emulated.</t>
      </section>
      <section anchor="uet-collective-communication-performance">
        <name>UET Collective Communication Performance</name>
        <t><strong>Objective:</strong> Measure collective communication (AllReduce, AllToAll, AllGather) performance over UET and compare directly to RoCEv2, isolating the transport protocol contribution to collective efficiency.</t>
        <t><strong>Procedure:</strong> Execute the collective benchmark suite from <xref target="test-collective"/> over UET RUD transport using a UEC-compliant collective library. The same accelerator count (N), message sizes, and fabric topology are used for both UET and RoCEv2 runs to ensure a valid comparison. Run UET RUD + packet spray as the primary configuration and UET ROD + ECMP as the secondary baseline.</t>
        <t>For AllReduce, if UET group keying (transport-layer reduction support per UEC Spec 1.0) is active on the DUT NIC, this is noted explicitly in the test report.</t>
        <t>When UET group keying is active during testing, report the observed BusBW computed from measured bytes transferred. The algo_factor defined in <xref target="TERMINOLOGY"/> (fixed per collective type) still applies to the formula; the observed transfer volume reflects group keying behavior.</t>
        <t>Document the group keying state (active / inactive) as a required result field. The runtime algorithm in use is reported per message-size bucket. See <xref target="TERMINOLOGY"/> for the BusBW definition and algo_factor values.</t>
        <t><strong>Reporting:</strong>  Report the percentage improvement in BusBW and JCT attributable to UET native packet spray and congestion control.</t>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-uet-collective">
          <name>UET Collective Communication Performance</name>
          <thead>
            <tr>
              <th align="left">Collective</th>
              <th align="left">Msg Size</th>
              <th align="left">N Accels</th>
              <th align="left">UET RUD BusBW</th>
              <th align="left">UET ROD BusBW</th>
              <th align="left">RoCEv2 RC BusBW</th>
              <th align="left">Delta UET/RoCEv2</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AlltoAll</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="uet-pdc-scalability-and-connection-setup-rate">
        <name>UET PDC Scalability and Connection Setup Rate</name>
        <t><strong>Objective:</strong> Measure PDC establishment rate and maximum concurrent PDC count vs. RoCEv2 QP-based connections.</t>
        <t><strong>Procedure:</strong> (a) PDC establishment rate: initiate PDC creation to M = {100, 1000, 10000, 100000} remote endpoints. (b) Data-before-handshake: measure first-byte latency for UET vs. RoCEv2 RDMA Write. (c) Maximum concurrent PDC count: scale until per-PDC throughput drops below 90% of single-PDC rate. The UEC specification <xref target="UEC-1.0"/> targets up to 1 million endpoints.</t>
      </section>
    </section>
    <section anchor="test-congestion">
      <name>Test Category 2: Congestion Management</name>
      <t>AI training workloads generate repetitive micro-congestion during the back-propagation gradient synchronization phase.</t>
      <section anchor="ecn-marking-accuracy-and-threshold">
        <name>ECN Marking Accuracy and Threshold</name>
        <t><strong>Objective:</strong> Verify that the DUT marks packets with ECN CE at the configured threshold with correct granularity.</t>
        <t><strong>Procedure:</strong> Configure threshold T on DUT egress queue. Verify: (a) no packets marked below T; (b) 100% marked above maximum threshold; (c) appropriate Weighted Random Early Detection (WRED) / Random Early Detection (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. The test characterizes 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 test characterizes whether the DUT demonstrates resilience via PFC watchdog or architectural immunity (e.g., VOQ-based scheduling); the mechanism observed is reported.</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 * 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 communications library (CCL) in use (e.g., NCCL, RCCL, oneCCL).</t>
      <section anchor="allreduce-benchmark">
        <name>AllReduce Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllReduce operations, the dominant collective for gradient synchronization in data-parallel training.</t>
        <t><strong>Procedure:</strong> Using N accelerators connected through the DUT fabric, execute AllReduce (sum) operations using a collective communications library benchmark suite (e.g., nccl-tests, rccl-tests, or equivalent).</t>
        <t>Test parameters:</t>
        <ul spacing="normal">
          <li>
            <t>Message sizes: 1 MB, 8 MB, 64 MB, 256 MB, 1 GB, 4 GB</t>
          </li>
          <li>
            <t>Accelerator counts (N): 8, 16, 32, 64, 128, 256, 512, 1024</t>
          </li>
          <li>
            <t>Minimum iterations per (message_size, N) pair: 100</t>
          </li>
          <li>
            <t>Load balancing strategies: ECMP, DLB, packet spray</t>
          </li>
        </ul>
        <t>For each (message_size, N) pair, record average, P50, P95, and P99 BusBW, ECN marking ratio, PFC pause count, and per-link utilization. BusBW is computed per the BusBW definition in <xref target="TERMINOLOGY"/>; algo_factor is fixed per collective type and does not vary with the algorithm the library selects at runtime. The runtime algorithm selected by the library for each message-size bucket is verified via library tracing and documented as part of the test conditions.</t>
        <t><strong>Reporting:</strong> Tabulate BusBW for each (message_size, N, LB_strategy, Algorithm (verified)) combination.  The "Algorithm (verified)" column is required; results without it are incomplete.  Plot BusBW vs. N for each message size. Report BusBW efficiency = BusBW / NIC_line_rate.</t>
      </section>
      <section anchor="alltoall-benchmark">
        <name>AlltoAll Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllToAll operations, the dominant collective for Mixture-of-Experts (MoE) expert parallelism dispatch and pipeline-parallel communication.</t>
        <t><strong>Procedure:</strong> Using the same message sizes, accelerator counts, iteration count, and load balancing strategies as <xref target="allreduce-benchmark"/>, execute AllToAll operations via the collective communication library.</t>
        <t>AllToAll generates the worst-case fabric stress pattern: every accelerator simultaneously sends a unique payload to every other accelerator in the group, creating maximum entropy and N-to-N incast
at every fabric link.  This makes AllToAll JCT the most sensitive single indicator of fabric congestion management quality.</t>
        <t>BusBW is computed per the BusBW definition in <xref target="TERMINOLOGY"/>; algo_factor is fixed per collective type and does not depend on topology or library implementation. The runtime algorithm in use is verified via library tracing and documented as part of the test conditions.</t>
        <t><strong>Measurement:</strong>  Report BusBW (average, P50, P95, P99), JCT per iteration, ECN marking ratio, PFC pause count, and per-link utilization for each (message_size, N, LB_strategy) combination.</t>
        <t><strong>Reporting:</strong> Same table format as <xref target="allreduce-benchmark"/>, with the "Algorithm (verified)" column required.  Additionally report JCT for each configuration; JCT degradation relative to the ECMP baseline is highlighted as the primary congestion sensitivity indicator.</t>
      </section>
      <section anchor="allgather-benchmark">
        <name>AllGather Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllGather operations, the dominant collective for weight and activation distribution in tensor-parallel and pipeline-parallel training.</t>
        <t><strong>Procedure:</strong> Using the same message sizes, accelerator counts, iteration count, and load balancing strategies as <xref target="allreduce-benchmark"/>, execute AllGather operations via the collective communication library.</t>
        <t>AllGather consists of a gather phase only — each accelerator contributes a shard and receives the full concatenated tensor.
There is no reduce phase, which produces lower peak fabric load than AllReduce at equivalent message size and N.  This makes AllGather a useful baseline for isolating the gather-path fabric contribution from the combined send-and-reduce cost.</t>
        <t>BusBW is computed per the BusBW definition in <xref target="TERMINOLOGY"/>; algo_factor is fixed per collective type and does not depend on the library's algorithm selection. The runtime algorithm in use is verified via library tracing and documented as part of the test conditions.</t>
        <t><strong>Measurement:</strong> Report BusBW (average, P50, P95, P99), JCT per iteration, ECN marking ratio, PFC pause count, and per-link utilization for each (message_size, N, LB_strategy) combination.</t>
        <t><strong>Reporting:</strong> Same table format as <xref target="allreduce-benchmark"/>, with the "Algorithm (verified)" column required.  Report BusBW efficiency = BusBW / NIC_line_rate.  Where results are compared to AllReduce under identical parameters, the BusBW ratio (AllGather / AllReduce) quantifies the fabric overhead attributable to the reduce phase.</t>
      </section>
      <section anchor="collective-communication-library-bus-bandwidth-summary">
        <name>Collective Communication Library Bus Bandwidth Summary</name>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-ccl-summary">
          <name>Collective Communication Bus Bandwidth Summary</name>
          <thead>
            <tr>
              <th align="left">Collective</th>
              <th align="left">Msg Size</th>
              <th align="left">N Accels</th>
              <th align="left">ECMP BusBW (Gbps/accel)</th>
              <th align="left">DLB BusBW (Gbps/accel)</th>
              <th align="left">Spray BusBW (Gbps/accel)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AlltoAll</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AlltoAll</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="test-jct">
      <name>Test Category 5: Job Completion Time (JCT) Benchmarks</name>
      <t>JCT is the single most important user-facing KPI for AI training fabrics, directly determining accelerator utilization and training cost.</t>
      <section anchor="synthetic-jct-under-controlled-conditions">
        <name>Synthetic JCT Under Controlled Conditions</name>
        <ul empty="true">
          <li>
            <t><strong>Objective:</strong> Measure JCT for a defined synthetic workload with a known computation-to-communication ratio to isolate fabric-induced overhead.</t>
            <t><strong>Procedure:</strong> Define a synthetic training iteration as a strictly sequential model:</t>
            <ol spacing="normal" type="1"><li>
                <t>Computation phase of C milliseconds (simulated sleep or GPU compute kernel)</t>
              </li>
              <li>
                <t>Communication phase: AllReduce of S bytes across N accelerators</t>
              </li>
            </ol>
            <table anchor="tab-synthetic-jct-params">
              <name>Synthetic JCT Test Parameters</name>
              <thead>
                <tr>
                  <th align="left">Parameter</th>
                  <th align="left">Values</th>
                </tr>
              </thead>
              <tbody>
                <tr>
                  <td align="left">Computation time C</td>
                  <td align="left">10 ms, 50 ms, 100 ms, 500 ms</td>
                </tr>
                <tr>
                  <td align="left">Message size S</td>
                  <td align="left">256 MB, 1 GB, 4 GB</td>
                </tr>
                <tr>
                  <td align="left">Accelerator count N</td>
                  <td align="left">64, 128, 256, 512, 1024</td>
                </tr>
                <tr>
                  <td align="left">Iterations</td>
                  <td align="left">1000</td>
                </tr>
              </tbody>
            </table>
            <t>Execute 1000 iterations and measure total wall-clock JCT.</t>
            <figure anchor="fig-jct-formula">
              <name>JCT Ratio Calculation</name>
              <artwork><![CDATA[
Roofline_seq = Iterations x (C + (8 x S x algo_factor) / B_acc)
JCT Ratio    = Measured_JCT / Roofline_seq

  where:
    C            = compute time per iteration (seconds)
    S            = message size per iteration (bytes)
    algo_factor  = fixed normalization constant per collective type;
                   see the BusBW definition in {{TERMINOLOGY}}
    B_acc        = aggregate per-accelerator NIC line rate (bits/second);
                   sum across all NICs serving the accelerator (e.g., in
                   rail-optimised topologies, the sum of all rail NIC speeds)
    Iterations   = number of synthetic iterations executed

  The factor of 8 converts S from bytes to bits to match the units of B_acc.
]]></artwork>
            </figure>
            <t>This model assumes strictly sequential compute and communication phases
and represents a conservative upper bound on communication overhead.
Many frameworks overlap these phases via gradient bucketing or asynchronous collectives, reducing the effective communication overhead visible in wall-clock JCT.</t>
            <t>Implementations using overlapped execution additionally report:</t>
            <figure anchor="fig-overlap-formula">
              <name>Overlap Fraction Calculation</name>
              <artwork><![CDATA[
Overlap_Fraction = 1 - (Measured_JCT - C_total) / Comm_time

  where:
    C_total   = Iterations x C
    Comm_time = Iterations x (8 x S x algo_factor) / B_acc
    S, algo_factor, B_acc as defined for Roofline_seq above.
]]></artwork>
            </figure>
            <t>An Overlap_Fraction of 0 indicates fully sequential execution; 1.0 indicates communication is perfectly hidden behind compute.</t>
            <t>When overlap is present, the residual fabric overhead is reported as:</t>
            <artwork><![CDATA[
Effective_Comm_Overhead = Measured_JCT - C_total
]]></artwork>
            <t>The Overlap_Fraction and communication-library overlap configuration (e.g., bucket size, number of async streams) are documented as part of the test configuration when this optional measurement is reported.</t>
            <t><strong>Reporting:</strong> Tabulate JCT Ratio for each (C, S, N, LB_strategy) combination.  Plot JCT Ratio vs. N to characterize fabric scalability.</t>
            <ul empty="true">
              <li>
                <t>NOTE: JCT Ratio &lt; 1.05 indicates excellent fabric performance; 1.15 indicates significant fabric-induced overhead. These are non-normative illustrative reference values only.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="mlperf-aligned-jct">
        <name>MLPerf-Aligned JCT</name>
        <t><strong>Objective:</strong> Measure JCT using MLPerf Training benchmark workloads <xref target="MLPERF"/> to enable comparison with published industry results.</t>
        <t><strong>Procedure:</strong> Execute MLPerf Training closed-division workloads (e.g., BERT, ResNet, GPT-3 175B) per MLPerf submission rules. Simultaneously capture all fabric KPIs from <xref target="kpi-framework-and-metrics-taxonomy"/>. Report time-to-train and/or tokens-per-second.</t>
      </section>
      <section anchor="multi-tenant-jct-interference">
        <name>Multi-Tenant JCT Interference</name>
        <t><strong>Objective:</strong> Quantify JCT impact when multiple training jobs share the same fabric.</t>
        <t><strong>Procedure:</strong> Configure two or more independent training jobs. Jobs are configured to 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>The DUT is expected to exhibit no memory leaks, crashes, or CPU spikes; any anomaly is 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>1 MB/hour</strong> for any process indicates a potential memory leak and is 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 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 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 are 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. A CV below 5% is recommended for test validity.</t>
        </li>
      </ol>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document defines benchmarking methodology for controlled laboratory environments and does not specify any protocol mechanism. It therefore introduces no new protocol-level security considerations beyond those of the underlying technologies it references. The considerations below follow the BMWG convention established in <xref target="RFC8238"/> and align with the companion terminology document <xref target="TERMINOLOGY"/>.</t>
      <t>Benchmarking activities as described in this document are limited to technology characterization of AI training fabrics using controlled stimuli in a laboratory environment, with dedicated address space and the constraints specified herein.</t>
      <t>The benchmarking network topology will be an independent test setup and <bcp14>MUST NOT</bcp14> be connected to devices that may forward the test traffic into a production network or misroute traffic to the test management network. This isolation requirement is particularly important for AI fabric benchmarking because the lossless transport modes referenced in this document (PFC, DCQCN, CBFC) propagate congestion hop-by-hop and can extend the blast radius of a misconfigured test beyond the immediate DUT.</t>
      <t>Benchmarking is performed on a "black-box" basis, relying solely on measurements observable external to the DUT as defined in <xref target="TERMINOLOGY"/>.</t>
      <t>Special capabilities <bcp14>SHOULD NOT</bcp14> exist in the DUT specifically for benchmarking purposes. Any implications for network security arising from the DUT <bcp14>SHOULD</bcp14> be identical in the lab and in production networks. In particular, RDMA memory-region permissions are properties of the deployed configuration, not of the benchmarking methodology, and <bcp14>SHOULD</bcp14> reflect production posture during testing.</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 for IPv4; 2001:db8::/32 per <xref target="RFC3849"/> for IPv6) is <bcp14>RECOMMENDED</bcp14> to prevent accidental interaction with production infrastructure.</t>
      <t>The following considerations are specific to the methodology defined in this document:</t>
      <ul spacing="normal">
        <li>
          <t><strong>PFC leakage:</strong> PFC PAUSE frames generated under incast or storm conditions (<xref target="pfc-behavior-under-incast"/>, <xref target="pfc-storm-and-deadlock-resilience"/>) that escape the test environment can hang adjacent production switches sharing the same priority class. Physical or VLAN-based isolation of the test fabric is required.</t>
        </li>
        <li>
          <t><strong>Line-rate RDMA traffic generators:</strong> the equipment specified in <xref target="traffic-generator-requirements"/> is capable of saturating production links at line rate; such generators <bcp14>MUST</bcp14> be confined to the test fabric.</t>
        </li>
        <li>
          <t><strong>PFC disabled in <xref target="uet-congestion-control-benchmarks"/>:</strong> the UET PFC-free incast test deliberately disables PFC on the DUT. In this configuration, traffic leaking to adjacent infrastructure cannot be backpressured and will be dropped on the adjacent device's queues. Isolation is mandatory.</t>
        </li>
        <li>
          <t><strong>RDMA QP and PDC namespace isolation:</strong> 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.</t>
        </li>
        <li>
          <t><strong>UET transport security sub-layer (TSS):</strong> <bcp14>SHOULD NOT</bcp14> be enabled during performance benchmarking unless transport security overhead is explicitly being measured.</t>
        </li>
      </ul>
    </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="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="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="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>
        <reference anchor="TERMINOLOGY">
          <front>
            <title>Benchmarking Terminology for AI Network Fabrics</title>
            <author fullname="Fernando Calabria" initials="F." surname="Calabria">
              <organization>Cisco</organization>
            </author>
            <author fullname="Carlos Pignataro" initials="C." surname="Pignataro">
              <organization>Blue Fern Consulting</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei</organization>
            </author>
            <date day="21" month="April" year="2026"/>
            <abstract>
              <t>   This document defines benchmarking terminology for evaluating
   Ethernet-based network fabrics used in distributed Artificial
   Intelligence (AI) training and inference workloads.  It provides a
   unified vocabulary consolidating and extending terms from RFC 1242,
   RFC 8238, and the companion AI fabric methodology documents,
   establishing precise, vendor-neutral definitions for collective
   communication primitives, RDMA transport mechanisms (RoCEv2 and Ultra
   Ethernet Transport), congestion control behaviors, AI-specific Key
   Performance Indicators (KPIs), and fabric topology concepts.

   This document is a companion to
   [I-D.calabria-bmwg-ai-fabric-training-bench] and
   [I-D.calabria-bmwg-ai-fabric-inference-bench].  Those documents
   SHOULD NOT be applied without first consulting the terminology
   defined herein.  Where definitions herein overlap with RFC 1242 or
   RFC 8238, the AI fabric context definition in this document takes
   precedence.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-terminology-01"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3849">
          <front>
            <title>IPv6 Address Prefix Reserved for Documentation</title>
            <author fullname="G. Huston" initials="G." surname="Huston"/>
            <author fullname="A. Lord" initials="A." surname="Lord"/>
            <author fullname="P. Smith" initials="P." surname="Smith"/>
            <date month="July" year="2004"/>
            <abstract>
              <t>To reduce the likelihood of conflict and confusion when relating documented examples to deployed systems, an IPv6 unicast address prefix is reserved for use in examples in RFCs, books, documentation, and the like. Since site-local and link-local unicast addresses have special meaning in IPv6, these addresses cannot be used in many example situations. The document describes the use of the IPv6 address prefix 2001:DB8::/32 as a reserved prefix for use in documentation. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3849"/>
          <seriesInfo name="DOI" value="10.17487/RFC3849"/>
        </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="10.1145/3651890.3672233"/>
        </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="10.1145/2785956.2787484"/>
        </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 813?>

<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="indicative-reference-values">
      <name>Indicative Reference Values (Non-Normative)</name>
      <t>This appendix provides indicative reference values for the KPIs defined in <xref target="kpi-framework-and-metrics-taxonomy"/>, reflecting current industry observations for distributed AI training workloads as of 2025-2026. These values are NON-NORMATIVE and do not constitute benchmarking acceptance criteria or performance requirements. Per the BMWG charter, the definition of acceptance criteria or performance requirements is explicitly outside the scope of this Working Group. Implementers may use these values as contextual references when interpreting results; they <bcp14>MUST NOT</bcp14> be used as pass/fail thresholds in vendor evaluations. Deployment-specific targets will vary by topology, accelerator architecture, collective library, and operator requirements.</t>
      <table anchor="tab-indicative-values">
        <name>Indicative Reference Values for Distributed AI Training Fabrics (Non-Normative)</name>
        <thead>
          <tr>
            <th align="left">KPI</th>
            <th align="left">Indicative Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">JCT Ratio</td>
            <td align="left">&lt;= 1.05 (&lt;= 1.15 acceptable)</td>
          </tr>
          <tr>
            <td align="left">BusBW</td>
            <td align="left">&gt;= 90% of NIC line rate (intra-pod)</td>
          </tr>
          <tr>
            <td align="left">Aggregate Throughput</td>
            <td align="left">&gt;= 95% of bisection BW</td>
          </tr>
          <tr>
            <td align="left">Packet Drop Rate</td>
            <td align="left">0 ppm (lossless)</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 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 are reported based on vendor documentation or measured capability. Additional DUT capabilities affecting benchmark results are also 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 / TPID</td>
            <td align="left">2B</td>
            <td align="left">0x0800 (IPv4) when untagged; 0x8100 (Tag Protocol Identifier — TPID) when 802.1Q-tagged</td>
          </tr>
          <tr>
            <td align="left">14</td>
            <td align="left">802.1Q Tag (optional)</td>
            <td align="left">4B</td>
            <td align="left">When tagged: Tag Control Information (TCI: Priority Code Point (PCP)=3 for RoCEv2 priority, VLAN Identifier (VID)) followed by inner EtherType 0x0800. Omit this row entirely when untagged and shift subsequent offsets back by 4B</td>
          </tr>
          <tr>
            <td align="left">18</td>
            <td align="left">IPv4 Header</td>
            <td align="left">20B</td>
            <td align="left">DSCP=26 (AF31, Assured Forwarding class 31), ECN=ECT(0) (ECN-Capable Transport), 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">RDMA Extended Transport Header (RETH; if Write)</td>
            <td align="left">16B</td>
            <td align="left">Virtual Address (VA), R_Key, Direct Memory Access (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 / TPID</td>
            <td align="left">2B</td>
            <td align="left">0x0800 (IPv4) when untagged; 0x8100 (TPID) when 802.1Q-tagged</td>
          </tr>
          <tr>
            <td align="left">14</td>
            <td align="left">802.1Q Tag (optional)</td>
            <td align="left">4B</td>
            <td align="left">When tagged: TCI (PCP=3 for UET priority class, VID) followed by inner EtherType 0x0800. Omit this row entirely when untagged and shift subsequent offsets back by 4B</td>
          </tr>
          <tr>
            <td align="left">18</td>
            <td align="left">IPv4 Header</td>
            <td align="left">20B</td>
            <td align="left">DSCP=26 (AF31), 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 varies 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 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 tracks 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 is configured to recognize and parse these.</t>
          </li>
        </ol>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This work has benefited from the discussions that occurred during the joint IPPM and BMWG meeting and on the BMWG mailing list. Thanks to Carsten Rossenhoevel, Mohamed Boucadair, and Sowjanya Reddy for valuable review and comments.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
KFIJYbtHy20kZrc0jM3tWyV8TSMDeNgHw9YYPD6Gy8dd6bQqkVYaMs+Q8uFN
/JaV/l4lpeei3niQhqGfoNbLnVHwChfWwBEb9w8HGqCfYFF4UqYCsUScOBq0
szsOHPm8s9ZFzyfGzbBqsl21ebUmrY1LNFq+V0H5ax2gl5ikZIsvtXMWVF3m
l3j5MdfBV9+BZaB2Ag+yz0oZ/2rDUwcpvOErdGZdz06lPZsoyigKI3c91eaG
NdKDDo+VZUFxOIbiwPvpRI1vUD88ywu6nTnZjukpCJ2X1VjyqLcM84j2YOcz
hiP9DLsZ9xJj8zwHCZSCrj7qRflfraVXL0beTPEd7yMqJ923VE4NrHi0uqBH
F16nLbgYBm8vTs2BbaP17e97+3AbrgquBLm6nh5/cxMqvM3xnU3HLFzvpQdI
NpD5qNKTooIz395iA3OotHn2nSyUa6JduWZIucbQnUo/ieL3vpepKZNNXiRc
i/eOFNq8PgSqTFXQ16DXB3QAyYc+kYgB7Muli1jXnNHGOc3k3Ia3o9pu6u6O
vJNb4tu/qJYSWzOZq4XqH1oOirfhWRxvU7HMfkvUTcsaFRnbFcwufl1Nwd7c
6kP2qkFTPk49ZqvnztbOs4j+PLeh/jpZKJTnF+fR+cXl2f7VyS9H6uFiRZUd
G2kJn0BFJ9SoW6wZBbCJ0sZQsUMdMjTmtEE1Al8TiojCoS2WWJfdB1P79w1c
0zyJ/LH/lU1fAw1DYbPKr5lM/A2KbbV9JhXCKuAwUa9DAJZCorw/lQi08S41
MWuwgDDPJQFMXcFclvyuYrtlCwInqxTFJjNlH7sAhNC4RK1nyvF4pC3AMs2U
yVs3tYkKm3G40iDqAqrzqFqfJ6innqyKGBDrtRTYYfod7JJXoFceoEBF3riv
yIp/ei35KQ3+sP0siMpuqkoq1PHPr20rmVoeJnyjMakjQy2p4PI3A2lDHn/G
j/dTDaMBfwgYzSH6jiot3DLz+dQ0rCMprLsQHHndbyUtD1EObrlQPW0uS+RY
rVE16iLkaL9Hiz2W8AcbZ8nRLCczKa3CsRIgRdWqyXXi46xBhQypN5qBHzIn
RLiBLIyKKCcrkoNquO/MLxJfH4wkfhPOMauGdgRGy55FUEVktgRqLUYVrtmF
lEl9Y0awGhzumAH1I2QDF2yW4QUMEl2BJhbcm1+5GU5mgxFW22s83vTYHI6t
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

-->

</rfc>
