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

Message flows and endpoint state management (Was: ANNOUNCE) #643

Merged
merged 39 commits into from
Jan 29, 2025
Merged

Conversation

martinduke
Copy link
Contributor

@martinduke martinduke commented Dec 13, 2024

Fixes #556
Fixes #557
Fixes #583
Fixes #584

Also eliminates text from the relay section that is redundant, because it applies to endpoints whether or not they are relays.

@martinduke martinduke requested a review from ianswett December 13, 2024 19:39
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.

I still find some of the ANNOUNCE flow overly complex, but this does a good job of describing how you might use the defined messages.

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
@ianswett ianswett added Announce Issues with Announce message and handling Design Issues or PRs that change how MoQ works including the wire format. labels Dec 17, 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:

Thanks for tackling this. There's a lot going on here.

Moving the error codes is helpful but seems like a great candidate for a standalone editorial PR.

There are some normative changes to relay handling not related to ANNOUNCE which should also be in a separate PR.

There's a subtle deletion of the "exact" namespace matching behavior. This is less problematic in the face of structured namespaces, but I forget if that was something we discussed and had consensus on?

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

Individual Review:

Thanks for tackling this. There's a lot going on here.

Moving the error codes is helpful but seems like a great candidate for a standalone editorial PR.

This PR is already heavily editing the relay section for redundant and poorly located text. This falls into that theme; it is not specific to relays.

There are some normative changes to relay handling not related to ANNOUNCE which should also be in a separate PR.

Again, a huge rewrite of the Relay section is in scope for this.

There's a subtle deletion of the "exact" namespace matching behavior. This is less problematic in the face of structured namespaces, but I forget if that was something we discussed and had consensus on?

I don't see how structured namespaces can work with exact matching.

This was referenced Jan 8, 2025
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.

This looks better. A bunch of editorial comments/suggestions. The substantive comment is about superset.

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
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
draft-ietf-moq-transport.md Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
draft-ietf-moq-transport.md Outdated Show resolved Hide resolved
ianswett added a commit that referenced this pull request Jan 16, 2025
Taking this out of PR #643 as a separate change.

This just updates the text to reflect that FETCH exists too.
@martinduke
Copy link
Contributor Author

The flexibility built into this architecture can lead to routing loops.

Take relays A, B, and C, which are connected to each other.

C sends SUBSCRIBE_ANNOUNCES for namespace Foo to B, but not A. B sends ("forwards") SUBSCRIBE_ANNOUNCES to A for Foo.

Then A gets an ANNOUNCE for Foo from Upstream. it sends it to B, which passes it on to C. C forwards that ANNOUNCE unsolicited to A. Now A has a backup path to Foo, so even if its upstream session dies, it will not send UNANNOUNCE.

Even without SUBSCRIBE_ANNOUNCE, there could be this chain of events.

One way out of this would be to require SUBSCRIBE_ANNOUNCES to send an ANNOUNCE.

ianswett added a commit that referenced this pull request Jan 16, 2025
More stuff from #643. This is purely editorial IMO.
@martinduke martinduke changed the title Announce Message flows and endpoint state management Jan 16, 2025
@martinduke martinduke changed the title Message flows and endpoint state management Message flows and endpoint state management (Was: ANNOUNCE) Jan 16, 2025
draft-ietf-moq-transport.md 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

@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.

Minor nits, lgtm.

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

Minor nits, lgtm.

The SUBSCRIBE_DONE thing is intended! It's part of the logic this protocol describes.

@afrind
Copy link
Collaborator

afrind commented Jan 22, 2025

The SUBSCRIBE_DONE thing is intended! It's part of the logic this protocol describes.

"Still there" was supposed to refer to a non-normative should on line 1411. Removing the SUBSCRIBE_DONE ack to UNSUBSCRIBE seems fine to me.

@martinduke
Copy link
Contributor Author

Deleted #577 from the list of issues, since that is now solved by #656

@martinduke
Copy link
Contributor Author

The SUBSCRIBE_DONE thing is intended! It's part of the logic this protocol describes.

"Still there" was supposed to refer to a non-normative should on line 1411. Removing the SUBSCRIBE_DONE ack to UNSUBSCRIBE seems fine to me.

Ah, got it, fixed.

@martinduke
Copy link
Contributor Author

I removed the "subscriber" and "publisher" definitions I just added, because these terms are already well defined in Section 1.2

@ianswett
Copy link
Collaborator

I and the chairs acknowledge that this might not be perfect, but it clarifies the behavior in a meaningful way.

@ianswett ianswett merged commit 3e3a18e into main Jan 29, 2025
2 checks passed
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 Design Issues or PRs that change how MoQ works including the wire format.
Projects
None yet
4 participants