Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aneeshdurg/toposim
Simulate how distributed graph databases (or any distributed application) performs under any network topology using docker.
https://github.com/aneeshdurg/toposim
Last synced: about 2 months ago
JSON representation
Simulate how distributed graph databases (or any distributed application) performs under any network topology using docker.
- Host: GitHub
- URL: https://github.com/aneeshdurg/toposim
- Owner: aneeshdurg
- Created: 2024-05-26T00:40:04.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-11-25T20:52:56.000Z (2 months ago)
- Last Synced: 2024-11-25T21:36:04.730Z (2 months ago)
- Language: Python
- Size: 122 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TopoSim
Simulate how distributed graph databases (or any distributed application)
performs under any network topology using docker.Usage:
```
toposim [--app ]
# see --help for more options
# Note that --app is not required if `config_file` has a "app" key/value.
```See `./example.json` to see how the topology is defined. Once the topology is
generated, the application can be started with `docker compose up -d` and
networking can be enabled with `./setup-networking`. The cluster can be
paused with `./pause` and destroyed with `./cleanup`. See `tools/` in the
generated directory for additional tools to analyze traffic or the state of the
containers.To simulate network latency or other network traffic properties, use
`add_delay/mod_delay`. Alternative, you can use establish network modification
tools like `wondershaper` in combination with `tools/run_in_ns`.## Installing
```bash
# Install argparsh for argument parsing in generated scripts
# option 1:
# install rust
# $ curl https://sh.rustup.rs -sSf | sh -s -- -y
# $ . ~/.cargo/env
# $ cargo install argparsh
# option2 :
# $ pip install argparsh# Install geni-lib for cloudlab deployment (optional)
git clone https://gitlab.flux.utah.edu/emulab/geni-lib
cd geni-lib
pip install .
cd ..git clone https://github.com/aneeshdurg/toposim
cd toposim
pip install .
```## Deploying on cloudlab (WIP)
If you don't have write access to this repo, you will need to first clone this
repository then set the environment variable `TOPOSIM_URL` as follows:
```bash
export TOPOSIM_URL="https://github.com//toposim/archive/refs/heads/.tar.gz"# e.g. if you cloned aneeshdurg/toposim to foobar/toposim, and are using the default branch "main"
# export TOPOSIM_URL="https://github.com/foobar/toposim/archive/refs/heads/main.tar.gz"# e.g. if you cloned aneeshdurg/toposim to myuser/toposim, and are using the default branch "branch1"
# export TOPOSIM_URL="https://github.com/myuser/toposim/archive/refs/heads/branch1.tar.gz"
```Modify `cloudlab/config.json` to hold the topology you want. Instantiate the
config, for example:```bash
toposim galois-experiment cloudlab/config.json --app galois
```Create an [rspec](https://docs.cloudlab.us/advanced-topics.html#(part._rspecs))
by running `python galois-experiment/to_geni.py > profile.rspec`. Upload the
profile to cloudlab and instantiate it!Note: This is experimental/WIP. Currently the cloudlab profile will create
nodes, setup the appropriate network routes, and install docker, but doesn't
actually start the workload.## Supported Applications
+ [JanusGraph](https://janusgraph.org)
+ [TigerGraph](https://www.tigergraph.com/)
- Note that TigerGraph requires a license.
+ [Galois](https://github.com/IntelligentSoftwareSystems/Galois)
- Note that running Galois requires building the docker image first. See
[here](./toposim/appdata/galois/README.md)