<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-calabria-bmwg-ai-fabric-inference-bench-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="AI Inference Fabric Benchmarking">Benchmarking Methodology for AI Inference Serving Network Fabrics</title>
    <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-inference-bench-00"/>
    <author initials="F." surname="Calabria" fullname="Fernando Calabria">
      <organization>Cisco</organization>
      <address>
        <email>fcalabri@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Pignataro" fullname="Carlos Pignataro">
      <organization>Blue Fern Consulting</organization>
      <address>
        <email>carlos@bluefern.consulting</email>
      </address>
    </author>
    <author initials="Q." surname="Wu" fullname="Qin Wu">
      <organization>Huawei</organization>
      <address>
        <email>bill.wu@huawei.com</email>
      </address>
    </author>
    <author initials="G." surname="Fioccola" fullname="Giuseppe Fioccola">
      <organization>Huawei</organization>
      <address>
        <email>giuseppe.fioccola@huawei.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="24"/>
    <area>Operations and Management</area>
    <workgroup>Benchmarking Methodology Working Group</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 109?>

<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 becomes the
critical bottleneck determining 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 apples-to-apples comparison across
implementations, NIC transport stacks (RoCEv2, UET), and fabric architectures.</t>
      <t>This document is a companion to <xref target="TRAINING-BENCH"/>, 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 131?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large Language Model (LLM) inference serving has emerged as a dominant consumer
of datacenter network capacity, with fundamentally different fabric requirements
compared to training workloads. While training workloads are characterized by
bulk synchronous collective operations (AllReduce, AllGather) with predictable
periodicity, inference workloads exhibit bursty, latency-sensitive
request/response patterns with strict Service Level Objectives (SLOs) on
per-token latency and time-to-first-token.</t>
      <t>The advent of disaggregated serving architectures, where the computationally
intensive prefill phase (prompt processing) is physically separated from the
memory-bound decode phase (token generation), introduces a new class 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>This document addresses the benchmarking of Ethernet-based network fabrics
carrying AI inference serving traffic.</t>
        <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 document does NOT address benchmarking of individual accelerator (GPU/XPU)
compute performance, model accuracy or quality metrics, benchmarking of the
inference serving software stack in isolation from the fabric, or live
production network testing. 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"/>, <xref target="RFC2544"/>, <xref target="RFC2889"/>, and <xref target="RFC6349"/>.</t>
        <t>The test structure follows RFC 2544 conventions for trial duration (minimum 60
seconds), statistical repetition (minimum 20 trials for latency, 50 for burst),
and reporting format (graphical and tabular).</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 (Section 2), test topology conventions (Section 3), and reporting
formats (Section 14). Both documents <bcp14>SHOULD</bcp14> be used in conjunction with
<xref target="TERMINOLOGY"/>, which defines the common terminology base for AI fabric
benchmarking which <bcp14>SHOULD</bcp14> be reused in both documents.</t>
        <t>Where training workloads are dominated by bulk synchronous collective
communication (AllReduce, AllGather) with high bandwidth utilization and
periodic synchronization barriers, inference workloads are dominated by bursty,
latency-sensitive point-to-point transfers (KV cache) and fine-grained AllToAll
dispatch (MoE expert parallelism). Implementers deploying converged fabrics that
serve both training and inference workloads <bcp14>SHOULD</bcp14> run both test suites.</t>
      </section>
    </section>
    <section anchor="terminology-and-definitions">
      <name>Terminology and Definitions</name>
      <t>The following terminologies are used throughout this document. Terms defined in the
companion training document are referenced but not redefined unless the inference
context introduces substantive differences.</t>
      <dl>
        <dt>TTFT:</dt>
        <dd>
          <t>Time to First Token. The elapsed time from receipt of an inference request by
the serving system to emission of the first output token. Includes prompt
processing (prefill), KV cache generation, optional KV cache transfer (in
disaggregated architectures), and initial decode step. Target: &lt; 500 ms for
interactive serving.</t>
        </dd>
        <dt>ITL:</dt>
        <dd>
          <t>Inter-Token Latency. The elapsed time between successive output tokens during
