  The Internet of Things (IoT) aims to connect billions of smart objects to the
Internet, which can bring a promising future to smart cities. These objects are
expected to generate large amounts of data and send the data to the cloud for
further processing, specially for knowledge discovery, in order that
appropriate actions can be taken. However, in reality sensing all possible data
items captured by a smart object and then sending the complete captured data to
the cloud is less useful. Further, such an approach would also lead to resource
wastage (e.g. network, storage, etc.). The Fog (Edge) computing paradigm has
been proposed to counterpart the weakness by pushing processes of knowledge
discovery using data analytics to the edges. However, edge devices have limited
computational capabilities. Due to inherited strengths and weaknesses, neither
Cloud computing nor Fog computing paradigm addresses these challenges alone.
Therefore, both paradigms need to work together in order to build an
sustainable IoT infrastructure for smart cities. In this paper, we review
existing approaches that have been proposed to tackle the challenges in the Fog
computing domain. Specifically, we describe several inspiring use case
scenarios of Fog computing, identify ten key characteristics and common
features of Fog computing, and compare more than 30 existing research efforts
in this domain. Based on our review, we further identify several major
functionalities that ideal Fog computing platforms should support and a number
of open challenges towards implementing them, so as to shed light on future
research directions on realizing Fog computing for building sustainable smart
cities.
