<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-englishm-moq-relay-dos-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="MoQ Relay DoS">Denial-of-Service Considerations for Media over QUIC Relay Deployments</title>
    <seriesInfo name="Internet-Draft" value="draft-englishm-moq-relay-dos-02"/>
    <author fullname="Mike English">
      <organization>Cloudflare</organization>
      <address>
        <email>ietf@englishm.net</email>
      </address>
    </author>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <author fullname="Aman Sharma">
      <organization>Meta</organization>
      <address>
        <email>amsharma@meta.com</email>
      </address>
    </author>
    <author fullname="Ian Swett">
      <organization>Google</organization>
      <address>
        <email>ianswett@google.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>moq</keyword>
    <keyword>denial-of-service</keyword>
    <keyword>relay</keyword>
    <keyword>resource exhaustion</keyword>
    <abstract>
      <?line 60?>

<t>The Media over QUIC Transport (MoQT) protocol
presents denial-of-service risks
that differ in character
from those facing typical request-response protocols.
MoQT relays forward, fan out, and optionally cache media content
on behalf of publishers and subscribers.
This document complements the MoQT Security Considerations,
focusing on the unique considerations for relays.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://englishm.github.io/moq-relay-dos/draft-englishm-moq-relay-dos.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-englishm-moq-relay-dos/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Media Over QUIC Working Group mailing list (<eref target="mailto:moq@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/moq/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/englishm/moq-relay-dos"/>.</t>
    </note>
  </front>
  <middle>
    <?line 72?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Media over QUIC Transport protocol <xref target="MOQT"/>
enables media delivery through intermediary relays
that forward, fan out, and optionally cache content for subscribers.
Unlike request-response protocols
where the server's work is roughly proportional to the client's request,
MoQT has amplification properties,
in the sense that a single SUBSCRIBE can trigger backend lookups,
upstream Transport Session establishment,
and ongoing media delivery
that can significantly exceed the cost of the request itself.
This asymmetry is relevant to the denial-of-service risks
discussed in this document.</t>
      <t><xref target="BCP72"/> requires that protocol specifications
identify potential denial-of-service (DoS) attacks
and describe foreseeable risks with due diligence.
The MoQT transport specification already addresses
resource exhaustion, stream limits, flow control,
and some relay-specific concerns.
This document provides more detailed analysis of the threat landscape —
particularly for relay deployments
where the amplification properties of the protocol are most relevant —
along with operational guidance for implementers and operators.</t>
      <section removeInRFC="true" anchor="motivation">
        <name>Motivation</name>
        <t>This work was motivated by discussion
at the MoQ Working Group interim meeting in February 2026.
The working group decided that detailed DoS analysis
and operational guidance warranted a separate document
rather than additions to the transport specification.</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>This document covers denial-of-service
and resource exhaustion threats to MoQT relay deployments.
Authentication, authorization, and billing mechanisms are out of scope,
though they can be critical tools for DoS mitigation in practice
and are referenced where relevant.
Content filtering mechanisms and their resource costs
are also deferred to future work.</t>
        <t>Where this document identifies potential changes
to the transport protocol that could improve DoS resilience,
those are noted
but left to proposals against the transport specification.
While both this document and the transport specification
are under active development,
this document also catalogs mechanisms
that are currently load-bearing for DoS resilience
(<xref target="load-bearing-mitigations"/>)
so that changes elsewhere
do not inadvertently weaken existing protections.</t>
      </section>
      <section anchor="relationship-to-the-transport-specification">
        <name>Relationship to the Transport Specification</name>
        <t>The MoQT transport specification <xref target="MOQT"/> already covers
stream limits, flow control, priority and starvation, timeouts,
and some relay-specific concerns
(state maintenance, SUBSCRIBE_NAMESPACE with short prefixes).
This document does not replace any of that.
It adds threat analysis,
documents which existing mechanisms are load-bearing
for DoS prevention,
and provides operational guidance for relay deployments.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>This document provides operational guidance
for MoQT relay implementations and deployments.
It does not modify or override
protocol requirements specified in <xref target="MOQT"/>.</t>
      <t>This document uses the following terms:</t>
      <dl>
        <dt>Relay:</dt>
        <dd>
          <t>A MoQT intermediary that receives content from publishers
and forwards it to subscribers,
potentially caching content
and serving multiple subscribers
from a single upstream subscription.</t>
        </dd>
        <dt>Control Plane:</dt>
        <dd>
          <t>MoQT operations that establish, modify, and tear down state:
SUBSCRIBE, PUBLISH, FETCH, PUBLISH_NAMESPACE,
SUBSCRIBE_NAMESPACE, SUBSCRIBE_TRACKS, REQUEST_OK,
REQUEST_UPDATE, TRACK_STATUS, and related messages.
These often require coordination with backend systems
for routing, authorization, and state management.</t>
        </dd>
        <dt>Data Plane:</dt>
        <dd>
          <t>MoQT operations involved in delivering MoQ Objects
to subscribers:
QUIC stream management, object framing, and flow control.</t>
        </dd>
      </dl>
    </section>
    <section anchor="threat-model">
      <name>Threat Model</name>
      <t>MoQT relay deployments face resource exhaustion risks
