Introduction
We are fast entering the era of the Internet of Things (IoT), an era of "smart" and "connected" devices. IoT promises to revolutionize entire industries, indeed almost every industry, as well as our daily lifestyles, homes, vehicles and even our clothes. By connecting all types of things and making them "smart" IoT promises to unlock great efficiencies, reduce wastage, increase automation and safety, improve existing services and create new ones the likes of which have so far existed only in futuristic fiction. However, IoT's unique requirements need to be met before it can be deployed en masse and fulfill it's potential.
Over the last decade, moving storage, computation and control to the cloud has been the trend. Centralized data centers handle most of the storage and computation requirements, and along with cellular core networks perform most of the control operations as well. Naturally, this requires bandwidth over potentially large geographical distances (long-haul bandwidth) every time time devices need to communicate with the cloud.
More and more hitherto unconnected "things" are becoming "smart" and "connected" everyday. Conventional mobile devices like phones, tablets and laptops continue to get more and more powerful every few months. The new IoT devices also get more and more powerful, albeit at a slower pace. All of these devices are becoming less expensive, adopted across markets, and more embedded into mainstream culture, creating an explosion of connected devices and hence data. Cyber-Physical Systems like smart grids and connected cars are proliferating. Gartner and McKinsey predict a jump from the 6 billion connected devices we have worldwide today, to 20-30 billion by 2020. Intel and Cisco predict double that number.
Having all these devices and things constantly rely on the cloud for their computational, storage and control requirements is simply going to be infeasible due to the amount of bandwidth it will require and it's monetary cost. Besides the factor of bandwidth, there are other factors like latency constraints, intermittent connectivity and security which make a cloud only approach for IoT infeasible. These points will be elaborated upon in the coming sections; the takeaway is that IoT requires a fundamental rethinking of computation and networking models, and fog tries to address precisely this.
Given the huge jump in the number of connected devices and their constantly increasing computational capabilities, it has now become feasible to ask, "What can be done closer to the end users?". By taking advantage of the large number of reasonably powerful devices close to the end users - such as mobile phones, connected cars, edge routers, small cellular base stations, smart building controllers and smart home appliances - we shift a significant portion of the workloads currently handled by remote, centralized clouds to nearby, decentralized fogs. By moving many functions closer to the end-user devices, fog can meet the hard bandwidth, latency, connectivity, and security constraints of IoT and embedded AI at IoT scale. In the process of doing so, fog architecture implicitly uses many ideas needed to create the next generation wireless networks standard, 5G.