<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-calabria-bmwg-ai-fabric-training-bench-05" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="AI Training Fabric Benchmarking">Benchmarking Methodology for AI Training Network Fabrics</title>
    <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-training-bench-05"/>
    <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="October" day="08"/>
    <area>Operations and Management</area>
    <workgroup>BMWG</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 162?>

<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, 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 172?>

<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 RDMA transport with negligible application-visible loss, bounded tail latency, uniform load distribution across all fabric paths, and the ability to absorb coordinated micro-bursts from thousands of accelerators simultaneously. RoCEv2 deployments typically meet the loss requirement by operating the fabric lossless (PFC/ECN); UET is designed to tolerate wire-level loss and recover via retransmission and packet trimming (see the Zero Packet Loss definition in <xref target="TERMINOLOGY"/>).</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. The reporting requirements that make this separation auditable, and the normalization basis that keeps it intact, are specified in <xref target="comparability-normalization"/>.</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-and-companion-work">
        <name>Relationship to Existing and Companion Work</name>
        <table anchor="tab-existing-work">
          <name>Relationship to Existing and Companion 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.</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="TERMINOLOGY"/></td>
              <td align="left">Companion document; normative source for the terminology used throughout this document</td>
            </tr>
            <tr>
              <td align="left">
                <xref target="INFERENCE-BENCH"/></td>
              <td align="left">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 with a non-zero quanta value transmitted on a priority class. Zero-quanta (X-ON / resume) frames are excluded from the count, since implementations that signal resume explicitly would otherwise report roughly double the event rate of implementations that let the pause timer expire; X-ON frames are instead used to bound the paused interval for the cumulative-duration metric. 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 compared only under the conditions specified in <xref target="comparability-normalization"/>, which defines the normalization basis used by this methodology and the parameters that <bcp14>MUST</bcp14> match before two results are compared.</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" align="center"><![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 (schematic; only 4 of N rails and hosts shown)</name>
            <artwork type="ascii-art" align="center"><![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] |