from several categories of actors.
How severe these risks are in practice depends on the deployment model,
authentication requirements,
and trust relationships between participants.</t>
      <section anchor="actors">
        <name>Actors</name>
        <t>This section uses "misbehaving" rather than "malicious"
to describe problematic actors.
A relay's defenses need to handle
both deliberate attacks and innocent misconfiguration
or buggy implementations —
from the relay's perspective,
the distinction often does not matter.</t>
        <t>Note that a relay acting maliciously
with respect to content integrity or confidentiality
(interception, manipulation, selective suppression)
is a media security concern rather than a DoS concern
and is out of scope for this document.</t>
        <section anchor="misbehaving-subscriber">
          <name>Misbehaving Subscriber</name>
          <t>Subscribers tend to face fewer authentication constraints,
which can create a broader attack surface.
In broadcast scenarios —
which are a significant near-term deployment model for MoQT —
subscribers may be minimally authenticated
or entirely unauthenticated.
A malicious subscriber can issue requests
that force relays or publishers to commit resources
(subscriptions, buffer allocations, backend lookups),
manipulate flow control to cause excessive buffering,
rapidly create and cancel subscriptions
to generate processing overhead,
or subscribe to content with no intent to actually consume it.</t>
          <t>The impact a misbehaving subscriber can have
depends on where they sit in the topology.
If subscribers connect through a relay
operated by the content provider (or its CDN),
the operator can impose limits and terminate abusive sessions
with full context about what legitimate behavior looks like.
If subscribers connect to third-party relays,
the relay may have less information
to distinguish attacks from unusual but legitimate usage.</t>
        </section>
        <section anchor="misbehaving-publisher">
          <name>Misbehaving Publisher</name>
          <t>Publishers are usually more constrained than subscribers.
They tend to have business relationships with the relay operator,
face stronger authentication requirements,
and their traffic patterns are more predictable and visible.
That said, a malicious or compromised publisher can
flood namespace advertisement state
(forcing relays to propagate and store
large numbers of namespace registrations),
publish at rates that overwhelm downstream relays and subscribers,
or exploit protocol features
to force resource commitment without delivering useful content —
for example,
opening many subgroup streams and keeping them active.</t>
        </section>
        <section anchor="misbehaving-relay">
          <name>Misbehaving Relay</name>
          <t>In relay chains or meshes,
a misbehaving relay can cause upstream load
through fan-out amplification,
create namespace advertisement loops,
or fail to enforce resource limits in either direction —
failing to protect downstream clients from a misbehaving publisher,
or failing to protect upstream publishers
from the aggregate load of a large downstream audience.
A compromised relay in a chain effectively acts
as both a misbehaving subscriber (to its upstream peers)
and a misbehaving publisher (to its downstream peers)
at the same time.</t>
          <t>A misbehaving relay can also direct load at a third party.
When a server sends GOAWAY with a New Session URI,
the client MUST use that URI for its new session
(see <xref section="9.2" sectionFormat="of" target="MOQT"/>).
A relay with many connected clients
can send them all a GOAWAY naming a victim host,
which then receives a burst of connection attempts
from clients that would not otherwise contact it.
The victim need not implement MoQT at all.
Because the clients are following the protocol,
the victim cannot prevent the connection attempts.
Mitigating this would require clients
to have some assurance that a new URI is authoritative
before following it,
which is a matter for the transport specification.</t>
        </section>
      </section>
      <section anchor="amplification-properties">
        <name>Amplification Properties</name>
        <t>MoQT has significant amplification properties.
A single SUBSCRIBE message can cause a relay
to perform backend lookups,
establish an upstream subscription to the publisher,
and begin forwarding
a potentially unbounded stream of media objects.
The server-side work can be disproportionately large
relative to the effort required to trigger it —
potentially much larger than in request-response protocols like HTTP,
where the server's cost is roughly proportional to the request.</t>
        <t>This has a direct implication for how limits need to be designed.
Per-session limits are necessary but may not be sufficient:
if an attacker can open many sessions cheaply,
per-session limits just move the problem.
Effective protection requires limits scoped to something
that is expensive for an attacker to obtain in quantity —
an authenticated identity, a billing account, or similar.
The specifics of authentication and billing are out of scope here,
but session-level controls alone may not be sufficient —
they could be one layer of a defense-in-depth strategy.</t>
      </section>
    </section>
    <section anchor="control-plane-considerations">
      <name>Control Plane Considerations</name>
      <t>MoQT relay deployments require authoritative answers
to routing questions:
which namespaces have been registered via PUBLISH_NAMESPACE,
where a subscription should be forwarded,
and whether an incoming request is permitted.
Every relay — regardless of deployment size —
maintains state to answer these questions.
The cost of maintaining that state
and the consequences of getting it wrong
both grow with the scale of the deployment.</t>
      <t>On a single relay node, authoritative state is local:
lookups and updates are bounded by CPU and memory.
As deployments grow to multiple nodes,
that state must be shared —
through replication, coordination,
or some partitioning scheme —
and the per-operation cost tends to increase accordingly.
MoQT is designed to support distribution at scale
through third-party relay networks
(see <xref section="1.2.4" sectionFormat="of" target="MOQT"/>),
so this document focuses on the cost profile
where these pressures are most acute.</t>
      <t>In general,