the autoregressive decode phase. Measured at P50, P95, P99, and P99.9
percentiles. Target: &lt; 50 ms P99 for interactive serving.</t>
        </dd>
        <dt>TPS:</dt>
        <dd>
          <t>Tokens Per Second. Aggregate throughput of the serving system measured as the
total number of output tokens generated per second across all concurrent
requests. Reported separately for input (prefill) TPS and output (decode) TPS.</t>
        </dd>
        <dt>KV Cache:</dt>
        <dd>
          <t>Key-Value Cache. The intermediate attention state (key and value projection
matrices) computed during the prefill phase and reused during each decode step.
Size scales with model dimension, number of layers, number of attention heads,
sequence length, and numerical precision. For a 70B parameter model at FP16
with 4K context: approximately 1.34 GB per request.</t>
        </dd>
        <dt>Prefill Phase:</dt>
        <dd>
          <t>The compute-bound phase of inference in which the entire input prompt is
processed in parallel to generate the KV cache and the first output token.
Characterized by high arithmetic intensity (200-400 ops/byte), high GPU
utilization (90-95%), and large activation tensors.</t>
        </dd>
        <dt>Decode Phase:</dt>
        <dd>
          <t>The memory-bound phase of inference in which output tokens are generated
autoregressively, one token per forward pass. Characterized by low arithmetic
intensity (60-80 ops/byte), lower GPU utilization (20-40%), and
memory-bandwidth-limited KV cache reads.</t>
        </dd>
        <dt>Disaggregated Serving:</dt>
        <dd>
          <t>An inference serving architecture in which prefill and decode computations are
executed on physically separate groups of accelerators (workers), connected by
a network fabric. The KV cache generated by prefill workers are transferred
over the fabric to decode workers.</t>
        </dd>
        <dt>xPyD Ratio:</dt>
        <dd>
          <t>The allocation ratio of prefill (x) to decode (y) resources in a disaggregated
serving cluster. For example, 3P9D indicates 3 prefill nodes and 9 decode
nodes. The optimal ratio depends on model size, prompt length distribution,
output length distribution, and SLO targets.</t>
        </dd>
        <dt>EP:</dt>
        <dd>
          <t>Expert Parallelism. A parallelism strategy for Mixture-of-Experts (MoE) models
in which expert sub-networks are distributed across multiple GPUs. Token
routing to the appropriate experts requires AllToAll communication.</t>
        </dd>
        <dt>Wide EP:</dt>
        <dd>
          <t>Expert Parallelism spanning many GPUs (e.g., 96-way EP across 12 nodes),
requiring inter-node AllToAll communication for every MoE layer forward pass.</t>
        </dd>
        <dt>DP Attention:</dt>
        <dd>
          <t>Data Parallelism applied to the attention computation, where the KV cache is
partitioned across data-parallel ranks. Each rank holds 1/DP_SIZE of the KV
cache, and AllToAll communication is used to exchange attention outputs.</t>
        </dd>
        <dt>MoE:</dt>
        <dd>
          <t>Mixture of Experts. A model architecture that activates only a subset of
expert sub-networks for each token, enabling larger model capacity with
sub-linear compute scaling.</t>
        </dd>
        <dt>Normal Dispatch:</dt>
        <dd>
          <t>A communication mode for AllToAll MoE dispatch optimized for the prefill phase.
Maximizes throughput for long input sequences but generates dynamic (symbolic)
shapes incompatible with CUDA Graph.</t>
        </dd>
        <dt>Low-Latency Dispatch:</dt>
        <dd>
          <t>A communication mode for AllToAll MoE dispatch optimized for the decode phase.
Uses fixed input shapes compatible with CUDA Graph, reducing kernel launch
overhead at the cost of slightly lower peak throughput.</t>
        </dd>
        <dt>RDMA:</dt>
        <dd>
          <t>Remote Direct Memory Access. A transport mechanism enabling direct
memory-to-memory data transfer between hosts without CPU involvement.
Implementations include InfiniBand Verbs and RoCEv2 (RDMA over Converged
Ethernet v2).</t>
        </dd>
        <dt>RoCEv2:</dt>
        <dd>
          <t>RDMA over Converged Ethernet version 2. An RDMA transport that encapsulates
