Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/keeferrourke/rhpman-sim

An attempt to reimplement the performance evaluation simulation as described by Shi and Chen in their 2014 paper for the RHPMAN data replication scheme.
https://github.com/keeferrourke/rhpman-sim

data-replication manet mesh-networks ns-3 ns3 simulation

Last synced: about 1 month ago
JSON representation

An attempt to reimplement the performance evaluation simulation as described by Shi and Chen in their 2014 paper for the RHPMAN data replication scheme.

Awesome Lists containing this project

README

        

# rhpman-sim

This NS-3 scratch simulator code that attempts to implement the RHPMAN scheme
and reproduce its performance evaluation as described by the following paper:

> K. Shi and H. Chen, "RHPMAN: Replication in highly partitioned mobile
> ad hoc networks," International Journal of Distributed Sensor Networks
> Jul. 2014.

## Motivation

Our lab[1] is investigating ad-hoc mobile mesh networks (MANETs) and
their properties with the hopes that we may inform development of quality mesh
network protocols and network applications.
A challenge with MANETs is their inherently mobile nature.
Much research has been done to discover good algorithms for data distribution
and replication within MANETs, however many of these studies are unreproducible
as-is.

Having identified the RHPMAN scheme as described by Shi and Chen 2014 as a
promising data replication scheme, this project was created to attempt to
implement it on the [ns-3 simulator](https://www.nsnam.org/), and run the scheme
under a similar setting as is described in the performance evaluation conducted
by Shi and Chen.

*Note*: Shi and Chen used the OPNET simulator for their study, however this
simulator does not appear to be widely available anymore. Hence, we have chosen
to use the latest version of the popular ns-3 network simulator instead.

## Building this project

Reproducibility is key in simulation studies, so here's how to build the
project!

1. Download and build copy of the ns-3.32 all-in-one distribution.

```sh
wget https://www.nsnam.org/release/ns-allinone-3.32.tar.bz2
tar xjvf ns-allinone-3.32.tar.bz2
cd ns-allinone-3.32
python3 ./build.py --enable-examples
```

2. Change directories to the `scratch/` folder of the ns-3.32 source
distribution.

```sh
cd ns-3.32/scratch/
```

3. Clone this repository.

```sh
git clone [email protected]:keeferrourke/rhpman-sim.git rhpman
```

4. Change directory back to the `ns-3.32` folder of the source distribution
and run this simulation through the `waf` tool. This will compile the
simulation code and start executing the code.

```sh
cd ..
./waf --run 'scratch/rhpman/rhpman`
```

## Running the simulation

If you're familiar with ns-3, then you should know that the simulation is run
via the `waf` build tool. Arguments to this program *must* be part of the same
string that is passed to `./waf --run` (that's just how it works :shrug:).

Every parameter of the simulation is configurable. Run the following to see
all the configurable parameters. The default values are as described in the
RHPMAN paper cited at the top of this document.

```
./waf --run 'scratch/rhpman/rhpman --printHelp' # <-- mind the quotes!
```

You can view an animation of the simulation using `NetAnim`, which is included
with the ns-3 all-in-one distribution. To do so, run the following:

```
./waf --run 'scratch/rhpman/rhpman --animation-xml=path/to/rhpman.xml
```

This will generate an XML file at the specified path. You can then open this
file with `NetAnim` to view what happens during the simulation run.

## Code style

This project is formatted according to the `.clang-format` file included in this
repository. It intentionally deviates from the code style used by the ns-3
library and simulator developers.

## License

While ns-3 is itself licensed under the GNU General Public License v2, the code
in this repository is made available under the Internet Systems Consortium (ISC)
License.

A copy of this license is included in this repository, and embedded in the top
of each source file.

[1]: https://danielgillis.wordpress.com/students/