Skip to content

A highly configurable, open-source, discrete-event simulator for Delay-Tolerant Networks (DTNs)

License

Notifications You must be signed in to change notification settings

Chronos-Network-Simulator/ChronosSim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues Unlicense License wakatimec


Logo

Chronos DTN Simulator

A highly configurable, open-source, discrete-event simulator for Delay-Tolerant Networks (DTNs).
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact

About The Project

Product Name Screen Shot

Chronos is an extremely configurable, discrete-event simulator for testing Delay Tolerant Network implementations. Chronos is built with modular components that can be easy extended to support your own custom protocols and algorithms. Almost all parts of the simulation loop can be customized to fit your needs simply by extending few base classes.Easily view simulation results and restore from previos simulations along with the ability to step forward and step backward in time. Chronos also generates detailed graphs about numerous metrics such as message delivery ratio, message latency, and more.

Features

  • Highly Configurable: Almost all parts of the simulation loop can be customized to fit your needs simply by extending few base classes.
  • Fully Compatible: Chronos itself does not care about the underlying network protocol, allowing you to test any DTN protocol.
  • Easy to Use Interface: Beautiful and intuitive user interface to configure simulation parameters.
  • Live Preview: View simulation results in real-time with an efficient and optimized rendering system.
  • Custom Grids: Easily create custom grids with different node spawning algorithms.
  • Custom Nodes: Configure how you want each of your nodes to behave by simply implementing the send_message and receive_message methods.
  • Custom Message Types: Easily create custom message types by extending the Message class allowing for you to test different payload sizes and types.
  • Extensive Graphs: Generate detailed graphs about numerous metrics such as message delivery ratio, message latency, and more.
  • Simulation Restore: Easily restore from previous simulations along with the ability to step forward and step backward in time.
  • Concurrent Simulation: Run multiple simulations at once to generate less biased results. Chronos exports all individual simulation results as well as the combined results.
  • Multi-Processing: Utilize all of your CPU cores to run simulations faster.
  • Multi-Platform: Chronos is built with Kivy, allowing it to run on Windows, MacOS, and Linux.

Built With

Chronos was built using the following technologies:

(back to top)

Getting Started

Run the following commands to get a local copy up and running.

git clone [email protected]:Chronos-Network-Simulator/ChronosSim.git
cd ChronosSim
pipenv install
pipenv run python main.py

Usage

Modules

Chronos is broken down into numerous modules. Each module contains a BaseClass that can be used to extend the functionality of that particular module in Chronos.

  • Grids: Grids are used to spawn nodes in a specific pattern. You can create your own custom grids by extending the BaseGrid class.
  • Nodes: Nodes are the entities that send and receive messages. You can create your own custom nodes by extending the BaseNode class.
  • Messages: Messages are the data that nodes send and receive. You can create your own custom messages by extending the BaseMessage class.
  • Message Spawners: Message spawners are used to spawn messages in the simulation. You can create your own custom message spawners by extending the BaseMessageSpawner class.
  • Target Spawners: Target spawners are used to mark nodes as targets. You can create your own custom target spawners by extending the BaseTargetSpawner class.

Please refer to each specific BaseClass Docstrings for more information on each property and method.

Simulation Settings

Chronos exposes certain settings of the simulation loop itself for your configuration. These are:

  • Node Count: The number of nodes in the simulation. Future support will be added for Grids to be able to determin the number of nodes to be spawned and allow for dynamic node count.
  • Simulation Steps: The number of steps the simulation will run for.
  • Simulation Count: The number of simulations to run. This is useful for generating less biased results.
  • Simulation Delay: The delay between each simulation step in seconds. Use this to get a better visual understanding of what is going on in the simulation.

User Interface

Chronos splits the user interface into five major zones. Each zone is responsible for a different task and are logically separated.

  • Sidebar:

    Sidebar

    The sidebar will be your most used area. It contains the controls that allow you to configure the simulation and all its modules. When extending a base Module you can add your own custom properties with just one line and they will be automatically added to the sidebar.

  • Bottombar:

    Bottombar

    The bottombar contains the controls that allow you to interact with the simulation. You can start, pause, and stop the simulation from here. You can also step through the simulation one by one.

  • Topbar:

    Topbar

    The topbar contains controls related to active simulations. You can view the current simulation step out of the total simulation steps. You can also switch between the differnet concurrent simulations to view their current status. The topbar also allowss you to export graphs and simulation results. [TEMPORARY]

  • GridView:

    GridView

    The gridview is where the simulation is rendered. Dark grey nodes are nodes that have almost no messages. Bright red nodes have the heightest number of messages. The color of the node is determined by the number of messages it has relative to the other nodes. Green nodes are target nodes.

  • StatusSideBar (Coming Soon):

    The status sidebar will contain detailed information about the current simulation. This view will be configurable and will allow you to set what properties of your model you want to track and show here as a live preview.

(back to top)

Roadmap

  • Add Support for more Graphs
  • Add More Grid Types
  • Add More Node Types
  • Add More Message Types
  • Add More Message Spawners
  • Add More Target Spawners
  • Add a proper Settings page with theme settings, output directory settings, graph settings, grid live view settings etc.
  • Allow for node count to be handled by the grid rather than the simulation itself
  • Implement the StatusSideBar

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Note: This Project was created for a University Thesis. Not all features will be able to be merged due to plagiarism concerns. Please keep this in mind when contributing.

Top contributors:

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Guhan SenSam - @GSenSam - [email protected]

Developer Website: https://guhansensam.com

Project Link: https://github.com/Chronos-Network-Simulator/ChronosSim

(back to top)

About

A highly configurable, open-source, discrete-event simulator for Delay-Tolerant Networks (DTNs)

Topics

Resources

License

Stars

Watchers

Forks