whitefield-framework / whitefield

Whitefield provides a simulation environment for wireless sensor networks by combining RF simulation provided by NS3 and network stack provided by popular IoT OSes such as Contiki/RIOT/OpenThread.
GNU General Public License v2.0
82 stars 24 forks source link
6lowpan contiki contiki-os iot iot-framework ipv6 ns3 openthread os riot riot-os roll rpl simulation-environment stack wireless-sensor-network wsn

Alt text

GitPitch [Setup & Regress Doc status Join the chat at https://gitter.im/whitefield-fw

Whitefield provides a simulation environment for sensor networks by combining realistic PHY/MAC layer simulation with the native mode use of popular IoT stacks/OSes such as Contiki/RIOT/OpenThread/Zephyr/FreeRTOS/OT-RTOS. Thus one can use existing stack implementation as is and test it on top of realistic RF simulation.

Whitefield uses PHY/MAC layer provided by popular simulators (such as NS3-lrwpan/PLC) and loosely couples it with the constrained network stacks supported by popular IoT OSes, thus providing the best of both worlds. It provides common visualization and OAM tools (logs, pcap, shell) which simplifies monitoring and troubleshooting.

Typical use-cases of Whitefield:

  1. Large scale realistic testing with real-world embedded stacks. Test thousands of nodes with realistic 802.15.4 and Power Line Communication interfaces.
  2. Large scale interop testing between different network stacks in same environment.
  3. Create reproducible work/experiments. Most of the experiments mentioned in the papers are difficult to be reproduced. Whitefield helps alleviate this issue.

Alt text

Terminology:

Airline: Airline refers to PHY/MAC/RDC implementation provided by third-party simulators such as NS3/Castalia-Omnet++. Provides configuration management and OAM tools which works across any third-party simulators. It interfaces with Commline to send/recv messages to/from Stackline.

Commline: Message queue and corresponding interfaces which decouples Airline and Stackline. All the messages, be it the network payloads or OAM messages are transported using Commline.

Stackline: 6lowpan/Network layer and above protocol stack provided by third-party IoT OSes such as Contiki/RIOT. A new platform is added in such OSes to interface with Whitefield. The protocol stack with application will be used as-is from these OSes.

Setup Instructions

Build Instructions (Native Install) ``` git clone https://github.com/whitefield-framework/whitefield cd whitefield ./scripts/setup.sh #This may take a while... make ```
Build Instructions (Vagrant Install with Ubuntu 18.04) ``` git clone https://github.com/whitefield-framework/whitefield cd whitefield vagrant up # <- step takes time vagrant ssh ```
Build Instructions (Vagrant Install with Ubuntu 20.04) ``` git clone https://github.com/whitefield-framework/whitefield cd whitefield IMG=focal64 vagrant up # <- step takes time IMG=focal64 vagrant ssh ```

Execute Instructions:

$ cd whitefield

#Start Whitefield
$ ./invoke_whitefield.sh config/wf.cfg

#Monitor whitefield status
$ ./scripts/monitor.sh

#View live network toplogy open http://localhost:8080/ in a browser
$ ./canvas/canvas.py

#Whitefield shell
$ ./scripts/wfshell help

#Stop whitefield
$ ./scripts/wfshell stop_whitefield

Work done in Whitefield