A Comprehensive Survey on Cloud Computing Simulators

Purpose: Cloud Computing is one of the upcoming technologies which has gotten the attention of many researchers and investor. But cloud computing still faces challenges because it is not economical and impractical for research institutions and industries to set up a physical cloud for research and experiments on it (cloud computing). Due to this, the researchers have chosen to test their contributions with simulators. Therefore, the purpose of this study is to perform a survey on existing cloud simulators. Methods: These cloud simulators aid in modeling cloud application through the creation of virtual machine, data Centre, and other things which can be easily added and configured to it in order to provide stress free analysis. Result: Till this present time, many cloud simulators with various features have been proposed and available for use. Novelty: In this paper, a comprehensive study has been performed on major cloud simulators by highlighting their features, strengths, and weakness through analysis. After which comparative analysis was done on the simulation, from the study, none of the simulators have the feature to simulate mobile cloud computing issues. This study has not been published anywhere else.


INTRODUCTION
Cloud computing is generally referred to as application and services which run on a distributed network with the use of virtualized resources and internet protocols which are requisites for its execution [1]. Over the years, cloud computing has been rapidly developing and gaining the attention of many researchers and investors [2]. This is as a result of evolution from the time of centralized mainframe computers, now to distributed client-server computing [3]. Though cloud computing commencement can be traced to the past two decades [2], there are still challenges being faced in cloud computing. Hence, it is considered to be in its early stages [4]- [6]. It is not economical and impractical for research institutions and industries to set up a physical cloud for research and experiments on cloud computing [4]. Hence, the available option is to perform simulations which for an extensive period of time, have been a core and commonly used tool in inferring the knowledge of impact design choices in systems because straight-forward experimentation is costly and not realistic (due to the system which has not been produced yet) [7]; thus simulation reduces cost, effort, probability of system malfunction, and also boost confidence. With the use of (Computational) Simulation, it is feasible to design and foresee the performance of machines, structures, and systems, it does not require the building of components in the real world [8]. Cloud simulators are obviously required for simulations in cloud computing [9].
The use of cloud simulator assists in modeling different kinds of cloud applications through the creation of data centers, virtual machines, and other utilities which can be constructed properly; therefore, making it stress-free to analyze. Till this present time, many cloud simulators had been proposed and developed and are being made used by various institutions for cloud research. These proposed and developed simulators have several features which made them to be different from one another. These features include the user interface, licensing, base programming language, extensibility among others. There are several papers in the literature which had studies different simulators such as [10]- [16]. The main objective of this study is to present a comprehensive review of various cloud simulators including the newly developed ones which are not included in the previous studies, thereby emphasizing their features and analyzing their strength and drawbacks and compare them based their features including orientation which is not included in the previous papers.
The use of simulator comes with several benefits such as cost minimization, in such a way that instead of purchasing hardware and software (e.g. operating system) which is costly; several simulators are available free of charge. Also, the use of simulator allows for easy repeatable and controllable experiments; since the experiments are simulated, there is no need of setting up the physical system over and over again [17]. The Simulator also provides a friendly environment for easy performance evaluation of different scenarios under different conditions [18]. This paper is separated into various sections; first, gives background about cloud computing and the importance of simulations and simulators in cloud computing. Then, the last section describes various cloud simulators that are available such as CloudSim, CloudAnalyst, GreenCloud, NetworkCloud, Ds-sim, NetworkCloudSim, GroudSim, SimIC, and MDCSim. This is followed by comparison of all Cloud Simulators with respect to different criteria in the last section, and finally conclusion was drawn in the fourth section.

CLOUD SIMULATORS
In this section, we described different cloud simulators that are being extensively used for cloud research simulations are described. Ten (10) cloud simulators are being described in this section.

CloudSim
CloudSim is a simulation toolkit for cloud computing environment written with Java programming language [16], [19]. It was developed at the Department of Computer Science and Software Engineering Department, University of Melbourne, Australia. It offers a wide-ranging structure that is used for the purpose of simulating and modeling cloud computing services. CloudSim contains simple classes which define data centers, users, applications, resources (computational), and policies for handling different components of the system [20]. It is motivated as a result of the need for a lightweight simulator-centered scheduling algorithm design. The main features of CloudSim are: • It allows modeling and simulation of virtualized server hosts and data centers.
• It also provides support for customizable policies for allocation of hosts to virtual machine's • Computational resources are managed in such a way that they consume power only when it is required to do so.
The main limitation of CloudSim is that it lacks Graphical User Interface (GUI), nevertheless, it is extensively used. There has been an improvement on CloudSim, an extension called Cloud Analyst which is now used for the visualization; but it is centered on online services rather than job execution, as a result, it can be said that CloudSim is an extensible toolkit. The CloudSim architecture is given in Figure 1 below [12]. Figure. 1 below describes the multi-layered design and implementation of CloudSim. At the bottom layer, management of applications, hosts of virtual machines, and dynamic system states are available. By extending the core virtual machine provisioning functionality, the Cloud provider can also study the efficiency of different strategies at this layer. As for the top layer, the User Code denotes the elementary entities for hosts, and through extending entities at this layer, a developer will be able to enable the application to generate requests in a variety of methods and configurations, model Cloud scenarios, implement custom applications, etc.

