Jitsi is compatible with e2ee. For group calls, almost all of the work for e2ee is in the clients. And Jitsi can work with such clients.
485 karma · joined April 30, 2011
Jitsi is compatible with e2ee. For group calls, almost all of the work for e2ee is in the clients. And Jitsi can work with such clients.
All of these things are built around WebRTC to some degree, which was built on previous open source work and standards. We all benefit from many contributions over many years.
Jitsi and MediaSoup both seemed to have good congestion control at the time.
And, yes, as mentioned, the primary reason for writing a new one was performance/scalability.
I guess if there is enough interest from users, we could look into adding a full mesh mode. It's been a year so far with group calls and no one has asked for it, probably because there isn't really much to be gained. Even 1:1 calls, which are p2p, sometimes need to be relayed through a TURN server.
It's on the long list of things to do, yes. But we have many things before it on the list :).
The server doesn't know who is in the call. It can't build any graph.
MediaSoup was one of the two SFUs that did seem have congestion control at the time. Sorry if that wasn't clear.
So I don't think it's an issue with calling.
However, if I hit the "record audio message" button and then hit cancel, I can get it to stay open until I close the app and restart it. I will report this bug to my coworkers at Signal that work in that area of the code.
Could you try and see if this problem is caused by the voice recording feature? For example, if you quit Signal and start back up, does the bug go away? If you start a voice recording and cancel it, does it come back?
Update: you can track the progress of the bug at https://signalmessenger.atlassian.net/browse/DESKTOP-2406
And if you have new information, please put it there.
If you're interested in seeing an implementation of an SFU doing simulcast forwarding written in Rust, we (at Signal) recently open sourced our SFU:
https://github.com/signalapp/Signal-Calling-Service/blob/mai...
I don't think we've made the SFU repository public yet, so I don't think I can comment on that yet. Likely I'll be able to in the future.
Yes, it uses a server for media distribution and uses encryption keys that the server does not know.
As for "too many protocols": QUIC is already in the browser. This is just giving you an API to it. Think of it like WebSockets for the HTTP3 world.
And I have proposed additions to the WebRTC API to allow control of when ICE checks are sent and how long a particular ICE candidate pair should stay alive (you could set it to "forever"):
It's complicated :).
Basically, WebRTC is a combination of a bunch of protocols: ICE, DTLS, SCTP, and RTP. You could theoretically reduce that to ICE + QUIC for p2p use cases and just QUIC for client/server use cases.
For p2p, there is RTCQuicTransport (see https://developers.google.com/web/updates/2019/01/rtcquictra...)
For client/server, there is QuicTranport (see https://web.dev/quictransport/)
Of course, you'll probably want to be able to encode and decode some audio and video as well to make that useful. For that, there is WebCodecs (see https://github.com/WICG/web-codecs or https://www.chromestatus.com/feature/5669293909868544)
For use cases like live streaming and cloud gaming, I did a presentation about the combination of WebTransport + WebCodecs: https://www.w3.org/2018/12/games-workshop/slides/21-webtrans...
And then there is the work happening in the IETF along these same lines: https://datatracker.ietf.org/wg/ript/documents/
https://github.com/peer-calls/peer-calls
https://www.irif.fr/~jch/software/sfu/
Out of those, it seems Jitsi and Mediasoup to be better as SFUs than the rest because they have what appears to be decent-looking congestion control, bitrate allocation, and support for simulcast. The rest apparently do not (at least I couldn't find anywhere in the code where it happened).
Also interesting to note is that so many of the newer ones are written in Go based on Pion. If Pion ever gains the ability to do decent congestion control (perhaps based on transport-cc like Jitsi and Mediasoup do), that could improve things for all of those.
Non-group desktop calls are coming soon (hopefully hitting beta in a few weeks).
We're working on desktop group calls as well. That will take a bit longer, though. I don't have a good estimate of when it will be available
The downside of disregarding all candidates until the call is accepted is that post-accept connectivity would be much slower.
Going through a server to hide your IP is an option in the settings in the app, but it can potentially lead to higher call latency, so there is a trade-off.
To prevent issues like this in the future we are taking more control of WebRTC's behavior with a fork of WebRTC (Signal uses WebRTC) and are providing patches to upstream WebRTC as well.
(I work at Signal on calling)
But the web standard not being there yet doesn't prevent someone from making a mobile or desktop app with e2ee conferencing, like Duo does: https://support.google.com/duo/answer/9280240?hl=en.
(I used to work at Google on WebRTC, Duo, Hangouts, and WebCodecs, but now work on video calling at Signal).