GithubHelp home page GithubHelp logo

keeferrourke / rhpman-sim Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 3.0 40 KB

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

License: ISC License

C++ 99.57% Python 0.43%
ns3 ns-3 simulation manet mesh-networks data-replication

rhpman-sim's Introduction

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 lab1 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, 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.

    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.

    cd ns-3.32/scratch/
  3. Clone this repository.

    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.

    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 ๐Ÿคท).

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.

rhpman-sim's People

Contributors

keeferrourke avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

rhpman-sim's Issues

simulation params errors are ignored

(Mostly a comment to my self for when I take over this codebase)

In the following code block where the cli parameter are parsed and an ok result is passed back:

std::tie(params, ok) = SimulationParameters::parse(argc, argv);

This ok value is never used and ignored. The simulation will still run using the potentially invalid parameters.

If the parameters have an issue and fail to be parsed correctly the experiment should terminate with an error code.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.