CloudAnalyst
CloudAnalyst is a graphical user interface-based simulator that provides support for the evaluation of social network tools based on the geographic distribution of users and data centers. Figure 2 shows CloudAnalyst Architecture. It was designed with the extended capabilities of CloudSim [21], [22]. CloudAnalyst offers a sophisticated simulation framework through Map Interface for deploying real-time data centers and monitoring load balancing, cloud cluster monitoring, and data center data flow in real-time. The major features of CloudAnalyst includes: • It allows repeated execution of experiments • The output is displayed graphically. iCanCloud is built upon different platforms including MPI OMNeT++ which uses C++ programming language, Núñez et al proposed iCanCloud [23] for cloud infrastructure. It is a simulator that is based on SIMCAN. In such a way that it can be used for the simulation of large storage network [24]. It is user friendly as a result of its extensibility nature which provides various extensibility options. The main features of iCanCloud are: • It allows users to simulate and model both existing and non-existing cloud computing architectures. • There is flexibility in its cloud hypervisor module.
• It provides the facility to simulate both uni-core and multicore systems through customizable virtual machines.
One of the main benefits of iCanCloud is that it has a complete hypervisor for different brokering strategies. iCanCloud presents its result both in text logs and graphical plot formats unlike other simulators. The major objective of iCanCloud is to predict the trade-offs between cost and performance of a given application.
The iCanCloud implements the structure shown in Figure 3 below, it is a layered architecture. The lower part of the architecture contains of the hardware models layer, which essentially encompasses the models that are in charge of modeling the hardware parts of a system. A group of system calls is linked with the hardware models layer in the basic systems API module. In which, a set of system calls are provided as Application Programming Interface for all applications run in a virtual machine. The upper layer is a virtual machine repository, that encloses a collection of virtual machines earlier defined by the user. The Cloud hypervisor is at the upper layer that is handling all produced jobs and the instances of VMs where those jobs are executed. As for the top of architecture, it contains a definition of the entire cloud system.

GreenCloud
GreenCloud is a packet-level data center cloud computing simulator. Contrasting other common toolkits, it uses aggregates and processes information of energy consumption in cloud data centers. It is an enhancement to NS2, written in C++ programming language. It can be used to develop state-of-the-art solutions for observing, resource allocation, scheduling of workload, optimization of communication protocols and network infrastructures. The main features of GreenCloud are: • A simulation-based environment is provided for energy-aware cloud data centers.
• It is an enhancement of the NS2 network simulator.
• All communication processes simulated on packet level are focused on it.
GreenCloud considers the distribution of workload and also implements a full TCP/IP protocol which allows the integration of various protocols for communication. GreenCloud structure could be described on the three-tier data center architectures as shown in Figure 4 below, which are the most popular architectures. Essentially, the architectures are comprised of access layers, aggregation layers, and cores layers. Servers are located at the access layer and in charge of task execution. Switches and Links form the interconnection fabric that transports workload to any of the computing servers for implementation at the aggregation layer. The core layer constitutes the workloads that can model various Cloud user services.

GroudSim
GroudSim is an event-based simulator developed by [25]. It was developed with C++ and OTcl programming languages. It centers majorly on IaaS (Infrastructure-as-a-Service) though it can also be used in other services like DaaS, PaaS, and TaaS. It provides a broad set of features for complex simulation situations from basic job implementations on leased computing resources to calculation of costs, and background load on resources.
Architecture of Groudsim is shown on Figure 5. GroudSim allows the users to simulate their work from a real application, unlike other simulators. Though both GroudSim and ds-sim can simulate on both largescale and small-scale systems, ds-sim also capitalizes on resource failures in order to aid the design of failure aware scheduling algorithms.

SimIC
SimIC was proposed in 2013 by Stelios Sotiriadis, for the purpose of simulating different inter-cloud activities [26]. It was developed with Java programming language using the SimJava package [2]. In recent times, various inter-cloud events are developed; therefore, exchanging numerous services between different cloud data centers and finally increasing the quality of services. None of the simulators described above can perform inter-cloud activities without extending the distribution package. It contains the entities of inter-cloud including users, data center, host, hypervisor, meta-brokers. SimIC makes use of ICMS algorithm for inter-cloud scheduling which relies on most of the distributed parameters.