InfiniBand transport over UDP/IP, enabling RDMA semantics on standard Ethernet
fabrics.</t>
        </dd>
        <dt>UET:</dt>
        <dd>
          <t>Ultra Ethernet Transport. A transport protocol defined by the Ultra Ethernet
Consortium (UEC) Specification 1.0, offering ordered/unordered reliable
delivery, multipath packet spraying, and integrated congestion control for
AI/HPC workloads.</t>
        </dd>
        <dt>KVCXL:</dt>
        <dd>
          <t>KV Cache Transfer Library. A library providing standardized point-to-point
data transfer primitives (register, transfer, notify) for inference engines,
abstracting underlying transports (intra-node interconnect, RDMA, PCIe, and
storage interfaces). Multiple open-source and vendor implementations exist.</t>
        </dd>
        <dt>GIN:</dt>
        <dd>
          <t>GPU-Initiated Networking. A communication paradigm where GPU threads directly
initiate network operations (RDMA sends, one-sided puts) without CPU
involvement, reducing latency by eliminating CPU-GPU synchronization.</t>
        </dd>
        <dt>PagedAttention:</dt>
        <dd>
          <t>A memory management technique for KV caches that stores attention keys and
values in fixed-size pages (typically, 16-64 KB), enabling non-contiguous
allocation and reducing memory fragmentation.</t>
        </dd>
        <dt>Continuous Batching:</dt>
        <dd>
          <t>A scheduling technique that dynamically adds new requests to an active
inference batch as decode slots become available, improving GPU utilization
compared to static batching.</t>
        </dd>
        <dt>Prefix Caching:</dt>
        <dd>
          <t>Reuse of previously computed KV cache segments for prompts that share a common
prefix (e.g., system prompt), avoiding redundant prefill computation.</t>
        </dd>
        <dt>DUT:</dt>
        <dd>
          <t>Device Under Test. In this document, the DUT is one or more network fabric
elements (switches, NICs, or the complete fabric) whose performance impact on
inference serving is being characterized.</t>
        </dd>
        <dt>SUT:</dt>
        <dd>
          <t>System Under Test. The complete inference serving system including
accelerators, NICs, fabric, and serving software, when end-to-end metrics are
being measured.</t>
        </dd>
        <dt>RT:</dt>
        <dd>
          <t>Router Tester / Traffic Generator. Test equipment capable of generating and
