Skip to content

Commit 9ca482c

Browse files
kixelatedclaude
andcommitted
Reference moq-transport padding instead of defining it
moq-wg/moq-transport#1475 added padding streams and datagrams to draft-18. Remove the duplicate padding definitions and IANA datagram registration, referencing Section 7.7 instead. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e528249 commit 9ca482c

1 file changed

Lines changed: 7 additions & 41 deletions

File tree

draft-lcurley-moq-probe.md

Lines changed: 7 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ informative:
2424
--- abstract
2525

2626
This document defines a PROBE extension for MoQ Transport {{moqt}}.
27-
A subscriber opens a bidirectional PROBE stream to request that the publisher pad the connection up to a target.
28-
The publisher periodically responds with the measured bitrate and an elapsed timestamp, enabling the subscriber to estimate the available bandwidth.
27+
A subscriber opens a bidirectional PROBE stream to request that the publisher pad the connection up to a target bitrate.
28+
The publisher sends padding as defined in {{moqt}} Section 7.7 and periodically responds with the measured bitrate and an elapsed timestamp, enabling the subscriber to estimate the available bandwidth.
2929

3030
--- middle
3131

@@ -47,11 +47,10 @@ A viewer may get stuck at a low quality rendition indefinitely because the conge
4747
If the viewer does attempt to switch to a higher rendition without first probing, they risk buffering — either because the congestion window has not been warmed up to support the higher bitrate, or because the network genuinely cannot sustain it.
4848
Without probing, the subscriber cannot distinguish between these two cases.
4949

50-
{{moqt}} Section 3.7.2 suggests subscribing to additional tracks at low priority to fill the congestion window during probing intervals.
50+
{{moqt}} Section 3.7.2 suggests subscribing to additional tracks at low priority or sending padding to fill the congestion window during probing intervals.
5151
However, this is difficult in practice because the subscriber does not know when probing is needed or by how much.
5252
The congestion window and bandwidth estimate are internal to the sender's congestion controller and are not exposed to the application, let alone the remote peer.
5353
The subscriber cannot distinguish between "the network has more capacity" and "the congestion controller is already fully utilizing the link".
54-
It also requires the publisher to have pre-encoded padding tracks and the subscriber to manage extra subscriptions.
5554

5655
## Hop-by-Hop
5756
MoQ is designed to work end-to-end via relays.
@@ -62,8 +61,8 @@ Using a wire-level extension ensures that PROBE measurements are scoped to a sin
6261
A relay terminates the PROBE stream and does not forward it upstream, avoiding incorrect measurements that reflect intermediate link capacity.
6362

6463
## This Extension
65-
This extension provides a simple mechanism for bandwidth estimation.
66-
The subscriber opens a PROBE stream and requests that the publisher pad the connection to a target.
64+
{{moqt}} defines padding streams and datagrams (Section 7.7) for probing, but does not define a signaling mechanism for a subscriber to request padding or for a publisher to report measurements.
65+
This extension fills that gap: the subscriber opens a PROBE stream to request that the publisher pad the connection to a target bitrate using {{moqt}} padding.
6766
The publisher responds with periodic measurements, allowing the subscriber to adjust its subscriptions accordingly.
6867

6968

@@ -109,7 +108,7 @@ PROBE_REQUEST {
109108

110109
**Target Bitrate**:
111110
The desired bitrate in kilobits per second.
112-
The publisher SHOULD pad the connection to attempt to reach this rate.
111+
The publisher SHOULD send padding as defined in {{moqt}} Section 7.7 to attempt to reach this rate.
113112
A value of 0 indicates no padding is needed; the publisher SHOULD only send media data but MUST continue sending PROBE_RESPONSE messages.
114113
This is useful for passively monitoring the current bitrate without actively probing for more bandwidth.
115114
Either endpoint MAY close or reset the stream to stop receiving updates entirely.
@@ -146,32 +145,7 @@ The interval is implementation-defined but a value between 100ms and 1000ms is R
146145

147146

148147
# Padding
149-
Padding is optional and depends on the capabilities of the QUIC implementation.
150-
A publisher that does not support padding MUST still send PROBE_RESPONSE messages based on the actual sending rate.
151-
152-
## QUIC-Level Padding
153-
The preferred method is for the QUIC implementation to send PING+PADDING frames.
154-
PADDING frames alone MUST NOT be used, as they are not ack-eliciting and can cause starvation of the congestion controller.
155-
PING+PADDING is transparent to the application and does not consume application-level flow control.
156-
157-
## Datagram Padding
158-
If the QUIC implementation does not expose a padding API, the publisher MAY send QUIC datagrams as a fallback.
159-
Datagrams are unreliable and do not consume stream-level flow control, making them suitable for padding.
160-
161-
A PROBE datagram is identified by a well-known datagram type:
162-
163-
~~~
164-
PROBE Datagram {
165-
Datagram Type (vi64) = 0xPROBE_TODO
166-
Padding (..)
167-
}
168-
~~~
169-
170-
The contents of the Padding field are arbitrary and MUST be discarded by the receiver.
171-
The receiver MUST NOT interpret the contents as application data.
172-
173-
## General Requirements
174-
Padding SHOULD be sent at the lowest priority to avoid interfering with media delivery.
148+
The publisher SHOULD send padding using the mechanisms defined in {{moqt}} Section 7.7 (padding streams and/or padding datagrams).
175149

176150
The publisher MUST NOT exceed the target with padding alone.
177151
If media traffic already meets or exceeds the target, no additional padding is necessary.
@@ -211,14 +185,6 @@ This document registers the following entry in the "MoQ Stream Types" registry:
211185
|:------|:-----|:----------|
212186
| 0xPROBE_TODO | PROBE | This Document |
213187

214-
## MOQT Datagram Type
215-
216-
This document registers the following entry in the "MoQ Datagram Types" registry:
217-
218-
| Value | Name | Reference |
219-
|:------|:-----|:----------|
220-
| 0xPROBE_TODO | PROBE | This Document |
221-
222188

223189
--- back
224190

0 commit comments

Comments
 (0)