DCSim
DCSim was developed with java programming language; it was designed basically for simulating virtualized data center deployed in the infrastructure as a service (IaaS) model [27]. It contains various hosts that are interconnected in such a way that each host has its own CPU scheduler and resource managing policy. It provides support for virtual machine migration between the host and replication of it. There is also support for sharing of workload between multiple virtual machines that are running multi-tier applications.

MDCSim
MDCSim which is referred to as Multi-tier DC Simulation Platform [28], it is a discrete event simulation with the design and analysis for large-scale multi-tier data center. The main focus of MDCSim is to measure power and analyze each layer of the 3-layer architecture (communication, kernel, and user) model as shown in Figure 6, and can modify any of the layers without affecting the remaining layers of the architecture. It can also be used for modeling hardware characteristics such as links between two communication nodes and switches linked with those nodes.
The limitations of MDCSim is that the user must have knowledge c++/java programming language in order to make use of it. It is also a commercial simulator which requires user to buy [23].

NetworkCloudSim
NetworkCloudSim was developed by extending the features of CloudSim in order to model communication between tasks [29]. It was developed to overcome the drawbacks of CloudSim such as single server architecture which is now insufficient. There are two levels of scheduling in NetworkCloudSim which are Host level and virtual machine level. NetworkCloudSim is in support of a real-world cloud application that includes e-commerce, HPC, and real workflow. NetworkCloudSim is suitable for simulating any networking protocol within the cloud.

Ds-Sim
Ds-Sim is a discrete event distributed systems simulator that was developed in recent times [30]. It was developed with python programming language. What distinguishes it from other existing simulators is that it majors on scheduling algorithm design, also most of the retrospective simulators address resource failures in a specific aspect which results in difficulty in a comprehensive study on system reliability. It has a GUI called ds-viz [19] which currently revolves around job scheduling because Ds-sim is considered to be a lightweight simulator when compared with other simulators.

COMPARISON OF CLOUD SIMULATORS
As described above in section 2, these simulators differ. In this section analysis and comparison are performed on the cloud computing simulators from various aspects.
The features used for the comparison between various Cloud Simulators are: Underlying Platform: Some of the simulators considered are based on the existing simulation framework. New simulation frameworks get some of their features from existing ones. Apart from GroudSim and DCSim, all are built on a particular framework.
Availability: This denotes whether the simulators are open source or commercial. SimIC is not available but the author mentioned any interested person can contact to get the simulation software.
Programming Language: This refers to the programming language used to develop the simulator. It is important because the user of the simulator needs to know the programming language.
GUI: This denotes whether the simulator makes use of a graphical user interface or not. Most of the simulator now makes use of the graphical user interface.
Simulator Time: This denotes the time it takes to execute during testing. Federation Policy: Several cloud service providers are situated in different geographical positions. Therefore, the federation policy allows the management of different cloud service provider that supports internetworking of application and workload migration to obtain high quality of service [31].
Orientation: This denotes the category in which the cloud simulator belongs. Table 1 below gives the summary of the ten simulators considered and compared using eight comparison metrics. None of the considered simulators provides a whole model of the cloud as it is too complex to implement. This could perhaps also go against the main purpose of simulation which is time gain. Nevertheless, each simulator has its own advantages in certain situations and some simulation tools are comparatively more complete than others. For general cloud computing modeling, CloudSim provides a flexible platform to model the cloud. Nevertheless, as a result of the various extensions proposed for this toolkit, it is hypothetically possible to merge components from various implementations based on the requirements which have been done in BigDataSDNSim. For example, all NetworkCloudSim classes (NetworkCloudlet, Switch, Host/Network Packet, etc.) have been encompassed in subsequent releases of CloudSim. On the contrary, making use of implementations from other extensions is not that easy and requires extra programming efforts. On the other hand, iCancloud provides a rich cloud model (except for physical server modeling) but is not commonly extended.
Based on their performance, many of the cloud simulators are developed with Java programming language which affects their scalability and performance. Though developing the simulation framework in Java comes with numerous advantages such as -portability, ease to extend, etc. Developing with C++ enhances the simulator scalability. Hence, though iCanCloud provides a more thorough simulation framework by comparison with CloudSim, iCancloud performs better than CloudSim when the cloud topology expands.

CONCLUSION
Simulation-based methodologies assist academicians, researchers, and industrialists to measure the performance of cloud computing systems, application behaviors, and their security. Several simulators have been proposed and developed up to date for performance analysis of cloud computing environments. In this study, cloud simulators have been described and compared to each other. But it is important to note that Mobile Cloud Computing is among the upcoming brands of cloud computing as a result of the massive increase in the number of mobile users [32]. But, from the above study, none of the simulators have the component and framework to simulate mobile cloud computing issues. Our future research will therefore extend to the upcoming field known as Mobile Cloud Computing.