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

Announce Bitswap service multiaddrs to the Network Indexers #711

Closed
Tracked by #709
jacobheun opened this issue Aug 18, 2022 · 9 comments
Closed
Tracked by #709

Announce Bitswap service multiaddrs to the Network Indexers #711

jacobheun opened this issue Aug 18, 2022 · 9 comments

Comments

@jacobheun
Copy link
Contributor

jacobheun commented Aug 18, 2022

Currently only Graphsync records are announced to the network Indexers. When Bitswap is enabled we need to announce the multiaddrs of the service to the network as well.

Considerations
As Bitswap runs as a separate service we need a way to pass its multiaddrs to the index provider for announcing records.

@jacobheun
Copy link
Contributor Author

With the current state of index announcements we need graphsync and bitswap records to all point back to the same node. We'll need to be able to route bitswap requests through the index announcement libp2p node (which is the Boost node today). It's currently not possible to point different protocol indexing records to different multiaddrs (even if the libp2p keypair was shared).

@ribasushi
Copy link
Contributor

@jacobheun @willscott this is potentially a blocker, can we dig into the source of this limitation? My understanding is that elasticprovider does exactly this: they announce a peerid which is different from the announcer...

@willscott
Copy link
Collaborator

It's the addition and removal of identities that's expensive for the indexer. elastic provider has a single provider identity that all the cids map to.

the ask here was to take all the cids sp's have already announced, and now say "this new provider also announces all of that same content"

in the current indexer model, that's a whole new chain of a new provider, and as expensive as re-ingesting the whole chain. (each cid gets a new value entry put in to it's entry)

having those flap isn't something we'll really be able to tolerate right now, but we're working on it.

@LaurenSpiegel
Copy link
Collaborator

As an interim solution, there has been discussion of the SP's running a load balancer like https://github.com/mcamou/go-libp2p-kitsune. By using a load balancer we will be able to retrieve old and new CID's via bitswap even before work is done on ipni/storetheindex#678.

Putting diagrams from @willscott here for future reference --

Current state--
image

image (1)

image (2)

image (3)

@LaurenSpiegel
Copy link
Collaborator

LaurenSpiegel commented Oct 3, 2022

Since the indexer will be accepting different transport protocols in q4 (ipni/storetheindex#678), is there still a strict need for a load balancer?

@LaurenSpiegel
Copy link
Collaborator

Sounds like we can work on the load balancer as a separate effort.

@hannahhoward
Copy link
Collaborator

@willscott looking forward on this ticket for Q4 Bitswap + Evergreen, what work is needed from the indexer side? Is it tracked somewhere?

@willscott
Copy link
Collaborator

we can track under ipni/storetheindex#678

@jacobheun
Copy link
Contributor Author

jacobheun commented Nov 25, 2022

This is complete. #951 is a new version to update to index families, so tracking that separately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

5 participants