+--------+ +--------+ +--------+ +--------+
]]></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 diagram is schematic: it depicts a representative subset of rails and hosts, not the full cross-host fan-out; in the complete topology, the Rail-N leaf switch connects to GPU[N] of every host. The DUT boundary and rail mapping are fully documented in the test report.</t>
        </section>
      </section>
      <section anchor="comparability-normalization">
        <name>Result Comparability and Normalization</name>
        <t><xref target="reference-fabric-topologies"/> requires that results obtained under different topologies be compared only after normalization. This section defines what that normalization is, which parameters <bcp14>MUST</bcp14> be equal before two results are compared, and which quantities <bcp14>MUST NOT</bcp14> be used as normalization factors.</t>
        <section anchor="normalization-basis">
          <name>Normalization Basis</name>
          <t>Normalization in this document is achieved by reporting KPIs that are dimensionless or referenced to a rate observable at the Fabric DUT Boundary defined in <xref target="TERMINOLOGY"/>. It is not achieved by normalizing fabric hardware between the systems being compared.</t>
          <table anchor="tab-normalization-basis">
            <name>Normalization Basis for Reported KPIs</name>
            <thead>
              <tr>
                <th align="left">KPI</th>
                <th align="left">Defined in</th>
                <th align="left">Normalizing denominator</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">JCT Ratio</td>
                <td align="left">
                  <xref target="synthetic-jct-under-controlled-conditions"/></td>
                <td align="left">Roofline_seq, whose communication term is (8 × S × algo_factor) / B_acc</td>
              </tr>
              <tr>
                <td align="left">BusBW</td>
                <td align="left">
                  <xref target="test-collective"/></td>
                <td align="left">Per-accelerator; made algorithm-invariant by the fixed algo_factor of <xref target="TERMINOLOGY"/></td>
              </tr>
              <tr>
                <td align="left">BusBW efficiency</td>
                <td align="left">
                  <xref target="allreduce-benchmark"/>, <xref target="allgather-benchmark"/></td>
                <td align="left">Per-accelerator NIC line rate</td>
              </tr>
              <tr>
                <td align="left">Throughput efficiency</td>
                <td align="left">
                  <xref target="baseline-throughput"/></td>
                <td align="left">Theoretical rate of the Ethernet links under test</td>
              </tr>
              <tr>
                <td align="left">Aggregate Throughput</td>
                <td align="left">
                  <xref target="kpi-framework-and-metrics-taxonomy"/></td>
                <td align="left">Fabric bisection bandwidth, computed from Ethernet link rates</td>
              </tr>
              <tr>
                <td align="left">MMR, JFI</td>
                <td align="left">
                  <xref target="test-lb"/></td>
                <td align="left">Dimensionless by construction</td>
              </tr>
              <tr>
                <td align="left">JCT Interference Factor</td>
                <td align="left">
                  <xref target="multi-tenant-jct-interference"/></td>
                <td align="left">Baseline JCT measured on the same DUT</td>
              </tr>
            </tbody>
          </table>
          <t>Each denominator in <xref target="tab-normalization-basis"/> is either a workload parameter fixed by the test operator (S, algo_factor, N) or an Ethernet line rate at the DUT boundary. No denominator contains a term for switch internal capacity, accelerator interconnect capacity, or host bus capacity.</t>
          <t>Convergence and failover times (<xref target="link-failure-convergence"/>, <xref target="zero-impact-failover-measurement"/>), latency percentiles (<xref target="latency-characterization"/>), and queue occupancy are reported in absolute units and are not normalized; normalizing them would obscure the behavior they measure.</t>
        </section>
        <section anchor="aggregate-switching-capacity-is-not-a-normalization-factor">
          <name>Aggregate Switching Capacity Is Not a Normalization Factor</name>
          <t>Aggregate switching capacity (ASIC forwarding capacity, in Tbps) <bcp14>MUST NOT</bcp14> be used as a normalization factor for any KPI defined in this document, and <bcp14>MUST NOT</bcp14> be held constant as a precondition for comparing two fabrics, for three reasons:</t>
          <ol spacing="normal" type="1"><li>
              <t>Aggregate switching capacity is a vendor-declared internal property, not a quantity observable at the Fabric DUT Boundary. Benchmarking in this document is performed on a black-box basis (<xref target="security-considerations"/>).</t>
            </li>
            <li>
              <t>Whether a given switching capacity is sufficient for the offered collective pattern is what the tests in <xref target="test-rdma"/> through <xref target="test-soak"/> measure. Dividing a measured result by the capacity that produced it removes the effect under test: a fabric with half the switching capacity that completes the same job in 1.6 times the time would report a better result per Tbps while performing worse at the job.</t>
            </li>
            <li>
              <t>A capacity-normalized value is a cost or efficiency figure of merit. Per the BMWG charter, and consistent with <xref target="reporting"/> and <xref target="indicative-reference-values"/>, this document defines what is measured and how it is reported, and does not define figures of merit or acceptance criteria.</t>
            </li>
          </ol>
          <t>Aggregate switching capacity, per-port speed, switch radix, and buffer architecture are reported as DUT characteristics (<xref target="device-under-test-dut-identification"/>, <xref target="asic-features"/>) so that a reader can attribute an observed difference to them. They are inputs to the interpretation of a result, not divisors applied to it.</t>
          <t>The same reasoning applies to intra-node switching and interconnect capacity (accelerator interconnects, PCIe, CXL). Were aggregate switching capacity used as a normalization factor, intra-node switching and interconnect capacity would have to be included for that normalization to be complete, which the DUT boundary of <xref target="scope-and-applicability"/> does not permit. Because no denominator in <xref target="tab-normalization-basis"/> contains such a term, the normalization defined here does not reach inside the node, and this section and <xref target="scope-and-applicability"/> are consistent by construction.</t>
        </section>
        <section anchor="comparability-set">
          <name>Comparability Set</name>
          <t>Results obtained on two different fabrics are compared directly for the KPIs in <xref target="tab-normalization-basis"/> when every parameter in <xref target="tab-comparability-set"/> is equal and reported for both results.</t>
          <table anchor="tab-comparability-set">
            <name>Comparability Set</name>
            <thead>
              <tr>
                <th align="left">Parameter</th>
                <th align="left">Why it must match</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Participating accelerator count N</td>
                <td align="left">Collective cost depends on N through algo_factor and through fabric path length</td>
              </tr>
              <tr>
                <td align="left">Accelerators per node, and their placement and rail mapping</td>
                <td align="left">Determines the fabric-visible fraction of collective traffic (<xref target="fabric-visible-data-volume"/>)</td>
              </tr>
              <tr>
                <td align="left">B_acc, the per-accelerator Ethernet line rate at the DUT boundary</td>
                <td align="left">Denominator of Roofline_seq and of BusBW efficiency</td>
              </tr>
              <tr>
                <td align="left">Leaf oversubscription ratio</td>
                <td align="left">Determines whether the fabric can satisfy the offered pattern</td>
              </tr>
              <tr>
                <td align="left">Collective type, message size S, and algo_factor</td>
                <td align="left">Definition of the offered workload</td>
              </tr>
              <tr>
                <td align="left">Transport (RoCEv2 or UET), and for UET the transport service</td>
                <td align="left">Loss and retransmission semantics differ by transport</td>
              </tr>
              <tr>
                <td align="left">Load balancing strategy</td>
                <td align="left">Comparisons are made strategy by strategy</td>
              </tr>
            </tbody>
          </table>
          <t>When any parameter in <xref target="tab-comparability-set"/> differs, the results are reported side by side with the difference stated, and are not combined into a single comparative figure.</t>
          <t>Topology class is a reported test condition, not a parameter that normalization removes. Two fabrics of different topology class that match on <xref target="tab-comparability-set"/> are compared for the KPIs in <xref target="tab-normalization-basis"/>, and the report states, for each result: the topology class; the switch tier count; the typical and worst-case hop count for the measured traffic pattern; the number of equal-cost paths available between a source-destination pair; and the bisection bandwidth. Such a comparison characterizes the topologies under the offered workload; it does not attribute the observed difference to any single fabric component.</t>
          <t>Topologies outside the reference set of <xref target="reference-fabric-topologies"/>, including mesh, torus, and direct-connect fabrics, are outside the scope stated in <xref target="scope-and-applicability"/>. Results obtained on such a fabric are reported as a deviation per <xref target="reporting"/>, and the hop-count and equal-cost-path descriptors above are supplied only where they are well defined for that topology.</t>
        </section>
        <section anchor="comparing-fabrics-of-the-same-topology-class">
          <name>Comparing Fabrics of the Same Topology Class</name>
          <t><strong>Different scale.</strong> Comparison is performed at equal N, and scale is characterized rather than normalized away. <xref target="synthetic-jct-under-controlled-conditions"/> requires JCT Ratio to be reported for each N in its parameter table and plotted against N; the shape of that curve is the scaling result, and no single scalar replaces it. Two fabrics whose maximum supported scale differs are compared over the range of N that both support; the report gives the JCT Ratio at the largest common N together with the maximum N each fabric sustains per <xref target="fabric-scale-limits"/>.</t>
          <t><strong>Different switch capacity, radix, or buffer size.</strong> Comparison is performed without adjustment, provided <xref target="tab-comparability-set"/> matches. The difference in the measured KPIs is the result of the comparison. The differing DUT characteristics are reported per <xref target="device-under-test-dut-identification"/> and <xref target="asic-features"/> to permit attribution, and are not used to scale the measured values.</t>
        </section>
        <section anchor="fabric-visible-data-volume">
          <name>Fabric-Visible Data Volume</name>
          <t>Collective placement determines how much of a collective's traffic crosses the DUT boundary. A hierarchical AllReduce that reduces within a node before reducing across the fabric presents less data to the fabric than a flat AllReduce across the same N accelerators, even though the application-level message size S is identical. Two results obtained under different placement therefore represent different offered fabric workloads at equal S.</t>
          <t>For every collective result reported under <xref target="test-collective"/>, <xref target="uet-collective-communication-performance"/>, or <xref target="test-jct"/>, the report states:</t>
          <ul spacing="normal">
            <li>
              <t>S, the application-level data size per participant;</t>
            </li>
            <li>
              <t>S_fabric, the data volume per participant that crosses the Fabric DUT Boundary, together with the method used to obtain it. S_fabric is counted in application payload bytes, each byte counted once, using the byte-counting rule of the Fabric_Goodput definition in <xref target="TERMINOLOGY"/>. Retransmitted and duplicate bytes <bcp14>MUST NOT</bcp14> be included in S_fabric; they are reported separately as the RDMA Retransmission Rate and out-of-order delivery rate of <xref target="kpi-framework-and-metrics-taxonomy"/>. Measurement from NIC Ethernet port counters is preferred; derivation from the collective algorithm and the placement is acceptable when the derivation is stated. Under this byte-counting rule the two methods return the same value; when both are available and they disagree, the report gives both values and the difference;</t>
            </li>
            <li>
              <t>the accelerator placement and, in rail-optimized topologies, the rail mapping;</t>
            </li>
            <li>
              <t>the Intra-Node Transfer Overhead component defined in <xref target="TERMINOLOGY"/>, reported separately. This component is never added to, subtracted from, or folded into a fabric KPI.</t>
            </li>
          </ul>
          <t>Comparisons use the same S and the same placement on both sides. When placement cannot be matched, for example when comparing a rail-optimized fabric using rail-aware placement against a Clos fabric that has no rail structure, the report gives S_fabric for each result so that the difference in offered fabric work is visible, and the results are not presented as an equal-workload comparison.</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">≤ 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 2 GB (single-message ceiling; see note)</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">Exact per-packet loss counting</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>
          <t>NOTE: A single RDMA message cannot exceed the 32-bit RETH DMA Length field, an
