<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-calabria-bmwg-ai-fabric-training-bench-04" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <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-04"/>
    <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="August" day="12"/>
    <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"/>.</t>
      <t>Test reports include the following sections:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>DUT Identification:</strong> Complete parameters from <xref target="device-under-test-dut-identification"/> for all fabric components.</t>
        </li>
        <li>
          <t><strong>Test Topology:</strong> Diagram and description per <xref target="reference-fabric-topologies"/>, including physical cabling.</t>
        </li>
        <li>
          <t><strong>Test Configuration:</strong> All DUT configuration parameters: QoS policies (ECN thresholds, PFC headroom, DCQCN parameters), load balancing mode, buffer allocation, and vendor-specific tuning.</t>
        </li>
        <li>
          <t><strong>Host Configuration:</strong> Complete host stack description per <xref target="device-under-test-dut-identification"/> including NIC firmware, driver, collective library version, and any tuning. For UET tests, additionally report: UEC compliance profile, libfabric provider version, NIC UEC firmware version, and enabled optional features (LLR, Packet Trimming, Packet Rate Improvement (PRI), CBFC).</t>
        </li>
        <li>
          <t><strong>Test Results:</strong> For each test from <xref target="test-rdma"/> through <xref target="test-soak"/>, provide specified tables, graphs, and statistical summaries. For <xref target="test-uec"/> tests, results include side-by-side UET vs. RoCEv2 comparison data on the identical DUT fabric.</t>
        </li>
        <li>
          <t><strong>Anomalies:</strong> Any deviations from specified procedures, test failures, or unexpected behaviors are documented.</t>
        </li>
        <li>
          <t><strong>Repeatability Statement:</strong> Report iteration count and coefficient of variation (std deviation / mean) for each test's primary metric. A CV of 5% is an illustrative reference point for typical run-to-run variation; per the charter disclaimer above, 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 solely on measurements observable external to the DUT as defined in <xref target="TERMINOLOGY"/>.</t>
      <t>Special capabilities <bcp14>SHOULD NOT</bcp14> exist in the DUT specifically for benchmarking purposes. Any implications for network security arising from the DUT <bcp14>SHOULD</bcp14> be identical in the lab and in production networks. In particular, RDMA memory-region permissions are properties of the deployed configuration, not of the benchmarking methodology, and <bcp14>SHOULD</bcp14> reflect production posture during testing.</t>
      <t>Per <xref target="RFC6815"/>, the tests defined herein <bcp14>MUST NOT</bcp14> be performed on production networks. The use of dedicated test IP address ranges per <xref target="RFC2544"/> Appendix C (198.18.0.0/15 for IPv4; 2001:db8::/32 per <xref target="RFC3849"/> for IPv6) is <bcp14>RECOMMENDED</bcp14> to prevent accidental interaction with production infrastructure.</t>
      <t>The following considerations are specific to the methodology defined in this document:</t>
      <ul spacing="normal">
        <li>
          <t><strong>PFC leakage:</strong> PFC PAUSE frames generated under incast or storm conditions (<xref target="pfc-behavior-under-incast"/>, <xref target="pfc-storm-and-deadlock-resilience"/>) that escape the test environment can 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="6" month="July" 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-03"/>
        </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 958?>

