Skip to content

Commit d7e8648

Browse files
authored
Merge branch 'main' into me/joining-fetch
2 parents e5a2868 + d769bfa commit d7e8648

File tree

1 file changed

+25
-17
lines changed

1 file changed

+25
-17
lines changed

draft-ietf-moq-transport.md

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -328,35 +328,36 @@ Objects within a group are ordered numerically by their Object ID.
328328

329329
A subgroup is a sequence of one or more objects from the same group
330330
({{model-group}}) in ascending order by Object ID. Objects in a subgroup
331-
have a dependency and priority relationship consistent with sharing a QUIC
332-
stream. In some cases, a Group will be most effectively delivered using more
333-
than one QUIC stream.
331+
have a dependency and priority relationship consistent with sharing a
332+
stream and are sent on a single stream whenever possible. A Group is delivered
333+
using at least as many streams as there are Subgroups,
334+
typically with a one-to-one mapping between Subgroups and streams.
334335

335336
When a Track's forwarding preference (see {{object-fields}}) is "Track" or
336337
"Datagram", Objects are not sent in Subgroups, no Subgroup IDs are assigned, and the
337338
description in the remainder of this section does not apply.
338339

339-
QUIC streams offer in-order reliable delivery and the ability to cancel sending
340+
Streams offer in-order reliable delivery and the ability to cancel sending
340341
and retransmission of data. Furthermore, many implementations offer the ability
341342
to control the relative priority of streams, which allows control over the
342343
scheduling of sending data on active streams.
343344

344345
Every object within a Group belongs to exactly one Subgroup.
345346

346-
Objects from two subgroups cannot be sent on the same QUIC stream. Objects from the
347-
same Subgroup MUST NOT be sent on different QUIC streams, unless one of the streams
347+
Objects from two subgroups cannot be sent on the same stream. Objects from the
348+
same Subgroup MUST NOT be sent on different streams, unless one of the streams
348349
was reset prematurely, or upstream conditions have forced objects from a Subgroup
349350
to be sent out of Object ID order.
350351

351352
Original publishers assign each Subgroup a Subgroup ID, and do so as they see fit. The
352353
scope of a Subgroup ID is a Group, so Subgroups from different Groups MAY share a Subgroup
353354
ID without implying any relationship between them. In general, publishers assign
354-
objects to subgroups in order to leverage the features of QUIC streams as described
355+
objects to subgroups in order to leverage the features of streams as described
355356
above.
356357

357-
An example strategy for using QUIC stream properties follows. If object B is
358+
An example strategy for using stream properties follows. If object B is
358359
dependent on object A, then delivery of B can follow A, i.e. A and B can be
359-
usefully delivered over a single QUIC stream. Furthermore, in this example:
360+
usefully delivered over a single stream. Furthermore, in this example:
360361

361362
- If an object is dependent on all previous objects in a Subgroup, it is added to
362363
that Subgroup.
@@ -366,7 +367,7 @@ a different Subgroup.
366367

367368
- There are often many ways to compose Subgroups that meet these criteria. Where
368369
possible, choose the composition that results in the fewest Subgroups in a group
369-
to minimize the number of QUIC streams used.
370+
to minimize the number of streams used.
370371

371372

372373
## Groups {#model-group}
@@ -1276,7 +1277,9 @@ the `query` portion of the URI to the parameter.
12761277

12771278
#### MAX_SUBSCRIBE_ID {#max-subscribe-id}
12781279

1279-
The MAX_SUBSCRIBE_ID parameter (Parameter Type 0x02) communicates an initial value for the Maximum Subscribe ID to the receiving subscriber. The default value is 0, so if not specified, the peer MUST NOT create subscriptions.
1280+
The MAX_SUBSCRIBE_ID parameter (Parameter Type 0x02) communicates an initial
1281+
value for the Maximum Subscribe ID to the receiving subscriber. The default value
1282+
is 0, so if not specified, the peer MUST NOT create subscriptions.
12801283

12811284
## GOAWAY {#message-goaway}
12821285

@@ -1442,7 +1445,7 @@ if the SUBSCRIBE_UPDATE violates either rule or if the subscriber specifies a
14421445
Subscribe ID that does not exist within the Session.
14431446

14441447
Unlike a new subscription, SUBSCRIBE_UPDATE can not cause an Object to be
1445-
delivered multiple times. Like SUBSCRIBE, EndGroup and EndObject MUST specify the
1448+
delivered multiple times. Like SUBSCRIBE, EndGroup MUST specify the
14461449
same or a later object than StartGroup and StartObject.
14471450

14481451
The format of SUBSCRIBE_UPDATE is as follows:
@@ -1500,11 +1503,10 @@ UNSUBSCRIBE Message {
15001503

15011504
## FETCH {#message-fetch}
15021505

1503-
A subscriber issues a FETCH to a publisher to request a range of already
1504-
published objects within a track. The publisher responding to a FETCH is
1505-
responsible for retrieving all available Objects. If there are gaps between Objects,
1506-
the publisher omits them from the fetch response. All omitted objects have status
1507-
Object Not Available.
1506+
A subscriber issues a FETCH to a publisher to request a range of already published
1507+
objects within a track. The publisher responding to a FETCH is responsible for retrieving
1508+
all available Objects. If there are gaps between Objects, the publisher omits them from the
1509+
fetch response. All omitted objects have status Object Does Not Exist.
15081510

15091511
**Fetch Types**
15101512

@@ -2059,6 +2061,12 @@ MAX_SUBSCRIBE_ID
20592061
that sent the MAX_SUBSCRIBE_ID, the publisher MUST close the session with an
20602062
error of 'Too Many Subscribes'.
20612063

2064+
MAX_SUBSCRIBE_ID is similar to MAX_STREAMS in ({{?RFC9000, Section 4.6}}),
2065+
and similar considerations apply when deciding how often to send MAX_SUBSCRIBE_ID.
2066+
For example, implementations might choose to increase MAX_SUBSCRIBE_ID as
2067+
subscriptions close to keep the number of subscriptions available to subscribers
2068+
roughly consistent.
2069+
20622070
## SUBSCRIBES_BLOCKED {#message-subscribes-blocked}
20632071

20642072
The SUBSCRIBES_BLOCKED message is sent when a subscriber would like to begin

0 commit comments

Comments
 (0)