## 2 State of the Art
### Overview of IoT Simulators
#### 2.1.1 \(S^{3}\) and OMNeT++
For the purpose of simulating \"Smart Shires\" in conjunction with neighboring smart cities, they propose a more elaborated version of a multi-level simulation. Their general approach is a multi-level simulation in which a coarse detailed top-level simulation engine coordinates a set of domain specific simulators. A special point of interest for them is the interoperability between these different simulators and, of course, the inter-model operations. Subsequently, such a simulation is built for the use case of simulating a smart shire: The implementation comprises two levels. The top level is a time stepped agent based simulator. This Level 0 simulator describes the whole smart territory at a basic level where different entities produce wares, publish or subscribe to a multitude of different services, and move freely through the environment. Some of those entities are static while others follow specific mobility models. To ensure adequate parallel and distributed simulation capabilities, the authors used the \(S^{3}\) again. All the aforementioned entities are equipped with wireless devices. The interaction between them is based on the Priority-based Broadcast (PbB) Protocol. To decrease computational effort, the message forwarding is based on a minimum distance between the corresponding entities. Additionally, message caching is implemented. The level below is implemented using OMNeT++ in version 4.4.1 with the INET extension in version 2.3.0. The OMNeT++ models are realized as grids of fixed nodes as market sellers in the context of the smart shire scenario. Additionally, there exist N mobile nodes, which are injected into the model by the Level 0 simulator. These mobile nodes represent pedestrians that are equipped with WiFi and move with walking speed. The two simulation levels communicate through a TCP/IP connection that is created during the time; the lower level simulation runs. Through this connection, the top level simulator can send its continue simulation and end simulation messages while the parameters and results for the respective simulation are exchanged through a directory system on a hard drive. Since the Level 0 simulator is time stepped and OMNeT++ is a discrete event simulator, communication between the levels can only occur at the end of a Level 0 time step. Generally, [PERSON], [PERSON] and [PERSON] stated that, in the case of all simulators being time stepped, synchronization between the levels is eased when the top level time step is simply a multitude of lower level time steps. If none of the employed simulators were time stepped, special synchronization points would have to be introduced. To evaluate the efficiency of their proposed approach, the authors conducted a series of experiments. First, they examined the two simulators individually in terms of scalability. The hardware setup for the experiments was the same as in [8]. In addition, the parameters for the experiments with \(S^{3}\) remained the same as in [8], with the addition that message caching had been introduced. Generally, the test results also remained the same as in [8]. However, it turned out that the newly introduced message caching had no positive effect on performance gain, but the opposite. Additionally, [PERSON], [PERSON] and [PERSON] took a look at the peak virtual memory usage and the peak resident set size. However, they state clearly, that \(S^{3}\) was designed with focus on execution speed and not on effective memory usage. As a result, the authors found the memory usage to be acceptable. Finally, they conducted a series of experiments on the simulators dynamic partitioning capabilities and concluded that, with this technique, there was always a speedup to measure in comparison to static partitioning. However, this speedup was dependent on properly partitioning the model. Next, they evaluated the performance of OMNeT++. Each simulation run was the length of a single time step of the Level 0 simulation.