Skip to content

Conversation

vasco-santos
Copy link
Contributor

No description provided.

@github-actions github-actions bot requested review from jacobheun and rvagg March 4, 2021 16:49
@vasco-santos vasco-santos requested review from Gozala, achingbrain and jacobheun and removed request for jacobheun March 4, 2021 16:49
1. A developer will start a `js-ipfs` node in the browser (pubsub is enabled by default) and behind the scenes the node will be able to discover and connect to nodes that share the same interestes (pubsub subscriptions)
2. A developer will start a `js-ipfs` node in the browser and the node will try to find available relays out of the box, so that it can use them to receive incoming dials.
3. A developer can use the Rendezvous API to register peers under a given namespace, so that other nodes can easily find them. Example: Discover all the peers running in the dapp scope

Copy link

Choose a reason for hiding this comment

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

I wonder if slate use case is worth surfacing here.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Slate would be included in the third use case I think.

Once dapps not rely on star servers, they need a way to discover peers on a dapp scope, so all the peers would register on a rendezvou server under a slate namespace and discover the peers that previously registered.

Is there any other use case you have in mind?

Copy link

Choose a reason for hiding this comment

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

I meant actually mentioning the slate in the 3rd use case as a real use case makes it more obvious than hypothetical one

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, that is a good call.

@Gozala
Copy link

Gozala commented Mar 10, 2021

@vasco-santos do you have any thoughts on how can we enable teams to expand capacity of rendezvous service ? As in how do we ensure that:

  1. It is not centralized around PL operated infrastructure.
  2. Nodes deployed by collabs do not fragment network, but rather improve it.

I also feel like there is a need to expand on how this is going to be deployed, is rendezvous service going to be provided a by bootstrap nodes ? Or is there going to be yet another list of addresses clients will be configured with to do a rendezvous ?

@vasco-santos
Copy link
Contributor Author

vasco-santos commented Mar 11, 2021

@vasco-santos do you have any thoughts on how can we enable teams to expand capacity of rendezvous service ? As in how do we ensure that:

It is not centralized around PL operated infrastructure.
Nodes deployed by collabs do not fragment network, but rather improve it.
I also feel like there is a need to expand on how this is going to be deployed, is rendezvous service going to be provided a by bootstrap nodes ? Or is there going to be yet another list of addresses clients will be configured with to do a rendezvous ?

I have some thoughts, but we should advance first with PL infrastructure and monitor performance before making these a community infrastructure. I did these benchmarks: libp2p/js-libp2p-rendezvous#8 (worth checking the last commit as this PR is done on top of the actual implementation)

We will likely need to setup a cluster of rendezvous servers with a load balancer. I created docker images for everything so that PL and the community can easily deploy such servers, but once we decide how we will deploy this we might iterate with more docs and prebuilt infrastructure images.

@Gozala
Copy link

Gozala commented Mar 11, 2021

I have some thoughts, but we should advance first with PL infrastructure and monitor performance before making these a community infrastructure. I did these benchmarks: libp2p/js-libp2p-rendezvous#8 (worth checking the last commit as this PR is done on top of the actual implementation)

I'm not sure we're talking about the same thing here. I am not asking if PL can subsidize community with rendezvous nodes, but rather interested in defining how community can add their rendezvous node without fragmenting the network (or the rendezvous registry).

@vasco-santos
Copy link
Contributor Author

Maybe I was not explicit enough. I was mentioning that deploying and orchestrating these rendezvous servers might not be easy, which would be problematic for "how community can add their rendezvous". These will likely have a large amount of requests and we need to understand if they will scale as expected before trying to grow them.

Regarding network fragmentation, we can think about a small protocol extension. We could have rendezvous servers registering on themselves (and others they know) as providing the "rendezvous server service". This would enable libp2p nodes to find all the rendezvous servers in the network. With this, libp2p nodes acting as rendezvous clients can start asking for peers on a given namespace to a subset of these rendezvous server until they have enough.

@Gozala
Copy link

Gozala commented Mar 22, 2021

Maybe I was not explicit enough. I was mentioning that deploying and orchestrating these rendezvous servers might not be easy, which would be problematic for "how community can add their rendezvous". These will likely have a large amount of requests and we need to understand if they will scale as expected before trying to grow them.

I would like to offer a slightly different perspective than one I think you might be picturing. There is on overlap between the role SSB Pubs play in the network and rendezvous nodes in IPFS. I as far as I know large loads on pubs is not a problem in SSB, because they provide service to elected peers and peers also learn and connect to multiple pubs. This creates a nice, distributed system without much of an orchestration.

I would love if rendezvous was not designed under assumption of several nodes serving all of the network motivated by philanthropy (or worth yet, discovered a way to take advantage of their position), but rather many limited nodes serving the needs of specific groups or us cases motivated by specific cause.

@mikeal mikeal added ease:low Ease rating is 5 or below. impact:high Impact rating is 6 or above. labels Mar 25, 2021
@vasco-santos
Copy link
Contributor Author

This creates a nice, distributed system without much of an orchestration.

I would love if rendezvous was not designed under assumption of several nodes serving all of the network motivated by philanthropy (or worth yet, discovered a way to take advantage of their position), but rather many limited nodes serving the needs of specific groups or us cases motivated by specific cause.

Yes, I totally agree this with be a really big improvement to the Rendezvous Spec. How should we add this to the proposal? I wonder it really depends on how fast we want to land Rendezvous. If we go with an alternative first, we can iterate on the spec and spend some more time on this

@jacobheun
Copy link
Contributor

Closing this as it is not on our immediate roadmap. We will reopen when this work intersects with our future timelines and priorities.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ease:low Ease rating is 5 or below. impact:high Impact rating is 6 or above.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants