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

routing algorithm simulator #5630

Open
skliarie opened this issue Oct 23, 2018 · 4 comments
Open

routing algorithm simulator #5630

skliarie opened this issue Oct 23, 2018 · 4 comments
Labels
kind/enhancement A net-new feature or improvement to an existing feature kind/test Testing work

Comments

@skliarie
Copy link

skliarie commented Oct 23, 2018

I am thinking about writing IPFS routing algorithm simulator. It would enable quick iterations in routing algorithm development, before thousands of full-fledged IPFS daemons are spun.

The simulator would have configuration to specify following "starting situation":

  • whether node is NATed
  • percentage of "unique" content, small and big blocks
  • speed of node's network up/down
  • connection latency
  • amount of storage available
  • amount of pubsub channels, number of subscribers
  • clustering with some other nodes

While running, it will be possible to specify:

  • amount of interest in various blocks to go up and down
  • normal/important blocks (e.g. blocks requested from browser are much more important to retrieve than backup of some blocks). Same goes for sending unique content. I understand that IPFS does not support this yet.

Output of the simulator would have graphs of blocks traversal speed, pubsub speed, etc

Obviously this should be written in go, to facilitate thousands of goroutines that represent hosts and networks.

Sorry for making it as issue, think about it as a feature. What do you think?

@skliarie
Copy link
Author

skliarie commented Oct 23, 2018

there is DHT simulator that might be used: https://github.com/whyrusleeping/dhtHell

@Stebalien
Copy link
Member

Stebalien commented Oct 24, 2018

This is something we've been wanting for a long time. You should take a look at iptb, our testbed project. We currently use it along with our sharness (tests/sharness) tests to do some testing like this but nothing at this scale.

@raulk and @bigs have been mulling over an equivalent (probably also using iptb) for libp2p and @travisperson has been working quite a bit on improving iptb itself.

@Stebalien Stebalien added kind/enhancement A net-new feature or improvement to an existing feature kind/test Testing work labels Oct 24, 2018
@LastExile16
Copy link

LastExile16 commented Oct 24, 2018

That would be incredibly useful, especially for research purposes. I hope to see it very soon.

@skliarie
Copy link
Author

skliarie commented Dec 2, 2018

I started working on architecture and looking for feedback from experienced go developers and IPFS masters: https://github.com/skliarie/ipfs-simulator/blob/master/architecture.txt

@momack2 momack2 added this to Inbox in ipfs/go-ipfs May 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement A net-new feature or improvement to an existing feature kind/test Testing work
Projects
No open projects
Development

No branches or pull requests

3 participants