After evaluating several simulation tools the project SAHARA decided to use OMNeT++ to simulate IEEE 802.15.4 networks. Within this framework the protocols 6LoWPAN and CoAP should be implemented over time.
OMNeT++ is an event-based simulation framework written in C++. It has a Graphical User Interface and has been released with an Integrated Development Environment.
There is a commercial version called OMNEST, but OMNeT++ is free for academic and non-profit use.
OMNeT++ can be extended with modules, which can be implemented in C++, C# or Java. Some modules like INET or MiXiM already exist, which support the TCP/IP-protocol suite and mobile wireless networks.
While using OMNeT++ we recognized an implementation level of some key protocols like IPv6 and UDP, which was not sufficient for our needs. Only a complete implementation of these protocols could be a base for our work to integrate 6LoWPAN and CoAP into an OMNeT++ module. The amount of work, we would have to put in, would be to big, so we stopped using OMNeT++ in our project, because of the shortcomings mentioned above.
COOJA is a simulation tool delivered with Contiki. Written in Java it can directly execute the C-Code written for our Contiki sensor nodes. This code can run native on the host device or alternatively in an emulated MSP430 environment. You have to make a trade-off here between simulation accuracy of the hardware and execution speed.
The node model in COOJA consists of the node type, its memory content and the connected peripherals. Pure JAVA nodes can also be used in a simulation to log packets or interfere with the radio traffic.
COOJA can be controlled via a JAVA GUI, which displays the simulated nodes and the radio traffic. You can also control COOJA automatically with scripts.
The possiblity to execute Contiki code directly in COOJA is a big advantage for our project.