Skip to content

Comments

Document fragment-based MSF URL structure#87

Open
wilaw wants to merge 4 commits intomainfrom
wilaw-patch-4
Open

Document fragment-based MSF URL structure#87
wilaw wants to merge 4 commits intomainfrom
wilaw-patch-4

Conversation

@wilaw
Copy link
Collaborator

@wilaw wilaw commented Jan 16, 2026

Adds new section on MSF URL construction that is #fragment-based.

Example MSF URLs:

URl with a Webtransport connection pointing at a catalog track

https://example.com/server/config?a=1&b=2#customer-livestream-123--catalog

* Session: https://example.com/server/config?a=1&b=2

* Namespace: ('customer', 'livestream', '123')

* Track Name: 'catalog'

URL with a raw QUIC connection pointing at a catalog

moqt://example.com/relay-app/relayID#customerID-broadcastID--catalog

URL pointing at a non-catalog track

https://example.com/relay-app/relayID#customerID-broadcastID--video

URL pointing at a subclip of a catalog

https://example.com/relay-app/relayID?location-range=34-0-64-16#customerID-broadcastID--catalog

URL pointing at a catalog and supplying a token

https://example.com/relay-app/relayID?c4m=gqhkYWxnIGVzaGFyqGR0eXBNhdZ9hdWQAY3VybGZ

lbWlzcwZleWV2aW5uZWlhdGVwQWNyZW5lYnJmcmVqMTIzNDU2NzgwMHZpc3VlZF9hdD0xNzMwNDM#cust

omerID-broadcastID--catalog

Fixes: #60

Add new section on MSF URL construction and reserved query arguments.
@wilaw wilaw requested a review from vasilvv January 16, 2026 15:47
Copy link

@michalhosna michalhosna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, Will! This addresses a lot of my nitpicks from #72, sorry for them.
I do expect some MSF URL definitions may need additional work once the text on the URL handling exists.

Component Definitions:
* Scheme: Defines the underlying transport.
* moqt: Indicates a raw QUIC connection.
* https: Indicates a WebTransport connection.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For reasons mentioned before. I would still suggest a different scheme than HTTPS for the WT implementation.

(Suggestion, non-blocking, free-to-ignore)

Comment on lines +1221 to +1225
* location-range - a range defined by start and end media MOQT Location tuples and
expressed as Start Group ID, Start Object ID, End Group ID, End Object ID, each
separated by a "-" dash. The End Group ID and End Object ID MAY be omitted to
indicate an open range in which the first two values are interpreted as
StartGroupID-StartObjectID.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* location-range - a range defined by start and end media MOQT Location tuples and
expressed as Start Group ID, Start Object ID, End Group ID, End Object ID, each
separated by a "-" dash. The End Group ID and End Object ID MAY be omitted to
indicate an open range in which the first two values are interpreted as
StartGroupID-StartObjectID.
* location-range - a range defined by start and end media MOQT Location
separated by a "-" dash. MOQT Location is expressed as Group ID and Object ID
separated by a "." dot. End Location may be omitted to indicate an open range.
End Object ID may be ommited, indicating the whole end group is included in
the range. The "." dot and "-" dash separators MUST be omitted when the second value is ommited.

I think separating 4 values of different types with the same character with the possibility of omitting some is confusing. I would fear that StartGroupID-StartObjectID may be easily confused for a case of StartGroupID-EndGroupID. Which I think also makes sense to support. Or at least support not sending the end object ID.

Comment on lines +1234 to +1235
* location-range=34-0-2145-16
* location-range=16-24

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* location-range=34-0-2145-16
* location-range=16-24
* location-range=34.0-2145.16
* location-range=16.24

If https://github.com/moq-wg/msf/pull/87/changes#r2700596913 is accepted

* percent-encoded using a period (.) followed by two lowercase hexadecimal digits
(e.g., a literal hyphen in a name becomes .2d).

Note: This encoding ensures that the structural delimiters (- and --) remain unambiguous.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason to not at least note that this is following MOQT formatting recommendations?

Comment on lines +1277 to +1278
start-loc = group-id "-" object-id
end-loc = group-id "-" object-id

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
start-loc = group-id "-" object-id
end-loc = group-id "-" object-id
start-loc = group-id "." object-id
end-loc = group-id [ "." object-id ]

Maybe also making Start object id optional with default value of 0 makes sense?

An MSF URL identifies a MOQT session and an optional sub-resource within that session.
It follows the generic URI syntax:

scheme : // authority / path ? query # fragment
Copy link
Contributor

@suhasHere suhasHere Jan 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For my own understanding, any reason why we moved away from query parameter. Fragments have its own shortcomings.

@mondain
Copy link

mondain commented Feb 10, 2026

Idea for fragment parameters #117

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

URL syntax identifying both connection and track

4 participants