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

<t>This document defines benchmarking terminology, methodologies, and Key
Performance Indicators (KPIs) for evaluating Ethernet-based AI inference
serving network fabrics. As Large Language Model (LLM) inference deployments
scale to disaggregated prefill/decode architectures spanning hundreds or
thousands of accelerators (GPUs/XPUs), the interconnect fabric determines
Time to First Token (TTFT), Inter-Token Latency (ITL), and aggregate
throughput in tokens per second (TPS). This
document establishes vendor-independent, reproducible test procedures for
benchmarking fabric-level performance under realistic AI inference workloads.</t>
      <t>Coverage includes RDMA-based KV cache transfer between disaggregated prefill
and decode workers, Mixture-of-Experts (MoE) expert parallelism AllToAll
communication, request routing and load balancing for inference serving,
congestion management under bursty inference traffic patterns, and scale/soak
testing. The methodology enables direct comparison across NIC transport
stacks (RoCEv2 and UET) and fabric architectures.</t>
      <t>This document is a companion to the AI training fabric benchmarking
methodology, which addresses training workloads.</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-inference-bench/draft-calabria-bmwg-ai-fabric-inference-bench.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-calabria-bmwg-ai-fabric-inference-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-inference-bench"/>.</t>
    </note>
  </front>
  <middle>
    <?line 116?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large Language Model (LLM) inference now consumes datacenter network capacity
at a scale comparable to training, but with different fabric requirements.
Training workloads generate bulk synchronous collective operations –
AllReduce, AllGather – at predictable intervals. Inference workloads produce
bursty, latency-sensitive request/response patterns with strict Service Level
Objectives (SLOs) on per-token latency and time-to-first-token.</t>
      <t>Disaggregated serving architectures physically separate the prefill phase
(prompt processing) from the decode phase (token generation). This separation
creates a new category of fabric-critical data movement: KV cache transfer. A single large prompt
processed by a typical large-scale model generates multiple gigabytes of KV
cache state that must be transferred from prefill workers to decode workers
within a fraction of the target TTFT SLO.</t>
      <t>As clusters scale with thousands of concurrent requests, this creates sustained
multi-terabyte-per-second aggregate transfer demands on the fabric.
Simultaneously, Mixture-of-Experts (MoE) architectures introduce Expert
Parallelism (EP), which distributes expert sub-networks across GPUs and requires
AllToAll communication for token-to-expert routing. Wide EP configurations
(e.g., 96-way EP across 12 nodes of 8 GPUs each) generate fine-grained,
latency-sensitive inter-node traffic that contends with KV cache transfers on
shared fabric links.</t>
      <t>This document defines vendor-independent benchmarking methodologies for
evaluating how well a network fabric supports these inference-specific traffic
patterns. All tests are designed for controlled laboratory environments using
either hardware traffic generators or software workload emulators capable of
reproducing inference serving traffic profiles.</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>The scope covers Layer 2/3 fabric performance (switch forwarding, link utilization,
 congestion management), RDMA transport performance (one-sided PUT/GET operations
 for KV cache transfer, two-sided SEND/RECV for expert parallelism dispatch), and
the interaction between fabric behavior and application-level inference metrics
 (TTFT, ITL, TPS).</t>
        <t>The DUT boundary for all measurements in this document is defined as the NIC-to-NIC
Ethernet fabric segment – specifically, the path from the point of packet transmission
 by the source NIC Ethernet port to the point of packet reception at the destination NIC
 Ethernet port.</t>
        <t>Intra-node transfer segments (proprietary accelerator interconnects GPU-to-GPU, and PCIe / Compute Express Link (CXL) GPU-to-NIC) are explicitly
OUT OF SCOPE as primary benchmarked entities.  Where intra-node transfer contributes
 measurably to an end-to-end latency measurement (e.g., TTFT decomposition in <xref target="end-to-end-disaggregated-ttft"/>), implementers report intra-node transfer time as a separately labelled component
 so that the fabric contribution can be isolated.  See <xref target="dut-id"/> for DUT boundary diagram.</t>
        <t>The document does NOT address benchmarking of individual accelerator (GPU/XPU) compute performance, model accuracy or quality metrics, or benchmarking of the inference serving
 software stack in isolation from the fabric.</t>
        <t>All methodologies assume controlled laboratory conditions per BMWG convention.</t>
      </section>
      <section anchor="relationship-to-existing-bmwg-work">
        <name>Relationship to Existing BMWG Work</name>
        <t>This document builds upon the foundational BMWG benchmarking framework
established by <xref target="RFC1242"/> and <xref target="RFC2544"/>, with additional background from
<xref target="RFC2889"/> and <xref target="RFC6349"/>. <xref target="RFC8238"/> and <xref target="RFC8239"/> establish data center
benchmarking terminology and methodology that this document extends for AI
inference fabric traffic patterns.</t>
        <t>The test structure follows RFC 2544 conventions for trial duration (minimum 60
seconds) and reporting format (graphical and tabular); statistical repetition
(minimum 20 trials per configuration) is a convention of this document and is
not defined by RFC 2544.</t>
        <t>The methodologies extend RFC 2544 Section 26 benchmarks (throughput, latency,
frame loss rate, back-to-back frames, system recovery, reset) to
inference-specific scenarios including KV cache transfer, expert parallelism
dispatch, and disaggregated serving request routing.</t>
      </section>
      <section anchor="relationship-to-companion-documents">
        <name>Relationship to Companion Documents</name>
        <t>This document is a companion to <xref target="TRAINING-BENCH"/>, which defines benchmarking
methodologies for AI training network fabrics. Both documents share common
terminology, test topology conventions, and reporting formats
(<xref target="reporting"/>). Both documents use the terminology defined in
<xref target="TERMINOLOGY"/>, which provides the common terminology base for AI fabric
benchmarking.</t>
        <t>Training workloads generate bulk synchronous collective communication
(AllReduce, AllGather) with high bandwidth utilization and periodic
synchronization barriers; inference workloads generate bursty, latency-sensitive
point-to-point transfers (KV cache) and fine-grained AllToAll dispatch for MoE
expert parallelism. Implementers deploying converged fabrics that serve both
training and inference workloads should run both test suites.</t>
      </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>The following terms are bench-specific extensions used only in this document and are not redefined in <xref target="TERMINOLOGY"/>:</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>TTFT_fabric</strong></td>
            <td align="left">The fabric-segment contribution to Time to First Token (TTFT), measured at the DUT-PD boundary. Comprises the KV cache transfer time over the Ethernet fabric only; excludes intra-node (PCIe/CXL/accelerator-interconnect) contributions. Reported alongside SUT-E TTFT to enable fabric/non-fabric decomposition.</td>
          </tr>
          <tr>
            <td align="left">
              <strong>ITL_fabric</strong></td>
            <td align="left">The fabric-segment contribution to Inter-Token Latency (ITL), measured at the DUT-F boundary. Comprises the per-decode-step EP dispatch round-trip over the fabric; excludes intra-node and compute contributions.</td>
          </tr>
          <tr>
            <td align="left">
              <strong>DUT-S</strong></td>
            <td align="left">Single-switch DUT configuration; see <xref target="dut-id"/>.</td>
          </tr>
          <tr>
            <td align="left">
              <strong>DUT-F</strong></td>
            <td align="left">Complete-fabric DUT configuration; see <xref target="dut-id"/>.</td>
          </tr>
          <tr>
            <td align="left">
              <strong>DUT-N</strong></td>
            <td align="left">NIC-transport DUT configuration; see <xref target="dut-id"/>.</td>
          </tr>
          <tr>
            <td align="left">
              <strong>DUT-PD</strong></td>
            <td align="left">Prefill-Decode-path DUT configuration; see <xref target="dut-id"/>.</td>
          </tr>
          <tr>
            <td align="left">
              <strong>SUT-E</strong></td>
            <td align="left">End-to-end inference SUT configuration; see <xref target="dut-id"/>.</td>
          </tr>
        </tbody>
      </table>
      <t>The scope of the DUT for the tests defined in this document is the Ethernet fabric segment connecting prefill and decode workers (and, where applicable, expert-parallel groups), consistent with the Fabric DUT Boundary defined in <xref target="TERMINOLOGY"/>.</t>
      <t>Worked examples of the S_KV formula and KV cache size computation for representative model architectures are provided in <xref target="model-architecture-parameters"/>.</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>The reference topologies from the companion training document remain
applicable and retain their labels there: Topology A (2-Tier Clos), Topology B
(3-Tier Clos), and Topology C (Rail-Optimized). Inference serving introduces an
additional topology consideration related to disaggregated prefill/decode
placement and MoE expert distribution, labelled Topology D below to avoid
collision with the training document's Topology C.</t>
        <section anchor="topology-a-2-tier-clos-leaf-spine">
          <name>Topology A: 2-Tier Clos (Leaf-Spine)</name>
          <t>Applicable to inference clusters up to approximately 2,048 accelerators. Prefill
and decode worker groups are placed on separate leaf switches (or separate
leaf switch groups) to isolate KV cache transfer traffic from decode-to-client
response traffic. Expert Parallelism (EP) traffic within a single MoE dispatch
group is confined to a single leaf switch or a minimal number of leaf
switches to minimize spine-hop latency.</t>
        </section>
        <section anchor="topology-b-3-tier-clos-leaf-spine-superspine">
          <name>Topology B: 3-Tier Clos (Leaf-Spine-Superspine)</name>
          <t>Required for inference clusters exceeding 2,048 accelerators or for multi-model
serving deployments where different model instances occupy different fabric pods.
KV cache transfer traffic between prefill and decode workers in different pods
traverses the superspine tier, so superspine bandwidth and latency directly
affect KV cache transfer performance.</t>
        </section>
        <section anchor="topology-d-disaggregated-prefilldecode-placement">
          <name>Topology D: Disaggregated Prefill/Decode Placement</name>
          <t>A topology variant specific to inference serving in which prefill workers and
