<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-calabria-bmwg-ai-fabric-inference-bench-05" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <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-05"/>
    <author initials="F." surname="Calabria" fullname="Fernando Calabria">
      <organization>Cisco</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>fcalabri@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Pignataro" fullname="Carlos Pignataro">
      <organization>Blue Fern Consulting</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>carlos@bluefern.consulting</email>
      </address>
    </author>
    <author initials="Q." surname="Wu" fullname="Qin Wu">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>
    <author initials="G." surname="Fioccola" fullname="Giuseppe Fioccola">
      <organization>Huawei</organization>
      <address>
        <postal>
          <country>Italy</country>
        </postal>
        <email>giuseppe.fioccola@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Reddy" fullname="Sowjanya Reddy">
      <organization>Apple</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>sowjredd@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="08"/>
    <area>Operations and Management</area>
    <workgroup>BMWG</workgroup>
    <keyword>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"/>. The report identifies this
document and <xref target="TERMINOLOGY"/> by name and revision. The Test Configuration,
Observation Points, and Trial Accounting elements of the Reporting Format of
<xref target="TRAINING-BENCH"/> apply to this document without change. 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. The DUT/SUT configuration fixes the measurement boundary of the
result (<xref target="tab-dut"/>). Results obtained at different boundaries are not
compared with each other or combined; for example, a KV_xfer_latency
measured from PUT posting to remote completion (DUT-N or DUT-PD) is not
compared with a NIC-to-NIC latency measured at DUT-F. When a latency is
measured at a boundary wider than DUT-F, the report states the timestamps
used and, where the test equipment observes the NIC Ethernet ports, reports
the fabric-segment component separately, as in the TTFT decomposition of
<xref target="end-to-end-disaggregated-ttft"/>.</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 on measurements observable external to the DUT as defined in <xref target="TERMINOLOGY"/>. DUT-reported values (e.g., switch queue occupancy) are used only under the conditions stated in the Security Considerations of <xref target="TERMINOLOGY"/>.</t>
      <t>Special capabilities <bcp14>SHOULD NOT</bcp14> exist in the DUT specifically for benchmarking purposes. Any implications for network security arising from the DUT <bcp14>SHOULD</bcp14> be identical in the lab and in production networks. In particular, RDMA memory-region permissions 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 1240?>

