<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-calabria-bpm-ai-fabric-training-bench-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="AI Training Fabric Benchmarking">Benchmarking Methodology for AI Training Network Fabrics</title>
    <seriesInfo name="Internet-Draft" value="draft-calabria-bpm-ai-fabric-training-bench-00"/>
    <author initials="F." surname="Calabria" fullname="Fernando Calabria">
      <organization>Cisco</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>fcalabri@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Pignataro" fullname="Carlos Pignataro">
      <organization>Blue Fern Consulting</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>carlos@bluefern.consulting</email>
      </address>
    </author>
    <author initials="Q." surname="Wu" fullname="Qin Wu">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>
    <author initials="G." surname="Fioccola" fullname="Giuseppe Fioccola">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>Italy</country>
        </postal>
        <email>giuseppe.fioccola@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Reddy" fullname="Sowjanya Reddy">
      <organization>Apple</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>sowjredd@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area>Operations and Management</area>
    <workgroup>BPM</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-bpm-ai-fabric-training-bench.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-calabria-bpm-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>
              <tr>
                <td align="left">Observation Point of each compared value, per <xref target="TERMINOLOGY"/></td>
                <td align="left">Values obtained at different Observation Points are not interchangeable, even when they carry the same metric name; for DUT-reported values the port, direction, and traffic class also match</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. The Observation Point row restates, as a comparability condition, the rule given with the term in <xref target="TERMINOLOGY"/> and in item 4 of <xref target="reporting"/>.</t>
          <t>Topology class is a reported test condition, not a parameter that normalization removes. Two fabrics of different topology class that match on <xref target="tab-comparability-set"/> are compared for the KPIs in <xref target="tab-normalization-basis"/>, and the report states, for each result: the topology class; the switch tier count; the typical and worst-case hop count for the measured traffic pattern; the number of equal-cost paths available between a source-destination pair; and the bisection bandwidth. Such a comparison characterizes the topologies under the offered workload; it does not attribute the observed difference to any single fabric component.</t>
          <t>Topologies outside the reference set of <xref target="reference-fabric-topologies"/>, including mesh, torus, and direct-connect fabrics, are outside the scope stated in <xref target="scope-and-applicability"/>. Results obtained on such a fabric are reported as a deviation per <xref target="reporting"/>, and the hop-count and equal-cost-path descriptors above are supplied only where they are well defined for that topology.</t>
        </section>
        <section anchor="comparing-fabrics-of-the-same-topology-class">
          <name>Comparing Fabrics of the Same Topology Class</name>
          <t><strong>Different scale.</strong> Comparison is performed at equal N, and scale is characterized rather than normalized away. <xref target="synthetic-jct-under-controlled-conditions"/> requires JCT Ratio to be reported for each N in its parameter table and plotted against N; the shape of that curve is the scaling result, and no single scalar replaces it. Two fabrics whose maximum supported scale differs are compared over the range of N that both support; the report gives the JCT Ratio at the largest common N together with the maximum N each fabric sustains per <xref target="fabric-scale-limits"/>.</t>
          <t><strong>Different switch capacity, radix, or buffer size.</strong> Comparison is performed without adjustment, provided <xref target="tab-comparability-set"/> matches. The difference in the measured KPIs is the result of the comparison. The differing DUT characteristics are reported per <xref target="device-under-test-dut-identification"/> and <xref target="asic-features"/> to permit attribution, and are not used to scale the measured values.</t>
        </section>
        <section anchor="fabric-visible-data-volume">
          <name>Fabric-Visible Data Volume</name>
          <t>Collective placement determines how much of a collective's traffic crosses the DUT boundary. A hierarchical AllReduce that reduces within a node before reducing across the fabric presents less data to the fabric than a flat AllReduce across the same N accelerators, even though the application-level message size S is identical. Two results obtained under different placement therefore represent different offered fabric workloads at equal S.</t>
          <t>For every collective result reported under <xref target="test-collective"/>, <xref target="uet-collective-communication-performance"/>, or <xref target="test-jct"/>, the report states:</t>
          <ul spacing="normal">
            <li>
              <t>S, the application-level data size per participant;</t>
            </li>
            <li>
              <t>S_fabric, the data volume per participant that crosses the Fabric DUT Boundary, together with the method used to obtain it. S_fabric is counted in application payload bytes, each byte counted once, using the byte-counting rule of the Fabric_Goodput definition in <xref target="TERMINOLOGY"/>. Retransmitted and duplicate bytes <bcp14>MUST NOT</bcp14> be included in S_fabric; they are reported separately as the RDMA Retransmission Rate and out-of-order delivery rate of <xref target="kpi-framework-and-metrics-taxonomy"/>. Measurement from NIC Ethernet port counters is preferred; derivation from the collective algorithm and the placement is acceptable when the derivation is stated. Under this byte-counting rule the two methods return the same value; when both are available and they disagree, the report gives both values and the difference;</t>
            </li>
            <li>
              <t>the accelerator placement and, in rail-optimized topologies, the rail mapping;</t>
            </li>
            <li>
              <t>the Intra-Node Transfer Overhead component defined in <xref target="TERMINOLOGY"/>, reported separately. This component is never added to, subtracted from, or folded into a fabric KPI.</t>
            </li>
          </ul>
          <t>Comparisons use the same S and the same placement on both sides. When placement cannot be matched, for example when comparing a rail-optimized fabric using rail-aware placement against a Clos fabric that has no rail structure, the report gives S_fabric for each result so that the difference in offered fabric work is visible, and the results are not presented as an equal-workload comparison.</t>
        </section>
      </section>
      <section anchor="device-under-test-dut-identification">
        <name>Device Under Test (DUT) Identification</name>
        <table anchor="tab-dut-id">
          <name>DUT Identification Parameters</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Description</th>
              <th align="left">Example</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Switch Vendor/Model</td>
              <td align="left">Vendor name, product family, model number</td>
              <td align="left">Vendor Family Model</td>
            </tr>
            <tr>
              <td align="left">Switch ASIC</td>
              <td align="left">Silicon vendor, ASIC family, revision</td>
              <td align="left">Silicon Vendor ASIC Family Rev</td>
            </tr>
            <tr>
              <td align="left">NOS Version</td>
              <td align="left">Network operating system name and version</td>
              <td align="left">NOS Name Version</td>
            </tr>
            <tr>
              <td align="left">Port Speed</td>
              <td align="left">Per-port line rate</td>
              <td align="left">400GbE, 800GbE</td>
            </tr>
            <tr>
              <td align="left">Buffer Architecture</td>
              <td align="left">Shared/dedicated, total buffer per ASIC/port</td>
              <td align="left">32MB shared + 16MB VOQ per port</td>
            </tr>
            <tr>
              <td align="left">Optics/Cables</td>
              <td align="left">Transceiver type, cable type and length</td>
              <td align="left">Octal Small Form-factor Pluggable (OSFP) 400G-DR4, Direct Attach Copper (DAC) 3m cable</td>
            </tr>
            <tr>
              <td align="left">NIC Vendor/Model</td>
              <td align="left">RDMA NIC vendor, model, firmware</td>
              <td align="left">NIC Vendor Model Speed</td>
            </tr>
            <tr>
              <td align="left">NIC Firmware</td>
              <td align="left">NIC firmware version</td>
              <td align="left">Firmware Version</td>
            </tr>
            <tr>
              <td align="left">Host Config</td>
              <td align="left">OS, CCL lib version, driver, BIOS settings</td>
              <td align="left">OS Version, CCL Version, OFED Version</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="traffic-generator-requirements">
        <name>Traffic Generator Requirements</name>
        <section anchor="mandatory-functional-capabilities">
          <name>Mandatory Functional Capabilities</name>
          <t>The traffic generator supports: RoCEv2 transport emulation (QP establishment, RDMA Write/Read, ECN processing, DCQCN rate control); configurable QP scaling (1-256 QPs per source-destination pair); programmable collective communication patterns (AllReduce, AllToAll, AllGather with configurable message sizes); and nanosecond-precision timestamping.</t>
        </section>
        <section anchor="minimum-measurement-accuracy-requirements">
          <name>Minimum Measurement Accuracy Requirements</name>
          <table anchor="tab-tgen-accuracy">
            <name>Minimum Measurement Accuracy Requirements</name>
            <thead>
              <tr>
                <th align="left">Parameter</th>
                <th align="left">Minimum Requirement</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Timestamp accuracy</td>
                <td align="left">≤ 100 nanoseconds</td>
              </tr>
              <tr>
                <td align="left">Frame rate accuracy</td>
                <td align="left">+/- 0.1% of specified rate</td>
              </tr>
              <tr>
                <td align="left">QP scaling range</td>
                <td align="left">1 to 256 QPs per src-dst pair</td>
              </tr>
              <tr>
                <td align="left">Message size range</td>
                <td align="left">64 B to 2 GB (single-message ceiling; see note)</td>
              </tr>
              <tr>
                <td align="left">Flow counter resolution</td>
                <td align="left">Per-flow byte and packet counts</td>
              </tr>
              <tr>
                <td align="left">Loss measurement</td>
                <td align="left">Exact per-packet loss counting</td>
              </tr>
              <tr>
                <td align="left">Burst generation</td>
                <td align="left">Burst lengths at line rate sufficient to exceed DUT buffering; configurable beyond 1000 frames</td>
              </tr>
            </tbody>
          </table>
          <t>NOTE: A single RDMA message cannot exceed the 32-bit RETH DMA Length field, an