operations that read authoritative state
tend to be cheaper than operations that write or update it,
and this asymmetry tends to widen
as the number of nodes sharing that state grows —
particularly when those nodes are geographically distributed.
Understanding the cost profile of different operations
is important for setting appropriate limits.
Examining costs through the lens of each control message type
is a practical way to do this,
particularly for write-heavy operations.</t>
      <section anchor="authoritative-state-and-coordination-costs">
        <name>Authoritative State and Coordination Costs</name>
        <t>Several MoQT control messages create or modify authoritative state
that the relay uses for routing and resource management:</t>
        <dl>
          <dt>PUBLISH_NAMESPACE:</dt>
          <dd>
            <t>Registers a namespace as actively published.
The relay must record this
so that incoming subscriptions can be matched
to the correct publisher.
In a multi-node deployment,
this registration must be visible to other nodes
that may receive subscriptions for the same namespace.</t>
          </dd>
          <dt>SUBSCRIBE:</dt>
          <dd>
            <t>Requests content for a Full Track Name
(Track Namespace + Track Name).
The relay must look up the registered namespace,
determine where the content can be sourced,
and may need to establish an upstream forwarding path.
Each subscription creates ongoing state
that must be maintained for the lifetime of the subscription.</t>
          </dd>
          <dt>SUBSCRIBE_NAMESPACE:</dt>
          <dd>
            <t>Registers interest in content matching a namespace prefix.
This inverts the namespace-advertisement flow:
instead of matching a subscription against registered namespaces,
the relay must match incoming PUBLISH_NAMESPACE messages
against registered namespace subscriptions.
The state cost can be similar to PUBLISH_NAMESPACE
but evaluated in the reverse direction.</t>
          </dd>
          <dt>SUBSCRIBE_TRACKS:</dt>
          <dd>
            <t>Requests the relay create a subscription (via PUBLISH) for
every Track in namespace(s) that begin with a namespace prefix,
including new Tracks as they are published. This can quickly
create a large number of subscriptions with only a single message
from the subscriber as well as causing the Relay to maintain state
to identify new Tracks in the namespace.</t>
          </dd>
        </dl>
        <t>At the smallest scale,
these operations are local lookups and writes.
At larger scales,
they may require coordination across nodes —
whether through consensus protocols,
centralized registries, or other mechanisms —
all of which are implementation-defined
and outside the scope of MoQT itself.
The specific costs depend on the deployment architecture,
but the relative ordering is consistent:
control plane operations that touch authoritative state
can be significantly more expensive per message
than data plane forwarding.
This cost differential means the control plane
may warrant particular attention
when designing resource exhaustion defenses.</t>
      </section>
      <section anchor="rapid-request-cycles">
        <name>Rapid Request Cycles</name>
        <t>Rapidly creating and canceling subscriptions
forces repeated setup and teardown work at the relay —
and potentially at upstream publishers —
while the attacker pays only the cost
of sending small control messages.
This is analogous
to the HTTP/2 "Rapid Reset" attack <xref target="HTTP2-RAPID-RESET"/>,
where attackers exploited the asymmetry
between the cost of sending RST_STREAM
and the server-side cost of stream setup.</t>
        <t>The risk is not limited to subscription churn.
Any control message that triggers work at the relay
can be abused through rapid repetition. REQUEST_UPDATE
can change the priority, which may force reordering
of internal scheduling structures.</t>
        <t>Implementations that track request rates per session
can reduce the rate at which they provide more bidirectional
streams, thereby limiting the number of new requests.
As a more disruptive measure, implementations can detect
and terminate sessions exhibiting excessive churn
without making progress on useful data transfer.</t>
        <section anchor="update-coalescing">
          <name>Update Coalescing</name>
          <t>REQUEST_UPDATE messages change properties
of an existing subscription —
most commonly the priority,
which may force reordering of internal scheduling structures.
The recipient of a REQUEST_UPDATE
can coalesce multiple pending updates
for the same subscription
before applying them
(see <xref section="9.5.1" sectionFormat="of" target="MOQT"/>).
For example, if a subscriber sends
100 REQUEST_UPDATEs changing the priority of a subscription
before the relay has processed them,
only the final value needs to be applied.</t>
          <t>Rapid REQUEST_UPDATE messages
still consume network and parsing resources,
but coalescing prevents them
from causing proportional scheduling work
at the relay.
Coalescing does not apply to every update:
a REQUEST_UPDATE carrying FILL_PARAMETERS
or TRACK_NAMESPACE_PREFIX
cannot be coalesced with other REQUEST_UPDATEs
(see <xref section="9.19.15" sectionFormat="of" target="MOQT"/> and <xref section="9.19.20" sectionFormat="of" target="MOQT"/>),
so floods of those updates need other limits,
such as MAX_REQUEST_UPDATES.</t>
        </section>
      </section>
      <section anchor="namespace-advertisement-flooding">
        <name>Namespace Advertisement Flooding</name>
        <t>Because namespace advertisement state
may need to be globally registered,
an attacker who can publish (or a compromised publisher)
can flood the namespace store with PUBLISH_NAMESPACE messages.
These are write-heavy operations
against authoritative state
(see the read/write cost asymmetry
discussed in <xref target="control-plane-considerations"/>),
and in systems using consensus protocols
with per-transaction overhead,
a flood of PUBLISH_NAMESPACE messages
can quickly exhaust capacity.
SUBSCRIBE_NAMESPACE can have a similar cost profile:
each namespace subscription registers matching state
that must be evaluated against every incoming PUBLISH_NAMESPACE.</t>
        <t>Imposing limits on active namespace advertisements
