## 2 State of the Art
### Overview of IoT Simulators
#### 2.1.1 \(S^{3}\) and OMNeT++  
In [8], [PERSON] and [PERSON] proposed the concept of Smart Shires and stated the importance of simulation during development, in particular as means to validate the architecture before the deployment of a prototype. As requirements for their simulation tool of choice, they determined scalability and (almost) real-time capabilities. Furthermore, they stated that a multi-level simulation is required in most cases, since running the whole model on highest degree of detail would prove itself infeasible. Instead, they favored the approach of combining different simulators together, each one specializing on the domain to be simulated. More specifically, for the concrete case of simulating their smart shire concept, they aimed to combine a discrete event simulation engine with an agent based model. Subsequently, [PERSON] and [PERSON] developed the Smart Shire Simulator (\(S^{3}\)), based on the GAIA/ARTIS middleware. ARTIS is a framework, designed to enable seamless sequential, parallel, and distributed execution of large-scale simulations with a collection of different communication algorithms, such as TCP/IP, MPI or shared memory. It provides synchronization algorithms for pessimistic or optimistic approaches. The GAIA (Generic Adaptive Interaction Architecture) ([[http://pads.cs.unibo.it/doku.php?id=pads:gaia](http://pads.cs.unibo.it/doku.php?id=pads:gaia)]([http://pads.cs.unibo.it/doku.php?id=pads:gaia](http://pads.cs.unibo.it/doku.php?id=pads:gaia))) framework is used to simplify the simulation of scenarios in a parallel and distributed fashion by a high-level application programming interface, thereby reducing simulation time through strategies based on adaptive partitioning of the model. Subsequently, they subjected \(S^{3}\) to a performance evaluation in order to verify their aforementioned claims. The exact hardware setup for the tests can be inspected in [8]. The tests took place in a bidimensional toroidal space without any obstacles. The simulation space contains a given number of simulated entities, of which some follow the random way point mobility model, while others remain static. For their experiments, the number of simulated entities was in the range of 1000-32,000, of which 50% were mobile nodes. The speed of the random way point was uniform in the range of 1-14 space units/time step and the sleep time was set to zero. The interaction range between the simulated entities was set to 250 space units and the forwarding range to a value greater than 200 space units, while the density of nodes was set to one node every 10,000 space units2. The simulations were run for 900 time units, where one time unit equals one time step within the simulation. The time to live (TTL) of messages was set to four hops and the dissemination probability to 0.6. In a first test with only one CPU core and the Wall clock time as measure, the approach based on a sequential simulator proved itself as not adequate due to scalability constraints. The next tests focused on a parallel setup. In the range of moderate load (1000-8000 SEs), no speedup could be gained with only two cores, due to communication overhead. Within the range of heavy load, more cores could increase the speedup, but the performance gain was not as high as expected by the authors. They assume the reason for that is is the nature of the used model itself with only small amounts of computation per simulated entity, but a large number of communications between the simulated entities. The last experiments were conducted to evaluate a possible performance gain in the parallel setup with enabled adaptive partitioning. It showed that there was always a speedup compared to the static partitioned model. In [9], [PERSON], [PERSON] and [PERSON] expanded their approach of simulating sole \"Smart Shires\" to the simulation of the Internet Of Things (i.e., the combination of one or several Smart Shires with the surrounding urban areas).