Skip to content

yboufenneche/SA-6TiSCH

Repository files navigation

SA-6TiSCH: Selfishness-Aware 6TiSCH

Authors:

SA-6TiSCH is a modified version of the 6TiSCH simulator. It enables the simulation of 6TiSCH networks with the presence of selfish nodes. We define a selfish node as the one that does not amply cooperate with its neighbors during the negotiation process of the protocol 6P, which enables adding new cells between neighbors. In fact, a selfish node intentionnally disagree to install a number of cells with the neighbor, either to save its energy or to disrupt the network performance.

Additional features of SA-6TiSCH compared to 6TiSCH

The purpose of SA-6TiSCH is to consider the selfishness while simulating 6TiSCH networks. For so doing, we extended the 6TiSCH simulator with the following features:

  • Selfish Behavior: we define and implement the selfish behavior in 6TiSCH networks, by making nodes not fairly running 6top Protocol. This behavior is implemented in the file SimEngine/Mote/sf.py.

  • Detection Algorithm: is a distributed algorithm based on fuzzy logic theory that enables each node in the network to identify its non-cooperative neighbors. It is implemented in the file SimEngine/Mote/sixp.py, and relies on the values provided by the Fuzzy Selfishness Estimator.

    • Fuzzy Selfishness Estimator: it uses the fuzzy logic theory to compute a Selfishness value given an Occupancy probability value, a Request Satisfaction Rate (RSR) value and a Distance value. It is implemented in the file SelfishnessDetector/fuzzySelfishnessEstimator.py.
  • Reaction Algorithm: is a countermeasure solution that helps nodes anticipating their reaction in the presence of suspicious nodes. The reaction mechanism is implemented in the file SimEngine/Mote/sf.py.

Choosing selfish nodes

The strategy of choosing which nodes to be configured as selfish ones for a simulation is implemented in the files SimEngine/SimEngine.py and SimEngine/Mote/rpl.py. We start with the first nodes that have successfully joined the network.

Results

The custom_plots folder hosts the results files as well as Python files used to generate our plots and boxes.

Results files are stored inside the custom_plots/kpis subfolder, and they are named following this logic: NRUN_SELFRATE_exec_numMotes_NMOTES.dat.kpi (e.g., 1_040_exec_numMotes_100.dat.kpi).

  • NRUN = the number of the run for the same configuration.
  • SELFRATE = the selfishness rate. It stands for the the number of configured selfish nodes to the overall number of nodes
  • NMOTES = the number of nodes used in the simulation.
  • If the file name starts with R, this means that the reaction mechanism was activated. Otherwise, no reaction mechanism was used.

Code Organization

  • SelfishnessDetector/:
    • fuzzySelfishnessEstimator.py: The Fuzzy Selfishness Estimator (FSE).
  • custom_plots/: The results
    • kpis/: The result files
    • custom_plots.py: Generates plolts and boxes.
    • extract_data.py: Extracts and combines data from different result files.
    • utilities.py: Useful functions.
  • SimEngine/: the simulator
    • Connectivity.py: Simulates wireless connectivity.
    • SimConfig.py: The overall configuration of running a simulation campaign.
    • SimEngine.py: Event-driven simulation engine at the core of this simulator.
    • SimLog.py: Used to save the simulation logs.
    • SimSettings.py: The settings of a single simulation, part of a simulation campaign.
    • Mote/: Models a 6TiSCH mote running the different standards listed above.
  • bin/: the scripts for you to run
  • gui/: files for GUI (see "GUI" section for further information)
  • tests/: the unit tests, run using pytest
  • traces/: example k7 connectivity traces

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages