The IKR Simulation Library is an object-oriented class library for event-driven simulation implemented in Java. Primarily, it has been designed for powerful support of performance evaluation of communication networks. However, due to its inherent flexibility it has also been applied to assess software system performance or statistically evaluate traffic measurement traces.
Special emphasis is put on statistical analysis considering statistical significance. Therefore, a variety of sophisticated ready-to-use statistics and meters are available. This allows to directly obtain performance values instead of large trace files. Together with a large collection of continuous and discrete disctributions, this provides a powerful toolbox for the evaluation of many different types of models.
The IKR Simulation Library contains many basic components to simplify the modeling of queueing networks and communication networks, such as queues or servers. Moreover, packages containing more complex components, e.g. a TCP implementation and various packet scheduler models, have been developed on top of the library.
Key features and principle structure
- Tool box of basic components for system modeling
- Straightforward connection of components through port concept
- Flexible and almost unlimited extensibility
- Statistic classes for collecting results as an integral part of the library
- Comprehensive collection of distributions and traffic generators
- Easy configuration of simulation in order to perform parameter studies
Most simulation libraries focus on implementation issues rather than using abstractions from the problem domain. There is a semantic gap between the low-level abstractions they offer, such as process classes, and the problem-oriented abstractions the user wants. Also, most systems don't offer support for hierarchical systems. This makes it difficult to implement reusable submodels and components that can be further refined as the design evolves, which is an essential features for simulating complex systems.
The IKR Simulation Library is a flexible general purpose library for the simulation of complex hierarchical systems. The library is implemented in C++ and JAVA and uses high-level abstractions that are closely related to the problem domain. Therefore, users can easily map their simulation models to actual simulation programs. The library can be easily extended by taking advantage of C++/JAVA language concepts. It uses few basic abstractions and emphasizes a clean software architecture. The library supports hierarchical decomposition of simulation models into submodels and model components. Model components are strictly encapsulated and communicate with each other using a handshake protocol. This offers the ability to highly reuse standardized model components and quickly create or modify a simulation model using a 'plug-and-play' approach.
Based on the Summary of Hartmut Kocher's PhD thesis "Entwurf und Implementierung einer Simulationsbibliothek unter Anwendung objektorientierter Methoden - 59. Bericht über verkehrstheoretische Arbeiten"
Related Publication
An object-oriented library for simulation of complex hierarchical systems (PDF)
The last published IKR SimLib Java Edition was Version 4.0. This branch has received bug fixes as well as new features. Since Version 2.8 new features like a new parameter file concept and a new way to describe the simulation model was introduced. We use it in our current and all of our new projects.
In Version 4.0 we introduced new interfaces to handle the simulation time and reworked the statistic related classes.
Since Version 3.1 a new parser concept was introduced, allowing to easily extend existing parsers by own implementations. Also the concept of SimNodes has changed. New SimNodes should now only be created with the help of a static method. The last change since Version 3.1 is a reworked queueing interface, which allows to stack and combine different queues.
Supported platforms
The IKR Simulation Library requires Java 1.7 or later. It can be used with any Linux derivative and other Unix-like systems. Windows may work, but is untested.
For VMSimInt at least Java 1.8 is required. It can only be used with Linux or other Unix-like systems.
How to obtain a copy
We have put the IKR Simulation Library under the GNU LGPL (GNU Lesser General Public License). Alternatively you may license IKR Simulation Library under a different (non-free) license. Please contact the IKR for further details.
Currently SimTree is a binary only release. The source code may be provided in the future.
The components of IKR VMSimInt are partly licensed under the GNU GPL and the GNU LGPL. Alternatively you may license IKR VMSimInt under a different (non-free) license.
Latest Versions
Library | Latest Version | Download Link |
IKR SimLib | 4.1.1 | IKR SimLib 4.1.1 |
IKR SimLib Example | 4.1.0 | IKR SimLib Example 4.1.0 |
IKR SimTree | 2.7.0beta16 | IKR SimTree 2.7.0beta16 |
IKR VMSimInt | 20160622 | IKR VMSimInt 20160622 |
Online Class Documentation
You can access the documentation here
- Branch 4.0
- IKR Simulation Library 4.0.0
- Branch 3.2
- IKR Simulation Library 3.2.0
- Branch 3.1
- IKR Simulation Library 3.1.5
Manuals
A reference guide and a small simulation example is included in the download of the IKR SimLib.
Comparison with ns-2
We compared the results of the ns-2 and the IKR Simulation Library TCP implementations for standard scenarios and parameters. These results and some experiences during this evaluation are documented in a technical report compiled by guest researcher F. Querzola at the IKR.
Comparison with NSC and ns-3
During the development of VMSimInt we compared our implementation against the ns-3 in combination with the NSC. The results can be found in this publication (PDF).
Additional Resource
For more information concerning our IKR Simulation Library please have a look at the following documents or feel free to contact us at IKRSimLib@ikr.uni-stuttgart.de.
For several years, the IKR Simulation Library has been intensively used in various fields of communications research, e.g. on photonic, IP, ATM, and mobile networks.