There is a handy set of white of papers that I do recommend starting with:
1. Fog Computing and the Internet of Things: Extend the Cloud to Where the Things Are (https://www.cisco.com/c/dam/en_us/solutions/trends/iot/docs/computing-overview.pdf)
2. Cisco Fog Computing Solutions: Unleash the Power of the Internet of Things (https://www.cisco.com/c/dam/en_us/solutions/trends/iot/docs/computing-solutions.pdf)
You can also have a look at " Fog Computing: Helping the Internet of Things Realize its Potential" (https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7543455)
Concerning the open source simulators for cloud computing, you can use CloudSim and there are many others based on CloudSim project such as RealCloudSim, DynamicCloudSim and many more (You can find more details here: http://www.cloudbus.org/cloudsim/).
Concerning the open source simulators for fog computing, you can use:a
1. iFogSim: enables modelling and simulation of Fog computing environments for evaluation of resource management and scheduling policies across edge and cloud resources under different scenarios (https://github.com/cloudslab/ifogsim).
2. FogTorchPI: A tool for probabilistic QoS-assurance, resource consumption and cost estimation of eligible deployments of Fog applications (https://github.com/di-unipi-socc/FogTorchPI/tree/costmodel).
3. EmuFog: Extensible and Scalable Emulation of Large-Scale Fog Computing Infrastructures (https://github.com/emufog/emufog).
I would like to answer second part of your query. There are various reasons why is the shift from cloud to fog is important i.e
Since cloud is centralized distributed paradigm, now and then becoming so congested and laggy due to the heavy workloads, load balancing becomes bottleneck situation. Also the high latency is one among the issues for real-time applications that cloud is facing. to get maximum out from cloud capabilities, CISCO introduced new computing paradigm i.e Fog, both fog and cloud offer the same functionalities but fog provide it with proximity and nearer to end users or edge devices. It act as an Intermediate between the end user/ edge device and fog tremendously reduce the latency issues that cloud is facing. As only the trimmed or fine tuned data is being sent to cloud, most of processing occur at fog nodes.
In IoT environment where the real-time based applications is the first priority, fog play great role in it
For More and detailed information please follow the links
1. OpenFog Architecture Overview. OpenFog Consortium Architecture Working Group. Accessed on Dec. 7, 2016. [Online].Available: http://www.openfogconsortium.org/wp-content/uploads/OpenFog-Architecture-Overview-WP-2-2016.pdf .
2.
[1]. Mohammad Aazam, Eui-Nam Huh, “Fog Computing Micro Datacenter Based Dynamic Resource Estimation and Pricing Model for IoT”, in the proceedings of IEEE 29th International Conference on Advanced Information Networking and Applications, March 2015.
As we Know, the number of devices has exploded many times (in billions because of IoT) and huge number of applications are hosted on cloud (which make many more calls over the network to each other). This has led to huge load and latency on the infrastructure. To reduce some of that load and considering the use cases wherein not all of the data needs to be fetched from the Data Centers of Cloud Vendors, Fog computing can play a role.
So in fog computing thousand of devices instead of requesting cloud servers for a resources can get that request fulfilled by a device much nearer to them and hence reduce network traffic and latency.
For more information you can follow given link below: