This repository automates the deployment and management of Zenoh Daemon (zenohd) networks for experimental purposes. It simplifies launching, monitoring, and cleaning up Zenoh routers while ensuring automatic data collection for analysis.
- Automated Deployment
- Deploy Zenoh routers locally or remotely based on configuration files.
- Supports Docker and non-Docker environments.
- Flexible Configuration
- Define listening endpoints and router connections.
- Assign unique ZIDs for each router instance.
- Experiment Management
- Logs stored under
experiment_data/<your_experiment_name>. - Automatic error checking during deployment.
- Transfers experiment data back from remote hosts.
- Logs stored under
Ensure the following dependencies are installed before running:
- Python ≥ 3.8
- Docker (required for Docker-based deployments)
- tmux (manages router sessions)
- rsync (for transferring data from remote hosts)
- SSH access to remote routers (passwordless login recommended)
- Python library:
json5
Install with:pip install json5
Create a configuration file (NETWORK_CONFIG.json5) in the repository root:
📌 Note: Detailed field explanations can be found in
NETWORK_CONFIG_DEFAULT.json5comments.
{
"experiment": "<your_experiment_name>",
"docker_image": {
"tag": "eclipse/zenoh:<version>",
"clean_first": true
},
"user_name": "<your_ssh_username>",
"routers": {
// Define your routers here. Copy and edit the router config block below
// to set up as many routers as you need for your Zenoh network.
// "1": {
// ...
// },
// "2": {
// ...
// },
"1": {
"ssh": "<host_ip_or_hostname>",
"docker": true,
"zid": {
"set": true,
"value": "<unique_hexadecimal_id>"
},
"mode": "l",
"listen_endpoint": "<proto>/<address>:<port>",
"connect": []
}
}
}Before running, ensure the script has execute permissions:
chmod +x launch_routers.pyRun the script from the repository root:
./launch_routers.pyPress Ctrl+C to gracefully shut down all Zenoh routers and collect experiment data.
- Experiment data is stored under:
experiment_data/<your_experiment_name> - Logs:
zenohd_<id>.log: Standard outputzenohd_<id>_err.log: Standard error