4
load balancing algorithm that simultaneously considers
five selection criteria for its decision-making process.
3) Comparison of our proposed approach with traditional
methods that are commonly used in practice, which are
wrongly assumed to behave well in Fog environments.
4) Evaluation of our proposed load balancing solution in a
larger and more realistic setup to confirm our findings.
The rest of the paper is organized as follows. Section II
presents a comparison between this work and existing work
in the literature. We introduce the ELECTRE algorithm in
Section III. Section IV presents the generic architecture used to
evaluate the proposed solution. Section V discusses the results
and the superior performance of our approach. Finally, Section
VI concludes the paper and presents some future directions for
the work.
II. RELATED WORK
Increasing the performance of IoT applications using Fog
resources can be done in two ways: (1) Constructing Fog
infrastructures that match the expected IoT traffic in a system
[21]. (2) Allocating the resource of existing Fog infrastructures
to run IoT applications, and optimally distributing the load of
these applications to those resources in real-time. The first
approach works for geographical regions that do not have
existing Fog infrastructures. The goal here is to find the
optimal geographical locations of Fog nodes and to determine
their optimal resource requirements, i.e., CPU, memory, and
storage. In contrast, the second approach is more realistic as
we simply use the resources of existing hardware in the net-
work using optimal resource allocation and load distribution.
Before balancing the load in Fog environments, we need
to allocate Fog resources to distributed application modules.
This problem is also called the Fog placement problem, i.e.,
where to deploy service instances of IoT application modules.
The allocation of resources can be static or dynamic [22].
With static allocation, services do not migrate after their initial
deployments, while they can migrate during their lifetime
when dynamic allocation is used, which is more realistic in
dynamic mobile environments. In this case, efficient mobility-
aware bandwidth reservation schemes are required to support
real-time IoT applications to preserve the valuable and scarce
bandwidth resources [23]. In addition, the overhead of mi-
grating services and their associated data can be unacceptable
in realistic deployments, which is often underestimated in the
literature [24]. It can be ignored only when migration is done
on micro Fog services that are not associated with user data.
Velasquez et al. [25], for example, reduced network latency
in Fog environments by optimizing service placement using
Integer Linear Programming (ILP). The optimization is based
on the popularity of each application, i.e., the number of
requests for each application. Then, they proposed a faster,
but near-optimal, heuristic solution based on the PageRank
algorithm. Their results showed that the heuristic approach was
better in balancing the load between Fog nodes with latency
values close to those of the ILP optimal solution. They used the
YAFS simulator [26] to test their solution and compared their
results with the First Fit (FF) placement algorithm. However,
they only solved the initial placement problem, i.e., static
resource allocation, in Fog environments, which cannot adapt
to dynamic environments with mobile nodes.
The Fog placement problem was also addressed using other
optimization algorithms, including Genetic algorithms [27],
Particle Swarm Optimization (PSO) [28], Gravitational Search
Algorithm (GSA) [29], Monte Carlo simulations [30], and
linear programming [31]. However, solving the Fog place-
ment problem does not necessarily provide resiliency in the
system and it might require service and data migration to
support mobile networks, which introduces a huge overhead
in dynamic systems. Ni et al. [32] compared static allocation
strategies with dynamic resource allocation in the Fog, where
they filtered, classified, and grouped Fog nodes based on their
computing capabilities and their credibility. They considered
the price and time costs needed to complete the tasks along
with the credibility of end-users and Fog resources. However,
users or resources can have similar credibility, which can
cause sub-optimal behavior when breaking ties. In addition,
the dynamic nature of users’ and resources’ credibility can
cause deviations when calculating these values.
T´
ellez et al. [33] balanced the load between Fog nodes and
the Cloud by finding the optimal task allocation using an ILP-
based Tabu search method. They transformed multi-objective
optimization into a single-objective problem using the Pareto
Frontier method. They used a Task Scheduling Coordinator to
receive the tasks, schedule them, and assign them to suitable
computing nodes. Puthal et al. [34] used Breadth-First Search
to choose the best computing node in the network to improve
resource utilization and job response time in the system.
Xu et al. [35] balanced the load between Fog nodes based
on CPU, RAM, and bandwidth resources using static resource
allocation and dynamic service migration. Services were parti-
tioned to Fog nodes based on their type and predefined request
generation rates. They compared their approach with FF, Best-
Fit (BF), FF-Decreasing (FFD), and BF-Decreasing (BFD).
Pereira et al. [36] proposed a priority-based load balancing
algorithm with two predefined priority levels. They used a
centralized controller with a global knowledge of system
resources and workload requirements. The controller uses a
search table to select the best available computing node and
can create more nodes if needed. High priority tasks are sent
to the node with the lowest load and latency and the highest
number of cores and available memory. While low priority
tasks wait for nodes with low load or will be sent to the Cloud.
Pinto Neto et al. [11] compared their multi-tenant load
distribution algorithm with a delay-driven load distribution
strategy. They considered homogeneous Fog environments
with redundant services replicas. In their hierarchical archi-
tecture, a management node in the upper layer manages all
Fog nodes in the lower layer. It keeps a table for the resource
utilization in each Fog node as well as the communication
delay between adjacent nodes. When a Fog node receives a
task, it consults the management node to select the best node
to run this task based on its priority and delay requirements.
If all nodes are fully loaded, tasks are kept in a queue in
the management node. When a node becomes available, the
management node sends to it the task with the highest priority.