Skip to content

Simple module to facilitate running external processes within ns-3 simulations

License

Notifications You must be signed in to change notification settings

emanuelegiona/ns3-ext-process

Repository files navigation

ExternalProcess: ns-3 module

Tested via ns3-compatibility-action on egiona/ns3-base Docker images

.github/workflows/ns-3.35.yml .github/workflows/ns-3.40.yml .github/workflows/ns-3.41.yml

This repository contains ExternalProcess, a simple module to facilitate running external processes within ns-3 simulations.

Aim & Features

  • Custom program execution as a process parallel to ns-3 simulations

  • Parallel process is started and kept alive until required

  • Bi-directional communication with processes based on TCP sockets

  • Multiple parallel processes supported (each with own ExternalProcess instance)

  • Non-interfering with Unix signals: watchdog thread for process supervision (Thanks @vincenzosu)

Note: This module is currently NOT intended for processes that have to carry out operations asynchronously to the ns-3 simulation. This means that all communications to an external process are blocking.

Installation guidelines and documentation

Installation guidelines and detailed documentation for the latest version is hosted on GitHub Pages.

Documentation for legacy versions is stored as PDF files named docs-<tag>.pdf in the docs directory within this repository.

Full changelog can be found at this page.

Citing this work

If you use the module in this repository, please cite this work using any of the following methods:

APA

Giona, E. ns3-ext-process [Computer software]. https://doi.org/10.5281/zenodo.8172121

BibTeX

@software{Giona_ns3-ext-process,
author = {Giona, Emanuele},
doi = {10.5281/zenodo.8172121},
license = {GPL-2.0},
title = {{ns3-ext-process}},
url = {https://github.com/emanuelegiona/ns3-ext-process}
}

Bibliography entries generated using Citation File Format described in the CITATION.cff file.

License

Copyright (c) 2023 Emanuele Giona (SENSES Lab, Sapienza University of Rome)

This repository is distributed under GPLv2 license.

ns-3 is distributed via its own license and shall not be considered part of this work.