<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+n8JEsLAEFHFxEKSSy1Z0kSErMJCmKpCIq
q7pa5gCchKcAOMLdIQopKq1v63rGrG7noudFpt6knmTOd875N8ciKiO7uy4m
LJMiAfd/Pfsax3GjyqpRuhs9Okgn/eE4KT5mk9voLK2G+SAf5bfz6CYvov2T
6LpIsgm+O0+ru7z4GB0nvSLrl48aSa9XpJ9oCP8p+TbyR33UGOT9STKm2QZF
clPF/WSEp5K4N767jZMsvuGX4koHiXt4O97cafSTKr3Ni/lulE1u8kajnPXG
WVlm+aSaT2m8k6Pr40Y2LXajqpiV1fbm5svN7UZSpAkt6+00LZKKni2jZDKI
zpJJcpuO00n1qIGN3Bb5bIoDOPvl9aPGx3ROHw5oyEmVFpO0ig+xVpqyopc/
JKN8QvPN07JR0raqD7/O8iotd6NJ3phmu9E/VXm/HZV5URXpTUm/zcf45Z8b
dD5PG41P6WSW7jaiSCfFnPSXbOKXXA7/Nb6jT8dJNtqNcDa/z9LqppMXt3gz
q4azHq33Ro9vY+3pPaJXRnR6ZUWvDKtqWu5ubJhXOzJYJ8vXD7LxPffVGVbj
0aNGI5kRDBXYbBzJrR/TgdIh5lFXB6LvIrpROr7jTvgh7XU36mZlP+c/+/ls
UuH630+yKh1EVxW2xF+lckxmS7/v46VOPx97E3eTYpSX0UV2O0mqpMjdvN1O
7VOe+GA0S3m1UZegZjaqaHMPXEefp/p9j0a4oQFoId4AZj3vskn0y8yt4l3H
/MnTv5kld2kWTtgdZpPEn6iXjUadu9nvh/xwbcOvs1mZTqe0iSzv9/ORd9Kv
O+GHK2c8qZLR3J/xVgft3Oj7y+e+yu/+nEzmSXSZDgZzN/FVx/uEZ92fTkfp
A8+1pFELev33t/ibp2xM8mJMiP2JMeryuLu1vbOtv24/29nRX5+/2Hqmv77Y
fvrC/fpSf325ucnPvj/qxludzV2e1pDF9yOC7uioGjIxAH2blFNC76j5/ui6
FV1N0352k/WZvkT09iN+28E+/otlu7WhAFo0UDYb82MD2vFutL25/SzefC5L
SIrb1EfbGQZI9X2QA0x2fXR5dnL+9vTt6z/RncWHnZVYmhbjbMI0vdEAGQ0P
7+mLHT6Qk/Pjo8uj8+5RfEA/36wfk4ZJC0L6VFCfXj/6+eJc3wzOcS17wUtM
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
kswB/Bi4AMwXb5d84Y567Ve21T27mJoGAlvBnF4/o0bDoI8pHdhek13TrhdN
kA85m9j6edVQpzIJr4OTznchkLywMslawYBLLRzYS7XByLRI+ikFDt++fWvM
45dp9dn87hzOJqOp+UNrncTQuPeOJoDa72aJ7vZ+2zj+jf79RqqBxN+4vToE
/RYeL8hnHNjfJhiPOGzG0+8l9MKrUmKWqKhfMjWWjrSmcosjskh5n2bVIj0w
DaLCGiK2Sr9t0gn/bs7xDChSyMNCw1KUcex5iXcy0GYl69E8Y5LPXZ3TcpEG
HunWlbCheSwTXxidUj6zHy3Zai3riCbq1PnultHIvYYpjm2LU3Ql0xVGqwN4
EluCoj6voi/b7QDpYSz/KszXb0Mv7nn2r3EXLcmyldLWvJeSxFa2nMAyCB+4
zdFFKBf84oiw5rwPZcIIC0g+5dmAdWMm7/gIqW69katMeojWk81By1H4Pt1g
FljI17DehY23F/bVFmemOK8HcIS3XU8t3yyu8DdAxIlYmpXt4jLENS0xCr6R
5cmTP3JBS6hRWJlpYOlhQ4gJfhasQQg2QRkTGq1N7e8oDHrKIM+ltiUpSD85
cl0bQ0h2nR1jr7PjWkg2DMj310nJUdxsPlUVExq13yxyNzo9vRSr5gGdZ9PN
LDq/kpPrIhtz9GPz4rptirjrc0uNfhJljLER/DE3ojVWmokp32vLiyBx8b/u
WZcVXi34VStTpp+nYkcoZ72YO8WKBZ9vdJhPW3zJzlgilKbGa5t/3dqMtzY3
Z2V0eX1NGsnlbCKQ/YKQADbRW1ZYWCLqyE4I0ernYPkj4j6wq7516G0TMVgo
CdXLKyLPJJx/dFus1sZRiOxclxQQAVESrNvaMVGZQDbDzmEPjz0EKHX5hMh8
uXiGAJPvwCS4M+lqnr96um0JUNlPJ0mR5d5lQGWAMMPadQ8xc0z3bbAuDy+1
H/z8GcFR/dwEHsGDxpFGqGOa3MoIdHvlgv+M4HYidPxWvKpMsxYJyQGrEBtC
+rwSOi58XLyqDuxRSRjGZ5ZSTekGtreYCN3YFffAsZX5TcUfS6R7OvC5knV6
dwOn94WHiYY5PSAlfyVmr/SufyPfqBXQBI4sY4rmWfRsYTxr2murNmVi+T07
rrEk+23JRfm063Oez0WedyQ2spVx4oTdmfMQLpZStxuAgOKWJdm6CQicZy5c
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
AA==

-->

</rfc>
