  With the rise of the Internet of Things (IoT), fog computing has emerged to
help traditional cloud computing in meeting scalability demands. Fog computing
makes it possible to fulfill real-time requirements of applications by bringing
more processing, storage, and control power geographically closer to
end-devices. However, since fog computing is a relatively new field, there is
no standard platform for research and development in a realistic environment,
and this dramatically inhibits innovation and development of fog-based
applications. In response to these challenges, we propose the Fog Development
Kit (FDK). By providing high-level interfaces for allocating computing and
networking resources, the FDK abstracts the complexities of fog computing from
developers and enables the rapid development of fog systems. In addition to
supporting application development on a physical deployment, the FDK supports
the use of emulation tools (e.g., GNS3 and Mininet) to create realistic
environments, allowing fog application prototypes to be built with zero
additional costs and enabling seamless portability to a physical
infrastructure. Using a physical testbed and various kinds of applications
running on it, we verify the operation and study the performance of the FDK.
Specifically, we demonstrate that resource allocations are appropriately
enforced and guaranteed, even amidst extreme network congestion. We also
present simulation-based scalability analysis of the FDK versus the number of
switches, the number of end-devices, and the number of fog-devices.