and namespace subscriptions —
both per session and per authenticated identity —
limits the impact a single actor can have on the namespace store.</t>
      </section>
    </section>
    <section anchor="data-plane-considerations">
      <name>Data Plane Considerations</name>
      <t>Data plane resource exhaustion targets the Object forwarding path:
memory consumed by buffered objects,
bandwidth spent on delivery,
and processing capacity for framing and scheduling.</t>
      <section anchor="slow-subscribers">
        <name>Slow Subscribers</name>
        <t>A relay MUST NOT reorder or drop objects
on a multi-object stream when forwarding to subscribers
(see <xref section="7.5" sectionFormat="of" target="MOQT"/>).
As a result,
a subscriber that consumes data more slowly than it is produced
will cause data to accumulate at the relay.
That memory pressure could affect other subscribers
on the same relay
(see <xref target="flow-control-limitations"/> and <xref target="resource-isolation"/>).
This can happen because the subscriber's network is slow,
because the subscriber's application isn't consuming data
fast enough, or because the subscriber is deliberately
not consuming data at all.</t>
        <t>Objects sent on QUIC streams are reliably delivered,
so a relay cannot skip individual objects
within a Subgroup stream.
The smallest unit it can shed is a whole stream:
resetting a Subgroup stream ends delivery of that Subgroup
but leaves the subscription in place,
and later Groups are delivered on new streams
(see <xref section="11.3.2" sectionFormat="of" target="MOQT"/>).
When an endpoint reaches a resource limit,
<xref section="15.5" sectionFormat="of" target="MOQT"/> requires it to cancel a stream,
preferably the one with the lowest priority.
Shedding a stream still disrupts the subscriber,
which loses the rest of that Subgroup
and may need to FETCH it,
but the disruption is limited to that stream
rather than the whole subscription.
Ending the subscription
(for example, with PUBLISH_DONE and the TOO_FAR_BEHIND status code)
remains available
when a subscriber is persistently unable to keep up.
Objects sent as datagrams can simply be dropped
when a buffer forms,
which naturally limits accumulation
but does not eliminate the processing cost
of receiving and discarding them.</t>
        <t>A relay also cannot apply QUIC flow control backpressure
to the upstream publisher on behalf of one slow subscriber
without affecting other downstream subscribers of that track.</t>
        <t>Relays that detect and handle slow subscribers
can limit this accumulation.
Options include
imposing per-subscriber buffer limits,
resetting the lowest-priority streams of a subscriber that exceeds them,
relying on delivery timeouts to reset streams
whose Objects are no longer useful
(see <xref section="5.2" sectionFormat="of" target="MOQT"/>),
and ending subscriptions that remain too far behind the live edge.</t>
      </section>
      <section anchor="join-time-buffering">
        <name>Join-Time Buffering</name>
        <t>When a subscriber joins a live stream
and requests historical data —
to build a decode buffer
or start from a past random access point —
the relay needs to deliver that past data
while live data continues to arrive.
If the subscriber's bandwidth is limited,
the historical delivery takes time
during which live objects queue at the relay.
For high-bitrate streams,
this transient buffering spike can be significant.</t>
        <t>This is not inherently an attack —
it happens in normal operation.
But it creates a window that an attacker could exploit
by joining many streams simultaneously
with constrained receive windows.
Limiting the amount of data buffered per subscriber
during join operations contains this risk.
When limits are exceeded,
a relay can cancel the subscription,
skip ahead to the live edge,
or reduce delivery quality.</t>
      </section>
      <section anchor="unknown-track-aliases">
        <name>Unknown Track Aliases</name>
        <t>Objects can arrive on a data stream or in a datagram
before the control message that associates their Track Alias
with a subscription.
<xref section="3.1.3.1" sectionFormat="of" target="MOQT"/> allows the receiver
to drop such data or to buffer it briefly,
and to withhold stream flow control beyond the stream header
until the Track Alias is established.
It does not say how much to buffer or for how long,
and the sender chooses the Track Alias values,
so a receiver cannot tell in advance
which aliases will turn out to be valid.
A peer, whether misbehaving or merely slow to send its control messages,
can therefore make a relay hold data it cannot yet attribute
to any subscription or account against any limit
tied to a subscription.</t>
        <t>A relay that buffers data for unknown Track Aliases
can bound it in two dimensions:
how long it waits for the alias to be established,
and how much data it holds while waiting,
both per session and across the relay.
Withholding stream flow control
bounds the amount of data the peer can send on those streams,
though it does not bound the number of streams opened,
which remains limited by QUIC stream limits.</t>
        <t>Context can inform these limits.
Data that could plausibly belong to a request
the relay itself has sent and not yet seen answered,
such as a pending SUBSCRIBE,
is more likely to be legitimate than unsolicited data
on a session where the relay does not expect to receive PUBLISH.
A relay can reasonably wait longer or hold more
in the first case than in the second.</t>
        <t>When a relay discards buffered data under resource pressure,
