/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.

Primary LanguageCGNU General Public License v2.0GPL-2.0

Alt text

Build Status Join the chat at https://gitter.im/whitefield-fw

Whitefield provides a simulation environment for wireless sensor network by combining realistic RF simulation with the native mode use of popular IoT stacks/OSes such as Contiki/RIOT/OpenThread. 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) and loosely couples it with the constrained network stacks supported by Contiki/RIOT, thus providing the best of both worlds by simply glueing things. It provides common visualization and OAM tools (logs, pcap, shell) which simplifies monitoring and troubleshooting.

Typical use of Whitefield:

  1. Large scale testing of sensor networks
  2. Large scale interop testing between multitudes of stacks in same wireless environment. It can scale to thousands of nodes on general purpose server (even laptops).
  3. Validate RF phy/mac simulation against each other. For e.g. compare results in NS3 vs Castalia
  4. Regression tests using IdealAir(future).

Alt text

Terminology:

Airline: Airline refers to PHY/MAC/RDC implementation provided by thirdparty simulators such as NS3/Castalia-Omnet++. Provides configuration management and OAM tools which works across any thirdpaty 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 handshaked using Commline.

Stackline: 6lowpan/Network layer and above protocol stack provided by thirdparty 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

Tested on: Ubuntu >= 16.04 (xenial), Debian GNU/Linux 8.7 (jessie)

System Requirements:

Disk Space: ~1.5GB

sudo apt-get update
sudo apt-get install git graphviz build-essential

Build Instructions:

Assumes Airline=NS3, Stackline=Contiki (example app=contiki/examples/ipv6/rpl-udp)

git clone https://github.com/whitefield-framework/whitefield
cd whitefield
git submodule update --init
git submodule foreach git pull origin master
./scripts/setup.sh

Execute Instructions:

#modify configuration (for e.g. config/wf.cfg) as required
#Start Whitefield
$./invoke_whitefield.sh config/wf.cfg

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

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

#OAM commands
$./scripts/wfshell help

#Stop whitefield
$./scripts/wfshell stop_whitefield