absolute ceiling of 4 GB, and implementations commonly advertise a practical
max_msg_sz of 1-2 GB. Transfers larger than the single-message ceiling are
composed from multiple RDMA messages, and the message count and per-message
size are reported alongside the aggregate transfer size.</t>
        </section>
        <section anchor="acceptable-implementations">
          <name>Acceptable Implementations</name>
          <t>The platform used is identified in all test reports.</t>
          <t><strong>(a) Hardware Traffic Generator</strong> – dedicated hardware capable of line-rate RDMA emulation meeting the Measurement Accuracy Requirements specified in this document. Suitable for point-to-point RDMA tests (<xref target="test-rdma"/> and <xref target="test-uec"/>).  For collective tests (<xref target="test-collective"/>), the following limitations are documented: whether synchronization barriers are reproduced, whether flow patterns are schedule-driven or gradient-driven, and whether straggler behavior is modeled.</t>
          <t><strong>(b) Accelerator Cluster</strong> – cluster running an actual collective communication library with RDMA tooling.  Preferred for the collective benchmarks in <xref target="test-collective"/>.  Host configuration (accelerator model, collective library name and version, PCIe topology, BIOS power management settings) is documented.  Any non-fabric overhead in timing measurements is quantified and reported separately.</t>
          <t>When a hardware generator is used for collective benchmarks, results should be cross-validated against an accelerator cluster at one or more overlapping (message_size, N) configurations.</t>
          <t>Discrepancies exceeding 10% in BusBW or JCT Ratio are investigated and reported.</t>
        </section>
      </section>
    </section>
    <section anchor="kpi-framework-and-metrics-taxonomy">
      <name>KPI Framework and Metrics Taxonomy</name>
      <ul empty="true">
        <li>
          <t>NOTE: Per BMWG charter, the definition of acceptance criteria or performance requirements is explicitly outside the scope of this Working Group. The KPI tables in this section define what is measured and how it is reported; they do not set pass/fail criteria. Indicative non-normative reference values reflecting current industry observations are provided in <xref target="indicative-reference-values"/>; those values <bcp14>MUST NOT</bcp14> be used as pass/fail criteria in vendor evaluations.</t>
        </li>
      </ul>
      <section anchor="primary-kpis">
        <name>Primary KPIs</name>
        <table anchor="tab-primary-kpis">
          <name>Primary KPIs</name>
          <thead>
            <tr>
              <th align="left">KPI</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Job Completion Time (JCT)</td>
              <td align="left">seconds</td>
              <td align="left">Wall-clock time for benchmark iteration (compute + communication)</td>
            </tr>
            <tr>
              <td align="left">JCT Ratio</td>
              <td align="left">dimensionless</td>
              <td align="left">Measured JCT / Roofline JCT</td>
            </tr>
            <tr>
              <td align="left">Bus Bandwidth (BusBW)</td>
              <td align="left">Gbps/accelerator</td>
              <td align="left">Effective per-accelerator throughput during collective. See the BusBW definition in <xref target="TERMINOLOGY"/></td>
            </tr>
            <tr>
              <td align="left">Aggregate Throughput</td>
              <td align="left">Tbps</td>
              <td align="left">Total fabric goodput during collective phase</td>
            </tr>
            <tr>
              <td align="left">Packet Drop Rate</td>
              <td align="left">ppm</td>
              <td align="left">Frames lost end-to-end not retransmitted</td>
            </tr>
            <tr>
              <td align="left">Tail Latency (P99/P99.9)</td>
              <td align="left">us</td>
              <td align="left">99th/99.9th percentile one-way fabric latency</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="secondary-kpis">
        <name>Secondary KPIs</name>
        <table anchor="tab-secondary-kpis">
          <name>Secondary KPIs</name>
          <thead>
            <tr>
              <th align="left">KPI</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">ECN Marking Ratio</td>
              <td align="left">%</td>
              <td align="left">Percentage of packets marked CE over measurement interval</td>
            </tr>
            <tr>
              <td align="left">PFC Pause Count</td>
              <td align="left">events/sec</td>
              <td align="left">Rate of PFC PAUSE frames per priority per port</td>
            </tr>
            <tr>
              <td align="left">PFC Pause Duration</td>
              <td align="left">us</td>
              <td align="left">Cumulative time a port is in PFC-paused state per interval</td>
            </tr>
            <tr>
              <td align="left">RDMA Retransmission Rate</td>
              <td align="left">retx/sec</td>
              <td align="left">NIC-level retransmissions due to timeouts or NAKs</td>
            </tr>
            <tr>
              <td align="left">ECMP Imbalance (MMR)</td>
              <td align="left">dimensionless</td>
              <td align="left">Max-Mean Ratio of flow counts across parallel uplinks</td>
            </tr>
            <tr>
              <td align="left">Jain's Fairness Index (JFI)</td>
              <td align="left">1/N-1.0</td>
              <td align="left">Fairness of traffic distribution; 1.0 = perfect, 1/N = worst (N = number of parallel links)</td>
            </tr>
            <tr>
              <td align="left">Queue Depth (P95/Max)</td>
              <td align="left">bytes or cells</td>
              <td align="left">95th percentile and maximum egress queue occupancy per port</td>
            </tr>
            <tr>
              <td align="left">Congestion Control Convergence</td>
              <td align="left">us</td>
              <td align="left">Time from congestion onset to DCQCN rate stabilization</td>
            </tr>
            <tr>
              <td align="left">Out-of-Order Packet Rate</td>
              <td align="left">pkt/sec</td>
              <td align="left">Packets delivered out of sequence (relevant for packet spray)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="fabric-health-indicators">
        <name>Fabric Health Indicators</name>
        <table anchor="tab-fabric-health">
          <name>Fabric Health Indicators</name>
          <thead>
            <tr>
              <th align="left">Indicator</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Switch CPU Utilization</td>
              <td align="left">%</td>
              <td align="left">Average and peak CPU usage on DUT control plane during test</td>
            </tr>
            <tr>
              <td align="left">Switch Memory Utilization</td>
              <td align="left">%</td>
              <td align="left">Average and peak memory usage, including FIB/MAC table occupancy</td>
            </tr>
            <tr>
              <td align="left">Forwarding Information Base (FIB) / Route Convergence Time</td>
              <td align="left">ms</td>
              <td align="left">Time to converge routing after topology change</td>
            </tr>
            <tr>
              <td align="left">Link Flap Count</td>
              <td align="left">events</td>
              <td align="left">Spurious link state changes during test period</td>
            </tr>
            <tr>
              <td align="left">CRC/FCS Error Rate</td>
              <td align="left">errors/sec</td>
              <td align="left">Physical layer errors indicating cable or optics issues</td>
            </tr>
            <tr>
              <td align="left">Power Consumption</td>
              <td align="left">Watts</td>
              <td align="left">Per-switch and per-port power draw under test load</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="test-rdma">
      <name>Test Category 1: RDMA Transport Benchmarks</name>
      <t>These tests establish baseline fabric performance for RDMA traffic independent of collective communication patterns. They extend <xref target="RFC2544"/> and <xref target="RFC8239"/> methodology for RoCEv2 semantics.</t>
      <section anchor="baseline-throughput">
        <name>Baseline Throughput</name>
        <t><strong>Objective:</strong> Determine the maximum sustainable RDMA Write throughput through the DUT fabric at each tested message size.</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Configure N host pairs, each establishing Q Queue Pairs per pair</t>
          </li>
          <li>
            <t>Initiate RDMA Write operations and measure aggregate goodput</t>
          </li>
          <li>
            <t>Each test runs for at least 60 seconds at each rate</t>
          </li>
          <li>
            <t>Binary search per <xref target="RFC2544"/> Section 26.1 is used</t>
          </li>
          <li>
            <t>Message sizes: 64B, 256B, 1KB, 4KB, 64KB, 256KB, 1MB, 4MB</t>
          </li>
          <li>
            <t>QP counts: 1, 4, 16, 32 per src-dst pair</t>
          </li>
          <li>
            <t>Test both unidirectional and bidirectional traffic</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Report aggregate throughput (Tbps), per-port utilization (%), and throughput efficiency (measured/theoretical). Present as table indexed by message size × QP count, and as graph (message size on X-axis).</t>
      </section>
      <section anchor="latency-characterization">
        <name>Latency Characterization</name>
        <t><strong>Objective:</strong> Determine one-way and round-trip RDMA latency distribution at the throughput rate from <xref target="baseline-throughput"/>.</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Inject tagged frames at 60s into a 120s stream (per <xref target="RFC2544"/> Section 26.2)</t>
          </li>
          <li>
            <t>Nanosecond-precision timestamping</t>
          </li>
          <li>
            <t>Reported statistics: min, mean, P50, P95, P99, P99.9, max</t>
          </li>
          <li>
            <t>Each run <bcp14>MUST</bcp14> capture at least 10,000 latency samples to support a statistically meaningful P99.9</t>
          </li>
          <li>
            <t>Repeat at least 20 times; pool all samples across runs and compute percentiles from the pooled distribution, and report the per-run variability (e.g., min/max across runs) alongside the pooled statistics</t>
          </li>
          <li>
            <t>Test under both zero-load (single QP) and loaded (full fabric utilization) conditions</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Tabulate latency statistics per message size. Provide histogram and CDF plot. Report latency increase factor (loaded/unloaded).</t>
      </section>
      <section anchor="back-to-back-burst-absorption">
        <name>Back-to-Back Burst Absorption</name>
        <t><strong>Objective:</strong> Characterize the DUT fabric's ability to absorb back-to-back RDMA bursts without loss. This test extends <xref target="RFC9004"/> methodology for RoCEv2.</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t>Transmit bursts at line rate with minimum inter-frame gap</t>
          </li>
          <li>
            <t>Increase burst length until first frame loss is detected</t>
          </li>
          <li>
            <t>Test incast ratios: 2:1, 4:1, 8:1, 16:1, 32:1</t>
          </li>
          <li>
            <t>Repeat at least 50 times per burst length</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Report burst absorption capacity (frames and bytes) for each message size and incast ratio. Plot burst capacity vs. incast ratio.</t>
      </section>
    </section>
    <section anchor="test-uec">
      <name>Test Category 2: UEC Transport Protocol Benchmarks</name>
      <t>The Ultra Ethernet Consortium (UEC) Specification 1.0 <xref target="UEC-1.0"/> defines UET, an RDMA transport positioned as an alternative to RoCEv2 for AI/HPC workloads. All UET tests use the libfabric API <xref target="LIBFABRIC"/> and run on UEC 1.0-compliant NICs.</t>
      <t>The UEC compliance profile (AI Base, AI Full, or HPC) used during testing is documented in the test report.</t>
      <section anchor="uet-throughput-by-transport-service">
        <name>UET Throughput by Transport Service</name>
        <t><strong>Objective:</strong> Determine maximum sustainable throughput under each UET transport service (ROD, RUD, RUDI, UUD) and compare to RoCEv2 Reliable Connected (RC) / Unreliable Connected (UC) on the same DUT fabric.</t>
        <t><strong>Procedure:</strong> Use UEC 1.0-compliant NICs; establish PDCs; use libfabric fi_write. Apply binary search (<xref target="RFC2544"/> Section 26.1). Vary PDC counts: 1, 4, 16, 32. A parallel RoCEv2 test series is executed for comparison. Both unidirectional and bidirectional configurations are tested.</t>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-uet-throughput">
          <name>UET Throughput by Transport Service</name>
          <thead>
            <tr>
              <th align="left">Metric</th>
              <th align="left">ROD</th>
              <th align="left">RUD</th>
              <th align="left">RUDI</th>
              <th align="left">UUD</th>
              <th align="left">RoCEv2 RC</th>
              <th align="left">RoCEv2 UC</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Throughput @ 1MB (Gbps)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">Throughput @ 4MB (Gbps)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">Efficiency (% line rate)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">Connection/PDC Initiation Latency (us) (see note)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">Max Sustained PDC/QP Count</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
        <t>NOTE: For RoCEv2 RC/UC, this measures QP connection setup time (handshake round-trip). For UET (ROD/RUD/RUDI/UUD), PDCs have no separate setup handshake; this measures the first-packet latency reflecting in-band PDC initiation instead.</t>
      </section>
      <section anchor="uet-latency-characterization">
        <name>UET Latency Characterization</name>
        <t><strong>Objective:</strong> Measure latency distribution for UET transport services; quantify differential vs. RoCEv2, with particular attention to connectionless PDC establishment overhead.</t>
        <t><strong>Procedure:</strong> Measure latency for: (a) steady-state PDC transfers; (b) first-packet latency (PDC + first data packet, measuring "data before handshake"); (c) zero-load baseline. Test ROD and RUD separately to isolate reordering-related latency.</t>
        <t><strong>Reporting:</strong> Tabulate latency statistics per (transport_service, message_size, load_condition) tuple. Plot latency CDF for UET ROD, UET RUD, and RoCEv2 RC side-by-side.</t>
      </section>
      <section anchor="packet-spray-efficacy-under-uet-rud">
        <name>Packet Spray Efficacy Under UET RUD</name>
        <t><strong>Objective:</strong> Quantify the load balancing improvement achieved by UET's native per-packet spray with RUD, which eliminates the receiver reorder buffer constraint.</t>
        <t><strong>Procedure:</strong> Test five configurations:</t>
        <ul spacing="normal">
          <li>
            <t>UET RUD + packet spray</t>
          </li>
          <li>
            <t>UET ROD + packet spray</t>
          </li>
          <li>
            <t>RoCEv2 RC + packet spray</t>
          </li>
          <li>
            <t>RoCEv2 RC + standard ECMP (baseline)</t>
          </li>
          <li>
            <t>UET RUD + DLB/Flowlet</t>
          </li>
        </ul>
        <t>Measure MMR, JFI, out-of-order delivery rate, retransmission rate, and effective goodput. Vary ECMP paths: 4, 8, 16, 32.</t>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-uet-spray">
          <name>Packet Spray Efficacy Under UET RUD</name>
          <thead>
            <tr>
              <th align="left">Load Balancing Config</th>
              <th align="left">MMR</th>
              <th align="left">JFI</th>
              <th align="left">OOO Rate</th>
              <th align="left">Retx Rate</th>
              <th align="left">Effective Goodput (%)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">UET RUD + Packet Spray</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">UET ROD + Packet Spray</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">RoCEv2 RC + Packet Spray</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">RoCEv2 RC + ECMP (baseline)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">UET RUD + DLB/Flowlet</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
        <ul empty="true">
          <li>
            <t>This test evaluates whether UET RUD achieves zero host-visible reordering despite per-packet spray, since the transport layer is designed to tolerate unordered delivery.</t>
          </li>
        </ul>
      </section>
      <section anchor="uet-congestion-control-benchmarks">
        <name>UET Congestion Control Benchmarks</name>
        <t><strong>Objective:</strong> Evaluate UET's dual-sided (sender + receiver) congestion control under N:1 incast conditions vs. RoCEv2 DCQCN.</t>
        <t><strong>Procedure:</strong> Measure: (a) incast throughput at N = {2, 4, 8, 16, 32, 64}; (b) convergence time after doubling active senders (until all flows within 10% of fair share); (c) PFC avoidance with PFC disabled on the DUT; (d) receiver credit utilization.</t>
        <t><strong>Reporting:</strong> Tabulate incast throughput, convergence time, peak queue depth, PFC event count, and packet drop rate for UET vs. DCQCN per incast ratio. <strong>Key metric:</strong> report whether UET achieves zero application-visible loss without PFC.</t>
      </section>
      <section anchor="link-layer-enhancement-benchmarks">
        <name>Link-Layer and Network-Layer Enhancement Benchmarks</name>
        <t><strong>Objective:</strong> Measure performance impact of optional UEC enhancements: LLR and CBFC (link-layer) and Packet Trimming (PT, network-layer).</t>
        <t><strong>Procedure:</strong></t>
        <ul spacing="normal">
          <li>
            <t><strong>(a) LLR Retry Latency:</strong> inject controlled bit errors; measure LLR retry latency (expected sub-microsecond per hop) vs. transport-layer retransmission (~10-100us RTT). Run with 80% background load.</t>
          </li>
          <li>
            <t><strong>(b) Packet Trimming Effectiveness:</strong> configure 2:1 oversubscription bottleneck; measure time from congestion onset to first retransmission request, bandwidth saved vs. full-packet drops.</t>
          </li>
          <li>
            <t><strong>(c) CBFC vs. PFC:</strong> identical N:1 (N=32) incast scenarios; measure head-of-line blocking duration (CBFC is per-destination, PFC is per-priority), pause propagation hops, and throughput of non-congested flows.</t>
          </li>
        </ul>
        <t><strong>Reporting:</strong> Before/after comparison table for each enhancement. Note which features are hardware-supported vs. software-emulated.</t>
      </section>
      <section anchor="uet-collective-communication-performance">
        <name>UET Collective Communication Performance</name>
        <t><strong>Objective:</strong> Measure collective communication (AllReduce, AllToAll, AllGather) performance over UET and compare directly to RoCEv2, isolating the transport protocol contribution to collective efficiency.</t>
        <t><strong>Procedure:</strong> Execute the collective benchmark suite from <xref target="test-collective"/> over UET RUD transport using a UEC-compliant collective library. The same accelerator count (N), message sizes, and fabric topology are used for both UET and RoCEv2 runs to ensure a valid comparison. Run UET RUD + packet spray as the primary configuration and UET ROD + ECMP as the secondary baseline.</t>
        <t>For AllReduce, the UET TSS group-key encryption state (active or inactive) on the DUT NIC is documented as a required result field in the test report.</t>
        <t>When UET TSS group-key encryption is active during testing, report the observed BusBW computed from measured bytes transferred per the algo_factor formula defined in <xref target="TERMINOLOGY"/> (fixed per collective type); group-key encryption affects per-packet security processing overhead, not the transfer volume itself.</t>
        <t>The runtime algorithm in use is reported per message-size bucket. See <xref target="TERMINOLOGY"/> for the BusBW definition and algo_factor values.</t>
        <t><strong>Reporting:</strong>  Report the percentage improvement in BusBW and JCT attributable to UET native packet spray and congestion control.</t>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-uet-collective">
          <name>UET Collective Communication Performance</name>
          <thead>
            <tr>
              <th align="left">Collective</th>
              <th align="left">Msg Size</th>
              <th align="left">N Accels</th>
              <th align="left">UET RUD BusBW</th>
              <th align="left">UET ROD BusBW</th>
              <th align="left">RoCEv2 RC BusBW</th>
              <th align="left">Delta UET/RoCEv2</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllToAll</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="uet-pdc-scalability-and-connection-setup-rate">
        <name>UET PDC Scalability and Connection Setup Rate</name>
        <t><strong>Objective:</strong> Measure PDC establishment rate and maximum concurrent PDC count vs. RoCEv2 QP-based connections.</t>
        <t><strong>Procedure:</strong> (a) PDC establishment rate: initiate PDC creation to M = {100, 1000, 10000, 100000} remote endpoints. (b) Data-before-handshake: measure first-byte latency for UET vs. RoCEv2 RDMA Write. (c) Maximum concurrent PDC count: scale until per-PDC throughput drops below 90% of single-PDC rate. The UEC specification <xref target="UEC-1.0"/> targets millions of endpoints.</t>
        <t>NOTE: PDC and QP scaling limits are a host NIC capability, outside the DUT boundary per <xref target="TERMINOLOGY"/> and <xref target="scope-and-applicability"/>. They are reported as context because a NIC-side PDC/QP ceiling presents as fabric underperformance in the throughput and latency measurements above.</t>
      </section>
    </section>
    <section anchor="test-congestion">
      <name>Test Category 3: Congestion Management</name>
      <t>AI training workloads generate repetitive micro-congestion during the back-propagation gradient synchronization phase.</t>
      <section anchor="ecn-marking-accuracy-and-threshold">
        <name>ECN Marking Accuracy and Threshold</name>
        <t><strong>Objective:</strong> Verify that the DUT marks packets with ECN CE at the configured threshold with correct granularity.</t>
        <t><strong>Procedure:</strong> Configure threshold T on DUT egress queue. Verify: (a) no packets marked below T; (b) 100% marked above maximum threshold; (c) appropriate Weighted Random Early Detection (WRED) / Random Early Detection (RED) probability ramp between thresholds. Test thresholds: low (~100KB), medium (~1MB), high (~5MB).</t>
        <t><strong>Reporting:</strong> Plot ECN marking probability vs. instantaneous queue depth. Report measured threshold accuracy (deviation from configured).</t>
      </section>
      <section anchor="pfc-behavior-under-incast">
        <name>PFC Behavior Under Incast</name>
        <t><strong>Objective:</strong> Characterize DUT's PFC generation behavior under N:1 incast conditions.</t>
        <t><strong>Procedure:</strong> Generate N:1 incast at 100% line rate, N = {2, 4, 8, 16, 32, 64}. Measure PFC PAUSE frame count/sec per hop, PFC PAUSE duration per port, PFC storm onset, and end-to-end throughput. The test characterizes headroom sizing and PFC watchdog effectiveness.</t>
      </section>
      <section anchor="dcqcn-convergence-time">
        <name>DCQCN Convergence Time</name>
        <t><strong>Objective:</strong> Measure time for DCQCN to converge to fair-share rate after congestion onset.</t>
        <t><strong>Procedure:</strong> Establish M flows through a common bottleneck. At T0, inject additional M flows (creating 2:1 oversubscription). Measure time until all 2M flows achieve rates within 10% of fair share. Repeat for M = {4, 16, 64, 256}. Vary DCQCN parameters and report sensitivity.</t>
      </section>
      <section anchor="pfc-storm-and-deadlock-resilience">
        <name>PFC Storm and Deadlock Resilience</name>
        <t><strong>Objective:</strong> Verify the DUT does not enter PFC deadlock or sustained PFC storm under adversarial traffic.</t>
        <t><strong>Procedure:</strong> Generate cyclic traffic patterns known to cause PFC deadlocks. Run for 300 seconds. The test characterizes whether the DUT demonstrates resilience via PFC watchdog or architectural immunity (e.g., VOQ-based scheduling); the mechanism observed is reported.</t>
      </section>
    </section>
    <section anchor="test-lb">
      <name>Test Category 4: Load Balancing Efficacy</name>
      <t>Load balancing across parallel fabric paths is critical for AI training fabrics because the traffic consists of a small number of high-bandwidth, long-lived elephant flows.</t>
      <section anchor="ecmp-entropy-and-polarization">
        <name>ECMP Entropy and Polarization</name>
        <t><strong>Objective:</strong> Quantify traffic polarization under standard ECMP hashing for AI training flow patterns.</t>
        <t><strong>Procedure:</strong> Configure standard 5-tuple ECMP. Generate traffic with Q = {1, 4, 8, 16, 32} QPs per src-dst pair. Measure per-link utilization, MMR, and JFI. Test with and without ECMP hashing that includes the BTH destination QP field as a hash input (in addition to the standard 5-tuple). Repeat for fabric sizes of 8, 16, 32, and 64 leaf switches.</t>
      </section>
      <section anchor="dynamic-load-balancing-flowlet">
        <name>Dynamic Load Balancing (Flowlet)</name>
        <t><strong>Objective:</strong> Evaluate DUT's flowlet-based DLB performance and compare to baseline ECMP.</t>
        <t><strong>Procedure:</strong> Configure vendor-specific DLB (document algorithm type). Generate traffic with Q=4 QPs. Measure MMR, JFI, per-link utilization, out-of-order rate. Vary flowlet gap timer and report sensitivity.</t>
      </section>
      <section anchor="packet-spraying">
        <name>Packet Spraying</name>
        <t><strong>Objective:</strong> Evaluate DUT's per-packet spraying performance and quantify the utilization vs. reordering tradeoff.</t>
        <t><strong>Procedure:</strong> Configure per-packet load balancing. Measure MMR (expected ~1.0), JFI (expected ~1.0), out-of-order rate, and RDMA retransmission impact. If the DUT provides an in-fabric reorder buffer, document per <xref target="asic-features"/>.</t>
      </section>
      <section anchor="jains-fairness-index-measurement">
        <name>Jain's Fairness Index Measurement</name>
        <t><strong>Objective:</strong> Single-number summary of load balancing quality comparable across all strategies.</t>
        <t><strong>Formula:</strong></t>
        <figure anchor="fig-jfi">
          <name>Jain's Fairness Index Formula</name>
          <artwork type="ascii-art" align="center"><![CDATA[
JFI = (Sum LinkTx_i)^2 / (N × Sum LinkTx_i^2)
]]></artwork>
        </figure>
        <t>where LinkTx_i = transmitted traffic on fabric link i, N = total parallel links. Range: 1/N (worst) to 1.0 (perfect).</t>
        <t><strong>Reporting:</strong> Report JFI for each load balancing strategy. Provide bar chart comparing ECMP, DLB, and packet spray.</t>
      </section>
    </section>
    <section anchor="test-collective">
      <name>Test Category 5: Collective Communication Benchmarks</name>
      <t>These tests evaluate the fabric's performance under realistic collective communication patterns. Unlike synthetic RDMA tests in <xref target="test-rdma"/> and <xref target="test-uec"/>, these exercise the full stack including the collective communications library (CCL) in use (e.g., NCCL, RCCL, oneCCL).</t>
      <t>Because collective placement determines how much of a collective's traffic crosses the DUT boundary, every result in this section is reported together with the fabric-visible data volume and placement information required by <xref target="fabric-visible-data-volume"/>.</t>
      <section anchor="allreduce-benchmark">
        <name>AllReduce Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllReduce operations, the dominant collective for gradient synchronization in data-parallel training.</t>
        <t><strong>Procedure:</strong> Using N accelerators connected through the DUT fabric, execute AllReduce (sum) operations using a collective communications library benchmark suite (e.g., nccl-tests, rccl-tests, or equivalent).</t>
        <t>Test parameters:</t>
        <ul spacing="normal">
          <li>
            <t>Message sizes: 1 MB, 8 MB, 64 MB, 256 MB, 1 GB, 4 GB</t>
          </li>
          <li>
            <t>Accelerator counts (N): 8, 16, 32, 64, 128, 256, 512, 1024</t>
          </li>
          <li>
            <t>Minimum iterations per (message_size, N) pair: 100</t>
          </li>
          <li>
            <t>Load balancing strategies: ECMP, DLB, packet spray</t>
          </li>
        </ul>
        <t>For each (message_size, N) pair, record average, P50, P95, and P99 BusBW, ECN marking ratio, PFC pause count, and per-link utilization. BusBW is computed per the BusBW definition in <xref target="TERMINOLOGY"/>; algo_factor is fixed per collective type and does not vary with the algorithm the library selects at runtime. The runtime algorithm selected by the library for each message-size bucket is verified via library tracing and documented as part of the test conditions.</t>
        <t><strong>Reporting:</strong> Tabulate BusBW for each (message_size, N, LB_strategy, Algorithm (verified)) combination.  The "Algorithm (verified)" column is required; results without it are incomplete.  Plot BusBW vs. N for each message size. Report BusBW efficiency = BusBW / NIC_line_rate.</t>
      </section>
      <section anchor="alltoall-benchmark">
        <name>AllToAll Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllToAll operations, the dominant collective for Mixture-of-Experts (MoE) expert parallelism dispatch.</t>
        <t><strong>Procedure:</strong> Using the same message sizes, accelerator counts, iteration count, and load balancing strategies as <xref target="allreduce-benchmark"/>, execute AllToAll operations via the collective communication library.</t>
        <t>AllToAll generates the worst-case fabric stress pattern: every accelerator simultaneously sends a unique payload to every other accelerator in the group, which creates maximum entropy and stresses every fabric link with many-to-many traffic overlap.  This makes AllToAll JCT the most sensitive single indicator of fabric congestion management quality.</t>
        <t>BusBW is computed per the BusBW definition in <xref target="TERMINOLOGY"/>; algo_factor is fixed per collective type and does not depend on topology or library implementation. The runtime algorithm in use is verified via library tracing and documented as part of the test conditions.</t>
        <t><strong>Measurement:</strong>  Report BusBW (average, P50, P95, P99), JCT per iteration, ECN marking ratio, PFC pause count, and per-link utilization for each (message_size, N, LB_strategy) combination.</t>
        <t><strong>Reporting:</strong> Same table format as <xref target="allreduce-benchmark"/>, with the "Algorithm (verified)" column required.  Additionally report JCT for each configuration; JCT degradation relative to the ECMP baseline is highlighted as the primary congestion sensitivity indicator.</t>
      </section>
      <section anchor="allgather-benchmark">
        <name>AllGather Benchmark</name>
        <t><strong>Objective:</strong> Measure fabric performance during AllGather operations, the dominant collective for weight and activation distribution in tensor-parallel training.</t>
        <t><strong>Procedure:</strong> Using the same message sizes, accelerator counts, iteration count, and load balancing strategies as <xref target="allreduce-benchmark"/>, execute AllGather operations via the collective communication library.</t>
        <t>AllGather consists of a gather phase only – each accelerator contributes a shard and receives the full concatenated tensor.
