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

[WIP] MSC3898: Native Matrix VoIP signalling for cascaded foci (SFUs, MCUs...) #3898

Draft
wants to merge 30 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
750087f
Native Matrix VoIP signalling for cascaded SFUs
SimonBrandner Sep 25, 2022
aa53398
Update MSC number
SimonBrandner Sep 25, 2022
de302cb
Link to diagrams from MSC3401
SimonBrandner Oct 2, 2022
7474782
Use correct number for file
SimonBrandner Oct 2, 2022
5cad46d
Update sub and unsub ops
SimonBrandner Nov 11, 2022
2cbc2d6
Merge remote-tracking branch 'upstream/main' into SimonBrandner/msc/sfu
SimonBrandner Nov 11, 2022
f542fcb
Give a reason for specifying res in metadata
SimonBrandner Nov 11, 2022
6f01a94
Specify foci by `device_id` too
SimonBrandner Nov 12, 2022
575e16c
Fixup some json
SimonBrandner Nov 12, 2022
33b1880
Typo
SimonBrandner Nov 12, 2022
65faee4
Specify how to handle foci better
SimonBrandner Nov 13, 2022
9882c97
Amend TODOs
SimonBrandner Nov 13, 2022
c66bbe4
Add rationale behind usage of data channels
daniel-abramov Nov 15, 2022
1b2d740
Add TODO
SimonBrandner Dec 2, 2022
feb064b
Update event types
SimonBrandner Dec 2, 2022
d96d101
Add unstable prefixes
SimonBrandner Dec 2, 2022
d538e1e
Use `subscribe` instead of `select`
SimonBrandner Dec 6, 2022
91470a2
`op` -> `event`
SimonBrandner Dec 6, 2022
2ef7425
Fixup formatting
SimonBrandner Dec 6, 2022
5a186e4
Use `content`
SimonBrandner Dec 6, 2022
b461525
Namespace things
SimonBrandner Dec 6, 2022
e49e80d
Further namespacing
SimonBrandner Dec 6, 2022
6b3fd47
Update the events to match current Matrix
SimonBrandner Dec 6, 2022
bf52e02
Fix typo
SimonBrandner Dec 7, 2022
f81dd9d
Use `subscribe`/`unsbuscribe`
SimonBrandner Dec 7, 2022
9c32b96
Add informational section on active/preferred foci.
dbkr Dec 8, 2022
6f8c9d1
Change keepalives to ping/pong
dbkr Dec 8, 2022
ecf2425
Add empty line
SimonBrandner Dec 8, 2022
bf04b17
Fix event name
SimonBrandner Dec 9, 2022
1896fc7
Remove encryption section as it's glossing over details
SimonBrandner Dec 12, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Amend TODOs
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
  • Loading branch information
SimonBrandner committed Nov 13, 2022
commit 9882c97c211135a4e6b4455b8830cb8e92fd95ee
20 changes: 12 additions & 8 deletions proposals/3898-sfu.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,8 @@ which other SFUs to connect.

## Proposal

**TODO: spell out how this works with active speaker detection & associated
signalling** **TODO: spell out how the DC traffic interacts with
application-layer traffic** **TODO: how do we prove to the SFU that we have the
right to subscribe to track?**
- **TODO: spell out how this works with active speaker detection & associated
signalling**

### Diagrams

Expand Down Expand Up @@ -78,7 +76,7 @@ this field from the state event or leave the list empty.

#### Discovering foci

**TODO: How does a client discover foci? We could use well-known or a custom endpoint**
- **TODO: How does a client discover foci? We could use well-known or a custom endpoint**
Copy link
Member

Choose a reason for hiding this comment

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

Thoughts: how we load balance between SFUs and manage availability will have a bearing on this, ie. would we expect SFUs to become unavailable when they get restarted / updated and therefore how often a client expect its SFU (or list of SFUs?) to change?


Foci are identified by a tuple of `user_id` and `device_id`.

Expand Down Expand Up @@ -155,9 +153,12 @@ The client uses the established data channel connection to the SFU to perform
low-latency signalling to rapidly (un)subscribe/(un)publish streams, send
keep-alive messages, metadata, cascade and perform re-negotiation.

**TODO: It feels like these ought to be `m.` namespaced** **TODO: Why `op`
instead of `type`?** **TODO: It feels like these ought to have `content` rather
than being on the same layer**
- **TODO: It feels like these ought to be `m.` namespaced**
- **TODO: Why `op` instead of `type`?**
- **TODO: It feels like these ought to have `content` rather than being on the
same layer**
- **TODO: Spell out how the DC traffic interacts with application-layer
traffic**

#### SDP Stream Metadata extension

Expand Down Expand Up @@ -204,6 +205,9 @@ If the user for example switches from "spotlight" (one large tile) to "grid"
(multiple small tiles) view, it should also send this request to let the SFU
know of the resolution change.

- **TODO: how do we prove to the SFU that we have the right to subscribe to
track?**

```json
{
"op": "subscribe",
Expand Down