mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.38k stars 1.12k forks source link

Add UPnP client support to murmur #4049

Open mnemex opened 4 years ago

mnemex commented 4 years ago

Context In which context would you expect your suggested feature to be useful?

Running a popup murmur server from a home network, this would make it far simpler to open an external port rather than the current DHCP IP pinning + manual port forwarding approach.

Describe the feature you have in mind A clear and concise description of what you want to happen.

Murmur should have configuration options added that result in it using uPnP to ask the gateway to open and forward a port to the running server. This would make setting up home murmur as easy as setting up bittorrent or a FPS game, and thus make low latency murmur connections (particularly but not uniquely important in the age of Covid-19) far more accessible.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

An even more efficient flow could be gained by having mumble itself have a p2p role that used Upnp to connect to local correspondents and talk to them directly, avoiding sending voice through the server entirely. However, obviously this would involve major changes to the code and protocol, and require more than one person involved enabling the potentially dangerous UPnP setting rather than just the host. Thus this appears by far to be the easiest way of getting a more acessible "local murmur" setup.

Additional context Add any other context or screenshots about the feature request here.

Brought to you by my spending several hours fruitlessly fighting with my old broadcom/dd-WRT router to try to get it to hard bind an IP and port forward to it to be stopped by bugs. And many, many people don't even have the technical skills to even get this far.

In contrast, upnp is a single simple setitng that lots of people already use so their playstations, xboxes, and torrents work. And when people are turning to voice and video chat systems for socializaiton (and musical collaberation, which is where truly low latency connections shine), enabling them to do so with a local server thus having shorter network hops as well as much more control is a real and important way to help out in the current crisis -- as well as reduce the cost of this kind of connection in the future.

Krzmbrzl commented 4 years ago

Just in case someone stumbles upon this and is as clueless as me what UPnP is: https://en.wikipedia.org/wiki/Universal_Plug_and_Play ^^

trymeouteh commented 4 years ago

I would like a decentralised/distributed way to communicate over Mumble and not need to connect to a centralised server.

UPnP, OpenDHT and TURN will be great things to look into. To allow anyone to host a server that can easily be found in the Mumble server search.

Please make this possible and user friendly for gamers who use VPNs.

https://jami.net/why-is-jami-truly-distributed/

Avatat commented 4 years ago

What a nice feature request! @Krzmbrzl I can try to implement it, but not now :)

@trymeouteh, it's not possible at this moment. Mumble was designed to work in a central-server way.

Krzmbrzl commented 4 years ago

@Avatat sure, that'd be great! :)

streaps commented 4 years ago

https://github.com/digitalautonomy/wahay

Wahay is an application that allows you to easily host and participate in conference calls, without the need for any centralized servers or services. We are building a voice call application that is meant to be as easy-to-use as possible, while still providing extremely high security and privacy out of the box.

In order to do this, we use Tor Onion Services in order to communicate between the end-points, and we use the Mumble protocol for the actual voice communication. We are doing extensive user testing in order to ensure that the usability of the application is as good as possible.

trymeouteh commented 4 years ago

https://github.com/digitalautonomy/wahay

Wahay is an application that allows you to easily host and participate in conference calls, without the need for any centralized servers or services. We are building a voice call application that is meant to be as easy-to-use as possible, while still providing extremely high security and privacy out of the box. In order to do this, we use Tor Onion Services in order to communicate between the end-points, and we use the Mumble protocol for the actual voice communication. We are doing extensive user testing in order to ensure that the usability of the application is as good as possible.

Looks promising

@trymeouteh, it's not possible at this moment. Mumble was designed to work in a central-server way.

I understand Mumble uses centralised servers. I would like to see some decentralisation so I will not need to host a server to have a private chat when gaming with friends. I would like Mumble to add this since Mumble is the best free, open source, Windows and Linux app that has good encryption and respect users privacy unlike Discord which essentially spies on its users and Teamspeak is not open source.

Krzmbrzl commented 4 years ago

I would like to see some decentralisation so I will not need to host a server to have a private chat when gaming with friends.

a) That's OT in this issue. If you want to discuss this further, please open a new issue for it :) b) What you're asking for is basically "dump the very core concept everything in Mumble is built upon". Even though I do see the potential in having a decentralized approach as an option, I don't see this happening without a complete rewrite of everything. I don't think that this is a justified affort for this.

toby63 commented 4 years ago

@Krzmbrzl @trymeouteh

I would like to see some decentralisation

I want to give a constructive idea for a compromise: If you have:

then a user could simply start a server (maybe via UI) and would have an almost similar experience to a decentral solution. At least it would be a bit easier to set up a server than it is now.

Edit: changed introduction.

Krzmbrzl commented 4 years ago

That's not a combination of both principles. Mumble just won't get decentralized (any time soon).

Facilitating to host a server is of course always a good thing - which is what this issue is about :)

toby63 commented 4 years ago

That's not a combination of both principles.

Yes, I changed that. I know that of course :wink:

trymeouteh commented 4 years ago

I have a few suggestions to help achieve some decentralization. I made a new new issues to keep these idea on topic in each thread

1 P2P Private Chats https://github.com/mumble-voip/mumble/issues/4159

2 Allow Murmur to work with VPNs https://github.com/mumble-voip/mumble/issues/4160

3 Allow TOR into Murmur https://github.com/mumble-voip/mumble/issues/4161

Any of these three will work for me and I am sure will please those who want decentralisation. Mainly I would like to be able to use Mumble without having to use a public server, rent a server from someone or host a server and expose my IP address. I would be fine with Murmur as long as I can use my VPN or use Tor to protect my IP address from DDOS attacks.

mnemex commented 4 years ago

So, on the one hand, technically "not having a server" isn't actually an option at all. Absent broadcast (not practical on the wider Internet), the internet operates on servers (listening on ports for all traffic directed to an address) and clients. That's all there is, absent spies (man in the middle attacks); "Peer to Peer" services are just systems where every single client is also acting as a lightweight server as well.

Now, that said, yes, of course tecnically murmur/mumble could be made more decentralized via an enourmous amount of effort--for small rooms there would even be significant advantages to doing this in terms of latency (instead of routing through the server, packets could be sent to all the other clients' server ports). But as said, that's a huge undertaking and way out of scope for this ticket.

That said, trymeout's core request "I want to be able to talk with my friends without having to go through the effort of setting up a server -or- locate/connect to someone else's server" could be handled handily via two stories:

  1. This one.

  2. "As a casual user of mumble who wants to set up a simple private murmur server, I want a UI (maybe inside a window in mumble itself) that will let me set up some basic configurations and launch/manage a server without having to mess with a text configuration, doing basic stuff like setting latency/bandwidth preferences, admin password/channels, and enabling uPnP and leaving everything else default."

Just those two would give someone the "private user" experience--they could even have the option to either get their IP from the UX (which can pretty easily figure out the external IP via some probing and a helpful external site) or set it up to advertise the server via a normal meta-server (I don't remember what the murmur world calls it) and thus let friends connect to them by name.

I'd even argue that if one is willing to accept some hacks, this is like 1/3 to 1/2 the way to the P2P experience implied by trymeout's request. If all mumble clients have the ability to optionally set up and advertise local servers that they connect to, and which they set policy for, it's not -that- far from that to using those servers to set p2p voice data when both sides are willing. This is easier said than done (for one thing, unless one sets up a -very- stripped down server, authentication is an important issue, although if the client set up the authentication it could be random/temporary and sent via a higher level communication), but still much closer given ui based murmur configuration and uPnP.