There is no reduce phase, which produces lower peak fabric load than AllReduce at equivalent message size and N.  This makes AllGather a useful baseline for isolating the gather-path fabric contribution from the combined send-and-reduce cost.</t>
        <t>BusBW is computed per the BusBW definition in <xref target="TERMINOLOGY"/>; algo_factor is fixed per collective type and does not depend on the library's algorithm selection. The runtime algorithm in use is verified via library tracing and documented as part of the test conditions.</t>
        <t><strong>Measurement:</strong> Report BusBW (average, P50, P95, P99), JCT per iteration, ECN marking ratio, PFC pause count, and per-link utilization for each (message_size, N, LB_strategy) combination.</t>
        <t><strong>Reporting:</strong> Same table format as <xref target="allreduce-benchmark"/>, with the "Algorithm (verified)" column required.  Report BusBW efficiency = BusBW / NIC_line_rate.  Where results are compared to AllReduce under identical parameters, the BusBW ratio (AllGather / AllReduce) quantifies the difference in fabric load between the two traffic patterns; AllReduce's additional network traffic reflects its ReduceScatter phase, not the reduction arithmetic itself, which is performed by the accelerators, not the fabric.</t>
      </section>
      <section anchor="collective-communication-library-bus-bandwidth-summary">
        <name>Collective Communication Library Bus Bandwidth Summary</name>
        <t><strong>Reporting template:</strong></t>
        <table anchor="tab-ccl-summary">
          <name>Collective Communication Bus Bandwidth Summary</name>
          <thead>
            <tr>
              <th align="left">Collective</th>
              <th align="left">Msg Size</th>
              <th align="left">N Accels</th>
              <th align="left">ECMP BusBW (Gbps/accel)</th>
              <th align="left">DLB BusBW (Gbps/accel)</th>
              <th align="left">Spray BusBW (Gbps/accel)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllReduce</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllToAll</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllToAll</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">128</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
            <tr>
              <td align="left">AllGather</td>
              <td align="left">1GB</td>
              <td align="left">512</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
              <td align="left">(meas)</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="test-jct">
      <name>Test Category 6: Job Completion Time (JCT) Benchmarks</name>
      <t>JCT is the single most important user-facing KPI for AI training fabrics; it directly determines accelerator utilization and training cost.</t>
      <section anchor="synthetic-jct-under-controlled-conditions">
        <name>Synthetic JCT Under Controlled Conditions</name>
        <t><strong>Objective:</strong> Measure JCT for a defined synthetic workload with a known computation-to-communication ratio to isolate fabric-induced overhead.</t>
        <t><strong>Procedure:</strong> Define a synthetic training iteration as a strictly sequential model:</t>
        <ol spacing="normal" type="1"><li>
            <t>Computation phase of C milliseconds (simulated sleep or GPU compute kernel)</t>
          </li>
          <li>
            <t>Communication phase: AllReduce of S bytes across N accelerators</t>
          </li>
        </ol>
        <table anchor="tab-synthetic-jct-params">
          <name>Synthetic JCT Test Parameters</name>
          <thead>
            <tr>
              <th align="left">Parameter</th>
              <th align="left">Values</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Computation time C</td>
              <td align="left">10 ms, 50 ms, 100 ms, 500 ms</td>
            </tr>
            <tr>
              <td align="left">Message size S</td>
              <td align="left">256 MB, 1 GB, 4 GB</td>
            </tr>
            <tr>
              <td align="left">Accelerator count N</td>
              <td align="left">64, 128, 256, 512, 1024</td>
            </tr>
            <tr>
              <td align="left">Iterations</td>
              <td align="left">1000</td>
            </tr>
          </tbody>
        </table>
        <t>Execute 1000 iterations and measure total wall-clock JCT.</t>
        <figure anchor="fig-jct-formula">
          <name>JCT Ratio Calculation</name>
          <artwork align="center"><![CDATA[
Roofline_seq = Iterations × (C + (8 × S × algo_factor) / B_acc)
JCT Ratio    = Measured_JCT / Roofline_seq

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

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

  where:
    C_total   = Iterations × C
    Comm_time = Iterations × (8 × S × algo_factor) / B_acc
    S, algo_factor, B_acc as defined for Roofline_seq above.
]]></artwork>
        </figure>
        <t>An Overlap_Fraction of 0 indicates fully sequential execution; 1.0 indicates communication is perfectly hidden behind compute.</t>
        <t>When overlap is present, the residual fabric overhead is reported as:</t>
        <artwork><![CDATA[
Effective_Comm_Overhead = Measured_JCT - C_total
]]></artwork>
        <t>The Overlap_Fraction and communication-library overlap configuration (e.g., bucket size, number of async streams) are documented as part of the test configuration when this optional measurement is reported.</t>
        <t><strong>Reporting:</strong> Tabulate JCT Ratio for each (C, S, N, LB_strategy) combination.  Plot JCT Ratio vs. N to characterize fabric scalability.</t>
        <ul empty="true">
          <li>
            <t>NOTE: JCT Ratio values of 1.05 and 1.15 are cited elsewhere in this document (<xref target="indicative-reference-values"/>) as illustrative reference points, not as pass/fail thresholds. Per the BMWG charter, the definition of acceptance criteria or performance requirements is explicitly outside the scope of this Working Group; deployment-specific thresholds are outside the scope of this document.</t>
          </li>
        </ul>
      </section>
      <section anchor="mlperf-aligned-jct">
        <name>MLPerf-Aligned JCT</name>
        <t><strong>Objective:</strong> Measure JCT using MLPerf Training benchmark workloads <xref target="MLPERF"/> to enable comparison with published industry results.</t>
        <t><strong>Procedure:</strong> Execute the current MLPerf Training closed-division workloads per MLPerf submission rules (<xref target="MLPERF"/>); the specific workload set changes across MLPerf versions, so the test report <bcp14>MUST</bcp14> identify the MLPerf Training version and workload names used. Simultaneously capture all fabric KPIs from <xref target="kpi-framework-and-metrics-taxonomy"/>. Report time-to-train and/or tokens-per-second.</t>
      </section>
      <section anchor="multi-tenant-jct-interference">
        <name>Multi-Tenant JCT Interference</name>
        <t><strong>Objective:</strong> Quantify JCT impact when multiple training jobs share the same fabric.</t>
        <t><strong>Procedure:</strong> Configure two or more independent training jobs. Jobs are configured to overlap in spine-layer link usage. Measure baseline JCT (isolated) and contention JCT (simultaneous).</t>
        <figure anchor="fig-jct-interference">
          <name>JCT Interference Factor</name>
          <artwork type="ascii-art" align="center"><![CDATA[
JCT Interference Factor = Contention_JCT / Baseline_JCT
]]></artwork>
        </figure>
        <t>Test with spine link overlap: 0%, 25%, 50%, 75%.</t>
      </section>
    </section>
    <section anchor="test-scale">
      <name>Test Category 7: Scale and Convergence</name>
      <section anchor="fabric-scale-limits">
        <name>Fabric Scale Limits</name>
        <t><strong>Objective:</strong> Determine the maximum fabric scale at which the DUT maintains acceptable KPI performance.</t>
        <t><strong>Procedure:</strong> Progressively increase active accelerator endpoints from N=64 to maximum topology support while running AllReduce (<xref target="allreduce-benchmark"/>, S=1GB). At each scale point record JCT Ratio, BusBW, ECN ratio, PFC count, CPU and memory utilization. Also measure BGP/routing convergence time after clearing all adjacencies (analogous to the convergence testing approach in <xref target="EVPN-BENCH"/>).</t>
      </section>
      <section anchor="link-failure-convergence">
        <name>Link Failure Convergence</name>
        <t><strong>Objective:</strong> Measure traffic disruption and JCT impact when a fabric link fails during active training.</t>
        <t><strong>Procedure:</strong> With the fabric fully loaded (AllReduce, N=128, S=1GB), administratively fail a spine uplink. Measure:</t>
        <ul spacing="normal">
          <li>
            <t>Duration of packet loss</t>
          </li>
          <li>
            <t>Packets lost</t>
          </li>
          <li>
            <t>JCT overhead for the failure iteration vs. steady state</t>
          </li>
          <li>
            <t>Time for load balancing mechanism to redistribute flows</t>
          </li>
        </ul>
        <t>Repeat for: leaf uplink failure, spine switch failure, superspine link failure (if applicable). Test under each load balancing strategy.</t>
      </section>
      <section anchor="zero-impact-failover-measurement">
        <name>Zero-Impact Failover Measurement</name>
        <t><strong>Objective:</strong> Verify vendor claims of zero-impact or sub-microsecond failover.</t>
        <t><strong>Procedure:</strong> Execute <xref target="link-failure-convergence"/> with nanosecond-precision measurement. A failure is considered "zero-impact" if the measured JCT for the failure iteration is within the P99 JCT of steady-state iterations.</t>
      </section>
    </section>
    <section anchor="test-soak">
      <name>Test Category 8: Soak and Stability</name>
      <section anchor="soak-24h">
        <name>24-Hour Sustained Load</name>
        <t><strong>Objective:</strong> Characterize DUT fabric stability under sustained AI training load over an extended period, following the soak-testing methodology pattern in <xref target="EVPN-BENCH"/>.</t>
        <t><strong>Procedure:</strong> Configure DUT at maximum validated scale from <xref target="fabric-scale-limits"/>. Generate bidirectional collective communication traffic (alternating AllReduce and AllToAll) at 80% of maximum validated throughput, per the offered load fraction required by the Soak Test definition in <xref target="TERMINOLOGY"/>. Run continuously for 24 hours. Sample all KPIs from <xref target="kpi-framework-and-metrics-taxonomy"/> every 60 seconds.</t>
        <t>The objective of the soak test is to monitor and document fabric behavior under extended load. The methodology does not establish pass/fail criteria for any reported metric. Any memory leaks, crashes, or other anomalies encountered during the test <bcp14>MUST</bcp14> be documented as an application log file or other dedicated file with their timestamps and durations.</t>
        <t><strong>Reporting:</strong> Time-series plots of JCT Ratio, BusBW, ECN ratio, PFC count, CPU, and memory over the 24-hour period. Report standard deviation of JCT Ratio (stability metric).</t>
      </section>
      <section anchor="resource-leak-detection">
        <name>Resource Leak Detection</name>
        <t><strong>Objective:</strong> Detect memory leaks, handle exhaustion, or gradual performance degradation in DUT software.</t>
        <t><strong>Procedure:</strong> Record per-process memory usage at T=0, T=1h, T=6h, T=12h, T=24h. Compute linear regression slope of memory usage over time. A slope exceeding <strong>1 MB/hour</strong> for any process indicates a potential memory leak and is reported; this slope is a reporting trigger for investigation, not a pass/fail criterion. Also monitor forwarding-plane counter wraparounds and hardware table occupancy trends.</t>
      </section>
    </section>
    <section anchor="reporting">
      <name>Reporting Format</name>
      <t>Per the BMWG charter, the definition of acceptance criteria or performance requirements is explicitly outside the scope of this Working Group. This methodology defines what is measured and how it is reported; it does not set minimum acceptable values, certification, or pass/fail criteria. Any deployment-specific performance objectives are outside the scope of this document.</t>
      <t>Results from collective communication benchmarks (<xref target="test-collective"/>) <bcp14>MUST</bcp14> be reported per the reporting requirements stated in the BusBW definition of <xref target="TERMINOLOGY"/>. The report identifies this document and <xref target="TERMINOLOGY"/> by name and revision.</t>
      <t>Test reports include the following sections:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>DUT Identification:</strong> Complete parameters from <xref target="device-under-test-dut-identification"/> for all fabric components.</t>
        </li>
        <li>
          <t><strong>Test Topology:</strong> Diagram and description per <xref target="reference-fabric-topologies"/>, including physical cabling.</t>
        </li>
        <li>
          <t><strong>Test Configuration:</strong> All DUT configuration parameters: QoS policies (ECN thresholds, PFC headroom, DCQCN parameters), load balancing mode, buffer allocation, and vendor-specific tuning.</t>
        </li>
        <li>
          <t><strong>Observation Points:</strong> For each reported value, state the Observation Point per <xref target="TERMINOLOGY"/>: the Fabric DUT Boundary, DUT-reported telemetry read from the DUT itself, or an endpoint software boundary. Values obtained at different Observation Points are not combined into a single reported value or treated as interchangeable, even when they carry the same metric name. For DUT-reported values, the report additionally states the port, direction (ingress or egress), and traffic class to which the value applies, per the Observation Point definition in <xref target="TERMINOLOGY"/>.</t>
        </li>
        <li>
          <t><strong>Host Configuration:</strong> Complete host stack description per <xref target="device-under-test-dut-identification"/> including NIC firmware, driver, collective library version, and any tuning. For UET tests, additional configuration parameters include: UEC compliance profile, libfabric provider version, NIC UEC firmware version, and enabled optional features (LLR, Packet Trimming, Packet Rate Improvement (PRI), CBFC).</t>
        </li>
        <li>
          <t><strong>Test Results:</strong> For each test from <xref target="test-rdma"/> through <xref target="test-soak"/>, provide specified tables, graphs, and statistical summaries. For <xref target="test-uec"/> tests, results include side-by-side UET vs. RoCEv2 comparison data on the identical DUT fabric.</t>
        </li>
        <li>
          <t><strong>Anomalies:</strong> Any deviations from specified procedures, test failures, or unexpected behaviors are documented.</t>
        </li>
        <li>
          <t><strong>Trial Accounting:</strong> For each test, report the number of trials attempted and the number included in the primary result. A trial excluded from the primary result states the reason: failure to reach steady state within the configured observation window, a counter reset or discontinuity, an incomplete measurement window, or a retransmission or loss event outside the scope of the test objective. Excluded trials are reported, not silently dropped from the trial count.</t>
        </li>
        <li>
          <t><strong>Repeatability Statement:</strong> Report iteration count and coefficient of variation (std deviation / mean) for each test's primary metric. A CV of 5% is an illustrative reference point for typical run-to-run variation; Note that this document does not set a required or minimum threshold for test validity.</t>
        </li>
        <li>
          <t><strong>Comparability Statement:</strong> When a report compares two or more fabrics, tabulate the comparability set of <xref target="comparability-normalization"/> for each result and state explicitly which parameters differ. Reports comparing fabrics of different topology class additionally provide the structural descriptors listed in that section. Reports that present results from a single fabric do not require this section.</t>
        </li>
      </ol>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document defines benchmarking methodology for controlled laboratory environments and does not specify any protocol mechanism. It therefore introduces no new protocol-level security considerations beyond those of the underlying technologies it references. The considerations below follow the BMWG convention established in <xref target="RFC8238"/> and align with the companion terminology document <xref target="TERMINOLOGY"/>.</t>
      <t>Benchmarking activities as described in this document are limited to technology characterization of AI training fabrics using controlled stimuli in a laboratory environment, with dedicated address space and the constraints specified herein.</t>
      <t>The benchmarking network topology will be an independent test setup and <bcp14>MUST NOT</bcp14> be connected to devices that may forward the test traffic into a production network or misroute traffic to the test management network. This isolation requirement is particularly important for AI fabric benchmarking because the hop-by-hop flow-control mechanisms referenced in this document (PFC, CBFC) propagate backpressure toward traffic sources and can extend the blast radius of a misconfigured test beyond the immediate DUT; DCQCN reduces, but does not eliminate, reliance on these mechanisms.</t>
      <t>Benchmarking is performed on a "black-box" basis, relying on measurements observable external to the DUT as defined in <xref target="TERMINOLOGY"/>. DUT-reported values (e.g., switch queue occupancy) are used only under the conditions stated in the Security Considerations of <xref target="TERMINOLOGY"/>.</t>
      <t>Special capabilities <bcp14>SHOULD NOT</bcp14> exist in the DUT specifically for benchmarking purposes. Any implications for network security arising from the DUT <bcp14>SHOULD</bcp14> be identical in the lab and in production networks. In particular, RDMA memory-region permissions are properties of the deployed configuration, not of the benchmarking methodology, and <bcp14>SHOULD</bcp14> reflect production posture during testing.</t>
      <t>Per <xref target="RFC6815"/>, the tests defined herein <bcp14>MUST NOT</bcp14> be performed on production networks. The use of dedicated test IP address ranges per <xref target="RFC2544"/> Appendix C (198.18.0.0/15 for IPv4; 2001:db8::/32 per <xref target="RFC3849"/> for IPv6) is <bcp14>RECOMMENDED</bcp14> to prevent accidental interaction with production infrastructure.</t>
      <t>The following considerations are specific to the methodology defined in this document:</t>
      <ul spacing="normal">
        <li>
          <t><strong>PFC leakage:</strong> PFC PAUSE frames generated under incast or storm conditions (<xref target="pfc-behavior-under-incast"/>, <xref target="pfc-storm-and-deadlock-resilience"/>) that escape the test environment can cause adjacent production switches sharing the same priority class to stop responding. Physical or VLAN-based isolation of the test fabric is required.</t>
        </li>
        <li>
          <t><strong>Line-rate RDMA traffic generators:</strong> the equipment specified in <xref target="traffic-generator-requirements"/> is capable of saturating production links at line rate; such generators <bcp14>MUST</bcp14> be confined to the test fabric.</t>
        </li>
        <li>
          <t><strong>PFC disabled in <xref target="uet-congestion-control-benchmarks"/>:</strong> the UET PFC-free incast test deliberately disables PFC on the DUT. In this configuration, traffic leaking to adjacent infrastructure cannot be backpressured and will be dropped on the adjacent device's queues. Isolation is mandatory.</t>
        </li>
        <li>
          <t><strong>RDMA QP and PDC namespace isolation:</strong> when RDMA/RoCEv2 traffic is used, the test environment <bcp14>SHOULD</bcp14> be isolated from production RDMA fabrics to prevent QP number space collisions or inadvertent PFC propagation. When UET traffic is used (<xref target="test-uec"/>), the test environment <bcp14>MUST</bcp14> ensure that UDP port 4793 traffic does not leak to production networks and that PDC identifier spaces are isolated.</t>
        </li>
        <li>
          <t><strong>UET transport security sub-layer (TSS):</strong> <bcp14>SHOULD NOT</bcp14> be enabled during performance benchmarking unless transport security overhead is explicitly being measured.</t>
        </li>
      </ul>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1242">
          <front>
            <title>Benchmarking Terminology for Network Interconnection Devices</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="July" year="1991"/>
            <abstract>
              <t>This memo discusses and defines a number of terms that are used in describing performance benchmarking tests and the results of such tests. This memo provides information for the Internet community. It does not specify an Internet standard.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1242"/>
          <seriesInfo name="DOI" value="10.17487/RFC1242"/>
        </reference>
        <reference anchor="RFC2544">
          <front>
            <title>Benchmarking Methodology for Network Interconnect Devices</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <author fullname="J. McQuaid" initials="J." surname="McQuaid"/>
            <date month="March" year="1999"/>
            <abstract>
              <t>This document is a republication of RFC 1944 correcting the values for the IP addresses which were assigned to be used as the default addresses for networking test equipment. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2544"/>
          <seriesInfo name="DOI" value="10.17487/RFC2544"/>
        </reference>
        <reference anchor="RFC6815">
          <front>
            <title>Applicability Statement for RFC 2544: Use on Production Networks Considered Harmful</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <author fullname="K. Dubray" initials="K." surname="Dubray"/>
            <author fullname="J. McQuaid" initials="J." surname="McQuaid"/>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <date month="November" year="2012"/>
            <abstract>
              <t>The Benchmarking Methodology Working Group (BMWG) has been developing key performance metrics and laboratory test methods since 1990, and continues this work at present. The methods described in RFC 2544 are intended to generate traffic that overloads network device resources in order to assess their capacity. Overload of shared resources would likely be harmful to user traffic performance on a production network, and there are further negative consequences identified with production application of the methods. This memo clarifies the scope of RFC 2544 and other IETF BMWG benchmarking work for isolated test environments only, and it encourages new standards activity for measurement methods applicable outside that scope. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6815"/>
          <seriesInfo name="DOI" value="10.17487/RFC6815"/>
        </reference>
        <reference anchor="RFC8238">
          <front>
            <title>Data Center Benchmarking Terminology</title>
            <author fullname="L. Avramov" initials="L." surname="Avramov"/>
            <author fullname="J. Rapp" initials="J." surname="Rapp"/>
            <date month="August" year="2017"/>
            <abstract>
              <t>The purposes of this informational document are to establish definitions and describe measurement techniques for data center benchmarking, as well as to introduce new terminology applicable to performance evaluations of data center network equipment. This document establishes the important concepts for benchmarking network switches and routers in the data center and is a prerequisite for the test methodology document (RFC 8239). Many of these terms and methods may be applicable to network equipment beyond the scope of this document as the technologies originally applied in the data center are deployed elsewhere.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8238"/>
          <seriesInfo name="DOI" value="10.17487/RFC8238"/>
        </reference>
        <reference anchor="RFC8239">
          <front>
            <title>Data Center Benchmarking Methodology</title>
            <author fullname="L. Avramov" initials="L." surname="Avramov"/>
            <author fullname="J. Rapp" initials="J." surname="Rapp"/>
            <date month="August" year="2017"/>
            <abstract>
              <t>The purpose of this informational document is to establish test and evaluation methodology and measurement techniques for physical network equipment in the data center. RFC 8238 is a prerequisite for this document, as it contains terminology that is considered normative. Many of these terms and methods may be applicable beyond the scope of this document as the technologies originally applied in the data center are deployed elsewhere.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8239"/>
          <seriesInfo name="DOI" value="10.17487/RFC8239"/>
        </reference>
        <reference anchor="RFC9004">
          <front>
            <title>Updates for the Back-to-Back Frame Benchmark in RFC 2544</title>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>Fundamental benchmarking methodologies for network interconnect devices of interest to the IETF are defined in RFC 2544. This memo updates the procedures of the test to measure the Back-to-Back Frames benchmark of RFC 2544, based on further experience.</t>
              <t>This memo updates Section 26.4 of RFC 2544.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9004"/>
          <seriesInfo name="DOI" value="10.17487/RFC9004"/>
        </reference>
        <reference anchor="UEC-1.0" target="https://ultraethernet.org">
          <front>
            <title>Ultra Ethernet Transport (UET) Specification 1.0</title>
            <author>
              <organization>Ultra Ethernet Consortium</organization>
            </author>
            <date year="2025" month="June"/>
          </front>
        </reference>
        <reference anchor="TERMINOLOGY">
          <front>
            <title>Benchmarking Terminology for AI Network Fabrics</title>
            <author fullname="Fernando Calabria" initials="F." surname="Calabria">
              <organization>Cisco</organization>
            </author>
            <author fullname="Carlos Pignataro" initials="C." surname="Pignataro">
              <organization>Blue Fern Consulting</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei</organization>
            </author>
            <author fullname="Sowjanya Reddy" initials="S." surname="Reddy">
              <organization>Apple</organization>
            </author>
            <date day="30" month="October" 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-bpm-ai-fabric-terminology-00"/>
        </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>*** BROKEN REFERENCE ***</title>
            <author>
              <organization/>
            </author>
            <date/>
          </front>
        </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 961?>

