-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clarify subscribe / annouce interaction #525
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Individual Review
This is really helpful clarification as I didn't necessarily think it had to work this way.
You have a number of random typos etc but just giving high-level feedback.
draft-ietf-moq-transport.md
Outdated
A Relay can receive announcements from multiple publishers for the same | ||
tracknamespace and it MUST respond with appropriate response to each of the | ||
publishers, in the same way as it would responds when processing ANNOUNCE | ||
from a single publisher for a given tracknamespace. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can relays limit the number of publishers for a given namespace? It seems like for DoS reasons they can. Maybe we should specify a minimum: "Relays MUST support at least X publishers announcing the same namespace"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
well ... I suspect this is going to fall in policy for relays region. Lets say you have 10 million viewers of a Taylor Swift livestream that can all publish text comments to various chat tracks. You OK with the number of max publishers on the same namespace being in the millions ? It seems that different relays will want very different limits here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was hoping SUBSCRIBE_NAMESPACE would solve some of that problem -- all 10M viewers have their own namespace tswift/chat/unique_id
. We may need to indicate here what limits are likely to exist, because it influences how higher level protocols will use moqt in terms of namespace and track naming.
Agreed the max will be different, but is there a min that we need to specify to get basic interop, eg: for make-before-break, min=2.
Many thanks on review and any help of fixing all the small stuff (point me too it, or PR on the PR, anything) much appreciated. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Individual Comments
draft-ietf-moq-transport.md
Outdated
A Relay can receive announcements from multiple publishers for the same | ||
tracknamespace and it MUST respond with appropriate response to each of the | ||
publishers, in the same way as it would responds when processing ANNOUNCE | ||
from a single publisher for a given tracknamespace. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was hoping SUBSCRIBE_NAMESPACE would solve some of that problem -- all 10M viewers have their own namespace tswift/chat/unique_id
. We may need to indicate here what limits are likely to exist, because it influences how higher level protocols will use moqt in terms of namespace and track naming.
Agreed the max will be different, but is there a min that we need to specify to get basic interop, eg: for make-before-break, min=2.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great, and clarifies a lot about how one might use ANNOUNCE. I have one normative comment, which is that I think some of the MUSTs should be a SHOULD.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This clarifies lot of ambiguities on implementing make before break use-cases.
LGTM
Co-authored-by: ianswett <ianswett@users.noreply.github.com>
Co-authored-by: ianswett <ianswett@users.noreply.github.com>
Co-authored-by: ianswett <ianswett@users.noreply.github.com>
Co-authored-by: ianswett <ianswett@users.noreply.github.com>
Co-authored-by: Martin Duke <martin.h.duke@gmail.com>
Co-authored-by: ianswett <ianswett@users.noreply.github.com>
Co-authored-by: ianswett <ianswett@users.noreply.github.com>
@martinduke - thanks for review. I think I fixed all the stuff you raised. Can you take another look @ianswett - handing the baton to you on this one. Thanks you |
draft-ietf-moq-transport.md
Outdated
@@ -710,7 +710,18 @@ subscribers for each track. Each new OBJECT belonging to the | |||
track within the subscription range is forwarded to each active | |||
subscriber, dependent on the congestion response. A subscription | |||
remains active until the publisher of the track terminates the | |||
track with a SUBSCRIBE_DONE (see {{message-subscribe-done}}). | |||
subscription with a SUBSCRIBE_DONE (see {{message-subscribe-done}}) | |||
or all the downstream subscriptions are ended. A |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The "publisher" is a term local to the session, unless you mean "original publisher." So a subscription ends when the publisher sends SUBSCRIBE_DONE or when the subscriber sends UNSUBSCRIBE. Downstream subscriptions don't enter into it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this section is describing how a relay handles downstream subscriptions, so I agree with Martin. Those subscriptions end on DONE (track end, reached the end of what the subscribe was for), UNSUBSCRIBE, or also a session error (eg: timeout).
I don't think we need to mandate anything about when a relay terminates its upstream subscription. Even if there are no subscribers, maybe the relay wants to keep the track warm in case they come back, etc.
draft-ietf-moq-transport.md
Outdated
that would cause it to send an upstream subscription, for | ||
each publisher that has announced that namespace, the relay SHOULD send a | ||
SUBSCRIBE to that publisher unless it already has an active subscription | ||
to that publisher for the Full Track Name in the incoming SUBSCRIBE. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/for the Full Track Name/for the objects in the specified range
draft-ietf-moq-transport.md
Outdated
@@ -710,7 +710,18 @@ subscribers for each track. Each new OBJECT belonging to the | |||
track within the subscription range is forwarded to each active | |||
subscriber, dependent on the congestion response. A subscription | |||
remains active until the publisher of the track terminates the | |||
track with a SUBSCRIBE_DONE (see {{message-subscribe-done}}). | |||
subscription with a SUBSCRIBE_DONE (see {{message-subscribe-done}}) | |||
or all the downstream subscriptions are ended. A |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this section is describing how a relay handles downstream subscriptions, so I agree with Martin. Those subscriptions end on DONE (track end, reached the end of what the subscribe was for), UNSUBSCRIBE, or also a session error (eg: timeout).
I don't think we need to mandate anything about when a relay terminates its upstream subscription. Even if there are no subscribers, maybe the relay wants to keep the track warm in case they come back, etc.
draft-ietf-moq-transport.md
Outdated
Implementations that update the cache need to be protect against cache | ||
poisoning. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SHOULD protect?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TBH, I'm not sure it matters if we say something normative, given we don't have proscribed behavior about how to prevent against cache poisoning?
Co-authored-by: Martin Duke <martin.h.duke@gmail.com>
Co-authored-by: afrind <afrind@users.noreply.github.com>
Co-authored-by: afrind <afrind@users.noreply.github.com>
Co-authored-by: Martin Duke <martin.h.duke@gmail.com>
Fixes #362 #267 #227 #225 #79