Skip to content
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

Merged
merged 41 commits into from
Sep 20, 2024
Merged

Clarify subscribe / annouce interaction #525

merged 41 commits into from
Sep 20, 2024

Conversation

fluffy
Copy link
Contributor

@fluffy fluffy commented Sep 13, 2024

@fluffy fluffy self-assigned this Sep 13, 2024
@fluffy fluffy added Announce Issues with Announce message and handling Subscribe Related to SUBSCRIBE message and subscription handling labels Sep 13, 2024
Copy link
Collaborator

@afrind afrind left a 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 Show resolved Hide resolved
Comment on lines 806 to 809
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.
Copy link
Collaborator

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"

Copy link
Contributor Author

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.

Copy link
Collaborator

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.

draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
@fluffy
Copy link
Contributor Author

fluffy commented Sep 14, 2024

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.

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.

Copy link
Collaborator

@afrind afrind left a 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 Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
Comment on lines 806 to 809
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.
Copy link
Collaborator

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.

draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
Copy link
Collaborator

@ianswett ianswett left a 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.

draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
Copy link
Collaborator

@suhasHere suhasHere left a 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

fluffy and others added 4 commits September 18, 2024 10:15
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>
fluffy and others added 7 commits September 18, 2024 10:49
@fluffy
Copy link
Contributor Author

fluffy commented Sep 18, 2024

@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

@@ -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
Copy link
Contributor

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.

Copy link
Collaborator

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 Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
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.
Copy link
Contributor

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 Show resolved Hide resolved
@@ -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
Copy link
Collaborator

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.

Comment on lines 723 to 724
Implementations that update the cache need to be protect against cache
poisoning.
Copy link
Collaborator

Choose a reason for hiding this comment

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

SHOULD protect?

Copy link
Collaborator

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?

draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Show resolved Hide resolved
ianswett and others added 4 commits September 18, 2024 18:18
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Announce Issues with Announce message and handling Subscribe Related to SUBSCRIBE message and subscription handling
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add text to clarify relay behavior when there are multiple announces
6 participants