receiving network traffic at specified rates with timestamping accuracy
sufficient for the measurements defined herein.</t>
        </dd>
      </dl>
    </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 (2-Tier Clos,
3-Tier Clos, Rail-Optimized) remain applicable. Inference serving introduces
additional topology considerations related to disaggregated prefill/decode
placement and MoE expert distribution.</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 <bcp14>SHOULD</bcp14> be 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 <bcp14>SHOULD</bcp14> be 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, making superspine bandwidth and latency critical.</t>
        </section>
        <section anchor="topology-c-disaggregated-prefilldecode-placement">
          <name>Topology C: 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><![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 <bcp14>MUST</bcp14> include 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 fabric segment connecting prefill and decode
pools. This segment carries one-sided RDMA PUT operations (or PUT-with-signal)
transferring KV cache blocks from prefill GPU memory to decode GPU memory.
The KV cache blocks transfer can be intra-node transfer,e.g.,NVLink transfer,
or inter-node transfer,e.g., Ethernet/InfiniBand or NIC-Bound Transfer,e.g.,
 PCIe/CXL transfer.</t>
          </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 NVLink, PCIe, 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 <bcp14>MUST</bcp14> be documented in all test reports.</t>
        <section anchor="hardware-traffic-generator-rt-minimum-requirements">
          <name>Hardware Traffic Generator (RT) - Minimum Requirements</name>
          <t>The hardware traffic generator <bcp14>MUST</bcp14> satisfy 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 256 MB
(large KV cache block).</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 <bcp14>MUST</bcp14> support 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
transfering 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 &lt;= 1 millisecond.</t>
            </li>
          </ul>
          <t>When a software workload emulator is used, the complete software configuration
<bcp14>MUST</bcp14> be documented per <xref target="dut-id"/>, 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
(end-user-facing response time metrics), Primary Throughput KPIs (system-level
capacity metrics), Fabric-Level KPIs (network-specific measurements), and Fabric
Health Indicators (operational monitoring metrics).</t>
      <ul empty="true">
        <li>
          <t>NOTE: Where numerical reference values appear in the Target column of the KPI
tables below (including TTFT, ITL, and other latency targets), these values are
provided as informational reference points reflecting current industry
observations for interactive inference workloads. They 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. SLO values cited in this
document are illustrative examples from current industry practice. Implementers
<bcp14>MAY</bcp14> use these values as contextual references when interpreting results; they
<bcp14>MUST NOT</bcp14> be used as pass/fail thresholds in vendor evaluations.
Deployment-specific SLOs will vary by application, model architecture, and
operator requirements.</t>
          <t>NOTE: Target values in this section are NON-NORMATIVE illustrative reference
points derived from current industry practice as of 2025-2026. They do NOT
constitute benchmarking acceptance criteria or performance requirements. Per
BMWG charter, defining acceptance criteria is explicitly out of scope.
Implementers <bcp14>MAY</bcp14> use these values as contextual references only; they <bcp14>MUST NOT</bcp14>
be used as pass/fail thresholds.</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">Target (Interactive)</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">&lt; 500 ms P99</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">&lt; 50 ms P99</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">&lt; 300 ms P99</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">&lt; 5 ms P99</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">Varies by output length</td>
              <td align="left">SUT-E request/response boundary</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="primary-throughput-kpis">
        <name>Primary Throughput KPIs</name>
        <table anchor="tab-throughput-kpis">
          <name>Primary Throughput 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">tokens/s</td>
              <td align="left">Effective output token rate excluding tokens from preempted, evicted, or failed requests</td>
              <td align="left">SUT-E successful completion events</td>
            </tr>
            <tr>
              <td align="left">KV_BW</td>
              <td align="left">GB/s</td>
              <td align="left">Aggregate KV cache transfer bandwidth between prefill and decode pools</td>
              <td align="left">DUT-PD RDMA counters</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>
          </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</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 per NIC port</td>
              <td align="left">DUT-N</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">Threshold</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 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</td>
              <td align="left">&gt; 90% of theoretical</td>
              <td align="left">PCIe Gen5 x16 bandwidth utilization between GPU and NIC</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="test-category-1-rdma-kv-cache-transfer-benchmarks">
      <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 <bcp14>MUST</bcp14>
include: 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 <bcp14>MUST</bcp14> be repeated a minimum of 20 times per configuration and the average
reported.</t>
        <t><strong>Reporting Format:</strong> Results <bcp14>SHOULD</bcp14> be 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 <bcp14>MUST</bcp14> be 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 <bcp14>MUST</bcp14> 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 <bcp14>MUST</bcp14> be repeated a minimum of 20 trials of at least 120 seconds each per
configuration. The difference between P99 and P50 (tail latency spread) <bcp14>SHOULD</bcp14>
be reported as a derived metric.</t>
        <t><strong>Reporting Format:</strong> Results <bcp14>SHOULD</bcp14> be 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
<bcp14>SHOULD</bcp14> be 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 Fairness Index across pairs, and maximum
fabric link utilization observed. The test <bcp14>MUST</bcp14> be repeated a minimum of 20
times per value of N.</t>
        <t><strong>Reporting Format:</strong> Results <bcp14>SHOULD</bcp14> be 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 <bcp14>SHOULD</bcp14> be 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: GPU HBM to GPU HBM (inter-node RDMA), GPU HBM to
remote CPU DRAM (offload), CPU DRAM to GPU HBM (reload), and GPU HBM to
NVMe/SSD (persistent cache).</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 (GDS for NVMe, GPUDirect RDMA for inter-node).</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 <bcp14>SHOULD</bcp14> be 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-category-2-prefilldecode-disaggregation-benchmarks">
      <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.</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) <bcp14>SHOULD</bcp14> be reported as
a derived metric. The test <bcp14>MUST</bcp14> be repeated a minimum of 20 trials per prompt
length.</t>
        <t><strong>Reporting Format:</strong> Results <bcp14>SHOULD</bcp14> be 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 <bcp14>MUST</bcp14>
