-
Notifications
You must be signed in to change notification settings - Fork 8
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
Proposal: Distributed signaling #43
base: main
Are you sure you want to change the base?
Conversation
I don't believe that is the case, e.g. WebRTC requires signalling server and NAT hole punching isn't going to address that. Today you need to configure node with an address of a signaling server, which is a problem because ethier:
Ideally we could grow signaling infrastructure and make it possible for nodes to discover new signaling nodes as they join the network. @raulk Am I misunderstanding Project Flare, or does my comment above makes the difference more clear ? |
I did closer review of Project Flare #21 and I think while there is a bit of overlap there it does not directly address the problems this proposal is aimed at. More specifically in WebRTC creating a Desire here is to change that such that
I focused on WebRTC here, but that is also the case with bootstrap nodes and more |
@Gozala I see. It wasn't clear this proposal is WebRTC focused.
Same. You mean "ICE servers"? Basically this proposal aims to create a decentralised fabric of ICE servers for WebRTC nodes to rely on? |
No that was just an example. I think it is broader than that. E.g. we also configure nodes with addresses for boostrap nodes, if those nodes were to become unreachable by part (or worth whole) of the network they would not be able to recover without reconfiguring nodes, release of new version of products etc... Here solution would be to make nodes remember dialable nodes so they could be used when boostrap nodes can’t be dialed. Broadly speaking we tell our collabs to configure nodes with addresses to their servers. I think that is harmful for the ecosystem and I’d like to figure out a way that would allow us to change our messaging from “configure your nodes to talk to your servers” to “spin additional nodes to ensure that network is reliable for your users”. This draft is clearly needs more work to clarify all that. |
@Gozala correct me if I am wrong, as far as I understand the goal here would be to assign roles to nodes and advertise these roles in the network. For instance, you would have a set of libp2p nodes which would be "ICE servers". These nodes would advertise (via DHT, Rendezvous, ..) that they have such a role and peers in the network can find these advertisements. Considering the above, I think that this could be part of the Limited Relay work described in Project Flare. Ideally any node acting as a limited relay should be able to enable two peers with webRTC to exchange SDP offers, instead of having a special implementation of a relay to do this. As we are going to implement a new version of the circuit protocol, it would be good to also have in mind WebRTC signalling.
This is not the case anymore since we have a persisted PeerStore. We will try to connect to the configured bootstrap nodes + all previously known nodes (within the connectionManager thresholds). What we really need to do here (at least in JS) is creating an intelligent way of doing follow up dials on restart:
libp2p/js-libp2p#744 check the proactive dial part in this issue |
I think this is a great way to put it, thanks! I also think there will be roles beyond "ICE", e.g me and @hugomrdias talked about "IPNS record keepers" as one such a role. |
Is worked on at https://hackmd.io/@gozala/distributed-signaling