  Fog computing has emerged as a promising technology that can bring the cloud
applications closer to the physical IoT devices at the network edge. While it
is widely known what cloud computing is, and how data centers can build the
cloud infrastructure and how applications can make use of this infrastructure,
there is no common picture on what fog computing and a fog node, as its main
building block, really is. One of the first attempts to define a fog node was
made by Cisco, qualifying a fog computing system as a mini-cloud, located at
the edge of the network and implemented through a variety of edge devices,
interconnected by a variety, mostly wireless, communication technologies. Thus,
a fog node would be the infrastructure implementing the said mini-cloud. Other
proposals have their own definition of what a fog node is, usually in relation
to a specific edge device, a specific use case or an application. In this
paper, we first survey the state of the art in technologies for fog computing
nodes as building blocks of fog computing, paying special attention to the
contributions that analyze the role edge devices play in the fog node
definition. We summarize and compare the concepts, lessons learned from their
implementation, and show how a conceptual framework is emerging towards a
unifying fog node definition. We focus on core functionalities of a fog node as
well as in the accompanying opportunities and challenges towards their
practical realization in the near future.
