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

Rendezvous Protocol #651

Closed
Tracked by #816
vasco-santos opened this issue Jun 2, 2020 · 3 comments
Closed
Tracked by #816

Rendezvous Protocol #651

vasco-santos opened this issue Jun 2, 2020 · 3 comments
Labels
Epic P1 High: Likely tackled by core team if no one steps up status/ready Ready to be worked

Comments

@vasco-santos
Copy link
Member

vasco-santos commented Jun 2, 2020

Rendezvous Spec

Background

Libp2p rendezvous is a lightweight mechanism for generalized peer discovery. It can be used for bootstrap purposes, real time peer discovery, application specific routing, and so on. Any node implementing the rendezvous protocol can act as a rendezvous point, allowing the discovery of relevant peers in a decentralized fashion.

Motivation

Over the last few years, libp2p has provided libp2p/js-libp2p-webrtc-star and libp2p/js-libp2p-websocket-star to enable browser nodes to discover each others in the network and be able to connect. These were never designed to be long term solutions, but to be quick tools for demos. In addition, they re-implement a lot of what libp2p can do, such as connection authentication, peer-discovery, circuit-relay and rendezvous.

The rendezvous protocol is the missing piece in the js-libp2p for enabling full connectivity between browser nodes, as well as other constrained environments, without the need for these *-star transports.

Benefits:

  • By cutting of the *-star transports, we would be saving the time from reinventing the wheel and also reduce the confusion from the users.
  • Any IPFS/libp2p node could then be the rendezvous or the relaying address (meaning that we can use the go-libp2p to handle with even more clients).
    • We avoid spending time creating custom instrumentation and use instead the instrumentation that IPFS & libp2p have.
    • Any security, perf improvement or memory leak fix will be directly on libp2p and/or IPFS rather than external "temporary" code.
  • People would not have to rely on a centralized of custom built infrastructure, instead, they could use it with any IPFS/libp2p node.

References:

Milestones

The rendezvous implementation is part of libp2p/js-libp2p#385, where we aim to sunset the *-star protocols. This implementation solves most of what we need to finally sunset all these protocols except for webrtc-star. However, this work is also the groundwork to also support webrtc distributed signalling, so that we can sunset the *-star protocols.

Task Issue PR
1) Rendezvous Implementation N/A libp2p/js-libp2p-rendezvous#6
2) Rendezvous client in js-libp2p N/A libp2p/js-libp2p#856
3) Rendezvous IPFS/libp2p browser example N/A libp2p/js-libp2p#862
4) Deploy a set of libp2p rendezvous nodes N/A TODO
5) Rendezvous used by default in js-ipfs N/A TODO
6) IPFS/libp2p browser guide blogpost TODO TODO
@vasco-santos vasco-santos added Epic P1 High: Likely tackled by core team if no one steps up status/ready Ready to be worked labels Jun 2, 2020
This was referenced Jun 2, 2020
@vasco-santos
Copy link
Member Author

This was delayed for 0.30 release so that we can cut out 0.29 sooner

@nonchip
Copy link

nonchip commented Dec 30, 2022

This was delayed for 0.30 release so that we can cut out 0.29 sooner

so given this seems to be actually implemented since about 2-4 years ago (judging by various open, conflicting, PRs in various repos), and was supposed to be in 0.29, then 0.30 and then apparently 0.32, which ALSO is closed now (2 years after you last mentioned it), can we expect js-libp2p to actually...yknow...do working networking within this decade?

@p-shahi
Copy link
Member

p-shahi commented Feb 1, 2023

@nonchip I responded to your other comment here libp2p/js-libp2p-rendezvous#6 (comment)
We probably won't work to support rendezvous anytime soon. If you want solutions for browser connectivity with js-libp2p, know that we have a browser to server solution in WebTransport and WebRTC as well as a WebRTC browser-to-browser solution coming in soon.

@p-shahi p-shahi closed this as completed Feb 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Epic P1 High: Likely tackled by core team if no one steps up status/ready Ready to be worked
Projects
None yet
Development

No branches or pull requests

3 participants