absolute ceiling of 4 GB, and implementations commonly advertise a practical
max_msg_sz of 1-2 GB. Transfers larger than the single-message ceiling are
composed from multiple RDMA messages, and the message count and per-message
size are reported alongside the aggregate transfer size.</t>
        </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's Fairness Index (JFI)</td>
              <td align="left">1/N-1.0</td>
              <td align="left">Fairness of traffic distribution; 1.0 = perfect, 1/N = worst (N = number of parallel links)</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 × 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>Each run <bcp14>MUST</bcp14> capture at least 10,000 latency samples to support a statistically meaningful P99.9</t>
          </li>
          <li>
            <t>Repeat at least 20 times; pool all samples across runs and compute percentiles from the pooled distribution, and report the per-run variability (e.g., min/max across runs) alongside the pooled statistics</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 2: UEC Transport Protocol Benchmarks</name>
      <t>The Ultra Ethernet Consortium (UEC) Specification 1.0 <xref target="UEC-1.0"/> defines UET, an RDMA transport positioned as an alternative to 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">Connection/PDC Initiation Latency (us) (see note)</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>
        <t>NOTE: For RoCEv2 RC/UC, this measures QP connection setup time (handshake round-trip). For UET (ROD/RUD/RUDI/UUD), PDCs have no separate setup handshake; this measures the first-packet latency reflecting in-band PDC initiation instead.</t>
      </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>This test evaluates whether UET RUD achieves zero host-visible reordering despite per-packet spray, since the transport layer is designed to tolerate 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>Key metric:</strong> report whether UET achieves zero application-visible loss without PFC.</t>
      </section>
      <section anchor="link-layer-enhancement-benchmarks">
        <name>Link-Layer and Network-Layer Enhancement Benchmarks</name>
        <t><strong>Objective:</strong> Measure performance impact of optional UEC enhancements: LLR and CBFC (link-layer) and Packet Trimming (PT, network-layer).</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 TSS group-key encryption state (active or inactive) on the DUT NIC is documented as a required result field in the test report.</t>
        <t>When UET TSS group-key encryption is active during testing, report the observed BusBW computed from measured bytes transferred per the algo_factor formula defined in <xref target="TERMINOLOGY"/> (fixed per collective type); group-key encryption affects per-packet security processing overhead, not the transfer volume itself.</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 millions of endpoints.</t>
        <t>NOTE: PDC and QP scaling limits are a host NIC capability, outside the DUT boundary per <xref target="TERMINOLOGY"/> and <xref target="scope-and-applicability"/>. They are reported as context because a NIC-side PDC/QP ceiling presents as fabric underperformance in the throughput and latency measurements above.</t>
      </section>
    </section>
    <section anchor="test-congestion">
      <name>Test Category 3: 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 4: 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 ECMP hashing that includes the BTH destination QP field as a hash input (in addition to the standard 5-tuple). 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="jains-fairness-index-measurement">
        <name>Jain's 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's Fairness Index Formula</name>
          <artwork type="ascii-art" align="center"><![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 5: 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>
      <t>Because collective placement determines how much of a collective's traffic crosses the DUT boundary, every result in this section is reported together with the fabric-visible data volume and placement information required by <xref target="fabric-visible-data-volume"/>.</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 stresses every fabric link with many-to-many traffic overlap.  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 difference in fabric load between the two traffic patterns; AllReduce's additional network traffic reflects its ReduceScatter phase, not the reduction arithmetic itself, which is performed by the accelerators, not the fabric.</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 6: 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 align="center"><![CDATA[
Roofline_seq = Iterations × (C + (8 × S × 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 align="center"><![CDATA[
Overlap_Fraction = 1 - (Measured_JCT - C_total) / Comm_time

  where:
    C_total   = Iterations × C
    Comm_time = Iterations × (8 × S × 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 values of 1.05 and 1.15 are cited elsewhere in this document (<xref target="indicative-reference-values"/>) as illustrative reference points, not as pass/fail thresholds. Per the BMWG charter, the definition of acceptance criteria or performance requirements is explicitly outside the scope of this Working Group; deployment-specific thresholds are outside the scope of this document.</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 the current MLPerf Training closed-division workloads per MLPerf submission rules (<xref target="MLPERF"/>); the specific workload set changes across MLPerf versions, so the test report <bcp14>MUST</bcp14> identify the MLPerf Training version and workload names used. 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" align="center"><![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 7: 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 the convergence testing approach in <xref target="EVPN-BENCH"/>).</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 8: 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 soak-testing methodology pattern in <xref target="EVPN-BENCH"/>.</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) at 80% of maximum validated throughput, per the offered load fraction required by the Soak Test definition in <xref target="TERMINOLOGY"/>. 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 from collective communication benchmarks (<xref target="test-collective"/>) <bcp14>MUST</bcp14> be reported per the reporting requirements stated in the BusBW definition of <xref target="TERMINOLOGY"/>. The report identifies this document and <xref target="TERMINOLOGY"/> by name and revision.</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>Observation Points:</strong> For each reported value, state the Observation Point per <xref target="TERMINOLOGY"/>: the Fabric DUT Boundary, DUT-reported telemetry read from the DUT itself, or an endpoint software boundary. Values obtained at different Observation Points are not combined into a single reported value or treated as interchangeable, even when they carry the same metric name. For DUT-reported values, the report additionally states the port, direction (ingress or egress), and traffic class to which the value applies, per the Observation Point definition in <xref target="TERMINOLOGY"/>.</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, additional configuration parameters include: UEC compliance profile, libfabric provider version, NIC UEC firmware version, and enabled optional 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>Trial Accounting:</strong> For each test, report the number of trials attempted and the number included in the primary result. A trial excluded from the primary result states the reason: failure to reach steady state within the configured observation window, a counter reset or discontinuity, an incomplete measurement window, or a retransmission or loss event outside the scope of the test objective. Excluded trials are reported, not silently dropped from the trial count.</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 of 5% is an illustrative reference point for typical run-to-run variation; Note that this document does not set a required or minimum threshold for test validity.</t>
        </li>
        <li>
          <t><strong>Comparability Statement:</strong> When a report compares two or more fabrics, tabulate the comparability set of <xref target="comparability-normalization"/> for each result and state explicitly which parameters differ. Reports comparing fabrics of different topology class additionally provide the structural descriptors listed in that section. Reports that present results from a single fabric do not require this section.</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 hop-by-hop flow-control mechanisms referenced in this document (PFC, CBFC) propagate backpressure toward traffic sources and can extend the blast radius of a misconfigured test beyond the immediate DUT; DCQCN reduces, but does not eliminate, reliance on these mechanisms.</t>
      <t>Benchmarking is performed on a "black-box" basis, relying on measurements observable external to the DUT as defined in <xref target="TERMINOLOGY"/>. DUT-reported values (e.g., switch queue occupancy) are used only under the conditions stated in the Security Considerations of <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 cause adjacent production switches sharing the same priority class to stop responding. 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 has no IANA actions.</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="12" month="August" 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 consolidates
   and extends terms from "Benchmarking Terminology for Network
   Interconnect Devices" (RFC 1242) and "Data Center Benchmarking
   Terminology" (RFC 8238).  Definitions cover 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 and inference fabric
   benchmarking methodology documents.  Those documents are intended to
   be read together with the terminology defined here.  Where
   definitions herein overlap with the foundational benchmarking
   terminology in RFC 1242 or RFC 8238, 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-04"/>
        </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="12" month="August" 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 determines 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 comparison across NIC transport stacks (RoCEv2 and
   UET) and fabric architectures.

   This document is a companion to the AI training fabric benchmarking
   methodology, which addresses training workloads.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-inference-bench-04"/>
        </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 Training at Meta Scale</title>
            <author initials="A." surname="Gangidi" fullname="Adithya Gangidi">
              <organization/>
            </author>
            <author initials="R." surname="Miao" fullname="Rui Miao">
              <organization/>
            </author>
            <author initials="S." surname="Zheng" fullname="Shengbao Zheng">
              <organization/>
            </author>
            <author initials="S. J." surname="Bondu" fullname="Sai Jayesh Bondu">
              <organization/>
            </author>
            <author initials="G." surname="Goes" fullname="Guilherme Goes">
              <organization/>
            </author>
            <author initials="H." surname="Morsy" fullname="Hany Morsy">
              <organization/>
            </author>
            <author initials="R." surname="Puri" fullname="Rohit Puri">
              <organization/>
            </author>
            <author initials="M." surname="Riftadi" fullname="Mohammad Riftadi">
              <organization/>
            </author>
            <author initials="A. J." surname="Shetty" fullname="Ashmitha Jeevaraj Shetty">
              <organization/>
            </author>
            <author initials="J." surname="Yang" fullname="Jingyi Yang">
              <organization/>
            </author>
            <author initials="S." surname="Zhang" fullname="Shuqiang Zhang">
              <organization/>
            </author>
            <author initials="M. J." surname="Fernandez" fullname="Mikel Jimenez Fernandez">
              <organization/>
            </author>
            <author initials="S." surname="Gandham" fullname="Shashidhar Gandham">
              <organization/>
            </author>
            <author initials="H." surname="Zeng" fullname="Hongyi Zeng">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="ACM SIGCOMM '24" value="Sydney, NSW, Australia"/>
          <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>
            <author initials="H." surname="Eran" fullname="Haggai Eran">
              <organization/>
            </author>
            <author initials="D." surname="Firestone" fullname="Daniel Firestone">
              <organization/>
            </author>
            <author initials="C." surname="Guo" fullname="Chuanxiong Guo">
              <organization/>
            </author>
            <author initials="M." surname="Lipshteyn" fullname="Marina Lipshteyn">
              <organization/>
            </author>
            <author initials="Y." surname="Liron" fullname="Yehonatan Liron">
              <organization/>
            </author>
            <author initials="J." surname="Padhye" fullname="Jitendra Padhye">
              <organization/>
            </author>
            <author initials="S." surname="Raindel" fullname="Shachar Raindel">
              <organization/>
            </author>
            <author initials="M. H." surname="Yahia" fullname="Mohamad Haj Yahia">
              <organization/>
            </author>
            <author initials="M." surname="Zhang" fullname="Ming Zhang">
              <organization/>
            </author>
            <date year="2015"/>
          </front>
          <seriesInfo name="ACM SIGCOMM" value="pp. 523-536"/>
          <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 960?>

<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">≤ 1.05 (≤ 1.15 acceptable)</td>
          </tr>
          <tr>
            <td align="left">BusBW</td>
            <td align="left">≥ 90% of NIC line rate (intra-pod)</td>
          </tr>
          <tr>
            <td align="left">Aggregate Throughput</td>
            <td align="left">≥ 95% of bisection BW</td>
          </tr>
          <tr>
            <td align="left">Packet Drop Rate</td>
            <td align="left">0 ppm wire-level loss (lossless RoCEv2 profiles); 0 ppm application-visible loss (UET; see the Zero Packet Loss definition in <xref target="TERMINOLOGY"/>)</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 3, drop precedence 1), 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-assigned to Ultra Ethernet Transport.</t>
      <t>Unlike the RoCEv2 frame format above, this appendix does not specify a byte-accurate UET header layout. UET headers are layered and variable-length, and their wire formats are defined normatively by the UEC; test equipment implementations <bcp14>MUST</bcp14> follow <xref target="UEC-1.0"/> Section 4 for all wire-format details. The figure below is explicitly schematic: it shows only the layering and on-wire ordering of the protocol components that test equipment generates and parses.</t>
      <figure anchor="fig-uet-frame">
        <name>UET Frame Layering (Schematic Only; Byte Layouts Per UEC 1.0 Section 4)</name>
        <artwork align="center"><![CDATA[
+-------------------------------------------------------------+
| Ethernet Header: Dst MAC, Src MAC, EtherType                |
|   (optional 802.1Q tag: PCP=3 for UET priority class, VID)  |
+-------------------------------------------------------------+
| IPv4 Header: DSCP=26 (AF31), ECN=ECT(0), Proto=17 (UDP)     |
+-------------------------------------------------------------+
| UDP Header: DstPort=4793 (UET);                             |
|   SrcPort carries the Entropy Value, varied per packet      |
+-------------------------------------------------------------+
| PDS (Packet Delivery Sublayer) header(s):                   |
|   packet type, PDC identifiers, sequence number,            |
|   ack/credit and congestion-control state                   |
+-------------------------------------------------------------+
| SES (Semantic Sublayer) header(s):                          |
|   operation (Write/Read/Send/Atomic), addressing,           |
|   message identification                                    |
+-------------------------------------------------------------+
| Payload                                                     |
+-------------------------------------------------------------+
| ICRC (4B) | FCS (4B)                                        |
+-------------------------------------------------------------+
]]></artwork>
      </figure>
      <t>Layering notes:</t>
      <ul spacing="normal">
        <li>
          <t>The Entropy Value is carried in the UDP source port field, not in a separate UET header field; see the Entropy Value definition in <xref target="TERMINOLOGY"/>. Test equipment varies the UDP source port per packet to exercise packet spraying.</t>
        </li>
        <li>
          <t>PDS headers precede SES headers on the wire.</t>
        </li>
        <li>
          <t>CMS (Congestion Management Sublayer) state is carried in PDS congestion-control fields and control packets rather than as a separate wire header. TSS (Transport Security Sublayer), when enabled, adds security headers and authentication data per <xref target="UEC-1.0"/> Section 4.</t>
        </li>
      </ul>
      <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">Aspect</th>
              <th align="left">RoCEv2</th>
              <th align="left">UET</th>
              <th align="left">Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">UDP Dst Port</td>
              <td align="left">4791 (IANA-assigned)</td>
              <td align="left">4793 (IANA-assigned)</td>
              <td align="left">Distinct transports, both over UDP/IP</td>
            </tr>
            <tr>
              <td align="left">Transport Endpoint</td>
              <td align="left">QP Number (24b)</td>
              <td align="left">PDC ID</td>
              <td align="left">PDC state is established in-band with the first packet</td>
            </tr>
            <tr>
              <td align="left">Entropy Source</td>
              <td align="left">UDP src port, typically fixed per QP/connection</td>
              <td align="left">UDP src port, varied per packet</td>
              <td align="left">Per-packet spraying uses existing ECMP hashing</td>
            </tr>
            <tr>
              <td align="left">Congestion Signalling</td>
              <td align="left">ECN bits; CNP-based feedback (e.g., DCQCN)</td>
              <td align="left">ECN plus UET congestion-control state carried in PDS</td>
              <td align="left">Sender- and receiver-based CC per <xref target="UEC-1.0"/></td>
            </tr>
            <tr>
              <td align="left">Ordering Guarantee</td>
              <td align="left">Always in-order (RC)</td>
              <td align="left">Per-service (ROD/RUD/RUDI/UUD)</td>
              <td align="left">RUD/RUDI allow out-of-order delivery</td>
            </tr>
            <tr>
              <td align="left">Header Structure</td>
              <td align="left">Fixed BTH plus per-opcode extension headers</td>
              <td align="left">Layered, variable-length (PDS, SES)</td>
              <td align="left">Per <xref target="UEC-1.0"/> Section 4</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> Carried in the UDP source port field and varied per packet for ECMP path selection. Test equipment varies the source port 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> In-band-established 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 Feature Headers:</strong> When the LLR or PRI link-layer features, or the network-layer Packet Trimming feature, are enabled, additional or modified 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. Thanks to Andrew Yourtchenko for a thorough review of the document set. Thanks to Niangen Ye for the review comments on Fabric-Visible Data Volume provenance and on forwarding-work accounting, which prompted the byte-counting rule stated in <xref target="fabric-visible-data-volume"/>.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+292XIbaZYmeI+n8JEsLIEIOLhoCYlsdScJkhIzuQVJRVRW
dbXMATgJTwFwhLuDFFJUWt/W9YxZ3c5Fz4tMvUk9yZzvnPNvjkVURnZ3XUxY
JkUC7v969jWO40aVVaN0J3qyn076w3FSfMwmt9FpWg3zQT7Kb+fRTV5Ee8fR
dZFkE3x3llb3efExOkp6RdYvnzSSXq9I72gI/yn5NvJHfdIY5P1JMqbZBkVy
U8X9ZISnkrg3vr+Nkyy+4ZfiSgeJe3g73nzR6CdVepsX850om9zkjUY5642z
sszySTWf0njHh9dHjWxa7ERVMSur7c3N15vbjaRIE1rW+TQtkoqeLaNkMohO
k0lym47TSfWkgY3cFvlsigM4/eXtk8bHdE4fDmjISZUWk7SKD7BWmrKilz8k
o3xC883TslHStqoPv87yKi13oknemGY70T9Veb8dlXlRFelNSb/Nx/jlnxt0
Ps8ajbt0Mkt3GlGkk2JO+ks28Usuh/8W39Gn4yQb7UQ4m99naXXTyYtbvJlV
w1mP1nujx7ex9vSe0CsjOr2yoleGVTUtdzY2zKsdGayT5esH2fiW++oMq/Ho
SaORzAiGCmw2juTWj+hA6RDzqKsD0XcR3Sgd31En/JD2uhN1s7Kf85/9fDap
cP3vJ1mVDqKrClvir1I5JrOl3/fxUqefj72Ju0kxysvoIrudJFVS5G7ebqf2
KU+8P5qlvNqoS1AzG1W0uUeuo89T/b5HI9zQALQQbwCznp+ySfTLzK3ip475
k6d/N0vu0yycsDvMJok/US8bjTr3s98P+eHaht9mszKdTmkTWd7v5yPvpN92
wg9XznhcJaO5P+OtDtq50feXz32V3/85mcyT6DIdDOZu4quO9wnPujedjtJH
nmtJoxb0+u9v8TdP2ZjkxZgQ+44x6vKou7X9fFt/3X7x/Ln++vLV1gv99dX2
s1fu19f66+vNTX72/WE33ups7vC0hiy+HxF0R4fVkIkB6NuknBJ6R833h9et
6Gqa9rObrM/0JaK3n/DbDvbxXyzbrQ0F0KKBstmYHxvQjnei7c3tF/HmS1lC
UtymPtrOMECq74McYLLrw8vT47Pzk/O3f6I7iw86K7E0LcbZhGl6owEyGh7e
s1fP+UCOz44OLw/PuofxPv18t35MGiYtCOlTQX16/fDnizN9MzjHtewFLzFt
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
ZBQqNM366yy1nTIQ08Kv5sz1w+asPDdHQZgMADZBpqUrQuRZSWRJKCnIA/ry
r2QFJ5M5LML41wnKUruQEQhpQMlHGsCeAkIK2DSVl05PNJVeTW0XafFoW51Z
s6xXH1IVDkhb/zsIqxRV4XgbE3FE7xvaFpbFXUVOXTzI35lAegqdH/Uhx9Fc
wuiIyUF1pavhyFuDQ7+N5T2SFodUd4G+c+80GyY4Tqq1OGtZ3Xq6bYg2qola
q/xobswXOAi7+CC0a5e/G6SQJo1YbEqvicGKjWHWpkN3C0vlSH11i1FjBrI9
i4lDAkvWNcajRtdv+dPfTNh18MdS9nt2PErMET6VYwjS50BmUiSmP16o/t9P
4xeO4RuJvL4fmq3lirTcIhfGRnFfhqtwZxqnieWyz8YUZOVg/dKprgjgQJhA
Ir1Fccgd6OEFwxq6moiGwTMaEq8FjlHM8Z57SSQfLS1njoF62167rsrTGRar
H5wtUHbdegJyhuonrkAV01Q/SFVhlvswOvruZV66LkPagBVcjk3yujP0cfwP
QPWd+IsKHjUR+T8A0f//af5qmv+t0nWE7kVF2LXHdo8kuu9QR2xcLnTfKdpt
Dzal+XTTYc6GG6LlqlWXSxoM+WjrYjWkPVbde7nrRgWMOvezJofYFzQPu+Qm
nvLCVZ8HMXTERLzy+UvMKR80G+Uk7NUQm6C/pCqKYbs/M5gtK8G9U1eYIE8U
McJKvFdiiP6twaXMrBVFXElfREnCubL0C8naW/bV2sTLb48w/ZsCS/+WeNJl
7zxunm8MPV360ldnsm3E+6PY+B9sA/FVdutlwLKsFuPLnTWlqBet32i/2GiA
ZppetaK2sDJDQj8BIiQmIpQFWiYBKFGIeIXbWxpBm7wOzy7siwY+ceXkGzOI
8kFUP7bmcaxMopq6LnWr69IdPz99fAvglcKkkY5dFL6zz9uOZeIk1vgJYdGS
R1PlYWKNEkOvNoCallHyvK/deZfXQziQKu2JN789HScjspcZwimfstSn5ZIN
3LJgp9HY6vD96wKNrHYTdSVU1VRZbLL2zXJXOUrTKfS9txfvbZ22j6jINGo1
tjs1YOQBd3yT9U10pfkO6iMLTcphF6C/4b+H6Gcp8b7iaxo//g3/Retf1/os
7kRZAup+0/q3NqMxcYoX8g96Gcmfm1y7tt5g6Oqbz2fRnl07nwXbNt3RN4y/
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
A1ZOok3pSo8J4+KzidpLA7CzaU8Gx+6J8EF3Zo7i+delYyyqlWMq1rDPzlnL
9oq95JFInIpU42RuDDeOkRi5WXUBycPk0zJrYVpYwjXpnHqVF4ThZbzrK2ok
0bRKZ742MVSu8eRo7uWkaA6KNQV75+JXXxzmU4hO9A97wExuiMOu0gH6Enhp
krKpkqNtHiOFo0F0NGRczkg3K7ZLbXlvPRu8lt5IGkANspmm045ZErBBDjgg
i6VoY4BSxFoyblc1XY3shELrcSTb9hCSlIrgIgqWXtXMso43QW4bfK7RE1ok
WsDnn54gjCJjcVQIROjvKo2002NzK/s2Ruaq2cPiwiaX+RqW6HgmXE+dj1Is
2RoBW64FCicei9Ff8cYkBIXWoBU0fZlRqNHgTuNswtBC7KAmV+/O358cMLak
n7KyMiOztdiUhh+ppyQAwumsmBKhLcXghgIKtvQRnjX4Yok1hHimM756r9P3
fIFeV0CURnu3L0FDmvV44mFOWwqNiQmYjv1W1UwVJkUMBHzDgiiRgGIyhZlQ
Wgk49U/ERH1kFR8UxUfXr/mY/kLpbDhmKuyz0hEDLvOKl6+2XmjRM62QZsBJ
KGJAxwIoXnoeoJ4zYXyODjPGHV9YelxINNnUrEFbdu9NQUqzT1E3am69ftXZ
etXZ7GxubL3gqzy+uHu+G21vbm7tDHqvdnY2nm27EZ69ev5aZS167mULKHd5
2D0/PT08Ozg8AMIQJbmTpqd9vmW+Y4jNfVUkqqG/pWxyUyRGXEqVLzhTY41N
42KdcStX33PdHr1I+XakoxpsbfAYEM3msJuwCrcruT8wmcJS4xs+eK5d7KFm
8/Pn1RXJ6Z7l6/XVlb+0hDkRg0+mqeMqHq9loqs9DSToJYA7UzqVo9eCQg2m
WZgzCtFaphAqp9gE7CMXxsxJ+/v5ZO9MC6I61uUrXcqZvJJK0hvtBLFr7EGW
4n/KN/QkSejFQXPcPr015S05YUCKBMorsX0l9i3isAmVQsVGDO4lrCbid/YO
gis7wgpoc1WQikJk1y3E2uIZ/U3bzHB/HQsmtkMjr/HrjTG/mH1yq5WjbnxT
pK4xo3irRyTFabNlHV4K0+eWCjOhY8it0ShzroBevufcwUOIQoAYULReyNgH
WhNYRCqjDOvMdiiRmX6npf1Bdy0wcEWJyYClQTkmvvCfLiLTGJxjSlkEtCCE
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
+xgiWHzHUyM78v8Dh9u63XQ/AQA=

-->

</rfc>
