Chaos Manager is an automated fault injection module for OMNETPP. It was inspired by chaos engineering principles used in distributed systems. Chaos Manager has been used in conjuction with the CSMA-LEACH simulation model.
Chaos Manager is based on some functionality provided by INET Scenario Manager. However it is standalone module that is not dependent on ScenarioManager. The current implementation of Chaos Manager is capable of the following:
- Random injection of hard faults into simulation (Shutdowns, Crashes)
- Intelligent detection of simulation parameters from .ini file (Number of nodes, simulation duration)
- Intelligent fault allocation avoiding duplicates (eg: a crash occuring to same node after shutdown).
Future features include:
- Intelligent restarting of nodes that have shutdown.
Limitations of Chaos Manager include:
- Faults are limited to hard faults (Shutdowns, Crashes)
- Faults are limited to only 2 hard fault types provided by LifeCycleManager
- Some parameters have been hardcoded into .cc files in current version.
Follow the below steps to run Chaos Manager module.
-
Prerequisites
-
Install and Build
-
Usage
These models have been tested on the following versions of INET and OMNeT++.
-
OMNeT++ version 5.6.2
-
INET Framework version 4.2.5
Follow the following procedure to install and build the models.
-
Install and build OMNeT++
-
Create a new workspace in the OMNeT++ IDE
-
Install and build the INET Framework in the created workspace
-
Locate the
commondirectory in your INET installation. -
Create subdirectory named
chaosand clone or copy the contents of this repository in the newly createdchaossubdirectory. -
Rebuild INET.
- Import the module into the
.NEDfile of your network simulation
import inet.common.chaos.ChaosManager;
- Add Chaos Manager as a submodule in your simulation
submodules:
chaosManager: ChaosManager;
...
- The current version of Chaos Manager exposes 2 parameters via the
.NEDfile.
-
numNodes- The number of nodes in a simulation -
faultPerc- The number of faulty nodes as a percentagenumNodescan be accessed via the.inifile as follows:*.chaosManager.numNodes = 10One must make sure this number is exactly the same as the number of nodes deployed in the network.
numNodescan also be assigned with a.NEDparameter as follows:parameters: int numNodes; ... submodules: chaosManager: ChaosManager { numNodes = numNodes; } ...faultPerchas a default value of 10, but can be overriden in the.inifile.*.chaosManager.faultPerc = 5A value that has not been exposed is the naming convention of nodes. This has been hardcoded into the
ChaosManager.ccfile. The relevant line has been commented to make identification easier. This will be amended in future as a NED parameter.For correct operation the module assumes that
sim-time-limitparameter is filled in the respective simulation.inifile. Code changes are needed in the case that this is not present.
This module is released under LGPL v3.0 license.
If you have any questions, comments or suggestions, please include them as an issue in this repository. Please be mindful to adhere to the issue template provided and add a reply when an issue is resolved.
Resolved issues will be closed at the maintainers discretion once identified as stale.
This model was designed and developed by,