accompany 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 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) that maximize TPS_output while meeting
TTFT P99 &lt; 500 ms and ITL P99 &lt; 50 ms.</t>
        <t><strong>Reporting Format:</strong> Results <bcp14>SHOULD</bcp14> be 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 <bcp14>SHOULD</bcp14> be
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> Configure N GPUs in an EP group (e.g., N = 8, 16, 32, 64, 96).
Generate a synthetic MoE dispatch workload where each GPU sends token embeddings
to the experts selected by a top-k routing function (k=2 typical). Measure the
aggregate AllToAll bandwidth and per-dispatch latency for batch sizes of 1, 8,
32, 128, and 512 tokens, and EP group sizes of 8, 16, 32, 64, and 96.</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 <bcp14>MUST</bcp14>
be repeated a minimum of 20 times per configuration.</t>
        <t><strong>Reporting Format:</strong> Results <bcp14>SHOULD</bcp14> be 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 <bcp14>MUST</bcp14> be included.</t>
      </section>
      <section anchor="normal-vs-low-latency-dispatch-mode-comparison">
        <name>Normal vs. Low-Latency Dispatch Mode Comparison</name>
        <t><strong>Objective:</strong> To compare fabric performance under Normal Dispatch (optimized
for prefill, dynamic shapes, incompatible with CUDA Graph) and Low-Latency
Dispatch (optimized for decode, fixed shapes, CUDA Graph compatible).</t>
        <t><strong>Procedure:</strong> Execute identical MoE dispatch workloads in both modes for EP
group sizes of 8, 32, and 96 GPUs. For Normal Dispatch, use batch sizes of 128,
256, and 512 (typical prefill). For Low-Latency Dispatch, use batch sizes of 1,
4, 8, and 16 (typical decode).</t>
        <t><strong>Measurement:</strong> Report per-dispatch latency (us) at P50, P95, P99 for each
mode. Report the latency ratio LL/Normal for equivalent EP sizes. Report the
fabric bandwidth utilization (%) for each mode.</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 a representative MoE model configuration (256 experts, top-2
routing).</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=8 latency) / (EP=N latency) * (N/8).</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-category-4-congestion-management-benchmarks">
      <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 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 companion training document, 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 <bcp14>MUST</bcp14>
be 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-category-5-request-routing-and-load-balancing">
      <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 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 characterized by a mix of large KV cache flows and
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="jain-fairness-index-for-decode-worker-utilization">
        <name>Jain 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-under-varying-prompt-lengths">
        <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.</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. The expected transfer
size for a 70B model at FP16 is approximately 0.33 MB per token.</t>
        <t><strong>Measurement:</strong> Report TTFT, T_transfer, and T_transfer/TTFT at P50, P95, P99
for each prompt length. The test <bcp14>MUST</bcp14> be repeated a minimum of 100 times per
prompt length.</t>
        <t><strong>Reporting Format:</strong> Results <bcp14>SHOULD</bcp14> be 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 <bcp14>SHOULD</bcp14> be 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 a single long-output request (e.g., 2048 output tokens)
and record the timestamp of each emitted token. 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 exhibiting ITL &gt; 100 ms (stall events).
The test <bcp14>MUST</bcp14> generate 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 to the point where
either TTFT P99 exceeds 500 ms or ITL P99 exceeds 50 ms. At each rate, measure
TPS_output, TPS_input, Goodput, and all latency KPIs.</t>
        <t><strong>Measurement:</strong> Report TPS_output, TPS_input, 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 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 Goodput reduction.</t>
        <t><strong>Measurement:</strong> Report Goodput, eviction rate (evictions/s), preemption rate
(preemptions/s), wasted fabric bandwidth (GB/s), and the Goodput/TPS_output
ratio (efficiency).</t>
      </section>
    </section>
    <section anchor="test-category-8-scale-and-autoscaling">
      <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 meeting performance requirements.</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. Identify the scale limit