discarding everything for the affected Track Alias,
rather than individual Subgroups,
avoids leaving gaps that are hard to account for
if the alias later turns out to be valid.
The sender is not told why its streams were reset,
so it cannot distinguish this from other stream resets.
Datagrams with an unknown Track Alias can simply be dropped.</t>
      </section>
      <section anchor="flow-control-limitations">
        <name>Flow Control Limitations</name>
        <t>QUIC flow control (<xref section="4" sectionFormat="of" target="RFC9000"/>) protects receivers
from memory exhaustion,
but its protections have limits that are worth understanding:</t>
        <dl>
          <dt>Within a single MoQT session:</dt>
          <dd>
            <t>QUIC flow control operates at the connection and stream level.
MoQT's prioritization mechanism intentionally allows
higher-priority subscriptions to consume resources
at the expense of lower-priority ones —
that is by design for media delivery.
But it means a single high-priority subscription
can starve other subscriptions within the same session,
and QUIC flow control will not prevent it.</t>
          </dd>
          <dt>Across multiple MoQT sessions:</dt>
          <dd>
            <t>Flow control on one session does not prevent
a slow subscriber on that session
from causing resource accumulation
that affects other sessions at the same relay.
A relay must manage cross-session resource allocation
independently.</t>
          </dd>
        </dl>
        <t>MoQT does not currently provide
per-subscription resource isolation.
Within a session,
a single subscription can consume
an unbounded share of buffer memory,
outbound bandwidth, and scheduling priority.
Across sessions,
a single session can similarly dominate
relay-wide memory and bandwidth
unless the relay imposes application-layer limits.
Relays can implement fairness policies across sessions —
such as per-session buffer caps
or weighted bandwidth allocation —
to prevent one subscriber's behavior
from degrading service for others.</t>
      </section>
    </section>
    <section anchor="relay-dual-role-considerations">
      <name>Relay Dual-Role Considerations</name>
      <t>Relays are simultaneously subscribers (to upstream publishers)
and publishers (to downstream subscribers).
This dual role creates DoS considerations
that don't apply to original publishers or end subscribers.</t>
      <section anchor="resource-isolation">
        <name>Resource Isolation</name>
        <t>A relay serving multiple clients
