Network-of-Systems Simulator (NoSSim)  is a network/system co-simulation framework that combines a fast and accurate host-compiled full system simulator  with a standard, reconfigurable OMNeT++ network simulation backplane. Detailed models of network interfaces and protocol stacks (lwIP) are integrated into host-compiled system and OS models to allow accurately capturing network and system interactions.
NoSSim is demonstrated with two IoT application scenarios with different set of network/system configurations.
examples/vision_graph -- Vision graph discovery, where the relative position and orientation among a network of smart cameras are estimated examples/ecg_diagnosis -- ECG monitoring, where raw ECG signals are used to detect heart arrhythmia
json/ -- JSON lib and configuration file template InstrumentLLVM/ -- LLVM function-level instrumentation pass, shared library for profiling and back-annotation lwip-hcsim/ -- lwIP stacks ported on SystemC-based OS model (HCSim) inet_extra/ -- INET patch for power/energy estimation examples/vision_graph/ -- The vision graph discovery example ezSIFT/ - The SIFT (scale-invariant feature transform) algorithm library networking_api/ - Networking APIs and runtime libraries (based on lwip and HCSim) src/ - Source code for application, system and network models examples/ecg_diagnosis/ -- The ECG monitoring example ecg/ - ECG diagnosis library networking_api/ - Networking APIs and runtime libraries (based on lwip and HCSim) src/ - Source code for application, system and network models
Building and installing:
- SystemC version 2.3.1 http://www.accellera.org/
- OMNEST version 5.0 http://www.omnest.com/ (alternatively OMNeT++ version 5.0 with SystemC integration http://www.omnetpp.org)
- INET framework version 3.4.0 http://inet.omnetpp.org/
Preparation before build:
- For setting up HCSim (included as a submodule), please see here
- Apply the INET patch (inet_extra) and rebuild INET framework
Preparation before running the example:
- Set the OMNeT++ path:
pushd /home/slam/OMNET/omnetpp-5.0; . setenv; popd
- Set the INET path by changing the INET_DIR in Makefile for each application
In general, you should perform a function-level profiling and back-annotation for the lwIP, ECG and ezSIFT library with the provided LLVM pass and helper functions in InstrumentLLVM directory. For the case studies included in this repository, we include profile data for different platforms so that you can directly try them out of box.
To build an example, change into the corresponding example directory and run:
cd examples/vision_graph make dependency make makefiles make
cd examples/ecg_diagnosis make test
-  Z. Zhao, V. Tsoutsouras, D. Soudris and A. Gerstlauer, "Network/System Co-Simulation for Design Space Exploration of IoT Applications," SAMOS, July 2017.
-  P. Razaghi, A. Gerstlauer, "Host-Compiled Multi-Core System Simulation for Early Real-Time Performance Evaluation," ACM Transactions on Embedded Computer Systems, 2014.
Zhuoran Zhao <email@example.com>