You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: draft-ietf-moq-transport.md
+25-17Lines changed: 25 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -328,35 +328,36 @@ Objects within a group are ordered numerically by their Object ID.
328
328
329
329
A subgroup is a sequence of one or more objects from the same group
330
330
({{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.
334
335
335
336
When a Track's forwarding preference (see {{object-fields}}) is "Track" or
336
337
"Datagram", Objects are not sent in Subgroups, no Subgroup IDs are assigned, and the
337
338
description in the remainder of this section does not apply.
338
339
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
340
341
and retransmission of data. Furthermore, many implementations offer the ability
341
342
to control the relative priority of streams, which allows control over the
342
343
scheduling of sending data on active streams.
343
344
344
345
Every object within a Group belongs to exactly one Subgroup.
345
346
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
348
349
was reset prematurely, or upstream conditions have forced objects from a Subgroup
349
350
to be sent out of Object ID order.
350
351
351
352
Original publishers assign each Subgroup a Subgroup ID, and do so as they see fit. The
352
353
scope of a Subgroup ID is a Group, so Subgroups from different Groups MAY share a Subgroup
353
354
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
355
356
above.
356
357
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
358
359
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:
360
361
361
362
- If an object is dependent on all previous objects in a Subgroup, it is added to
362
363
that Subgroup.
@@ -366,7 +367,7 @@ a different Subgroup.
366
367
367
368
- There are often many ways to compose Subgroups that meet these criteria. Where
368
369
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.
370
371
371
372
372
373
## Groups {#model-group}
@@ -1276,7 +1277,9 @@ the `query` portion of the URI to the parameter.
1276
1277
1277
1278
#### MAX_SUBSCRIBE_ID {#max-subscribe-id}
1278
1279
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.
1280
1283
1281
1284
## GOAWAY {#message-goaway}
1282
1285
@@ -1442,7 +1445,7 @@ if the SUBSCRIBE_UPDATE violates either rule or if the subscriber specifies a
1442
1445
Subscribe ID that does not exist within the Session.
1443
1446
1444
1447
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
1446
1449
same or a later object than StartGroup and StartObject.
1447
1450
1448
1451
The format of SUBSCRIBE_UPDATE is as follows:
@@ -1500,11 +1503,10 @@ UNSUBSCRIBE Message {
1500
1503
1501
1504
## FETCH {#message-fetch}
1502
1505
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.
1508
1510
1509
1511
**Fetch Types**
1510
1512
@@ -2059,6 +2061,12 @@ MAX_SUBSCRIBE_ID
2059
2061
that sent the MAX_SUBSCRIBE_ID, the publisher MUST close the session with an
2060
2062
error of 'Too Many Subscribes'.
2061
2063
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
0 commit comments