decode workers are placed in distinct physical locations within the fabric,
connected by a dedicated KV cache transfer network segment. This topology enables
independent scaling of prefill and decode resources and allows heterogeneous
hardware (e.g., high-compute GPUs for prefill, high-memory-bandwidth GPUs for
decode).</t>
          <figure anchor="fig-pd-topology">
            <name>Disaggregated Prefill/Decode Inference Topology</name>
            <artwork align="center"><![CDATA[
          +----------------------+
          |   Request Router     |
          |   (KV-Aware LB)      |
          +--------+-------------+
                   |
      +------------+--------------+
      |                           |
+-----v-------+         +---------v-----+
| Prefill Pool|         |  Decode Pool  |
| (xP workers)|         |  (yD workers) |
| High Compute|         | High Mem BW   |
| TP=8, DP=N/8|         | TP=8, DP=M/8  |
+------+------+         +-------+-------+
       |                        |
       | KV Cache RDMA Transfer |
       | (One-sided PUT/Signal) |
       +------------------------+
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="disaggregated-prefilldecode-topology">
        <name>Disaggregated Prefill/Decode Topology</name>
        <t>The disaggregated topology separates the inference pipeline into physically
distinct pools connected by the fabric. The test topology includes the
following components:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Prefill Worker Pool:</strong> N Prefill nodes, each containing G accelerators with
high-compute capability. These workers execute the prefill phase and generate
KV cache state. Tensor Parallelism (TP) is applied within each node; Data
Parallelism (DP) is applied across nodes. Each prefill worker communicates
with one or more decode workers via RDMA-based KV cache transfer.</t>
          </li>
          <li>
            <t><strong>Decode Worker Pool:</strong> M Decode nodes, each containing G accelerators with high
memory bandwidth. These workers receive KV cache state from prefill workers and
execute the autoregressive decode phase. DP Attention may partition the KV
cache across DP ranks within the decode pool, requiring AllToAll communication
during decode.</t>
          </li>
          <li>
            <t><strong>KV Cache Transfer Network:</strong> The Ethernet fabric segment connecting prefill and decode worker pools. This segment carries one-sided RDMA PUT operations (the RDMA WRITE verb; PUT is used throughout this document as the general term, with WRITE used where the literal RC opcode name matters, e.g., <xref target="kv-frame"/>) or PUT-with-signal (RDMA WRITE with Immediate Data) transferring KV cache blocks from prefill GPU memory to decode GPU memory via RDMA over Converged Ethernet (RoCEv2) or Ultra Ethernet Transport (UET) <xref target="UEC-1.0"/>.  </t>
            <t>
The end-to-end transfer from GPU memory to remote GPU memory traverses three segments:  </t>
            <ul spacing="normal">
              <li>
                <t>(1) GPU-to-NIC: PCIe/CXL (intra-node, out of scope as DUT);</t>
              </li>
              <li>
                <t>(2) NIC-to-NIC: Ethernet fabric (the DUT, in scope);</t>
              </li>
              <li>
                <t>(3) NIC-to-GPU: PCIe/CXL at destination (intra-node, out of scope as DUT).</t>
              </li>
            </ul>
            <t>
Benchmarking procedures in <xref target="test-cat1"/> and <xref target="test-cat2"/> measure fabric-segment latency and throughput exclusively. When end-to-end measurements are reported (e.g., TTFT decomposition), the intra-node segments are labelled separately.  </t>
            <artwork><![CDATA[
GPU Memory --> [PCIe/CXL] --> NIC    intra-node (out of scope)
NIC --> [ETHERNET FABRIC] --> NIC    DUT (in scope)
NIC --> [PCIe/CXL] --> GPU Memory    intra-node (out of scope)
]]></artwork>
          </li>
          <li>
            <t><strong>Request Router:</strong> A network-layer or application-layer load balancer that
assigns incoming inference requests to prefill workers and subsequently routes
KV cache to the appropriate decode workers. KV-aware routing and prefix-aware
caching policies are under test.</t>
          </li>
        </ul>
      </section>
      <section anchor="dut-id">
        <name>Device Under Test (DUT) Identification</name>
        <t>The following table defines the DUT configurations tested in this document:</t>
        <table anchor="tab-dut">
          <name>DUT Configuration Definitions</name>
          <thead>
            <tr>
              <th align="left">DUT ID</th>
              <th align="left">Description</th>
              <th align="left">Components Under Test</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">DUT-S</td>
              <td align="left">Single Switch</td>
              <td align="left">Individual leaf or spine switch forwarding inference traffic. Measures per-hop latency, buffer absorption, ECN marking accuracy.</td>
            </tr>
            <tr>
              <td align="left">DUT-F</td>
              <td align="left">Complete Fabric</td>
              <td align="left">End-to-end fabric from prefill NIC egress to decode NIC ingress. Measures fabric-level KV cache transfer latency, throughput, and congestion behavior.</td>
            </tr>
            <tr>
              <td align="left">DUT-N</td>
              <td align="left">NIC Transport</td>
              <td align="left">NIC RDMA transport stack processing KV cache transfer operations. Measures RDMA verb completion latency, one-sided PUT bandwidth, QP scaling.</td>
            </tr>
            <tr>
              <td align="left">DUT-PD</td>
              <td align="left">Prefill-Decode Path</td>
              <td align="left">The complete data path from prefill GPU memory through NIC, fabric, NIC, to decode GPU memory. Measures end-to-end KV cache transfer including proprietary accelerator-interconnect, PCIe/CXL, and fabric segments.</td>
            </tr>
            <tr>
              <td align="left">SUT-E</td>
              <td align="left">End-to-End System</td>
              <td align="left">Complete inference serving system including inference serving software, RDMA transfer libraries, fabric, and accelerators. Measures TTFT, ITL, TPS as functions of fabric performance.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="traffic-generator-and-workload-emulator-requirements">
        <name>Traffic Generator and Workload Emulator Requirements</name>
        <t>Tests in this document require one or both of the following traffic generation
modes. The mode used is documented in all test reports.</t>
        <section anchor="hardware-traffic-generator-tg-minimum-requirements">
          <name>Hardware Traffic Generator (TG) - Minimum Requirements</name>
          <t>The hardware traffic generator satisfies all of the following:</t>
          <ul spacing="normal">
            <li>
              <t>RDMA traffic generation supporting RoCEv2 and, where tested, UET transport;
configurable RDMA verb types (one-sided PUT, PUT-with-signal, two-sided
SEND/RECV).</t>
            </li>
            <li>
              <t>Configurable message sizes from 4 KB (minimum KV cache page) to 1 GB
(large KV cache block), to cover the message sizes used in <xref target="test-cat1"/>.</t>
            </li>
            <li>
              <t>Configurable QP counts from 1 QP to a minimum of 256 QPs per
source-destination port pair.</t>
            </li>
          </ul>
        </section>
        <section anchor="software-workload-emulator-we-minimum-requirements">
          <name>Software Workload Emulator (WE) - Minimum Requirements</name>
          <t>A software workload emulator runs on actual accelerators and generates realistic
inference workloads. The WE supports all of the following:</t>
          <ul spacing="normal">
            <li>
              <t>Configurable prompt length distributions: uniform, Zipf, and trace-replay
modes.</t>
            </li>
            <li>
              <t>Configurable output length distributions and configurable request arrival
rates: Poisson, bursty, and trace-replay.</t>
            </li>
            <li>
              <t>Disaggregated prefill/decode execution with actual RDMA-based KV cache
transferring between prefill and decode worker pools.</t>
            </li>
            <li>
              <t>MoE expert parallelism with actual AllToAll dispatch where MoE-specific tests
(<xref target="test-cat3"/>) are performed.</t>
            </li>
            <li>
              <t>Measurement instrumentation providing per-request TTFT and ITL with timestamp
accuracy ≤ 1 millisecond.</t>
            </li>
          </ul>
          <t>When a software workload emulator is used, the complete software configuration
is documented per <xref target="reporting"/>, as framework version, RDMA library version,
and GPU driver version materially affect results.</t>
        </section>
      </section>
    </section>
    <section anchor="kpi-framework">
      <name>KPI Framework and Metrics Taxonomy</name>
      <t>This section defines the Key Performance Indicators measured across all test
categories. KPIs are organized into four tiers: Primary Latency KPIs, Primary
Throughput KPIs, Fabric-Level KPIs, and Fabric Health Indicators. Each tier is
defined in the subsections below.</t>
      <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; 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-latency-kpis">
        <name>Primary Latency KPIs</name>
        <table anchor="tab-latency-kpis">
          <name>Primary Latency KPIs</name>
          <thead>
            <tr>
              <th align="left">KPI</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
              <th align="left">Measurement Point</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TTFT</td>
              <td align="left">ms</td>
              <td align="left">Time from request arrival to first output token emission</td>
              <td align="left">SUT-E request/response boundary</td>
            </tr>
            <tr>
              <td align="left">ITL</td>
              <td align="left">ms</td>
              <td align="left">Time between successive output tokens</td>
              <td align="left">SUT-E token emission timestamps</td>
            </tr>
            <tr>
              <td align="left">TTFT_fabric</td>
              <td align="left">ms</td>
              <td align="left">Fabric contribution to TTFT (KV cache transfer latency)</td>
              <td align="left">DUT-PD NIC-to-NIC measurement</td>
            </tr>
            <tr>
              <td align="left">ITL_fabric</td>
              <td align="left">ms</td>
              <td align="left">Fabric contribution to ITL (EP dispatch latency per decode step)</td>
              <td align="left">DUT-F EP dispatch round-trip</td>
            </tr>
            <tr>
              <td align="left">E2E_latency</td>
              <td align="left">ms</td>
              <td align="left">End-to-end request latency from arrival to completion of all output tokens</td>
              <td align="left">SUT-E request/response boundary</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="primary-throughput-and-efficiency-kpis">
        <name>Primary Throughput and Efficiency KPIs</name>
        <table anchor="tab-throughput-kpis">
          <name>Primary Throughput and Efficiency KPIs</name>
          <thead>
            <tr>
              <th align="left">KPI</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
              <th align="left">Measurement Point</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TPS_input</td>
              <td align="left">tokens/s</td>
              <td align="left">Aggregate input (prefill) tokens processed per second across all workers</td>
              <td align="left">SUT-E prefill completion events</td>
            </tr>
            <tr>
              <td align="left">TPS_output</td>
              <td align="left">tokens/s</td>
              <td align="left">Aggregate output (decode) tokens generated per second across all workers</td>
              <td align="left">SUT-E token emission events</td>
            </tr>
            <tr>
              <td align="left">TPS_per_GPU</td>
              <td align="left">tokens/s/GPU</td>
              <td align="left">Output tokens per second normalized by number of decode GPUs</td>
              <td align="left">SUT-E per-worker counters</td>
            </tr>
            <tr>
              <td align="left">Goodput</td>
              <td align="left">GB/s or tokens/s</td>
              <td align="left">See the Goodput definition in <xref target="TERMINOLOGY"/>. Reports use Inference_Goodput for token-rate measurements and Fabric_Goodput for byte-rate fabric measurements</td>
              <td align="left">SUT-E successful completion events</td>
            </tr>
            <tr>
              <td align="left">Request_Rate</td>
              <td align="left">req/s</td>
              <td align="left">Maximum sustained request arrival rate meeting all latency SLOs</td>
              <td align="left">SUT-E admission control boundary</td>
            </tr>
            <tr>
              <td align="left">Prefix_cache_hit_rate</td>
              <td align="left">%</td>
              <td align="left">Fraction of requests whose shared prefix KV cache segment is already resident on the assigned worker, avoiding a fabric transfer</td>
              <td align="left">SUT-E request router counters</td>
            </tr>
            <tr>
              <td align="left">JFI_decode</td>
              <td align="left">dimensionless (0-1), one value per metric</td>
              <td align="left">Jain's Fairness Index per <xref target="TERMINOLOGY"/>, computed separately for each of: per-decode-worker KV cache receive rate, GPU utilization, and output TPS. Reports state which of the three the value applies to; results are not combined into a single index</td>
              <td align="left">SUT-E per-worker counters</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="fabric-level-kpis">
        <name>Fabric-Level KPIs</name>
        <table anchor="tab-fabric-kpis">
          <name>Fabric-Level KPIs</name>
          <thead>
            <tr>
              <th align="left">KPI</th>
              <th align="left">Unit</th>
              <th align="left">Definition</th>
              <th align="left">DUT</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">KV_xfer_latency</td>
              <td align="left">us</td>
              <td align="left">One-sided RDMA PUT completion time for a single KV cache block transfer</td>
              <td align="left">DUT-N, DUT-PD</td>
            </tr>
            <tr>
              <td align="left">KV_xfer_bandwidth</td>
              <td align="left">GB/s</td>
              <td align="left">Sustained unidirectional KV cache transfer throughput, reported per NIC port and as the aggregate between prefill and decode pools</td>
              <td align="left">DUT-N, DUT-PD</td>
            </tr>
            <tr>
              <td align="left">EP_alltoall_latency</td>
              <td align="left">us</td>
              <td align="left">Round-trip time for a complete MoE expert parallelism AllToAll dispatch</td>
              <td align="left">DUT-F</td>
            </tr>
            <tr>
              <td align="left">EP_alltoall_bandwidth</td>
              <td align="left">GB/s</td>
              <td align="left">Aggregate AllToAll bandwidth across all EP ranks during dispatch</td>
              <td align="left">DUT-F</td>
            </tr>
            <tr>
              <td align="left">Fabric_FCT</td>
              <td align="left">us</td>
              <td align="left">Flow completion time for a KV cache transfer flow through the fabric</td>
              <td align="left">DUT-F</td>
            </tr>
            <tr>
              <td align="left">Buffer_utilization</td>
              <td align="left">%</td>
              <td align="left">Peak switch buffer utilization during KV cache transfer bursts</td>
              <td align="left">DUT-S</td>
            </tr>
            <tr>
              <td align="left">ECN_marking_rate</td>
              <td align="left">%</td>
              <td align="left">Fraction of packets marked with ECN-CE during inference traffic</td>
              <td align="left">DUT-S</td>
            </tr>
            <tr>
              <td align="left">PFC_frame_count</td>
              <td align="left">frames</td>
              <td align="left">Number of PFC PAUSE frames generated per unit time</td>
              <td align="left">DUT-S</td>
            </tr>
            <tr>
              <td align="left">Link_utilization</td>
              <td align="left">%</td>
              <td align="left">Average and peak link utilization on fabric links carrying inference traffic</td>
              <td align="left">DUT-F</td>
            </tr>
            <tr>
              <td align="left">Packet_drop_rate</td>
              <td align="left">ppm</td>
              <td align="left">Packets dropped per million due to buffer overflow or transport error</td>
              <td align="left">DUT-F</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="fabric-health-indicators">
        <name>Fabric Health Indicators</name>
        <table anchor="tab-health">
          <name>Fabric Health Indicators</name>
          <thead>
            <tr>
              <th align="left">Indicator</th>
              <th align="left">Typical Healthy Range</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CPU Utilization (switch)</td>
              <td align="left">&lt; 30%</td>
              <td align="left">Control plane CPU usage on switches under inference traffic load</td>
            </tr>
            <tr>
              <td align="left">Memory Usage (switch)</td>
              <td align="left">&lt; 70%</td>
              <td align="left">TCAM, buffer, and control plane memory usage</td>
            </tr>
            <tr>
              <td align="left">FEC Error Rate</td>
              <td align="left">&lt; 1e-12 post-FEC Bit Error Rate (BER)</td>
              <td align="left">Forward Error Correction effectiveness on fabric links</td>
            </tr>
            <tr>
              <td align="left">CRC Error Count</td>
              <td align="left">0</td>
              <td align="left">Layer 2 CRC errors on any fabric link</td>
            </tr>
            <tr>
              <td align="left">BGP/OSPF Stability</td>
              <td align="left">0 flaps</td>
              <td align="left">Routing protocol adjacency stability under inference load</td>
            </tr>
            <tr>
              <td align="left">NIC QP State</td>
              <td align="left">100% active</td>
              <td align="left">All RDMA Queue Pairs in active state (no error/reset)</td>
            </tr>
            <tr>
              <td align="left">GPU-NIC PCIe BW (contextual)</td>
              <td align="left">&gt; 90% of theoretical</td>
              <td align="left">PCIe bandwidth utilization between GPU and NIC (generation- and width-dependent). Intra-node segment, outside the DUT boundary per <xref target="TERMINOLOGY"/>; reported as context because a starved PCIe link presents as fabric underperformance</td>
            </tr>
          </tbody>
        </table>
        <t>NOTE: Per the BMWG charter, the definition of acceptance criteria or performance requirements is explicitly outside the scope of this Working Group. The values above are indicative of a healthy fabric under normal operating conditions, not pass/fail criteria; deployment-specific thresholds are outside the scope of this document.</t>
      </section>
    </section>
    <section anchor="test-cat1">
      <name>Test Category 1: RDMA KV Cache Transfer Benchmarks</name>
      <t>KV cache transfer between disaggregated prefill and decode workers is the
defining fabric workload for inference serving. Unlike training collectives
(AllReduce, AllGather) which are periodic and predictable, KV cache transfers
are event-driven (triggered by prefill completion) and bursty.</t>
      <section anchor="point-to-point-kv-cache-transfer-throughput">
        <name>Point-to-Point KV Cache Transfer Throughput</name>
        <t><strong>Objective:</strong> To determine the maximum sustained KV cache transfer throughput
between a single prefill worker NIC and a single decode worker NIC across the
DUT fabric.</t>
        <t><strong>Procedure:</strong> Configure a single RDMA connection (QP) between the prefill and
decode endpoints. Send a sequence of one-sided RDMA PUT operations with message
sizes corresponding to KV cache block sizes. The message size sequence
includes: 64 KB (single attention page), 256 KB, 1 MB, 4 MB, 16 MB, 64 MB,
256 MB (large prompt KV cache), and 1 GB. For each message size, transmit at
the maximum rate sustainable by the NIC for a minimum of 60 seconds per trial.
Repeat for 1, 4, 8, 16, 32, 64, and 128 concurrent QPs. The DUT is the fabric
path from NIC to NIC.</t>
        <t><strong>Measurement:</strong> Record throughput (GB/s), CPU utilization on both endpoints,
GPU memory-to-NIC transfer overhead, and NIC hardware offload utilization. The
test is repeated a minimum of 20 times per configuration and the average
reported.</t>
        <t><strong>Reporting Format:</strong> Results are reported as a multi-line graph with
message size (log scale) on the X axis and throughput (GB/s) on the Y axis.
Separate lines for each QP count. A reference line showing theoretical NIC line
rate is included.</t>
      </section>
      <section anchor="kv-cache-transfer-latency">
        <name>KV Cache Transfer Latency</name>
        <t><strong>Objective:</strong> To determine the latency of individual KV cache block transfers
across the DUT fabric under varying load conditions.</t>
        <t><strong>Procedure:</strong> Using the same endpoint configuration as Test 5.1, measure the
completion time of individual RDMA PUT operations. Latency is measured from the
initiation of the PUT verb on the prefill NIC to receipt of the completion
signal on the decode NIC (for PUT-with-signal) or to polling of the remote
completion queue. Measure latency under unloaded conditions (single outstanding
operation) and under loaded conditions (background traffic at 25%, 50%, 75%,
and 90% of fabric capacity). Message sizes include 64 KB, 1 MB, 16 MB,
and 256 MB.</t>
        <t><strong>Measurement:</strong> Report latency at P50, P95, P99, and P99.9 percentiles. The
test is repeated a minimum of 20 trials of at least 120 seconds each per
configuration. The difference between P99 and P50 (tail latency spread) is
reported as a derived metric.</t>
        <t><strong>Reporting Format:</strong> Results are reported as a table with columns for
message size, background load level, and latency at each percentile. A
complementary CDF plot of latency distribution for selected configurations
is included.</t>
      </section>
      <section anchor="concurrent-kv-cache-transfer-scaling">
        <name>Concurrent KV Cache Transfer Scaling</name>
        <t><strong>Objective:</strong> To characterize how aggregate KV cache transfer performance
scales as the number of concurrent prefill-to-decode transfer pairs increases.</t>
        <t><strong>Procedure:</strong> Configure N concurrent prefill-decode endpoint pairs, where N
ranges from 1 to the maximum supported by the fabric (e.g., 1, 2, 4, 8, 16,
32, 64, 128 pairs). Each pair executes continuous KV cache transfers of 16 MB
messages (representative of a medium-length prompt). Measure aggregate
throughput and per-pair latency as N increases.</t>
        <t><strong>Measurement:</strong> Report aggregate throughput (GB/s), per-pair median latency
(us), per-pair P99 latency (us), Jain's Fairness Index across pairs, and maximum
fabric link utilization observed. The test is repeated a minimum of 20
times per value of N.</t>
        <t><strong>Reporting Format:</strong> Results are reported as a dual-axis graph with N
(concurrent pairs) on the X axis, aggregate throughput on the left Y axis, and
P99 latency on the right Y axis. The JFI value for each N is annotated.</t>
      </section>
      <section anchor="multi-tier-storage-transfer-characterization">
        <name>Multi-Tier Storage Transfer Characterization</name>
        <t><strong>Objective:</strong> To characterize KV cache transfer performance across the
memory/storage hierarchy, restricted to fabric-traversing (remote) tier
pairs: GPU HBM to remote GPU HBM (inter-node RDMA), GPU HBM to remote CPU
DRAM (offload), remote CPU DRAM to GPU HBM (reload), and GPU HBM to remote
NVMe/SSD (persistent cache on a remote storage node). Same-node (local) tier
pairs are pure intra-node PCIe transfers with zero DUT/fabric involvement and
are out of scope per the Scope and Purpose section of <xref target="TERMINOLOGY"/>.</t>
        <t><strong>Procedure:</strong> For each tier pair, measure unidirectional transfer throughput
and latency for message sizes of 1 MB, 16 MB, and 256 MB. Use zero-copy
transfers where supported (GPU-direct storage paths for NVMe and GPU-direct RDMA for inter-node, where the implementation provides them).</t>
        <t><strong>Measurement:</strong> Report throughput (GB/s) and latency (P50, P99) for each tier
pair and message size. Report the tier throughput ratio relative to GPU-to-GPU
RDMA as a derived metric.</t>
        <t><strong>Reporting Format:</strong> Results are reported as a table with rows for each
tier pair and columns for throughput and latency at each message size.</t>
      </section>
    </section>
    <section anchor="test-cat2">
      <name>Test Category 2: Prefill/Decode Disaggregation Benchmarks</name>
      <t>Disaggregated prefill/decode serving separates the two phases onto distinct
hardware pools to enable independent optimization and scaling. This section
benchmarks the fabric's ability to support the resulting KV cache transfer
traffic patterns and their impact on end-to-end inference metrics.</t>
      <section anchor="end-to-end-disaggregated-ttft">
        <name>End-to-End Disaggregated TTFT</name>
        <t><strong>Objective:</strong> To measure TTFT as a function of prompt length in a disaggregated
serving configuration, isolating the fabric contribution. This test
characterizes the disaggregated-serving KV cache transfer path under normal
serving conditions on a configured xPyD cluster; the single-request unloaded
TTFT baseline is established separately in <xref target="ttft-prompt-length"/>.</t>
        <t><strong>Procedure:</strong> Configure a disaggregated serving system (SUT-E) with a specified
xPyD ratio (e.g., 3P9D for a 12-node cluster). Submit inference requests with
prompt lengths of 128, 512, 1024, 2048, 4096, 8192, and 16384 tokens. For each
prompt length, measure the total TTFT and decompose it into: T_prefill (prefill
compute time), T_transfer (KV cache fabric transfer time, measured at DUT-PD),
and T_decode_init (first decode step time).</t>
        <t><strong>Measurement:</strong> Report TTFT (ms) and its decomposition at P50, P95, and P99
percentiles. The ratio T_transfer/TTFT (fabric fraction) is reported as
a derived metric. The test is repeated a minimum of 20 trials per prompt
length.</t>
        <t><strong>Reporting Format:</strong> Results are reported as a stacked bar chart with
prompt length on the X axis and TTFT (ms) on the Y axis, with bars decomposed
into T_prefill, T_transfer, and T_decode_init. A table of numerical values accompanies the chart.</t>
      </section>
      <section anchor="xpyd-ratio-optimization">
        <name>xPyD Ratio Optimization</name>
        <t><strong>Objective:</strong> To determine the optimal prefill-to-decode resource ratio for a
given model, prompt distribution, and latency SLO, as limited by fabric transfer
capacity.</t>
        <t><strong>Procedure:</strong> For a fixed total number of nodes N (e.g., 12), iterate over
xPyD ratios: 1P11D, 2P10D, 3P9D, 4P8D, 6P6D, 8P4D, 10P2D, 11P1D. For each
ratio, submit a sustained request stream matching a target request rate with a
specified prompt length distribution (e.g., Zipf with alpha=1.0 over
[128, 8192] tokens). Measure TTFT P99, ITL P99, TPS_output, and Inference_Goodput for
each configuration.</t>
        <t><strong>Measurement:</strong> Report all four metrics for each xPyD ratio and request rate.
Identify the Pareto-optimal ratio(s) across the TPS_output, TTFT, and ITL
trade-off, that is, the ratios for which no other ratio improves one metric
without worsening another. For reference, an illustrative interactive-serving
objective is TTFT P99 &lt; 500 ms and ITL P99 &lt; 50 ms; these values are provided
for context only and are not benchmark requirements or acceptance criteria.</t>
        <t><strong>Reporting Format:</strong> Results are reported as a multi-panel figure with
one panel per request rate, each showing xPyD ratio on the X axis and metrics
on dual Y axes (TTFT/ITL on left, TPS on right). The Pareto frontier is
highlighted.</t>
      </section>
      <section anchor="heterogeneous-parallelism-configuration">
        <name>Heterogeneous Parallelism Configuration</name>
        <t><strong>Objective:</strong> To evaluate the fabric impact of using different parallelism
strategies on prefill vs. decode pools in a disaggregated configuration.</t>
        <t><strong>Procedure:</strong> Test the following parallelism configurations:</t>
        <ul spacing="normal">
          <li>
            <t>Prefill TP=8, Decode TP=8 (baseline, same parallelism)</t>
          </li>
          <li>
            <t>Prefill TP=8, Decode TP=4 with DP_Attention=2 (reduced TP, added DP)</t>
          </li>
          <li>
            <t>Prefill TP=4 with DP=2, Decode TP=2 with DP_Attention=4 (aggressive DP)</t>
          </li>
        </ul>
        <t><strong>Measurement:</strong> Report the number of concurrent RDMA flows, aggregate bandwidth
(GB/s), TTFT (ms), and ITL (ms) at P50 and P99 for each configuration.</t>
      </section>
      <section anchor="prefill-queue-depth-impact-on-transfer-latency">
        <name>Prefill Queue Depth Impact on Transfer Latency</name>
        <t><strong>Objective:</strong> To measure how queuing of prefill requests (due to compute
contention) affects KV cache transfer burstiness and fabric congestion.</t>
        <t><strong>Procedure:</strong> Oversubscribe the prefill pool by submitting requests at a rate
exceeding prefill capacity. Measure the resulting KV cache transfer burst
characteristics: burst size, burst duration, inter-burst gap, and peak fabric
bandwidth demand. Vary the oversubscription ratio from 1.0x (saturated) to 2.0x
in 0.25x increments.</t>
        <t><strong>Measurement:</strong> Report burst size distribution, peak and average fabric
bandwidth, KV transfer latency P99, and ECN/PFC event counts as functions of
oversubscription ratio.</t>
      </section>
    </section>
    <section anchor="test-cat3">
      <name>Test Category 3: MoE Expert Parallelism Benchmarks</name>
      <t>Mixture-of-Experts models distribute expert sub-networks across GPUs and route
tokens to the appropriate experts via AllToAll communication. This section
benchmarks the fabric's ability to support the resulting fine-grained,
latency-sensitive inter-GPU traffic patterns.</t>
      <section anchor="alltoall-dispatch-throughput">
        <name>AllToAll Dispatch Throughput</name>
        <t><strong>Objective:</strong> To determine the maximum AllToAll dispatch throughput for MoE
expert parallelism across the DUT fabric.</t>
        <t><strong>Procedure:</strong> Generate a synthetic MoE dispatch workload where each GPU sends token embeddings to the experts selected by a top-k routing function.
Repeat the workload across EP group sizes 8, 16, 32, 48, 64, 96 and a range
of per-GPU batch sizes (e.g., 32, 64, 128, 256 tokens), holding the selected
canonical MoE test matrix config row constant, to populate the
EP-size-by-batch-size grid used in the Reporting Format below.
The dispatch payload per source-destination GPU pair per MoE layer is:</t>
        <t>T_dispatch = (B × k × H_model × P_bytes) / N. where B = per-GPU batch size (tokens), k = top-k routing count,
H_model = hidden dimension, P_bytes = precision bytes (e.g., BFloat16 (BF16) = 2), N = EP group size</t>
        <t>The corresponding total egress per GPU per MoE layer, summed over its N-1
destination peers, is:</t>
        <t>T_egress = B × k × H_model × P_bytes × (N - 1) / N</t>
        <t>T_egress, not T_dispatch, characterizes the per-accelerator offered load: it
equals T_dispatch × (N - 1). The portion of T_egress that crosses the Fabric
DUT Boundary counts only inter-node destination peers; this quantity is the
Fabric-Visible Data Volume (S_fabric) defined in <xref target="TERMINOLOGY"/>, and expert
placement across nodes determines it. Two results obtained at equal B, k, and
N but different expert placement therefore represent different offered fabric
workloads. See the MoE AllToAll appendix for a worked example in which 88 of
95 destination peers are inter-node.</t>
        <t><strong>Canonical MoE Test Matrix</strong></t>
        <table anchor="tbl-moe-matrix">
          <name>Canonical MoE Test Matrix</name>
          <thead>
            <tr>
              <th align="left">Config</th>
              <th align="left">E (experts)</th>
              <th align="left">k (top-k)</th>
              <th align="left">H_model</th>
              <th align="left">T_dispatch per GPU pair (B=128, BF16, N=96)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">M1</td>
              <td align="left">8</td>
              <td align="left">2</td>
              <td align="left">4096</td>
              <td align="left">21.8 KB</td>
            </tr>
            <tr>
              <td align="left">M2</td>
              <td align="left">64</td>
              <td align="left">4</td>
              <td align="left">7168</td>
              <td align="left">76.5 KB</td>
            </tr>
            <tr>
              <td align="left">M3</td>
              <td align="left">256</td>
              <td align="left">2</td>
              <td align="left">7168</td>
              <td align="left">38.2 KB</td>
            </tr>
            <tr>
              <td align="left">M4</td>
              <td align="left">256</td>
              <td align="left">8</td>
              <td align="left">7168</td>
              <td align="left">153 KB</td>
            </tr>
            <tr>
              <td align="left">M5</td>
              <td align="left">(implementer-defined — report all parameters)</td>
              <td align="left"> </td>
              <td align="left"> </td>
              <td align="left"> </td>
            </tr>
          </tbody>
        </table>
        <t>NOTE: T_dispatch values are the per-GPU-pair payload computed from the
T_dispatch formula above (e.g., M1: 128 × 2 × 4096 × 2 bytes / 96 =
21,845 bytes ≈ 21.8 KB, decimal KB, 1 KB = 1,000 bytes). The aggregate fabric load per dispatch is
T_dispatch multiplied by the number of communicating GPU pairs; see the
MoE AllToAll appendix for a worked example.</t>
        <t><strong>Measurement:</strong> Report aggregate bandwidth (GB/s), per-dispatch latency (us)
at P50 and P99, and GPU idle time waiting for dispatch completion. The test is repeated a minimum of 20 times per configuration.</t>
        <t><strong>Reporting Format:</strong> Results are reported as a heatmap with EP group size
on the Y axis, batch size on the X axis, and throughput (GB/s) as the color
dimension. A companion latency table is included. Reports state which config row(s) were used. For M5, the values of E, k, H_model, P_bytes, and N are included in the results table.</t>
        <t>NOTE: When per-accelerator normalized throughput (BusBW) is reported alongside EP_alltoall_bandwidth, BusBW is computed per the BusBW definition in <xref target="TERMINOLOGY"/>; algo_factor is fixed per collective type and does not depend on the algorithm the library selects at runtime. The runtime algorithm in use is verified via library tracing and documented as part of the test conditions.</t>
      </section>
      <section anchor="routing-mode-and-dispatch-mode-comparison">
        <name>Routing Mode and Dispatch Mode Comparison</name>
        <t><strong>Objective:</strong> To compare fabric performance across dispatch modes and routing policies. Tests cover Normal Dispatch and Low-Latency Dispatch.  Tests should additionally cover at least one alternative routing mode from <xref target="tbl-routing-modes"/>.</t>
        <t><strong>Routing Mode Taxonomy</strong></t>
        <table anchor="tbl-routing-modes">
          <name>MoE Routing Mode Taxonomy</name>
          <thead>
            <tr>
              <th align="left">Mode</th>
              <th align="left">Description</th>
              <th align="left">Traffic Impact</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Standard Top-k</td>
              <td align="left">Each token routed to k highest-scoring experts</td>
              <td align="left">Fixed, uniform AllToAll dispatch volume</td>
            </tr>
            <tr>
              <td align="left">Expert Choice (EC)</td>
              <td align="left">Experts select tokens; ensures load balance</td>
              <td align="left">Non-uniform message sizes; tests HOL-blocking resilience</td>
            </tr>
            <tr>
              <td align="left">Top-k with Token Drop</td>
              <td align="left">Overloaded experts drop excess tokens</td>
              <td align="left">Lower peak traffic; unpredictable under load</td>
            </tr>
            <tr>
              <td align="left">Auxiliary Loss Top-k</td>
              <td align="left">Load-balanced top-k via training loss</td>
              <td align="left">Near-uniform AllToAll; lower hot-spot risk</td>
            </tr>
          </tbody>
        </table>
        <t><strong>Procedure:</strong> Execute the AllToAll dispatch procedure of the preceding
AllToAll Dispatch Throughput test in both Normal Dispatch and Low-Latency
Dispatch modes. Repeat the sequence for each selected routing mode from
<xref target="tbl-routing-modes"/>, holding message sizes, EP group size, and iteration
count constant across dispatch and routing modes so that results are
directly comparable.</t>
        <t><strong>Measurement:</strong> Measure dispatch latency, fabric bandwidth, and routing mode impact on AllToAll traffic distribution and fabric congestion per <xref target="tbl-routing-modes"/>. Results from different routing modes are reported in separate result tables with the routing mode labelled.</t>
      </section>
      <section anchor="wide-expert-parallelism-scaling">
        <name>Wide Expert Parallelism Scaling</name>
        <t><strong>Objective:</strong> To characterize AllToAll dispatch performance as EP group size
scales beyond a single node (wide EP), requiring inter-node fabric communication.</t>
        <t><strong>Procedure:</strong> Scale the EP group from intra-node only (EP=8) to wide EP (EP=16, 32, 48, 64, 96 spanning 2, 4, 6, 8, 12 nodes). Use a fixed batch size of 128 tokens and at least one configuration from the canonical MoE test matrix <xref target="tbl-moe-matrix"/>.
The selected config row is identified in the results.</t>
        <t><strong>Measurement:</strong> Report total dispatch latency (us), inter-node bandwidth
(GB/s), and latency decomposition (intra-node vs. inter-node fraction). Report
the scaling efficiency: (EP=16 latency) / (EP=N latency), using EP=16 as the
wide-EP baseline (the first configuration requiring inter-node fabric
communication).</t>
        <t>Because S_fabric varies with EP group size and expert placement, the EP=8
configuration presents no dispatch traffic to the fabric and is reported as a
placement reference point rather than as a fabric result. Report S_fabric at
each EP size per <xref target="reporting"/>; the scaling curve is interpreted against that
series, since a change in dispatch latency across EP sizes reflects both the
change in offered fabric work and the fabric's response to it.</t>
      </section>
      <section anchor="expert-parallelism-and-kv-cache-transfer-contention">
        <name>Expert Parallelism and KV Cache Transfer Contention</name>
        <t><strong>Objective:</strong> To measure the mutual interference between EP AllToAll dispatch
traffic and KV cache transfer traffic when both share the same fabric links.</t>
        <t><strong>Procedure:</strong> On a shared fabric, simultaneously execute: (a) continuous KV
cache transfers at a sustained rate (e.g., 50%, 75% of fabric capacity), and
(b) periodic EP AllToAll dispatches (one per MoE layer forward pass).</t>
        <t><strong>Measurement:</strong> Report KV_xfer_latency P99 (us) and EP_alltoall_latency P99
(us) for the isolated and contended cases. Report the contention penalty as the
ratio of contended P99 to isolated P99 for each traffic class. Report ECN/PFC
event counts during contention.</t>
      </section>
    </section>
    <section anchor="test-cat4">
      <name>Test Category 4: Congestion Management Benchmarks</name>
      <t>Inference traffic patterns differ from training in their burstiness,
heterogeneity (mixed KV cache transfers and EP dispatches), and latency
sensitivity.</t>
      <section anchor="ecn-marking-under-inference-incast">
        <name>ECN Marking Under Inference Incast</name>
        <t><strong>Objective:</strong> To verify that ECN marking thresholds are correctly applied when
multiple prefill workers simultaneously transfer KV cache blocks to a single
decode worker (incast pattern).</t>
        <t><strong>Procedure:</strong> Configure M prefill workers (M = 2, 4, 8, 16, 32) to
simultaneously transfer 16 MB KV cache blocks to a single decode worker port.
Repeat for ECN marking thresholds of 100 KB, 500 KB, 1 MB, and 5 MB. The DUT
is the individual leaf switch (DUT-S).</t>
        <t><strong>Measurement:</strong> Report the ECN marking rate (fraction of marked packets), the
onset of marking, queue depth at marking onset, and aggregate throughput
achieved. Repeat a minimum of 20 times per configuration.</t>
      </section>
      <section anchor="pfc-behavior-under-bursty-kv-cache-transfers">
        <name>PFC Behavior Under Bursty KV Cache Transfers</name>
        <t><strong>Objective:</strong> To characterize PFC PAUSE frame generation and propagation under
bursty KV cache transfer patterns typical of disaggregated serving.</t>
        <t><strong>Procedure:</strong> Generate KV cache transfer bursts: N_burst concurrent transfers
(N_burst = 4, 8, 16, 32), each of size 16 MB, arriving within a window of
T_arrival (100 us, 1 ms, 10 ms). Vary the PFC threshold from 10 KB to 1 MB.</t>
        <t><strong>Measurement:</strong> Report PFC frame count, total PAUSE duration (us),
head-of-line blocking delay imposed on other traffic classes (us), and KV cache
transfer completion time.</t>
      </section>
      <section anchor="congestion-control-convergence-for-mixed-traffic">
        <name>Congestion Control Convergence for Mixed Traffic</name>
        <t><strong>Objective:</strong> To measure the convergence time of DCQCN (or UET congestion
control) when KV cache transfer traffic and EP AllToAll dispatch traffic share
fabric capacity.</t>
        <t><strong>Procedure:</strong> Establish a sustained KV cache transfer at 80% of fabric
capacity. Introduce EP AllToAll dispatch traffic on the same fabric links.
Measure the convergence time to stable rate allocation. Repeat with the roles
reversed.</t>
        <t><strong>Measurement:</strong> Report convergence time (ms) to within 5% of steady-state
rates, steady-state bandwidth allocation between traffic classes, packet loss
during convergence, and Jain's Fairness Index of the steady-state allocation.</t>
      </section>
      <section anchor="pfc-storm-and-deadlock-resilience">
        <name>PFC Storm and Deadlock Resilience</name>
        <t><strong>Objective:</strong> To verify that the fabric does not enter a PFC storm or deadlock
condition under adversarial inference traffic patterns.</t>
        <t><strong>Procedure:</strong> Per the PFC Storm and Deadlock Resilience test of
<xref target="TRAINING-BENCH"/>, generate a PFC storm
scenario by creating circular buffer dependency across multiple switches.
Simultaneously inject KV cache transfer traffic on all affected paths. Monitor
for PFC storm propagation, deadlock, and recovery time. The test duration is at least 300 seconds.</t>
        <t><strong>Measurement:</strong> Report whether PFC storm occurred (yes/no), deadlock occurred
(yes/no), maximum PAUSE propagation depth (number of hops), maximum
zero-throughput duration (ms), and recovery time (ms).</t>
      </section>
    </section>
    <section anchor="test-cat5">
      <name>Test Category 5: Request Routing and Load Balancing</name>
      <t>Inference serving introduces application-layer routing decisions that interact
with fabric-layer load balancing (ECMP, flowlet, packet spray).</t>
      <section anchor="kv-aware-request-routing-efficacy">
        <name>KV-Aware Request Routing Efficacy</name>
        <t><strong>Objective:</strong> To measure the effectiveness of KV-aware request routing, where
the request router considers decode worker KV cache memory occupancy and fabric
path congestion when assigning requests.</t>
        <t><strong>Procedure:</strong> Configure a request router with KV-aware routing enabled. Submit
a sustained request stream at rates of 10, 50, 100, and 200 req/s. Compare
against round-robin routing (baseline).</t>
        <t><strong>Measurement:</strong> Report the coefficient of variation (CV) of decode worker
memory utilization, P99 TTFT, P99 ITL, KV cache eviction rate, and Inference_Goodput for
both KV-aware and round-robin routing.</t>
      </section>
      <section anchor="prefix-aware-cache-hit-rate">
        <name>Prefix-Aware Cache Hit Rate</name>
        <t><strong>Objective:</strong> To measure the fabric bandwidth savings achieved by prefix-aware
caching, where requests with common prefixes are routed to workers that already
hold the corresponding KV cache segment.</t>
        <t><strong>Procedure:</strong> Generate a request workload where P% of requests share a common
prefix of L tokens (P = 25%, 50%, 75%, 90%; L = 256, 512, 1024, 2048). Compare
against non-prefix-aware routing.</t>
        <t><strong>Measurement:</strong> Report cache hit rate (%), fabric bandwidth reduction (%),
TTFT reduction (ms), and TPS improvement (%) for each (P, L) combination.</t>
      </section>
      <section anchor="ecmp-and-dynamic-load-balancing-under-inference-traffic">
        <name>ECMP and Dynamic Load Balancing Under Inference Traffic</name>
        <t><strong>Objective:</strong> To evaluate fabric-layer load balancing effectiveness under
inference traffic patterns that mix large KV cache flows with small EP
dispatch flows.</t>
        <t><strong>Procedure:</strong> Measure link utilization uniformity under: (a) KV cache transfers
only (large flows, 16 MB+), (b) EP AllToAll dispatches only (small flows,
&lt; 1 MB), (c) mixed KV cache and EP traffic.</t>
        <t><strong>Measurement:</strong> Report JFI, maximum link utilization (%), minimum link
utilization (%), and the oversubscription ratio for each scenario and load
balancing algorithm.</t>
      </section>
      <section anchor="jains-fairness-index-for-decode-worker-utilization">
        <name>Jain's Fairness Index for Decode Worker Utilization</name>
        <t><strong>Objective:</strong> To measure how evenly the fabric distributes KV cache transfer
load across decode workers.</t>
        <t><strong>Procedure:</strong> With N_D decode workers (N_D = 8, 16, 32, 64), submit a
sustained request stream and measure per-worker KV cache receive rate, GPU
utilization, and output TPS.</t>
        <t><strong>Measurement:</strong> Report JFI for KV cache receive rate, GPU utilization, and
output TPS. Report the max/min ratio for each metric.</t>
      </section>
    </section>
    <section anchor="test-category-6-latency-benchmarks">
      <name>Test Category 6: Latency Benchmarks</name>
      <t>Inference latency is the primary user-facing quality metric. This section
defines benchmarks that isolate the fabric's contribution to end-to-end
inference latency.</t>
      <section anchor="ttft-prompt-length">
        <name>TTFT Under Varying Prompt Lengths</name>
        <t><strong>Objective:</strong> To characterize TTFT as a function of prompt length, isolating
the fabric-dependent KV cache transfer component. This test establishes the
single-request, unloaded-fabric baseline (no concurrent load), complementing
<xref target="end-to-end-disaggregated-ttft"/>, which measures the same decomposition under
normal serving conditions on a disaggregated xPyD configuration.</t>
        <t><strong>Procedure:</strong> Submit single requests (no concurrent load) with prompt lengths
of 128, 256, 512, 1024, 2048, 4096, 8192, and 16384 tokens. Measure TTFT and
decompose into T_prefill, T_transfer, and T_decode_init. As a reference the following table
is provided.</t>
        <table anchor="tab-conf-matrix">
          <name>Reference Configuration Matrix</name>
          <thead>
            <tr>
              <th align="left">Config ID</th>
              <th align="left">Model Profile</th>
              <th align="left">S_KV @ 4K ctx</th>
              <th align="left">S_KV @ 32K ctx</th>
              <th align="left">S_KV @ 128K ctx</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CFG-A</td>
              <td align="left">Small: L=32, H_kv=8 (Grouped-Query Attention, GQA), D=128, BF16</td>
              <td align="left">0.54 GB</td>
              <td align="left">4.3 GB</td>
              <td align="left">17.2 GB</td>
            </tr>
            <tr>
              <td align="left">CFG-B</td>
              <td align="left">Mid: L=80, H_kv=8 (GQA), D=128, BF16 (~70B-parameter dense class)</td>
              <td align="left">1.3 GB</td>
              <td align="left">10.7 GB</td>
              <td align="left">43.0 GB</td>
            </tr>
            <tr>
              <td align="left">CFG-C</td>
              <td align="left">Large: L=96, H_kv=64 (Multi-Head Attention, MHA), D=128, BF16</td>
              <td align="left">12.9 GB</td>
              <td align="left">103 GB</td>
              <td align="left">412 GB</td>
            </tr>
            <tr>
              <td align="left">CFG-D</td>
              <td align="left">Mid INT8: L=80, H_kv=8 (GQA), D=128, INT8 (quantized)</td>
              <td align="left">0.67 GB</td>
              <td align="left">5.4 GB</td>
              <td align="left">21.5 GB</td>
            </tr>
            <tr>
              <td align="left">CFG-E (custom)</td>
              <td align="left">Implementer-defined: L=[value], H_kv=[value], D=[value], P=[value]</td>
              <td align="left">Computed</td>
              <td align="left">Computed</td>
              <td align="left">Computed</td>
            </tr>
          </tbody>
        </table>
        <t>NOTE: S_KV values are computed per the S_KV formula in <xref target="TERMINOLOGY"/>
(S_KV = 2 × L × H_kv × D × C × P_bytes) using binary context lengths
(4K = 4,096; 32K = 32,768; 128K = 131,072 tokens) and are expressed in
decimal gigabytes (1 GB = 10^9 bytes).</t>
        <t><strong>Measurement:</strong> Report TTFT, T_transfer, and T_transfer/TTFT at P50, P95, P99
for each prompt length. The test is repeated a minimum of 100 times per
prompt length.</t>
        <t><strong>Reporting Format:</strong> Results specify the configuration ID (CFG-A through
 CFG-E) or provide complete values for L, H_kv, D, C, and P_bytes for any test that
specifies KV cache message sizes. Results are reported as a line graph with
prompt length on the X axis and TTFT (ms) on the Y axis, with separate lines for P50
and P99. The T_transfer component is shown as a shaded region.</t>
      </section>
      <section anchor="itl-characterization-and-tail-latency">
        <name>ITL Characterization and Tail Latency</name>
        <t><strong>Objective:</strong> To characterize inter-token latency distribution and identify
fabric-induced tail latency during the decode phase.</t>
        <t><strong>Procedure:</strong> Submit long-output requests (e.g., 2048 output tokens each) and
record the timestamp of each emitted token. A single 2048-token request yields
at most 2,047 ITL samples, so requests are repeated (and/or issued
concurrently) until the per-condition sample requirement below is met; the
request count and concurrency level used are reported. Repeat under: (a)
unloaded fabric, (b) loaded fabric (50% of capacity), and (c) heavily loaded
fabric (90% of capacity plus concurrent EP dispatches).</t>
        <t><strong>Measurement:</strong> Report ITL at P50, P95, P99, P99.9, and maximum for each load
condition. Report the number of tokens with ITL &gt; 100 ms (stall events).
The test generates at least 10,000 ITL samples per condition.</t>
      </section>
      <section anchor="end-to-end-latency-under-multi-tenant-load">
        <name>End-to-End Latency Under Multi-Tenant Load</name>
        <t><strong>Objective:</strong> To measure inference latency when multiple models or model
instances share the same fabric.</t>
        <t><strong>Procedure:</strong> Deploy two or more model instances on separate worker pools
sharing the same fabric. Submit requests to both instances concurrently.</t>
        <t><strong>Measurement:</strong> Report per-instance TTFT P99, ITL P99, and the interference
penalty: (multi-tenant metric - single-tenant metric) / single-tenant metric *
100%.</t>
      </section>
      <section anchor="latency-sensitivity-to-fabric-congestion">
        <name>Latency Sensitivity to Fabric Congestion</name>
        <t><strong>Objective:</strong> To establish the relationship between fabric congestion level and
inference latency degradation.</t>
        <t><strong>Procedure:</strong> Inject controlled background traffic on the fabric at levels from
0% to 95% of capacity in 5% increments. At each level, submit inference requests
at a fixed rate and measure TTFT and ITL.</t>
        <t><strong>Measurement:</strong> Report TTFT P99 and ITL P99 as functions of background traffic
level. Identify the inflection point at which latency begins to degrade
significantly. Report the latency degradation factor at 50%, 75%, and 90%
background load.</t>
      </section>
    </section>
    <section anchor="test-category-7-throughput-benchmarks">
      <name>Test Category 7: Throughput Benchmarks</name>
      <t>Inference throughput determines the cost-effectiveness of the serving
deployment.</t>
      <section anchor="aggregate-tokens-per-second">
        <name>Aggregate Tokens Per Second</name>
        <t><strong>Objective:</strong> To determine the maximum sustained aggregate TPS achievable while
meeting latency SLOs.</t>
        <t><strong>Procedure:</strong> Increase the request arrival rate from 1 req/s until either
TTFT P99 or ITL P99 exceeds the declared SLO pair (e.g., TTFT P99 &gt; 500 ms,
ITL P99 &gt; 50 ms). At each rate, measure
TPS_output, TPS_input, Inference_Goodput, and all latency KPIs.</t>
        <t>NOTE: For reference, interactive serving deployments typically target TTFT
&lt; 500 ms and ITL &lt; 50 ms P99; these values are informative only and not
requirements of this methodology.</t>
        <t><strong>Measurement:</strong> Report TPS_output, TPS_input, Inference_Goodput, TTFT P99, ITL P99, and
fabric utilization at the SLO-bounded throughput. Report the fabric utilization
at the SLO boundary as a key efficiency metric.</t>
      </section>
      <section anchor="batch-size-scaling-and-continuous-batching-impact">
        <name>Batch Size Scaling and Continuous Batching Impact</name>
        <t><strong>Objective:</strong> To measure the interaction between inference batch size,
continuous batching, and fabric transfer patterns.</t>
        <t><strong>Procedure:</strong> Configure the serving system with varying maximum batch sizes
(1, 4, 8, 16, 32, 64, 128). For each batch size, measure: (a) the number of
concurrent KV cache transfers, (b) aggregate fabric bandwidth consumed,
(c) TPS_output, and (d) TTFT P99. Enable continuous batching and repeat.</t>
        <t><strong>Measurement:</strong> Report TPS_output, TTFT P99, fabric bandwidth (GB/s), and peak
concurrent transfers for each batch size, with and without continuous batching.</t>
      </section>
      <section anchor="goodput-under-preemption-and-eviction">
        <name>Goodput Under Preemption and Eviction</name>
        <t><strong>Objective:</strong> To measure the Inference_Goodput loss when fabric congestion forces KV
cache eviction or request preemption.</t>
        <t><strong>Procedure:</strong> Oversubscribe the system beyond the SLO-bounded throughput (at
110%, 125%, 150%, and 200% of the rate found in Test 11.1). Measure the rate of
KV cache evictions, request preemptions, and the resulting Inference_Goodput reduction.</t>
        <t><strong>Measurement:</strong> Report Inference_Goodput, eviction rate (evictions/s), preemption rate
(preemptions/s), wasted fabric bandwidth (GB/s), and the Inference_Goodput/TPS_output
ratio (efficiency).</t>
      </section>
    </section>
    <section anchor="test-cat8">
      <name>Test Category 8: Scale and Autoscaling</name>
      <t>Inference serving clusters must scale dynamically to match request demand.</t>
      <section anchor="fabric-scale-limits-for-inference-clusters">
        <name>Fabric Scale Limits for Inference Clusters</name>
        <t><strong>Objective:</strong> To determine the maximum inference cluster size supportable by
the DUT fabric while maintaining the declared SLO pair.</t>
        <t><strong>Procedure:</strong> Progressively scale the cluster from a minimal configuration
(e.g., 2 nodes, 16 GPUs) to the fabric's capacity (e.g., 1024 nodes, 8192
GPUs). At each scale point (following powers of two), measure KV cache transfer
throughput and latency, EP AllToAll dispatch latency, fabric control plane
convergence time, routing table size, and end-to-end TTFT and TPS.</t>
        <t><strong>Measurement:</strong> Report all KPIs at each scale point. A 10% degradation from
the minimal-configuration baseline is used in this document as an
illustrative reporting point for identifying the scale limit; per the BMWG
charter, the definition of acceptance criteria or performance requirements is
explicitly outside the scope of this Working Group, and this value is not a
pass/fail threshold. Deployment-specific scale limits are outside the scope
of this document.</t>
      </section>
      <section anchor="dynamic-autoscaling-response-time">
        <name>Dynamic Autoscaling Response Time</name>
        <t><strong>Objective:</strong> To measure the time required for the fabric to accommodate
dynamic scaling of inference worker pools (adding/removing prefill or decode
workers).</t>
        <t><strong>Procedure:</strong> Starting from a stable serving state, trigger a scale-up event
(e.g., adding 4 decode nodes). Measure: (a) fabric convergence time, (b) time
from fabric convergence to first KV cache transfer on new nodes, (c) time to
reach steady-state throughput. Repeat for scale-down events.</t>
        <t><strong>Measurement:</strong> Report fabric convergence time (ms), first-transfer time (ms),
and time to steady-state (ms) for scale-up and scale-down events. Report any
packet loss or latency spikes during the scaling transition.</t>
        <t>This test is conducted under controlled laboratory conditions with a simulated
autoscaler. It does not apply to live serving infrastructure.</t>
      </section>
      <section anchor="link-failure-convergence-impact-on-serving">
        <name>Link Failure Convergence Impact on Serving</name>
        <t><strong>Objective:</strong> To measure the impact of fabric link failures on inference
serving performance and the convergence time to restore full service.</t>
        <t><strong>Procedure:</strong> During sustained inference serving at 80% of SLO-bounded
throughput, fail a single fabric link on: (a) a leaf-spine link carrying KV
cache traffic, (b) a spine-spine link, (c) a link on the decode worker's leaf
switch. Measure traffic disruption and recovery time. Repeat for dual link
failures.</t>
        <t><strong>Measurement:</strong> Report traffic disruption duration (ms), convergence time (ms),
TTFT degradation during convergence (ms above baseline P99), TPS reduction
during convergence (%), and time to full recovery (ms). The test is
repeated a minimum of 20 times per failure scenario.</t>
      </section>
    </section>
    <section anchor="test-category-9-soak-and-stability">
      <name>Test Category 9: Soak and Stability</name>
      <t>Long-running inference serving deployments must maintain performance without
degradation over time.</t>
      <section anchor="hour-sustained-inference-load">
        <name>24-Hour Sustained Inference Load</name>
        <t><strong>Objective:</strong> To verify that the fabric maintains performance under continuous
inference serving load for 24 hours.</t>
        <t><strong>Procedure:</strong> Configure the SUT-E at 80% of the SLO-bounded throughput
determined in Test 11.1. Run a continuous request stream for 24 hours with a
realistic prompt length distribution. Sample the following metrics every 60
seconds: TTFT P99, ITL P99, TPS_output, KV_xfer_latency P99, fabric link
utilization, switch CPU/memory usage, NIC counters (RDMA retransmissions, QP
errors), and PFC/ECN event counts.</t>
        <t><strong>Measurement:</strong> Report the trend of all sampled metrics over the 24-hour
period. Report the NIC QP error count, the routing flap count, and the
variation in TTFT P99 over the test duration. Any nonzero QP error or routing
flap count, or TTFT P99 variation exceeding 1%, <bcp14>MUST</bcp14> be reported and investigated;
these thresholds are reporting triggers for investigation, not pass/fail
criteria.</t>
      </section>
      <section anchor="kv-cache-memory-leak-detection">
        <name>KV Cache Memory Leak Detection</name>
        <t><strong>Objective:</strong> To detect memory leaks in the KV cache management subsystem that
may manifest as fabric performance degradation over time.</t>
        <t><strong>Procedure:</strong> Monitor GPU memory, CPU memory, NIC registered memory regions,
and RDMA memory region counts on all prefill and decode workers during the
24-hour soak test. Record the number of active KV cache pages, RDMA memory
registrations, and pinned memory at each sampling interval.</t>
        <t><strong>Measurement:</strong> Report the trend of each monitored metric. Flag any monotonic
increase as a potential leak. Report the maximum observed memory usage and the
usage at the end of the 24-hour period.</t>
      </section>
      <section anchor="long-running-serving-stability">
        <name>Long-Running Serving Stability</name>
        <t><strong>Objective:</strong> To verify that fabric-dependent components remain stable under
continuous inference serving.</t>
        <t><strong>Procedure:</strong> During the 24-hour soak test, monitor: NIC QP state transitions,
switch buffer utilization trend, FEC error rate trend, BGP/OSPF adjacency
stability, and RDMA retransmission rate. At the 12-hour mark, trigger a
controlled perturbation (single link flap) and verify recovery.</t>
        <t><strong>Measurement:</strong> Report the count of any QP state transitions, maximum switch
buffer utilization, FEC error trend, adjacency flap count, and RDMA
retransmission count. Report the recovery time from the 12-hour link flap
perturbation.</t>
      </section>
    </section>
    <section anchor="reporting">
      <name>Reporting Format</name>
      <t>All test results are reported following the conventions established in
<xref target="RFC2544"/> Section 26. Where BusBW is reported (e.g., in the MoE expert
parallelism tests), results <bcp14>MUST</bcp14> follow the reporting requirements
stated in the BusBW definition of <xref target="TERMINOLOGY"/>. In addition, the following
inference-specific reporting elements apply:</t>
      <ul spacing="normal">
        <li>
          <t><strong>System Configuration Report:</strong> the report includes: model name and
parameter count, parallelism strategy (TP, DP, EP, PP configuration for both
prefill and decode pools), xPyD ratio, inference serving framework name and
version, KV cache transfer library name and version, accelerator type and
count, NIC type and firmware version, switch ASIC and software version, fabric
topology, and link speeds.</t>
        </li>
        <li>
          <t><strong>Workload Characterization Report:</strong> the report includes: prompt length
distribution (mean, P50, P99, distribution type), output length distribution,
request arrival rate and distribution, number of concurrent requests, and
prefix sharing percentage.</t>
        </li>
        <li>
          <t><strong>Results Reporting:</strong> for each test, results include: the specific test
identifier (e.g., Test 5.1), the DUT/SUT configuration tested, the number of
trials, all measured KPI values with confidence intervals, and any anomalies
observed.</t>
        </li>
        <li>
          <t><strong>Fabric-Visible Data Volume Report:</strong> for every MoE AllToAll result reported
under <xref target="test-cat3"/>, the report states: the application-level dispatch volume
per participant (T_egress); the Fabric-Visible Data Volume (S_fabric) defined
in <xref target="TERMINOLOGY"/>, counted in application payload bytes with each byte
counted once per the Fabric_Goodput byte-counting rule of that document,
together with the method used to obtain it (measurement
from NIC Ethernet port counters is preferred; derivation from the routing
function and the expert placement is acceptable when the derivation is
stated). Retransmitted and duplicate bytes <bcp14>MUST NOT</bcp14> be included in S_fabric;
under this rule the two methods return the same value, and where both are
available and they disagree the report gives both values and the difference.
The report also states the expert placement across nodes, including EP group
size and accelerators per node. Intra-node transfer contributions are reported as a
separately labelled component per <xref target="scope-and-applicability"/> and are never
added to, subtracted from, or folded into a fabric KPI. Comparisons between
fabrics use the same expert placement on both sides; where placement cannot be
matched, 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. Where a report needs to account for forwarding work
inside the Fabric DUT when explaining a difference between MoE AllToAll
results that match on S_fabric and expert placement, the optional diagnostic
profile defined in the companion training methodology document
(<xref target="TRAINING-BENCH"/>) may be applied; it does not alter S_fabric or any KPI
defined here.</t>
        </li>
      </ul>
      <table anchor="tab-reporting">
        <name>Reporting Format Requirements</name>
        <thead>
          <tr>
            <th align="left">Report Element</th>
            <th align="left">Format</th>
            <th align="left">Required?</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">System Configuration</td>
            <td align="left">Structured table per above</td>
            <td align="left">Yes (required)</td>
          </tr>
          <tr>
            <td align="left">Workload Parameters</td>
            <td align="left">Structured table per above</td>
            <td align="left">Yes (required)</td>
          </tr>
          <tr>
            <td align="left">KPI Summary Table</td>
            <td align="left">Table with all measured KPIs</td>
            <td align="left">Yes (required)</td>
          </tr>
          <tr>
            <td align="left">Latency Distribution Plots</td>
            <td align="left">CDF or histogram per test section</td>
            <td align="left">Recommended</td>
          </tr>
          <tr>
            <td align="left">Throughput vs. Scale Graphs</td>
            <td align="left">Line chart per test section</td>
            <td align="left">Recommended</td>
          </tr>
          <tr>
            <td align="left">Fabric Health Indicators</td>
            <td align="left">Table per <xref target="tab-health"/></td>
            <td align="left">Yes (values reported; the Typical Healthy Range column is informative, not a pass/fail requirement)</td>
          </tr>
          <tr>
            <td align="left">Fabric-Visible Data Volume</td>
            <td align="left">S_fabric with derivation method and expert placement</td>
            <td align="left">Yes (required) for <xref target="test-cat3"/> results</td>
          </tr>
          <tr>
            <td align="left">Raw Data Appendix</td>
            <td align="left">Machine-readable format (CSV, JSON)</td>
            <td align="left">Optional</td>
          </tr>
        </tbody>
      </table>
    </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 inference serving fabrics using controlled stimuli in a laboratory environment, with dedicated address space and the constraints specified herein.</t>
      <t>The benchmarking network topology will be an independent test setup and <bcp14>MUST NOT</bcp14> be connected to devices that may forward the test traffic into a production network or misroute traffic to the test management network. This isolation requirement is particularly important for AI fabric benchmarking because the hop-by-hop flow-control mechanisms referenced in this document (PFC, CBFC) propagate backpressure toward traffic sources and can extend the blast radius of a misconfigured test beyond the immediate DUT; DCQCN reduces, but does not eliminate, reliance on these mechanisms.</t>
      <t>Benchmarking is performed on a "black-box" basis, relying solely on measurements observable external to the DUT as defined in <xref target="TERMINOLOGY"/>.</t>
      <t>Special capabilities <bcp14>SHOULD NOT</bcp14> exist in the DUT specifically for benchmarking purposes. Any implications for network security arising from the DUT <bcp14>SHOULD</bcp14> be identical in the lab and in production networks. In particular, RDMA memory-region permissions and KV cache telemetry exposure 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 inference-serving benchmarking:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Synthetic prompt inputs:</strong> The KV cache contains intermediate state derived from prompt content. Synthetic inputs <bcp14>SHOULD</bcp14> be used for all tests in this document so that no production prompt content is processed in the test environment. KV cache transfer benchmarks use payload patterns that do not reflect real user data.</t>
        </li>
        <li>
          <t><strong>One-sided RDMA write semantics:</strong> KV cache transfers in this document use one-sided RDMA PUT operations to remote NIC memory. Such operations bypass remote-CPU authorization at the data path; generators that leak onto adjacent fabrics could write arbitrary bytes to remote NICs. Line-rate RDMA traffic generators <bcp14>MUST</bcp14> be confined to the test fabric.</t>
        </li>
        <li>
          <t><strong>PFC leakage:</strong> PFC PAUSE frames generated under bursty KV cache or AllToAll incast conditions (<xref target="test-cat4"/>) 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>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, 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="TERMINOLOGY">
          <front>
            <title>Benchmarking Terminology for AI Network Fabrics</title>
            <author fullname="Fernando Calabria" initials="F." surname="Calabria">
              <organization>Cisco</organization>
            </author>
            <author fullname="Carlos Pignataro" initials="C." surname="Pignataro">
              <organization>Blue Fern Consulting</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei</organization>
            </author>
            <author fullname="Sowjanya Reddy" initials="S." surname="Reddy">
              <organization>Apple</organization>
            </author>
            <date day="12" month="August" year="2026"/>
            <abstract>
              <t>   This document defines benchmarking terminology for evaluating
   Ethernet-based network fabrics used in distributed Artificial
   Intelligence (AI) training and inference workloads.  It consolidates
   and extends terms from "Benchmarking Terminology for Network
   Interconnect Devices" (RFC 1242) and "Data Center Benchmarking
   Terminology" (RFC 8238).  Definitions cover collective communication
   primitives, RDMA transport mechanisms (RoCEv2 and Ultra Ethernet
   Transport), congestion control behaviors, AI-specific Key Performance
   Indicators (KPIs), and fabric topology concepts.

   This document is a companion to the AI training and inference fabric
   benchmarking methodology documents.  Those documents are intended to
   be read together with the terminology defined here.  Where
   definitions herein overlap with the foundational benchmarking
   terminology in RFC 1242 or RFC 8238, this document provides AI fabric
   context extensions and refinements; the foundational definitions in
   those RFCs remain authoritative for general network benchmarking.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-terminology-04"/>
        </reference>
        <reference anchor="TRAINING-BENCH">
          <front>
            <title>Benchmarking Methodology for AI Training Network Fabrics</title>
            <author fullname="Fernando Calabria" initials="F." surname="Calabria">
              <organization>Cisco</organization>
            </author>
            <author fullname="Carlos Pignataro" initials="C." surname="Pignataro">
              <organization>Blue Fern Consulting</organization>
            </author>
            <author fullname="Qin Wu" initials="Q." surname="Wu">
              <organization>Huawei</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei</organization>
            </author>
            <author fullname="Sowjanya Reddy" initials="S." surname="Reddy">
              <organization>Apple</organization>
            </author>
            <date day="12" month="August" year="2026"/>
            <abstract>
              <t>   This document defines benchmarking terminology, methodologies, and
   Key Performance Indicators (KPIs) for evaluating Ethernet-based AI
   training network fabrics.

   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.

   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.

   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>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-training-bench-04"/>
        </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="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="RFC2889">
          <front>
            <title>Benchmarking Methodology for LAN Switching Devices</title>
            <author fullname="R. Mandeville" initials="R." surname="Mandeville"/>
            <author fullname="J. Perser" initials="J." surname="Perser"/>
            <date month="August" year="2000"/>
            <abstract>
              <t>This document is intended to provide methodology for the benchmarking of local area network (LAN) switching devices. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2889"/>
          <seriesInfo name="DOI" value="10.17487/RFC2889"/>
        </reference>
        <reference anchor="RFC6349">
          <front>
            <title>Framework for TCP Throughput Testing</title>
            <author fullname="B. Constantine" initials="B." surname="Constantine"/>
            <author fullname="G. Forget" initials="G." surname="Forget"/>
            <author fullname="R. Geib" initials="R." surname="Geib"/>
            <author fullname="R. Schrage" initials="R." surname="Schrage"/>
            <date month="August" year="2011"/>
            <abstract>
              <t>This framework describes a practical methodology for measuring end- to-end TCP Throughput in a managed IP network. The goal is to provide a better indication in regard to user experience. In this framework, TCP and IP parameters are specified to optimize TCP Throughput. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6349"/>
          <seriesInfo name="DOI" value="10.17487/RFC6349"/>
        </reference>
        <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="IBTA-ROCE" target="https://www.infinibandta.org">
          <front>
            <title>InfiniBand Architecture Specification Volume 1, Annex A17: RoCEv2</title>
            <author>
              <organization>InfiniBand Trade Association</organization>
            </author>
            <date year="2014" month="September"/>
          </front>
        </reference>
        <reference anchor="DEEPEP" target="https://github.com/deepseek-ai/DeepEP">
          <front>
            <title>DeepEP: an efficient expert-parallel communication library</title>
            <author>
              <organization>DeepSeek AI</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1229?>

<section anchor="kpi-to-test-mapping-summary">
      <name>KPI-to-Test Mapping Summary</name>
      <t>The following table provides a cross-reference from each KPI defined in
<xref target="kpi-framework"/> to the test(s) in which it is measured.</t>
      <table anchor="tab-kpi-mapping">
        <name>KPI-to-Test Mapping</name>
        <thead>
          <tr>
            <th align="left">KPI</th>
            <th align="left">Primary Test(s)</th>
            <th align="left">DUT/SUT</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TTFT</td>
            <td align="left">6.1, 6.2, 10.1, 10.3</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">ITL</td>
            <td align="left">10.2, 10.3, 10.4</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">TTFT_fabric</td>
            <td align="left">6.1, 10.1</td>
            <td align="left">DUT-PD</td>
          </tr>
          <tr>
            <td align="left">ITL_fabric</td>
            <td align="left">10.2</td>
            <td align="left">DUT-F</td>
          </tr>
          <tr>
            <td align="left">E2E_latency</td>
            <td align="left">10.3</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">TPS_output</td>
            <td align="left">6.2, 11.1, 11.2, 11.3</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">TPS_input</td>
            <td align="left">11.1</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">TPS_per_GPU</td>
            <td align="left">11.2</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">Inference_Goodput</td>
            <td align="left">11.1, 11.3</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">KV_xfer_latency</td>
            <td align="left">5.2, 5.3, 6.1, 6.4</td>
            <td align="left">DUT-N, DUT-PD</td>
          </tr>
          <tr>
            <td align="left">KV_xfer_bandwidth</td>
            <td align="left">5.1, 5.3, 5.4</td>
            <td align="left">DUT-N, DUT-PD</td>
          </tr>
          <tr>
            <td align="left">EP_alltoall_latency</td>
            <td align="left">7.1, 7.2, 7.3, 7.4</td>
            <td align="left">DUT-F</td>
          </tr>
          <tr>
            <td align="left">EP_alltoall_bandwidth</td>
            <td align="left">7.1, 7.3</td>
            <td align="left">DUT-F</td>
          </tr>
          <tr>
            <td align="left">Fabric_FCT</td>
            <td align="left">5.2, 5.3</td>
            <td align="left">DUT-F</td>
          </tr>
          <tr>
            <td align="left">Buffer_utilization</td>
            <td align="left">8.1, 8.2</td>
            <td align="left">DUT-S</td>
          </tr>
          <tr>
            <td align="left">ECN_marking_rate</td>
            <td align="left">8.1</td>
            <td align="left">DUT-S</td>
          </tr>
          <tr>
            <td align="left">PFC_frame_count</td>
            <td align="left">8.2, 8.4</td>
            <td align="left">DUT-S</td>
          </tr>
          <tr>
            <td align="left">Link_utilization</td>
            <td align="left">5.3, 9.3, 12.1</td>
            <td align="left">DUT-F</td>
          </tr>
          <tr>
            <td align="left">Packet_drop_rate</td>
            <td align="left">8.3, 12.2</td>
            <td align="left">DUT-F</td>
          </tr>
          <tr>
            <td align="left">Request_Rate</td>
            <td align="left">11.1</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">Prefix_cache_hit_rate</td>
            <td align="left">9.2</td>
            <td align="left">SUT-E</td>
          </tr>
          <tr>
            <td align="left">JFI_decode</td>
            <td align="left">9.4</td>
            <td align="left">SUT-E</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"/>. The values reflect current industry observations for interactive inference 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 SLOs will vary by application, model architecture, and operator requirements.</t>
      <table anchor="tab-indicative-values">
        <name>Indicative Reference Values for Interactive Inference Serving (Non-Normative)</name>
        <thead>
          <tr>
            <th align="left">KPI</th>
            <th align="left">Indicative Reference (Interactive)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">TTFT</td>
            <td align="left">&lt; 500 ms P99</td>
          </tr>
          <tr>
            <td align="left">ITL</td>
            <td align="left">&lt; 50 ms P99</td>
          </tr>
          <tr>
            <td align="left">TTFT_fabric</td>
            <td align="left">&lt; 20% of the TTFT P99 budget</td>
          </tr>
          <tr>
            <td align="left">ITL_fabric</td>
            <td align="left">&lt; 5 ms P99</td>
          </tr>
          <tr>
            <td align="left">E2E_latency</td>
            <td align="left">varies by output length</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="inference-serving-framework-capability-categories-informational">
      <name>Inference Serving Framework Capability Categories (Informational)</name>
      <t>This appendix describes the inference serving framework capability categories
relevant to AI fabric benchmarking. This appendix is intended to guide
documentation of SUT-E configurations and is NOT normative. Implementers using
a Software Workload Emulator (SUT-E tests) document which of the
following capabilities their serving framework supports.</t>
      <table anchor="tab-framework-caps">
        <name>Framework Capability Categories</name>
        <thead>
          <tr>
            <th align="left">Capability Category</th>
            <th align="left">Description</th>
            <th align="left">Relevance to Fabric Benchmarking</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Disaggregated Prefill/Decode (PD)</td>
            <td align="left">Physical separation of prefill and decode execution across different accelerator pools</td>
            <td align="left">Determines whether DUT-PD topology tests apply (<xref target="test-cat2"/>)</td>
          </tr>
          <tr>
            <td align="left">KV Cache Transfer Protocol</td>
            <td align="left">Protocol and library used for prefill-to-decode KV state transfer (one-sided PUT, two-sided SEND/RECV, GPU-initiated)</td>
            <td align="left">Determines RDMA verb types under test and applicable frame formats (<xref target="kv-frame"/>)</td>
          </tr>
          <tr>
            <td align="left">MoE Expert Parallelism (EP) Support</td>
            <td align="left">Distribution of MoE expert sub-networks across GPUs and AllToAll dispatch mode support</td>
            <td align="left">Determines whether MoE EP tests apply (<xref target="test-cat3"/>)</td>
          </tr>
          <tr>
            <td align="left">Continuous Batching</td>
            <td align="left">Dynamic request admission to active inference batches</td>
            <td align="left">Affects request arrival rate distributions and load balancing tests in <xref target="test-cat5"/></td>
          </tr>
          <tr>
            <td align="left">Prefix / KV Cache Sharing</td>
            <td align="left">Reuse of KV cache segments for requests with common prefixes</td>
            <td align="left">Determines applicability of the prefix cache hit rate test in <xref target="test-cat5"/></td>
          </tr>
          <tr>
            <td align="left">RDMA Transport Support</td>
            <td align="left">Underlying transport(s) supported: RoCEv2, UET, or other</td>
            <td align="left">Documented in the test report; affects congestion management test interpretation in <xref target="test-cat4"/></td>
          </tr>
          <tr>
            <td align="left">GPU-Initiated Networking (GIN) Support</td>
            <td align="left">Ability for GPU threads to directly initiate RDMA operations without CPU involvement</td>
            <td align="left">Affects RDMA primitive choice in MoE dispatch tests (<xref target="test-cat3"/>)</td>
          </tr>
          <tr>
            <td align="left">Container Orchestration Integration</td>
            <td align="left">Native support for container-based deployment and horizontal scaling</td>
            <td align="left">Relevant for autoscaling tests in <xref target="test-cat8"/></td>
          </tr>
          <tr>
            <td align="left">Maximum Reported Scale</td>
            <td align="left">Maximum cluster scale at which the framework has been validated</td>
            <td align="left">Documents applicability of fabric scale tests</td>
          </tr>
        </tbody>
      </table>
      <t>NOTE: The specific framework name, version, and configuration are documented in all test reports. Results obtained with different frameworks are not directly comparable; framework identity is a required reporting parameter per <xref target="reporting"/>.</t>
    </section>
    <section anchor="kv-frame">
      <name>KV Cache Transfer Frame Format</name>
      <t>This appendix defines the reference frame format for KV cache transfer benchmarking over RoCEv2 using one-sided RDMA WRITE (PUT) operations. The frame format follows the standard RoCEv2 encapsulation defined in the InfiniBand Architecture Specification Volume 1 Annex A17 (RoCEv2) <xref target="IBTA-ROCE"/>.</t>
      <table anchor="tab-kv-frame">
        <name>RoCEv2 KV Cache Transfer Frame (One-Sided RDMA WRITE)</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 / Tag Protocol Identifier (TPID)</td>
            <td align="left">2B</td>
            <td align="left">0x0800 (IPv4) or 0x86DD (IPv6) when untagged; 0x8100 (TPID) when 802.1Q-tagged</td>
          </tr>
          <tr>
            <td align="left">14</td>
            <td align="left">802.1Q Tag (optional)</td>
            <td align="left">4B</td>
            <td align="left">When tagged: TCI (PCP for RDMA priority class, VID) followed by inner EtherType 0x0800 or 0x86DD. Omit this row when untagged and shift subsequent offsets back by 4B</td>
          </tr>
          <tr>
            <td align="left">18</td>
            <td align="left">IPv4 / IPv6 Header</td>
            <td align="left">20B (IPv4) or 40B (IPv6)</td>
            <td align="left">DSCP=26 (AF31), ECN=ECT(0), Proto=17 (UDP)</td>
          </tr>
          <tr>
            <td align="left">38 / 58</td>
            <td align="left">UDP Header</td>
            <td align="left">8B</td>
            <td align="left">DstPort=4791 (RoCEv2), SrcPort=entropy for ECMP, UDP Length, UDP Checksum</td>
          </tr>
          <tr>
            <td align="left">46 / 66</td>
            <td align="left">BTH (Base Transport Header)</td>
            <td align="left">12B</td>
            <td align="left">OpCode=0x0A (RDMA WRITE Only) or 0x0B (RDMA WRITE Only with Immediate Data) for the single-packet reference frame defined here; segmented transfers use OpCodes 0x06/0x07/0x08/0x09 (see Notes); SE, M, Pad, TVer flags; PKey; Destination QP Number (24 bits); A flag; PSN (24 bits)</td>
          </tr>
          <tr>
            <td align="left">58 / 78</td>
            <td align="left">RETH (RDMA Extended Transport Header)</td>
            <td align="left">16B</td>
            <td align="left">Virtual Address (64 bits), R_Key (32 bits), DMA Length (32 bits). The DMA Length indicates the size of the KV cache block transferred by this WRITE operation</td>
          </tr>
          <tr>
            <td align="left">74 / 94</td>
            <td align="left">ImmDt (Immediate Data)</td>
            <td align="left">4B</td>
            <td align="left">Present only for OpCode 0x0B (RDMA WRITE Only with Immediate Data), used for PUT-with-signal completion signalling. Omit this row for OpCode 0x0A and shift subsequent offsets back by 4B</td>
          </tr>
          <tr>
            <td align="left">78 / 98</td>
            <td align="left">KV Cache Payload</td>
            <td align="left">variable, up to MTU</td>
            <td align="left">Key/value attention state data (starts at 74 / 94 when ImmDt is absent)</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>
      <t>Notes:</t>
      <ul spacing="normal">
        <li>
          <t>The UDP Source Port uses entropy-based values for ECMP load distribution across fabric paths.</t>
        </li>
        <li>
          <t>The RETH carries the remote virtual address, remote key, and DMA length for the one-sided WRITE operation. For KV cache transfers, the DMA Length field indicates the size of the KV cache block being transferred.</t>
        </li>
        <li>
          <t>Typical RDMA path MTU for RoCEv2 deployments is 4096 bytes (requiring an Ethernet frame MTU of approximately 4200+ bytes, i.e., jumbo frames, to carry the RoCEv2/IP/UDP/BTH/RETH header overhead); larger KV cache blocks (e.g., 64 KB pages) are segmented into multiple packets by the NIC. The first packet of a segmented WRITE carries OpCode 0x06 (RDMA WRITE First) and a RETH; intermediate packets carry OpCode 0x07 (RDMA WRITE Middle); the last packet carries OpCode 0x08 (RDMA WRITE Last) or 0x09 (RDMA WRITE Last with Immediate Data) for PUT-with-signal completion signalling. (0x0B, RDMA WRITE Only with Immediate Data, is a single-packet opcode and cannot terminate a First/Middle sequence.) In segmented sequences the RETH is carried only in the First (0x06) packet; a Last-with-Immediate packet (0x09) carries the 4B ImmDt immediately following the BTH, with no RETH.</t>
        </li>
        <li>
          <t>For UET-based KV cache transfers, the frame format defined in the UET Frame Format appendix of <xref target="TRAINING-BENCH"/> applies; the UDP destination port is 4793 and the transport service indicator selects between ROD and RUD per test.</t>
        </li>
      </ul>
    </section>
    <section anchor="moe-alltoall-communication-pattern">
      <name>MoE AllToAll Communication Pattern</name>
      <t>This appendix describes the AllToAll communication pattern used for MoE expert
parallelism dispatch and its fabric-level traffic characteristics. In a
Mixture-of-Experts model with M total experts distributed across N GPUs (each
GPU holds M/N experts), a single MoE layer forward pass generates an AllToAll
communication pattern where each GPU sends a variable-size payload to every
other GPU.</t>
      <table anchor="tab-moe-dispatch">
        <name>MoE Dispatch Traffic Characteristics by Mode</name>
        <thead>
          <tr>
            <th align="left">Parameter</th>
            <th align="left">Normal Dispatch (Prefill)</th>
            <th align="left">Low-Latency Dispatch (Decode)</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Batch Size</td>
            <td align="left">128 - 512 tokens</td>
            <td align="left">1 - 16 tokens</td>
          </tr>
          <tr>
            <td align="left">Payload per GPU pair</td>
            <td align="left">Variable (depends on routing)</td>
            <td align="left">Fixed (padded to max)</td>
          </tr>
          <tr>
            <td align="left">Shape Compatibility</td>
            <td align="left">Dynamic (symbolic)</td>
            <td align="left">Static (graph-capturable)</td>
          </tr>
          <tr>
            <td align="left">QP Parallelism <xref target="DEEPEP"/></td>
            <td align="left">24 QPs per connection</td>
            <td align="left">8 - 16 QPs per connection</td>
          </tr>
          <tr>
            <td align="left">RDMA Primitive</td>
            <td align="left">Two-sided SEND/RECV or one-sided PUT</td>
            <td align="left">One-sided PUT (GPU-direct RDMA, GIN)</td>
          </tr>
          <tr>
            <td align="left">GPU Initiation</td>
            <td align="left">CPU-initiated or GIN</td>
            <td align="left">GIN (device-initiated, GPU-to-NIC direct)</td>
          </tr>
          <tr>
            <td align="left">Typical per-dispatch size</td>
            <td align="left">1 - 10 MB aggregate</td>
            <td align="left">10 KB - 1 MB aggregate</td>
          </tr>
          <tr>
            <td align="left">Dispatch Frequency</td>
            <td align="left">Once per MoE layer (prefill)</td>
            <td align="left">Once per MoE layer per token (decode)</td>
          </tr>
          <tr>
            <td align="left">Latency Target</td>
            <td align="left">&lt; 1 ms per dispatch</td>
            <td align="left">&lt; 200 us per dispatch</td>
          </tr>
        </tbody>
      </table>
      <t>NOTE: The QP Parallelism values are DeepEP <xref target="DEEPEP"/> implementation defaults, shown as an illustrative example; they are not a normative requirement of this methodology and <bcp14>MAY</bcp14> differ across CCL implementations.</t>
      <t>For a representative MoE configuration (M3: E=256, k=2, H_model=7168, EP=96 across 12 nodes of 8 accelerators, BF16), the inter-node traffic per MoE layer dispatch using T_dispatch = (B × k × H_model × 2) / N is approximately</t>
      <ul spacing="normal">
        <li>
          <t>Normal Dispatch (prefill, batch=256): 256 × 2 × 7168 × 2 bytes / 96 GPUs
= ~76.5 KB per GPU pair. Of the 96 × 95 = 9,120 total ordered GPU pairs, only
96 × 88 = 8,448 cross the fabric (the remaining 672 pairs are intra-node,
within each of the 12 8-GPU nodes, and do not traverse the fabric).
Fabric-Visible Data Volume (S_fabric), aggregate: ~76.5 KB × 8,448 ≈ 646 MB.</t>
        </li>
        <li>
          <t>Low-Latency Dispatch (decode, batch=8): 8 × 2 × 7168 × 2 bytes / 96 GPUs
= ~2.4 KB per GPU pair; S_fabric aggregate (8,448 pairs): ~2.4 KB × 8,448
≈ 20.2 MB.</t>
        </li>
      </ul>
      <t>Both figures are derived from the expert placement rather than measured; a
report using this derivation states it, per the Fabric-Visible Data Volume
reporting element of <xref target="reporting"/>.</t>
      <t>With 61 MoE layers and a decode iteration time target of ~30 ms, the decode
phase requires 61 AllToAll dispatches within 30 ms. This yields 61 dispatches
per decode step, or approximately 2,000 dispatches per second, and consumes
approximately 41 GB/s (61 × ~20.2 MB / 30 ms)
aggregate inter-node bandwidth for the Low-Latency Dispatch path.</t>
    </section>
    <section anchor="model-architecture-parameters">
      <name>Model Architecture Parameters</name>
      <t>This appendix provides a sample calculation for the S_KV formula defined in
<xref target="TERMINOLOGY"/>.
It is based on a 70B-parameter dense model at FP16 with 4K context.</t>
      <artwork><![CDATA[
Parameter                   Symbol   Value  Source
Transformer layers          L        80     Published architecture
KV attention heads (GQA-8)  H_kv     8      H_total=64 / GQA_ratio=8
Per-head dimension          D        128    model_dim(8192)/64
Context length              C        4,096  Given
Precision                   P_bytes  2      FP16 = 2 bytes/element

Step-by-Step Calculation

S_KV = 2  ×  L  ×  H_kv  ×   D   ×    C    × P_bytes

 = 2  ×  80  ×   8   ×  128  ×  4,096  ×    2

Step 1:  2  × 80           =         160   (K + V tensors × layers)

Step 2:  160 × 8           =       1,280   (× KV heads)

Step 3:  1,280 × 128       =     163,840   (× head dimension)

Step 4:  163,840 × 4,096   = 671,088,640   (× context tokens)

Step 5:  671,088,640 × 2   = 1,342,177,280 bytes
]]></artwork>
    </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 this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
mSfJ7fo6W4huXTcgSPq8eF3UXGhT7sUeUgewl+eT5McfXaVMjmgsfBVg8ejV
dNPHBN3EHogTuyuRryAhLPXa72M/DX8t8iGOiRMubW0ahBdrLBlWan1YmR+L
8cnGXYJD/jxsOxQJw4ODxAyiWlyZoOyZs0wWxrFHI0bix2MwWUBTl2ciLs8R
mBQMZKzmkjRSUTv4KVse1/tK3aSJDbXeMVvimNW9pS4alh2zHfaI/rTXMX1z
TD83+Wd/i//Z4r8SPHG8Zx236jx0VReEdcO52wOjFQU3XFPHFtoiPWWZhLjA
EpkiBHsFNYAcp3flk6rEc7u1rlYisRhxwZdeQrpvloptpU+r75htrL5jnm5g
+bq2je2wSOfPQwXcvgS5elk+8XEpXEa4wD+MMYF1EDhzSgtZRCGELWgsBItB
rKxDLODwBYcencTHrljzrw/SIVmTKO6449ikiyworq6YsASD8y64VDK2sWBI
gNdF/u51MWXXK+NoECRhhAjfiWWWvOFTV/PkkB0fsmtvMAg5a6opZJwswDV8
JPI+QszWpLiWEqpta9b5J0N4UFaDMQWS9pm/8TO95MylE7IPzllSrM8fNWi9
Y4ZXgsKHWtnCiSkAKb5MeKzc1svhTRPFq5M4tTZ/nb5ZZTmu1vWAsYDIsyNO
xhMnZa+3qag2fN6etdZJ1/vSVu4oEUltcax6zqVwzGe9vqtdwFSxqvnGS28g
VD1nfA+8aS49OGERJg0L6uJ1jj4pYrqpt4vtXPOlfdqvJ9FY7yKKv2ex8aoe
Et4WIy8iMG3i2ZKtaAibDnf5b5CEXYCUOzKB+moGeGchxB3RhGBCAhloceLA
IQxTXm54NSgEZlUjIlQbz/7QMc/W6cdz+o1d2SpN2zIoWqe7jXWGQTCKqULO
LbkWQs3DCJVuplassrrg56UZPlvvmOGLZ/jxQisIvnjRewEqgawkLrv6jdRF
Cm9BWETsR0qP9zc8qeZLimCbCCeF/trUzpG3VdEqZDXP1klggQBpV13OYRtG
fkwS0x4Cfw4pXoy0v4N4SWwt8+AR+m5IGbMkZmHBafK15DDPTpRXSvu3u1UY
ElFS9ONIDRJWB/uHpN0WjPI+H9VHyjBhK7OJ5FNViiLXyNXAM7U65TqTCM0m
ygXdg9RAAhwRZtQa9kbDR5NhpcFEaU2N3j8TcFe94mBtem39SKqCoix2mTXQ
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
pi1sDT04R2kp4MfioFo6UWXE3dBkh+niMl+yWV9MWdHy6B6+ZYkbGMKbsdws
mM2GDDDRmakgZQ/P5sYCwqhFilURn+fQ7rggd+nygW1sX7UANxi7NdlqJfgg
0K/llYlNaNoMBJL80nnWiEvMhEUecAAKsNNWhTW1TNz5Ii9EnkbZFQmQJCnC
1yfsmeHNXSmVwRfml7e7J12Eb40DUSbstqeSSl66UFsBF8P7Zym9N9wfsNtF
5EI3DsDIphI8u3ZaDA5uN7wsJkHWnebdB6zMdlawV9+CgBdgcSYgfLQmtevL
ctDjUMuncsgH1wjmO40jDkrH9qSNI6phf9siGbWkQZuc5/v9oZiGN5+/eOpj
76y0wzi/LJo4igrTSHwnWAauDd6DZuopJAT+usxZKRZ/KxiUq0utW9g6Pztr
c1Cyl0ouM1vE1LLKMKAk4r6r2YQ7utWngDsY5dABnSDk/DITpi2GD/YAH+2e
7H5FQ71JWTHkJ4VFQdpDUSRIqxjkp+ER8gK0++18ziEOYn2pciu13kitEARj
sDW464tUMQ6xWRI2HC/gJZ8/f5jnXedyJB4bkAm0EnUdzPOlVGVw2xR70L0Z
apW4c33j3jmgrKGrZu4KPmEDDsKf7s1Wr9+hH1zWC7/Sz6ewa3AgHp5D7BpX
TJJHnvLPzegRDGXtIDoiBpNFdYf7dhz/DIbTrw+ll+HGgQuEu68vwsfN8QRY
Sp+n6evv9ceZO2OsPq8k/pIQ8QIhSvz1RrzfWjrWvZ8snqYawYfiSbScZwCS
wnVTd3nSCWFhX/RZVni1r68+e+CtpsYz9+Y53nuOeZ/j5efu5cPaS+F0+trT
6GH1dR0OzoO9RE/scRTIRRgfc2+2Mda2O9EzmXhwcqHX+4J5Jj8XPUIk8YJv
wYVYxfHEBkbajB5DjHllRobTC0bGDTeorHDIAfYXaBTp55UHY5TTGtQXp/JQ
DU+kWvAF89uLm3xpR3tRQZi/Hh5prTr+Mrwa1uiG6z5VaqJmtwZCI8Y2NX8i
Js1XqfpFzJwtdOI8sbbLtvn8Q+6e9oSnK0bRL0r9XMtpR6r8S0FJvaDGEUcN
wpQcKaUVmiVqibO/ijBp/fSozFNCS1PF1yuXYZp5nBQDUZVtVBxrvfGsSz+2
eJY4h/zk3Un35N3p8e750S8HaixkjsemoXwJq8plbAH7ruSmnivQL2a7/8qs
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
uUyThevFmMKqeFEXgP8P8o2IXlo6AQA=

-->

</rfc>
