dsns 1.0.0
An event-based network simulator optimized for federated and deep-space satellite networks.
Requires Python: >=3.11

# DSNS: The Deep Space Network Simulator

The Deep Space Network Simulator (DSNS) is an event-based network simulator designed for efficient simulation of satellite networks and interplanetary communication, to facilitate protocol testing and development.
The paper introducing it can be found on arXiv [here](https://arxiv.org/pdf/2508.04317).

When using DSNS, please cite the following paper: **"DSNS: The Deep Space Network Simulator"**.
The BibTeX entry is given below:
```bibtex
@inproceedings{smailesDSNS2025,
    author = {Smailes, Joshua and Futera, Filip and K{\"o}hler, Sebastian and Birnbach, Simon and Strohmeier, Martin and Martinovic, Ivan},
    title = {{DSNS}: {The Deep Space Network Simulator}},
    booktitle={2025 Security for Space Systems (3S)},
    year={2025},
    organization={IEEE}
}
```

Papers and projects which have used DSNS:
- "KeySpace: Enhancing Public Key Infrastructure for Interplanetary Networks" (2025): https://arxiv.org/abs/2408.10963
- "Secure and Scalable Rerouting in LEO Satellite Networks" (2025): https://arxiv.org/abs/2509.10173

> [!NOTE]
> To add your project to this list, or to merge your contributions with DSNS, feel free to submit a pull request.


## Documentation

Further documentation can be found here: https://ssloxford.github.io/DSNS/


## Installation

DSNS is distributed on PyPI, and can be installed using `pip`:

```bash
pip3 install dsns
```

However, many use cases will require modifications to the source code.
For this reason, we recommend installation from source, using the `--editable` flag to ensure the code can be updated without requiring reinstallation.
This can be done as follows:

```bash
git clone https://github.com/ssloxford/dsns.git
cd dsns
pip3 install --editable .
```

Dependencies are listed in `pyproject.toml`, at the root of the repository.
We recommend the use of a virtual environment to reduce the likelihood of dependency conflicts.


## Usage

We recommend looking in the `examples` directory for usage examples, or at the documentation for further instruction.

> [!NOTE]
> The examples in `examples/paper` require simulation logs that are not bundled with this repository due to their size, and are provided for reference only.
> The logs can be obtained by running `examples/ccsds_reference.py` and `examples/custom_reference.py` with the arguments shown at the bottom of the respective file, or by contacting the authors.


## Contributing

We welcome any contributions to DSNS, including but not limited to improved documentation, refactoring, new features, examples, and reference scenarios.
To make a contribution, please add an issue to the tracker or create a pull request, and we will aim to merge any changes shortly.
Please note that any code changes must come with corresponding changes to the documentation.


## License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.