Skip to content

A system level simulator for the Internet of Drones, based on ns-3.

License

Notifications You must be signed in to change notification settings

telematics-lab/IoD_Sim

Repository files navigation

IoD_Sim

IoD_Sim is an open source and system-level simulator for the IoD (Internet of Drones).

Developed on top of the well-known ns-3 (Network Simulator 3), it implements the key networking elements (drones, network access points, and Zone Service Provider), a standard-compliant communication stack based on the IEEE 802.11 and LTE technology, and scenarios with various mobility models.

The source code presents the implementation of models and examples scripts, also known as scenarios, that use such models to simulate a variable number of drones that:

  • Move according to the mobility model associated to the reference scenario.
  • Exchange messages with network access points deployed on a cartesian or geographic 3D space.

For more details on how IoD_Sim works and all its features, the following research publications are highly recommended:

Older publications that might still be useful:

You can head over to the Releases section to download a copy of a stable version of the software.

The IoD_Sim repository is where this software is developed and there are many ways in which you can participate in the project, for example:

IoD_Sim is primarily compatible with Linux-based operating systems. You can test it on macOS, altough we are not focused on providing first-class support for it. For macOS, Windows, or any other operating system, you are encouraged to use Docker, WSL or any other (pseudo)virtualization platform that can provide you a stable Linux-based work environment. You are welcome to provide new compatibility solutions any time.

Want to build scenarios through a GUI? Airflow is a Visual Programming Editor ad-hoc for IoD_Sim! It relies on splash to transpile C++ models in Python visual blocks.

Getting Started

The following quick start has been tested on Ubuntu 22.04 LTS. Please note that this process may be similar in other distros as well. In case of any difficulties, you are welcome to raise a pull request and propose some adjustments.

First of all, clone this repository, then open the folder with VSCode and execute the following tasks:

  1. Install dependencies,
  2. Integrate IoD Sim with ns3
  3. Configure IoD Sim
  4. Build IoD Sim

Otherwise, run the following commands:

./tools/install-dependencies.sh
./tools/prepare-ns3.sh
cd ns3/
./ns3 configure --enable-examples --disable-mpi --disable-python --enable-modules=iodsim
./ns3 build

To run a JSON scenario configuration, execute the following command:

cd ns3/
./ns3 run iodsim -- --config=../scenario/simple_wifi.json

Generate documentation

Before proceeding with the simulator, it may be helpful to generate the respective documentation. IoD_Sim relies on the Doxygen tool, which should already be installed with the other dependencies (if not, refer to the specific installation procedure for your distribution).

The documentation can be generated in HTML and LaTeX formats by running:

doxygen ./docs/IoD_Sim_doc

Working with docker

After creating your own scenario through the JSON file, you can use Docker to quickly proceed to simulation in a few steps. The first time, the container image must be built by running the following command in the main directory of the repository:

docker build . -t docker_iod_sim

Next, the simulation can be run by launching:

sudo docker run --rm -v ./results:/IoD_Sim/results -v ./scenario:/IoD_Sim/scenario docker_iod_sim [--help] <simulation_file_name>

When completed, the results folder will contain the results of the simulation. It should be noted that if a new scenario is placed in ./scenario, there will be no need to rebuild the container.

ns-3 compatibility

Each version of IoD_Sim relies on a specific release of ns-3. A compatibility table can be found below:

IoD_Sim version ns-3 version Build system Release date
v4.0.2 ns-3.42 cmake January 9, 2025
v4.0.1 ns-3.42 cmake June 5, 2024
v4.0.0 ns-3.42 cmake June 2, 2024
v3.0.0 ns-3.38 cmake April 4, 2023
v2.0.0 ns-3.35 waf April 12, 2022
v1.0.0 ns-3.30 waf October 27, 2019

License

Copyright (C) 2018-2025 The IoD_Sim Authors.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.