<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:
H4sIAAAAAAAAA829XVMb2ZY2eJ+/Yo8rTrRURxIIY4zx8ekDAmxOGawCXNVn
unuIREogjyWlWilh08YV7+Xb1zMRczsX80tm/kn/klnPWmt/ZSbYrrdj4q2I
wiBl7o+1117fH91uN1nmy0m2Y57sZbPRzTRdfMhn1+Y4W94U42JSXN+Zq2Jh
do/M0ewqW9AzmTnLFrd46CRbfiwWH8xhernIR+WTJL28XGS3NFb0uHxtwvGf
JKN0mV0Xi7sdk8+uiiQZF6NZOqV1jBfp1bI7Sid4K+1eTj9ed9O8e8WDdHM7
avcSw3XXnyXl6nKal2VezJZ3cxrg6OD8MMnnix2zXKzK5cb6+ov1jWS2ml5m
i51kVMzKbFauSv46S2i1T5N0kaW06nfzbJEuaaDSpLOxOU5n6XU2zWbLJwn2
eb0oVnMA6vjX10+SD9kdfTjeSUzXXAZbw9+7R/jp1oo/3r49xj8zBZlsB5+c
7h/v4t+ffjGjdHTDDx8XB/hnnJfp9fUiuyZYjU0pUE+S22y2ymheEy/IGNn/
k18LOcPX+BqfT9N8Qp8DlH/Js+VVr1hc4/N0Mbqhz2+Wy3m5s7aGx/BRfpv1
7GNr+GDtclF8LLM1DLCGF6/z5c3qkl690nNae/yY8M6ENlEug+nsuz0ZrZcX
Xxll7btQo3eznE6eJEm6IkxeAFwEfcaww2wxo/MtzEBHou8MnRahxGEv/pAg
sGMGeTkq+M9RsZotgbPvZzmO5GyJTfFXmQDZbuovI7zUGxXTYOJBupgUpRnm
17N0mS4KP++gV/mUJ96brDJerRkQTq4mS0avb1rHiKf6yyWNQFCZ9UbhAHY9
P+cz8+vKr+Lnnv2Tp3+zSj9meTzh4CafpeFEl/lk0vu4+ssNP1zZ8Ot8VWbz
OW0iL0ajYhJA+nUv/vDBGY+W6eQunPFaB+1d6fvNc58VH/+ezu5Sc5qNx3d+
4rNe8AnPujufT7JvhGtJoy7o9b9c42+eMpkViymRjVu+k6eHg/7G5ob+uvFs
c1N/3druP9NftzeebvtfX+DX84PT46OTd2/fvf4bbbm733sIy5fZYprPmDDj
tdPdo5Ojk9fdvYOTwZuvvLlI8xkhgFwPevn9waDb763v8P4sF3g/oefMwfKG
sCZbmvNFOivnxWJpWu8PztvmbJ6N8qt8xGTS0NtP+G1/yfBfV+BaGQo4TAPl
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
dwjoi2qD5rPHkujYjuGgpyb16raCtJFPioIiM7/Jl1wS+GuIVzXeE1u/5fhr
K9W72pm2Aay2f7UVJqLkabY221ylT9b07hyEVkvjC6i9DxKWOJe1ENxqu4RH
Q84t3lRizId/iLoyiFEo1UUm2peBnnhr7c6tIdTHqGIZqpW9pCfw+VYtDbxd
Rz70TgoBFhzVg2IMb/Qm1xTP1h/ada+K4cwoQUT6XjLxg88c3UWGm6YmslmD
nva2lBYRsrdt7XwQSB0gccKt72bplOatUOCqYeERidnluz1GU2N6J7rYw6KG
IMyUDqvSSpGzsgTzyqnUxU98IBa+rKONK4ZXLcOkTk1XgFqMfQ2VZsUhIkvR
vDBWxv5IJwAD3gN2O3lN1imvJX9i5QqvjdqmYhJSxcB2Bn4Ye/56eORZeW1X
jExWH8e3Se1bawV+KHHJOTWtEJZqUbjEH6gLURF8apZ/MZLm6/0qvCkoy/61
bDYY+iZRKTOfEdSQq5aEyR+VNtc1nPiVa19d7FeLHrfw2au4xGrbJ3EnD3Ou
meujHnYQebjhSbJ6pOHJo2fPUP2OTipJvZOKTRRam+a1Q3fVdqqi29aOK47p
LaehdGZtyGrfmmtPlBVJbd0riVNCsD3um6/cECRc2faDUeIV52cXNjHGOy6q
fcJ82ZeAruiKBEWZgApd+0Xrjw4llf6tlv4gsbNeweSrNqhvKBsTVINJ/C58
KfgGdWRk+5YHZWKC4itiWY+rtnRc2ZauYybWtzcrQtuTlgjzlRuxsM+fHy+d
86Wj0YJT237ZWQVin6ZQdy2h/lA1mti2JgVpHk9i1jIuaqX1ia0NWxMOERd2
SWxhlya2/rXqLlGFBFsTW2u3fGedjpLFF8f5oqRsNpfAPmxz+HtBwsbRvg3d
OeZcCgIOzfh9gWj35uyCcO0vZvMnM1p+ij97utHwIYEs+LQWoPa9mRZfe7dx
vOZJpHvF4evubrQ/sFuiVK9AvN9cfLhFyjr3AyA8/nkF/dRlixO9/BlV9/Z9
6gl6V/SebZrXezreZu+p/cNP0n/e26h9qqvZCx88zsdYy/Z6sJbalK3fnq/v
dV2IPN0mOGTZ/NQOJ62tBA0xes9rH24+7a0/tLpB+OBbSDRYH1Cf17e1aVpS
dfENyeohpI7f1CHV3+i98BNhNQ2w2uzXQOVWs1+BlTk6Od9+FGB4wLQkn+zf
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
S0HPPj4BAA==

-->

</rfc>