must prevent one client's behavior
from degrading service for the others.
In practice this means
per-client limits on active subscriptions,
namespace advertisements, and concurrent streams;
independent buffer management per downstream subscription
(so a slow subscriber doesn't cause backpressure
on other subscribers' data);
and fairness policies for shared resources
like memory, bandwidth, and backend query capacity.</t>
        <t>These two goals sit in tension:
the more independently a relay handles each downstream subscription,
the less sharing and coalescing it can do upstream,
limiting its ability to scale efficiently.
Operators need to navigate this tradeoff
for their particular deployment.</t>
        <t>That said,
propagating per-subscriber resource pressure upstream
degrades service for every other subscriber on that stream.
If one subscriber is slow,
the relay needs to handle that locally —
dropping data, canceling the subscription,
or adjusting delivery —
rather than reducing the rate
at which it receives data from the publisher.</t>
      </section>
      <section anchor="upstream-load-protection">
        <name>Upstream Load Protection</name>
        <t>Data plane traffic can aggregate efficiently at relays:
multiple downstream subscriptions to the same content
collapse into a single upstream subscription,
and cached objects are served from local state.
Control plane traffic is a different story.
If many downstream subscribers simultaneously
request historical data,
issue REQUEST_UPDATE messages,
or churn through subscriptions,
the relay may need to forward
a high volume of control messages upstream.
This fan-in of control traffic from many downstream sessions
can overwhelm upstream publishers or relays
even when data plane traffic is well-managed.</t>
        <t>Effective defenses include
rate-limiting control messages forwarded upstream,
aggregating or deduplicating upstream requests where possible,
and shedding downstream load
rather than passing it through to upstream peers.</t>
      </section>
      <section anchor="paused-subscriptions">
        <name>Paused Subscriptions</name>
        <t>A subscription can be paused,
in which case the publisher sends no Objects on it
until it is resumed
(see <xref section="3.1.1" sectionFormat="of" target="MOQT"/>).
A paused subscription costs the subscriber little
but still occupies state at the relay,
and when it is the only downstream subscription for a Track
it can still cause upstream work.
When all downstream subscriptions to a Track are paused,
the relay decides whether to pause its upstream subscription
(see <xref section="7.2" sectionFormat="of" target="MOQT"/>).
Leaving it unpaused keeps the relay's cache warm
so that a resumed subscriber is served quickly,
but it pulls content from the publisher
that no subscriber is currently receiving.
A subscriber that opens many paused subscriptions
could use this to drive upstream traffic and cache use
at almost no cost to itself.</t>
        <t>Counting paused subscriptions against the same per-session
and per-identity limits as active ones prevents them
from being a cheap way to accumulate relay state.
Keeping upstream subscriptions unpaused
is most appropriate when there is reason to expect
that a downstream subscriber will resume soon,
for example for popular content,
and less so for Tracks requested only by paused subscriptions
from a single session.
Rapid toggling between paused and unpaused
is another form of the rapid request cycles
described in <xref target="rapid-request-cycles"/>.</t>
      </section>
      <section anchor="multi-publisher-fan-out">
        <name>Multi-Publisher Fan-Out</name>
        <t>When a relay serves content from multiple publishers,
subscriber operations can fan out upstream
in ways that may not be obvious
from the subscriber's perspective.
Multi-publisher scenarios introduce additional
fan-out and resource isolation considerations
that need further analysis.
This section will be expanded in future revisions.</t>
      </section>
    </section>
    <section anchor="operational-recommendations">
      <name>Operational Recommendations</name>
      <t>Appropriate limits depend on deployment architecture,
hardware capacity, and expected traffic patterns.
The recommendations in this section
are expressed as general principles;
operators will need to determine specific thresholds
for their deployments.</t>
      <section anchor="cost-tracking">
        <name>Cost Tracking</name>
        <t>Tracking resource consumption per transport session —
and, where possible, per authenticated identity —
gives operators the visibility needed to detect abuse.
Useful signals include
the rate of control messages over time,
the number of active subscriptions and namespace advertisements,
buffered data per subscriber,
and the ratio of control plane activity to useful data transfer.</t>
        <t>Sessions or identities
that consume disproportionate resources
relative to the data transfer they facilitate
are candidates for throttling or termination.</t>
      </section>
      <section anchor="rate-limiting">
        <name>Rate Limiting</name>
        <t>Rate limits are the primary defense
against control plane flooding.
A few properties matter
for MoQT relay deployments specifically:</t>
        <t>Rate limits are most effective
when scoped per-client or per-authenticated-identity,
not just globally.
A purely global rate limit
can be consumed by a single attacker,
denying service to everyone else.
Scoping limits per deployment unit —
per customer account or per content namespace —
further isolates abuse
so that problems in one context do not affect another.</t>
        <t>Per-client limits and systemic circuit breakers
serve different purposes and both contribute to a complete defense.
Per-client limits prevent individual abuse.
Circuit breakers protect the backend
when many clients simultaneously generate
legitimate but excessive load,
as happens during flash crowd events.</t>
        <t>When declining individual requests due to overload,
explicit protocol feedback
(for example, REQUEST_ERROR with <tt>EXCESSIVE_LOAD</tt> in <xref target="MOQT"/>)
is preferable to silent failure.
Clear overload signaling helps legitimate peers back off quickly.</t>
        <t>Traffic characteristics vary across deployments
and evolve over time
as usage patterns and hardware capabilities change.
Limits calibrated relative to observed legitimate traffic patterns
for the deployment tend to be more robust than fixed values.</t>
      </section>
    </section>
    <section anchor="load-bearing-mitigations" removeInRFC="true">
      <name>Tracking Protocol Load-Bearing Mitigations</name>
      <t>Several MoQT protocol mechanisms serve as mitigations
against resource exhaustion,
even if some of them were not originally designed
with that as their primary purpose.
It is worth documenting these explicitly
so that proposed changes to the protocol
can be evaluated for their security impact,
since removing or weakening a mechanism
that happens to be load-bearing for DoS prevention
could reintroduce risks that were previously mitigated.
When evaluating protocol changes,
it is worth considering
whether existing mitigations are being preserved,
replaced with equivalent mechanisms,
or inadvertently weakened.</t>
      <t>Some mechanisms present in earlier revisions of <xref target="MOQT"/>
have since been removed or relaxed.
The PREFIX_OVERLAP error,
which prevented a session from holding overlapping
SUBSCRIBE_NAMESPACE or SUBSCRIBE_TRACKS requests,
no longer exists,
so a Track matching several overlapping SUBSCRIBE_TRACKS
results in a PUBLISH for each
(see <xref section="3.6" sectionFormat="of" target="MOQT"/>).
Detecting duplicate Request IDs is no longer required
(see <xref section="6.4.2.1" sectionFormat="of" target="MOQT"/>),
which avoids unbounded per-session state;
reusing a Request ID is still prohibited,
but a receiver that does not track them may not notice a peer that does.
The fixed 2^16-1 control message length
has been replaced by MAX_CONTROL_MESSAGE_SIZE.</t>
      <table>
        <thead>
          <tr>
            <th align="left">Mechanism</th>
            <th align="left">Threat Mitigated</th>
            <th align="left">Notes</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">QUIC bidi Stream Limits</td>
            <td align="left">Rapid request flooding; unbounded state commitment</td>
            <td align="left">Limits outstanding requests a peer can issue. Any proposal to remove or change this needs to provide equivalent protection.</td>
          </tr>
          <tr>
            <td align="left">QUIC uni Stream Limits</td>
            <td align="left">Stream exhaustion</td>
            <td align="left">Baseline protection. When used as the primary request-limiting mechanism, configuration needs to account for security implications.</td>
          </tr>
          <tr>
            <td align="left">QUIC Flow Control</td>
            <td align="left">Receiver memory exhaustion</td>
            <td align="left">Protects individual receivers but does not provide cross-session fairness or state exhaustion protection.</td>
          </tr>
          <tr>
            <td align="left">Timeouts (<xref section="15.6" sectionFormat="of" target="MOQT"/>), including delivery timeouts (<xref section="5.2" sectionFormat="of" target="MOQT"/>) and EXPIRES (<xref section="9.19.16" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Idle resource consumption</td>
            <td align="left">Let relays reclaim resources from peers that do not send expected data and from inactive subscriptions. Values are implementation-chosen.</td>
          </tr>
          <tr>
            <td align="left">MAX_AUTH_TOKEN_CACHE_SIZE</td>
            <td align="left">Memory consumption</td>
            <td align="left">Bounds total per-session bytes of registered authorization token aliases/values</td>
          </tr>
          <tr>
            <td align="left">MAX_CONTROL_MESSAGE_SIZE (<xref section="9.1.8" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Oversized control-message parsing DoS</td>
            <td align="left">Bounds the size of each control message the receiver accepts. The receiver advertises the value, which is at least 65535 and has no upper bound, so a receiver that raises it accepts proportionally more buffered control data per request stream.</td>
          </tr>
          <tr>
            <td align="left">UNAVAILABLE when out of upstream stream credit (<xref section="7.4" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">One downstream request exhausting a relay's upstream request streams</td>
            <td align="left">A relay that lacks stream credit to forward a request can fail it immediately with UNAVAILABLE, or wait and fail it with TIMEOUT, rather than holding it indefinitely.</td>
          </tr>
          <tr>
            <td align="left">MAX_REQUEST_UPDATES (<xref section="9.1.7" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Rapid REQUEST_UPDATE churn</td>
            <td align="left">Bounds outstanding REQUEST_UPDATEs per request stream. The default of 0 means no limit, so it only protects an endpoint that advertises a value. It does not bound the total number of updates over time, or the number of fill fetch streams (<xref section="3.4" sectionFormat="of" target="MOQT"/>) that updates open, because each response restores a credit.</td>
          </tr>
          <tr>
            <td align="left">MAX_FILTER_RANGES (<xref section="9.1.6" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Per-object filter evaluation cost; growth of aggregated filter state</td>
            <td align="left">The default of 0 means a peer cannot send Range Filters unless the endpoint advertises support.</td>
          </tr>
          <tr>
            <td align="left">Full Track Name limits (<xref section="8.7" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Oversized names; namespace lookup and storage cost</td>
            <td align="left">At most 32 Track Namespace Fields, and at most 4,096 bytes for a Full Track Name.</td>
          </tr>
          <tr>
            <td align="left">Relay-chosen RENDEZVOUS_TIMEOUT (<xref section="9.19.6" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Subscriptions held while waiting for a publisher</td>
            <td align="left">The relay MAY use a shorter timeout than the subscriber requests.</td>
          </tr>
          <tr>
            <td align="left">FILL_TIMEOUT budget (<xref section="3.2.3" sectionFormat="of" target="MOQT"/>, <xref section="9.19.5" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Unbounded upstream FETCH work for one request</td>
            <td align="left">A total budget for all upstream FETCHes generated by a single request. The requester supplies the value, and the relay MAY use a shorter one.</td>
          </tr>
          <tr>
            <td align="left">One outstanding NEW_GROUP_REQUEST per relay (<xref section="9.19.19" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Upstream amplification of new-group requests</td>
            <td align="left">A relay does not forward a NEW_GROUP_REQUEST while one of its own is outstanding, so many downstream requests collapse into one.</td>
          </tr>
          <tr>
            <td align="left">No propagation of invalid messages or Objects (<xref section="7.7" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">One misbehaving session causing unrelated sessions to close</td>
            <td align="left">A relay MUST NOT forward a control message or Object that caused a session to close.</td>
          </tr>
          <tr>
            <td align="left">Malformed Objects are not cached (<xref section="12.1" sectionFormat="of" target="MOQT"/>)</td>
            <td align="left">Cache poisoning; one publisher's bad data persisting for other subscribers</td>
            <td align="left">Objects that trigger Malformed Track status MUST NOT be cached.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This entire document addresses security considerations
for MoQT relay deployments. It complements the MoQT Security Considerations.
(see <xref section="15" sectionFormat="of" target="MOQT"/>)
The focus is on denial-of-service threats and resource exhaustion;
authentication, authorization, and billing are out of scope
but can be essential parts of a complete defense.
In particular,
the amplification properties
described in <xref target="amplification-properties"/>
mean that effective DoS protection
may require per-identity or per-account limits
beyond what the transport protocol alone can provide.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <displayreference target="RFC9000" to="QUIC"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="MOQT">
          <front>
            <title>Media over QUIC Transport</title>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-23"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <referencegroup anchor="BCP72" target="https://www.rfc-editor.org/info/bcp72">
          <reference anchor="RFC3552" target="https://www.rfc-editor.org/info/rfc3552">
            <front>
              <title>Guidelines for Writing RFC Text on Security Considerations</title>
              <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
              <author fullname="B. Korver" initials="B." surname="Korver"/>
              <date month="July" year="2003"/>
              <abstract>
                <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. 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="72"/>
            <seriesInfo name="RFC" value="3552"/>
            <seriesInfo name="DOI" value="10.17487/RFC3552"/>
          </reference>
          <reference anchor="RFC9416" target="https://www.rfc-editor.org/info/rfc9416">
            <front>
              <title>Security Considerations for Transient Numeric Identifiers Employed in Network Protocols</title>
              <author fullname="F. Gont" initials="F." surname="Gont"/>
              <author fullname="I. Arce" initials="I." surname="Arce"/>
              <date month="July" year="2023"/>
              <abstract>
                <t>Poor selection of transient numerical identifiers in protocols such as the TCP/IP suite has historically led to a number of attacks on implementations, ranging from Denial of Service (DoS) or data injection to information leakages that can be exploited by pervasive monitoring. Due diligence in the specification of transient numeric identifiers is required even when cryptographic techniques are employed, since these techniques might not mitigate all the associated issues. This document formally updates RFC 3552, incorporating requirements for transient numeric identifiers, to prevent flaws in future protocols and implementations.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="72"/>
            <seriesInfo name="RFC" value="9416"/>
            <seriesInfo name="DOI" value="10.17487/RFC9416"/>
          </reference>
        </referencegroup>
        <reference anchor="RFC9775">
          <front>
            <title>IRTF Code of Conduct</title>
            <author fullname="C. S. Perkins" initials="C. S." surname="Perkins"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>This document describes the code of conduct for participants in the
Internet Research Task Force (IRTF).</t>
              <t>The IRTF believes that research is most effective when done in an
open and inclusive forum that encourages diversity of ideas and
participation. Through this code of conduct, the IRTF continues to
strive to create and maintain an environment that encourages broad
participation, and one in which people are treated with dignity,
decency, and respect.</t>
              <t>This document is a product of the Internet Research Steering Group
(IRSG).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9775"/>
          <seriesInfo name="DOI" value="10.17487/RFC9775"/>
        </reference>
        <reference anchor="HTTP2-RAPID-RESET" target="https://www.cve.org/CVERecord?id=CVE-2023-44487">
          <front>
            <title>HTTP/2 Rapid Reset Attack</title>
            <author>
              <organization/>
            </author>
            <date year="2023"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 899?>

<section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <ul spacing="normal">
        <li>
          <t>Ian Swett</t>
        </li>
        <li>
          <t>Aman Sharma</t>
        </li>
        <li>
          <t>Cullen Jennings</t>
        </li>
        <li>
          <t>Will Law</t>
        </li>
        <li>
          <t>Luke Curley</t>
        </li>
        <li>
          <t>Mike Bishop</t>
        </li>
        <li>
          <t>Mo Zanaty</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="use-of-generative-ai">
      <name>Use of Generative AI</name>
      <t>Anthropic's Claude (Sonnet 4.6 and Opus 4.6)
and OpenAI's GPT-5.3 Codex
were used to assist with organizing source materials,
structuring the document, and drafting text.
All AI-generated content was reviewed and approved by the author.
This disclosure follows the guidance in <xref target="RFC9775"/>,
applied voluntarily to this IETF document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA5V965LbxrXufzwFSv5hqQ5J2bJlJ+NKnVCjkT07kmYyFzs7
P442SDRJRCDAoIGhJpKqzkPsJ9xPcta3Lo0GyJFzqnLRzODSvXpdvnXFdDpN
2qIt3Un66KWriqyc1qvptWvuiqVLT+vKF7lrsragf6WruknfuLzI0vrONelf
b89P0ytXZvfpS7cr6/utq1r/KMkWi8bd0QPf1H+1v9fXj5Jl1rp13dyfpEW1
qpMkr5dVtqU35022aqeuWpeF32yn2/qf0wa3TfPaT795lvhusS28pzW09zu6
/vzs5lVSdduFa06SnJ56kixpfa7ynT9J26ZzCb3+uyRrXEbL+M0t0qzK0/Oq
dU3l2vSmySq/q5v2UbKvm/frpu52WC5v7cK29ih57+7p7/lJkk5TWhT+Lw80
8kIj/JIXK//wddcQ4dyHTdZ5UC25c1VHC0zTB1+TprKtR7/RYopqnf6MK/H7
bVaU9Ht6958L165mdbPGr7NmuaFfb9p250+ePsVV+FVx52Z22VP84umiqffe
PaX7n+K+ddFuugXdaaR+OiA1LimJmr6NHm6XzuTmWVEPb3r6pcObbdpt+ShJ
sq7d1A3oSK9I01VXlnLyj94U7116Jjc/4j/S4rOq+Bez3El6WtZdvqLtOf6j
U4pgm38OS6MzfXTk2a+7ZebTy6zJO/f/8ewSt/2Z/3fH986W9fbY8+fbrEqv
N1mzzY49/o1rs8GDs63ni/+8pb889NBzPHPv2vbYI3+u63U5ogSxMi7/85r/
Jo9Nqpre0xJDgPHeXPz1hoRm+nImZwXi8Tm1JgfTZ9/RdVevTv/4zTffnPDz
88Lv6BRPmEeTJIHIRs98cXr547MTvenHH5/jn7/c3Fw+m17NL89fTq/Ors9u
5EmmXvDnp8/Sq2xX5KQWPAnivG2z5XvZaZs1a0ecZ4y33+9nS+JoMPPpr2dX
bkmi+L+L/E/0w/TZN8++m37//fd/+FEWCx2Q4pe00ul0mmYLT5tbtklys3EH
OivIf/qYVNTNk3TX1G29rMtkRxIMJXYo52lT+Pc+aTdZS7RZrehZRZUu6UDp
Na5JVk29TYnLvUtX2RJSTEJdLLOSlMI/O5Ipkgp6J2mp8DY/S/B6UR+sXffE
bxO6v0rrrp2w0qp3OPqsLO/TZbakzWx5M6TvWlpoUlfpwm2ycpXWq3TXLSAQ
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

-->

</rfc>