as the point where any KPI degrades by more than 10% from the
minimal-configuration baseline.</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>
      </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 <bcp14>MUST</bcp14> be
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 15
minutes: 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. There <bcp14>SHOULD</bcp14> be zero NIC QP errors, zero routing flaps, and less than
1% variation in TTFT P99 over the test duration.</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 <bcp14>MUST</bcp14> be reported following the conventions established in RFC
2544 Section 26. In addition, the following inference-specific reporting
requirements apply:</t>
      <ul spacing="normal">
        <li>
          <t><strong>System Configuration Report:</strong> The report <bcp14>MUST</bcp14> include: 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 <bcp14>MUST</bcp14> include: 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 <bcp14>MUST</bcp14> include: the specific test
identifier (e.g., Test 5.1), the DUT/SUT configuration tested, the number of
trials, all measured KPI values with confidence intervals, and any anomalies
observed.</t>
        </li>
      </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 Section 4.4</td>
            <td align="left">Yes (required)</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 methodologies for controlled laboratory
testing. All tests <bcp14>MUST</bcp14> be conducted in isolated test environments that are not
connected to production networks or the public Internet. The security
considerations from <xref target="RFC2544"/> and <xref target="RFC6815"/> apply.</t>
      <t>Additionally, implementers <bcp14>SHOULD</bcp14> be aware that RDMA-based KV cache transfer
provides direct memory access between hosts; all RDMA connections in the test
environment <bcp14>MUST</bcp14> use authenticated QPs where supported. The test results
themselves may reveal performance characteristics that could inform
denial-of-service attack vectors; results <bcp14>SHOULD</bcp14> be treated as sensitive when
applicable.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This memo includes no request to IANA.</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="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="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="RFC7432">
          <front>
            <title>BGP MPLS-Based Ethernet VPN</title>
            <author fullname="A. Sajassi" initials="A." role="editor" surname="Sajassi"/>
            <author fullname="R. Aggarwal" initials="R." surname="Aggarwal"/>
            <author fullname="N. Bitar" initials="N." surname="Bitar"/>
            <author fullname="A. Isaac" initials="A." surname="Isaac"/>
            <author fullname="J. Uttaro" initials="J." surname="Uttaro"/>
            <author fullname="J. Drake" initials="J." surname="Drake"/>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx"/>
            <date month="February" year="2015"/>
            <abstract>
              <t>This document describes procedures for BGP MPLS-based Ethernet VPNs (EVPN). The procedures described here meet the requirements specified in RFC 7209 -- "Requirements for Ethernet VPN (EVPN)".</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7432"/>
          <seriesInfo name="DOI" value="10.17487/RFC7432"/>
        </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="TRAINING-BENCH">
          <front>
            <title>Benchmarking Methodology for AI Training Network Fabrics</title>
            <author>
              <organization/>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-training-bench-00"/>
        </reference>
        <reference anchor="TERMINOLOGY">
          <front>
            <title>AI Fabric Benchmarking Terminology</title>
            <author>
              <organization/>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-calabria-bmwg-ai-fabric-terminology-00"/>
        </reference>
        <reference anchor="UEC-SPEC">
          <front>
            <title>UEC Specification 1.0</title>
            <author>
              <organization>Ultra Ethernet Consortium</organization>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="VLLM">
          <front>
            <title>Efficient Memory Management for Large Language Model Serving with PagedAttention</title>
            <author initials="W." surname="Kwon">
              <organization/>
            </author>
            <date year="2023"/>
          </front>
          <refcontent>Proceedings of the ACM SIGOPS 29th Symposium on Operating Systems Principles</refcontent>
        </reference>
        <reference anchor="DISTSERVE">
          <front>
            <title>DistServe: Disaggregating Prefill and Decoding for Goodput-optimized Large Language Model Serving</title>
            <author initials="Y." surname="Zhong">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <refcontent>OSDI 2024</refcontent>
        </reference>
        <reference anchor="EP-COMM">
          <front>
            <title>DeepEP: An Efficient Expert-Parallel Communication Library</title>
            <author>
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="LMCACHE">
          <front>
            <title>LMCache: Hierarchical KV Cache Management for Inference</title>
            <author>
              <organization>LMCache Project</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="SGLANG">
          <front>
            <title>SGLang: Efficient Execution of Structured Language Model Programs</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="K8S-INF">
          <front>
            <title>llm-d: Kubernetes-Native Distributed LLM Inference</title>
            <author>
              <organization/>
            </author>
            <date year="2025"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1223?>

