§3.5.

Joining an Ongoing Track

draft-21 · View on IETF ↗

The MOQT Object model is designed with the concept that the beginning of a Group is a join point, so in order for a subscriber to join a Track, it needs to request an existing Group or wait for a future Group. Different applications will have different approaches for when to begin a new Group.

To join a Track immediately, the subscriber sends a SUBSCRIBE with a Location Filter Section 3.3.1 that starts at the Next Object. Delivery begins with the next Object and can begin mid-group.

To join a Track at the current Group, the subscriber sends a SUBSCRIBE with a Location Filter that starts at the Next Object and a FILL_PARAMETERS parameter (see Section 9.20.16) whose Location filter has StartGroup=1, which fills the current Group from its start.

To join a Track at a past Group, the subscriber sends a SUBSCRIBE with a FILL_PARAMETERS parameter whose Location filter selects the intended Groups, which can be relative. The publisher delivers the fill range on a fill fetch stream and subscription-delivered Objects in subgroups or datagrams (see Section 3.4).

To join a Track at the next Group, the subscriber sends a SUBSCRIBE with a Location Filter Section 3.3.1 that starts at the Next Group.

3.5.1. Dynamically Starting New Groups

While some publishers will deterministically create new Groups, other applications might want to only begin a new Group when needed. A subscriber joining a Track might detect that it is more efficient to request the Original Publisher create a new group than to fill the current group. Publishers indicate a Track supports dynamic group creation using the DYNAMIC_GROUPS Track Property (Section 10.6).

One possible subscriber pattern is to SUBSCRIBE to a Track using a Location Filter that starts at the Next Object and observe the Largest Object in the response. If the Object ID is below the application's threshold, the subscriber sends a FETCH for the beginning of the Group. If the Object ID is above the threshold and the Track supports dynamic groups, the subscriber sends a REQUEST_UPDATE message with the NEW_GROUP_REQUEST parameter equal to the Next Group (see Section 9.20.20).

Another possible subscriber pattern is to send a SUBSCRIBE with a Location Filter that starts at the Next Group and NEW_GROUP_REQUEST equal to 0. The value of DYNAMIC_GROUPS in SUBSCRIBE_OK will indicate if the publisher supports dynamic groups. A publisher that does will begin the next group as soon as practical.

This is one section of the MoQT specification, rendered per-section for quick reference and citation. The authoritative text is draft-ietf-moq-transport-21 at the IETF.