Skip to content

Commit b429515

Browse files
Weihang1996afrindsuhasHereianswett
authored
Enable mixing datagrams with streams in one track (#1350)
As discussed in Toronto, Datagrams to be mixed with Subgroups in one single track should be allowed. (see #1103) This PR fixes the related descriptions in the draft. --------- Co-authored-by: afrind <[email protected]> Co-authored-by: Suhas Nandakumar <[email protected]> Co-authored-by: ianswett <[email protected]>
1 parent dbc475f commit b429515

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

draft-ietf-moq-transport.md

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -400,8 +400,8 @@ stream and are sent on a single stream whenever possible. A Group is delivered
400400
using at least as many streams as there are Subgroups,
401401
typically with a one-to-one mapping between Subgroups and streams.
402402

403-
When a Track's forwarding preference (see {{object-properties}}) is
404-
"Datagram", Objects are not sent in Subgroups and the
403+
When an Object's forwarding preference (see {{object-properties}}) is
404+
"Datagram", it is not sent in Subgroups and the
405405
description in the remainder of this section does not apply.
406406

407407
Streams offer in-order reliable delivery and the ability to cancel sending and
@@ -561,7 +561,7 @@ include:
561561
9. The same Object is received more than once with different Payload or
562562
other immutable properties.
563563
10. An Object is received with a different Forwarding Preference than previously
564-
observed from the same Track.
564+
observed.
565565

566566
The above list of conditions is not considered exhaustive.
567567

@@ -1209,8 +1209,7 @@ MOQT maintains priorities between different schedulable objects.
12091209
A schedulable object in MOQT is either:
12101210

12111211
1. The first or next Object in a Subgroup that is in response to a subscription.
1212-
2. An Object in response to a subscription that belongs to a Track with
1213-
delivery preference Datagram.
1212+
2. An Object with forwarding preference Datagram.
12141213
3. An Object in response to a FETCH where that Object is the next
12151214
Object in the response.
12161215

@@ -1264,9 +1263,10 @@ the objects SHOULD be selected as follows:
12641263
decide the one that is scheduled to be sent first.
12651264
3. If two objects in response to the same request have the same subscriber
12661265
and publisher priority and belong to the same group of the same track, the
1267-
one with **the lowest Subgroup ID** (for tracks with delivery preference
1268-
Subgroup), or **the lowest Object ID** (for tracks with delivery preference
1269-
Datagram) is scheduled to be sent first.
1266+
one with **the lowest Subgroup ID** (for objects with forwarding preference
1267+
Subgroup), or **the lowest Object ID** (for objects with forwarding preference
1268+
Datagram) is scheduled to be sent first. If the two objects have
1269+
different Forwarding Preferences the order is implementation dependent.
12701270

12711271
The definition of "scheduled to be sent first" in the algorithm is implementation
12721272
dependent and is constrained by the prioritization interface of the underlying
@@ -2588,7 +2588,7 @@ PUBLISH_DONE Message {
25882588
opened for this subscription. This helps the subscriber know if it has received
25892589
all of the data published in this subscription by comparing the number of
25902590
streams received. The subscriber can immediately remove all subscription state
2591-
once the same number of streams have been processed. If the track had
2591+
once the same number of streams have been processed. If the track had only Objects with
25922592
Forwarding Preference = Datagram, the publisher MUST set Stream Count to 0. If
25932593
the publisher is unable to set Stream Count to the exact number of streams
25942594
opened for the subscription, it MUST set Stream Count to 2^62 - 1. Subscribers
@@ -3076,9 +3076,8 @@ the datagram. See {{object-datagram}}.
30763076
An endpoint that receives an unknown stream or datagram type MUST close the
30773077
session.
30783078

3079-
Every Track has a single 'Object Forwarding Preference' and the Original
3080-
Publisher MUST NOT mix different forwarding preferences within a single track
3081-
(see {{malformed-tracks}}).
3079+
Every Object has a 'Object Forwarding Preference' and the Original Publisher
3080+
MAY mix different forwarding preference within a single track.
30823081

30833082
## Track Alias
30843083

@@ -3113,13 +3112,10 @@ A canonical MoQ Object has the following information:
31133112
the Object ({{priorities}}).
31143113

31153114
* Object Forwarding Preference: An enumeration indicating how a publisher sends
3116-
an object. The preferences are Subgroup and Datagram. Note that the Original
3117-
Publisher determines the Forwarding Preference for the entire Track, and is a
3118-
Track property that is implicitly signaled by the delivery of any Object using
3119-
either Subgroups or Datagrams. Once the property is established for one Object
3120-
of a Track, the same value MUST be used for all Objects of the Track.
3121-
In a subscription, an Object MUST be sent according to its `Object Forwarding
3122-
Preference`.
3115+
an object. The preferences are Subgroup and Datagram. `Object Forwarding
3116+
Preference` is a property of an individual Object and can vary among
3117+
Objects in the same Track. In a subscription, an Object MUST be sent
3118+
according to its `Object Forwarding Preference`.
31233119

31243120
* Subgroup ID: The identifier of the Object's Subgroup (see {{model-subgroup}})
31253121
within the Group. This field is omitted if the `Object Forwarding Preference`

0 commit comments

Comments
 (0)