<?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-03" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.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-03"/>
    <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="July" day="06"/>
    <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 determines 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. The tests cover 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 switch ASICs, NIC transport stacks (RoCEv2 and UET), and fabric architectures (2-tier Clos, 3-tier Clos, and 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>Distributed AI/ML training workloads impose traffic requirements that standard data center fabrics were not designed to meet. Traditional data center traffic varies in flow size and protocol mix. AI training generates synchronized, bandwidth-intensive east-west traffic dominated by collective communication operations: AllReduce, AllToAll, and AllGather. These workloads require lossless transport (via RDMA over Converged Ethernet, RoCEv2), bounded tail latency, uniform load distribution across all fabric paths, and the ability to absorb coordinated micro-bursts from thousands of accelerators simultaneously.</t>
      <t>Existing BMWG methodologies do not address 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 congestion behavior specific to GPU-to-GPU traffic. <xref target="RFC8238"/> and <xref target="RFC8239"/> establish data center benchmarking terminology and methodology but predate large-scale RoCEv2 deployment and do not address 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"/> shows the need for a 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 defines a benchmarking methodology 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="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. See <xref target="INFERENCE-BENCH"/> for the companion fabric-level benchmarking methodology addressing AI inference serving workloads.</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, 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"); this co-optimizes 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">64 B 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">Burst lengths at line rate sufficient to exceed DUT buffering; configurable beyond 1000 frames</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 pass/fail criteria. 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 criteria 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>
          </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. This test extends <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 five 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>
          <li>
            <t>UET RUD + DLB/Flowlet</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, the UET group keying state (transport-layer reduction support per UEC Spec 1.0) on the DUT NIC — active or inactive — is documented as a required result field 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>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.</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, which creates 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 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; it directly determines accelerator utilization and training cost.</t>
      <section anchor="synthetic-jct-under-controlled-conditions">
        <name>Synthetic JCT Under Controlled Conditions</name>
        <t><strong>Objective:</strong> Measure JCT for a defined synthetic workload with a known computation-to-communication ratio to isolate fabric-induced overhead.</t>
        <t><strong>Procedure:</strong> Define a synthetic training iteration as 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, in seconds
                   (convert the millisecond values in the
                   parameter table to seconds)
    S            = message size per iteration (bytes)
    algo_factor  = fixed normalization constant per collective
                   type; see the BusBW definition in the
                   companion terminology document
    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, which reduces 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; values between 1.05 and 1.15 are acceptable; a ratio above 1.15 indicates significant fabric-induced overhead. These are non-normative illustrative reference values only.</t>
          </li>
        </ul>
      </section>
      <section anchor="mlperf-aligned-jct">
        <name>MLPerf-Aligned JCT</name>
        <t><strong>Objective:</strong> Measure JCT using MLPerf Training benchmark workloads <xref target="MLPERF"/> to enable comparison with published industry results.</t>
        <t><strong>Procedure:</strong> Execute MLPerf Training closed-division workloads (e.g., BERT, ResNet, GPT-3 175B) per MLPerf submission rules. Simultaneously capture all fabric KPIs from <xref target="kpi-framework-and-metrics-taxonomy"/>. Report time-to-train and/or tokens-per-second.</t>
      </section>
      <section anchor="multi-tenant-jct-interference">
        <name>Multi-Tenant JCT Interference</name>
        <t><strong>Objective:</strong> Quantify JCT impact when multiple training jobs share the same fabric.</t>
        <t><strong>Procedure:</strong> Configure two or more independent training jobs. Jobs 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> Characterize 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 objective of the soak test is to monitor and document fabric behavior under extended load. The methodology does not establish pass/fail criteria for any reported metric. Any memory leaks, crashes, or other anomalies encountered during the test <bcp14>MUST</bcp14> be documented as an application log file or other dedicated file with their timestamps and durations.</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; this slope is a reporting trigger for investigation, not a pass/fail criterion. Also monitor forwarding-plane counter wraparounds and hardware table occupancy trends.</t>
      </section>
    </section>
    <section anchor="reporting">
      <name>Reporting Format</name>
      <t>Per the BMWG charter, the definition of acceptance criteria or performance requirements is explicitly outside the scope of this Working Group. This methodology defines what is measured and how it is reported; it does not set minimum acceptable values, certification, or pass/fail criteria. Any deployment-specific performance objectives are outside the scope of this document.</t>
      <t>Results <bcp14>MUST</bcp14> be reported per the BusBW reporting format defined in Section 3 of <xref target="TERMINOLOGY"/>.</t>
      <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, Packet Rate Improvement (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="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>
            <author fullname="Sowjanya Reddy" initials="S." surname="Reddy">
              <organization>Apple</organization>
            </author>
            <date day="4" month="June" 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
   "Benchmarking Terminology for Network Interconnect Devices" [RFC1242]
   and "Data Center Benchmarking Terminology" [RFC8238], 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 the AI training fabric benchmarking
   methodology [I-D.calabria-bmwg-ai-fabric-training-bench] and the AI
   inference fabric benchmarking methodology
   [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 the
   foundational benchmarking terminology in [RFC1242] or [RFC8238], this
   document provides AI fabric context extensions and refinements; the
   foundational definitions in those RFCs remain authoritative for
   general network benchmarking.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-terminology-02"/>
        </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="INFERENCE-BENCH">
          <front>
            <title>Benchmarking Methodology for AI Inference Serving 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>
            <author fullname="Sowjanya Reddy" initials="S." surname="Reddy">
              <organization>Apple</organization>
            </author>
            <date day="4" month="June" year="2026"/>
            <abstract>
              <t>   This document defines benchmarking terminology, methodologies, and
   Key Performance Indicators (KPIs) for evaluating Ethernet-based AI
   inference serving network fabrics.  As Large Language Model (LLM)
   inference deployments scale to disaggregated prefill/decode
   architectures spanning hundreds or thousands of accelerators (GPUs/
   XPUs), the interconnect fabric becomes the critical bottleneck
   determining Time to First Token (TTFT), Inter-Token Latency (ITL),
   and aggregate throughput in tokens per second (TPS).  This document
   establishes vendor-independent, reproducible test procedures for
   benchmarking fabric-level performance under realistic AI inference
   workloads.

   Coverage includes RDMA-based KV cache transfer between disaggregated
   prefill and decode workers, Mixture-of-Experts (MoE) expert
   parallelism AllToAll communication, request routing and load
   balancing for inference serving, congestion management under bursty
   inference traffic patterns, and scale/soak testing.  The methodology
   enables direct, equivalent comparison across implementations, NIC
   transport stacks (RoCEv2, UET), and fabric architectures.

   This document is a companion to [TRAINING-BENCH], which addresses
   training workloads.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-inference-bench-02"/>
        </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 821?>

<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"/>. The values reflect 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 criteria 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 UDP destination port 4793 (IANA registration pending).</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">4791 is IANA-assigned (RoCEv2); 4793 registration is pending</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 and Mohamed Boucadair for valuable review and comments.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+29a3IbWZIm+p+rOFeytAaUCBCkKKVEtWqKBEmJnXxAJJXZ
NW09sgAQIKIEIJARAVJsUWWzh5kF3LXcpcxKxj93P48IAJSUWW1TZnPTqigg
EOftx9+PKIo2yrScJLvm0X4yG4yncf4xnV2b06QcZ8Nskl3fmVGWm71jc5XH
6Qy/nSXlbZZ/NEdxP08HxaONuN/Pkxvqgt6Sh4Y7e7QxzAazeEq9D/N4VEaD
eIKf46g/vb2O4jQa8dtRqV1HfTSLOk83BnGZXGf53a5JZ6NsY6NY9KdpUaTZ
rLybU3/Hh1dHG+k83zVlvijK7U7nZWd7I86TmKZxPk/yuKR3CxPPhuY0nsXX
yTSZlY82MPHrPFvMseDTX9882viY3NHDIXU5K5N8lpTRAeZKQ5bU+EM8yWY0
3l1SbBS0OeWH3xZZmRS7ZpZtzNNd829lNmiZIsvLPBkV9Oluig//vkH78XRj
4yaZLZLdDWN0UIxJ32QRv2ay2W/wGz2dxulk12Bv/pwm5aid5ddomZbjRZ/m
O9Lt23xw9x5RkwntXlFSk3FZzovdzU3btC2dtdPs4U42v+e82uNyOnm0sREv
CGZyLDYycupHtKG0iZnpakf0m6ETpe07alcf0lp3TTctBhl/HWSLWYnjfz9L
y2RoLkssiX9KZJvskv48QKP2IJsGA3fjfJIVppdez+IyzjM/brdde8oD708W
Cc/WdAlqFpOSFveN8xjwUH/uUw8j6oAmEnRg5/MunZlfF34W79r2Kw//dhHf
Jml1wO44ncXhQP10MmnfLv485pdrC36TLopkPqdFpNlgkE2CnX7Trj5cO+Jx
GU/uwhGvtdP2SNuvHvsyu/1rPLuLzUUyHN75gS/bwRMedW8+nyTfuK8F9ZpT
8z9f4zsPuTHL8ild7Bu+URdH3a3tnW39uP1sZ0c/Pn+x9Uw/vth++sJ/fKkf
X3Y6/O77w2601e7s8rAWDb6fEHSbw3LMyABYb1bM6XqbxvvDq6a5nCeDdJQO
GL8Yav2IW3vYx3+RLLfWFUCLOkoXU35tSCveNdud7WdR57lMIc6vk/DaLtBB
ou2BDjDY1eHF6fHZ+cn5m7/QmUUH7bW3NMmn6Yxx+MYG0Gh1856+2OENOT47
Orw4POseRvv09+3DfVI3SU6XPpGrT80Pf+mdacvKPj5ITtCIcXNvfz/Cl9W7
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
Mv43tFziDor2AAA=

-->

</rfc>
