I assume from your question that you are looking at IaaS and PaaS. For a generic cloud simulator you need to at least have an API mimicking that of a public IaaS cloud provider (e.g., Amazon EC2). Billing models are also a must if you plan on simulating a public cloud. Any simulator should also have the ability to simulate VM allocation and scheduling on Physical Machines (PM). If you want to go further you need to allow for task to VM scheduling as well.To efficiently simulate VM and task scheduling you need accurate models for network and CPU usage/sharing. Take a look at SimGrid (http://simgrid.gforge.inria.fr/) for accurate models. Now I am further assuming that you want to let users experiment on this cloud so the best way would be to let them implement their own scheduling and allocation policies, and why not, billing models. To recap a good cloud simulator needs (at least):
1) API similar to a public provider or private platform
I assume from your question that you are looking at IaaS and PaaS. For a generic cloud simulator you need to at least have an API mimicking that of a public IaaS cloud provider (e.g., Amazon EC2). Billing models are also a must if you plan on simulating a public cloud. Any simulator should also have the ability to simulate VM allocation and scheduling on Physical Machines (PM). If you want to go further you need to allow for task to VM scheduling as well.To efficiently simulate VM and task scheduling you need accurate models for network and CPU usage/sharing. Take a look at SimGrid (http://simgrid.gforge.inria.fr/) for accurate models. Now I am further assuming that you want to let users experiment on this cloud so the best way would be to let them implement their own scheduling and allocation policies, and why not, billing models. To recap a good cloud simulator needs (at least):
1) API similar to a public provider or private platform