<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:
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
XAmiX9wNEzUTh1pGVhpNxFMkjEkhRWzyt9QI0axlDDaVkTaUloFHhJWYpKxN
fUPyUm65dXjG+1B+Go3ww2VGAmQgEEiwjuTsLhztwLtlTRHJZjDbcMxkXvhu
KMZSMaH14FBga6bKa9+p40fHlTGZ+qsym3YWBSLRxeAOK+sRsqepgGM5J7Fu
jEvmxAmnpN2zsVdNojL1vT0uPEvarkTs0tY8Y6kaTK1ROIKbpZxPaDJC9fjP
/SpmWIud/zd22iw7Yi7z/AbOwg9l+ivgBCb5MFiBvQa06+bL6N/+NbrCD1iv
Psjltkhz2v9AEh87ecQ6du9scoae8VwXtBJPNtwlHB54prA4myAOOpGwWKY1
2WeAlZttiUXEmzeFxI4IwTkvgWTGgm1bLt0WWjl/ccuWLv+LxfUxA+CIJYYe
zHNtvcH1yRCOxE5X5zDmMYmAEWpVCAS2dtwgHEIMVGptAL3CPHu3t0V6i8e9
GTHNx2kWs0EXHCQmtIzVjhpXyeecgGTOsypc9zJDJGxYeJvhjsPg2ZQdrCOS
iHKsgN0Kfzg6dpc56onLOUA1Dh+fSCyjWvIZHCXTyxqG+O4wkrDSKp3QLTN8
Zt6D1gXPh45hbBBJrhgEgz+w1dl3A4oTa1yFCAxLCI54vY1BGUQEwgBrST6O
iVl5+ei0ShonzdgznFgvp6OuCrYKw3ynEkhDAzev2j48E/Pm+JNkElyEQpwS
KZ//dYgsBCsFZhNXKY17j0NIhb/y0cID0U+mSZ/4WHtlrJH3iInA6s1K+ymR
qK4X7CshatmIo8thzibi8OULu2LxMV1Y7MUGC87BNRNLNHBs3o29mJGvX+FC
kwgLCJ2Q/bKRjiwfx15kj9rY1Oj76yydEWb1+7NpgveD+CBYQHtlPiKY14wy
TvnSXA1zwelgN6DjdPBj46jplX3Ex7Gp1MR9I7zTgKfyN4e0V3wBGKarJxgR
tzoD26hxQUGNRsO9W9p3zelHTWjIuNk7hC1737SxuevetGwtZcbJUnZsbf/g
Oaus83Ku/qDDVL3RVSJeHvjSUstNNMyIM4JwfCRKaBRjWx0CYupNSqSTNBpb
nWjtnsH4TY7dIO2PWCKyEI34ubTAATAvNlLJ/GEsvhPUUloqdGi0nPEa9kaI
h+nln9VmS0BJlHUGR2LMlpWByZSRhIhtdrorhbgl/jdZscdypmyksm6TnMXC
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
LrPuZUvasEz12McQweJPPDWyI/8/gjvgHQNBAQA=

-->

</rfc>