<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">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">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, 8.3</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.1, 8.2, 12.3</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 Worker)</td>
            <td align="left">9.4</td>
            <td align="left">SUT-E</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) <bcp14>SHOULD</bcp14> 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 (Section 6)</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 (Appendix C)</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 (Section 7)</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 (Section 9)</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 prefix cache hit rate test (Section 9.2)</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">Must be documented; affects congestion management test interpretation (Section 8)</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 (Section 7)</td>
          </tr>
          <tr>
            <td align="left">Kubernetes / Orchestration Integration</td>
            <td align="left">Native support for container-based deployment and horizontal scaling</td>
            <td align="left">Relevant for autoscaling tests (Section 12.2)</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: Implementers <bcp14>MUST</bcp14> document the specific framework name, version, and
configuration 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-cache-transfer-frame-format">
      <name>KV Cache Transfer Frame Format</name>
      <t>This appendix defines the reference frame formats for KV cache transfer
benchmarking over RoCEv2. The frame format follows the standard RoCEv2
encapsulation with one-sided RDMA WRITE (PUT) operations.</t>
      <figure anchor="fig-roce-frame">
        <name>RoCEv2 KV Cache Transfer Frame (One-Sided RDMA WRITE)</name>
        <artwork><![CDATA[
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Destination MAC Address (bytes 0-3)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Destination MAC (bytes 4-5)  |  Source MAC Address (0-1)     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Source MAC Address (bytes 2-5)                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   EtherType = 0x0800/0x86DD   |  DSCP  |ECN|      ...        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                IPv4/IPv6 Header (20 or 40 bytes)              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       Src Port (entropy)      |  Dst Port = 4791 (RoCEv2)    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          UDP Length           |          UDP Checksum         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   | OpCode=RDMA_WRITE(0x0A) |SE|M| Pad |TVer|       PKey        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Destination QP Number (24 bits)         |A| Reserved |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |             Packet Sequence Number (PSN, 24 bits)             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                 RETH: Virtual Address (64 bits)               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                   Remote Key (R_Key, 32 bits)                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     DMA Length (32 bits)                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |           KV Cache Payload (variable, up to MTU)              |
   |            (key/value attention state data)                   |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        ICRC (4 bytes)                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t>Notes: The UDP Source Port <bcp14>SHOULD</bcp14> use entropy-based values for ECMP load
distribution. The RETH (RDMA Extended Transport Header) 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. Typical MTU for RoCEv2 is 4096 bytes; larger KV cache
blocks (e.g., 64 KB pages) are segmented into multiple packets by the NIC. For
PUT-with-signal operations, the last packet in the transfer includes an RDMA
WRITE with Immediate Data (OpCode 0x0B) to signal completion to the decode
worker.</t>
    </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 (CUDA Graph)</td>
          </tr>
          <tr>
            <td align="left">QP Parallelism</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>For a representative large-scale MoE model (256 experts, top-2 routing,
hidden_dim=7168, EP=96 across 12 nodes), the inter-node traffic per MoE layer
dispatch is approximately:</t>
      <ul spacing="normal">
        <li>
          <t>Normal Dispatch (prefill, batch=256): 256 * 2 * 7168 * 2 bytes / 96 GPUs
= ~76 KB per GPU pair, ~870 MB aggregate across all pairs.</t>
        </li>
        <li>
          <t>Low-Latency Dispatch (decode, batch=8): 8 * 2 * 7168 * 2 bytes / 96 GPUs
= ~2.4 KB per GPU pair, ~27 MB aggregate.</t>
        </li>
      </ul>
      <t>With 61 MoE layers and a decode iteration time target of ~30 ms, the decode
phase requires 61 AllToAll dispatches within 30 ms, yielding ~2,000 dispatches
per second per decode step, consuming approximately 54 GB/s aggregate inter-node
bandwidth for the Low-Latency Dispatch path.</t>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Contributions and review are solicited from the BMWG mailing list
(bmwg@ietf.org) and the broader AI networking community. The BMWG chairs and
Area Director are identified at https://datatracker.ietf.org/group/bmwg/about/.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
3ItsB9PZSUZ0JHd60f8LROemV4sCAQA=

-->

</rfc>
