A Systematic Review of Load Balancing Techniques in Software-Defined Networking

The traditional networks are facing difficulties in managing the services offered by cloud computing, big data, and the Internet of Things as the users have become more dependent on their services. Software-Defined Networking (SDN) has pulled enthusiasm in the integration process of technologies and function as per the user’s requirements for both academia and industry, and it has begun to be embraced in actual framework usage. The emergence of SDN has given another idea to empower the focal programmability of the system. Because of the increasing demand and the scarcity of resources, the load balancing issue needs to be addressed efficiently to manage the incoming traffic and resources and to improve network performance. One of the most critical issues is the role of the controller in SDN to balance the load for having a better Quality of Service (QoS). Though there are few survey articles written on load balancing, there is no detail and systematic review conducted in load balancing in SDN. Hence, this paper extends and reviews the discussion with a taxonomy of current emerging load balancing techniques in SDN systematically by categorizing the techniques as conventional and artificial intelligence-based techniques to improve the service quality. The review also includes the study of metrics and parameters which have been used to measure the performance. This review would allow gaining more information on load balancing approaches in SDN and enables the researchers to fill the current research gaps.


I. INTRODUCTION
Software is a common word in the vocabulary of all most all the technologies, and its integration with the telecommunications and networking industry leads to emerging technologies like Software Defined Networking (SDN) [1] and Network Functional Virtualization (NFV) [2]. Along with the advantages, it also brings challenges as they are two sides of the same coin. These technologies require the networking components to embrace software within the hardware to manage them. Though the concept of having centralized control over the network is not new, a holistic view of separation of the control plane from the data plane has made the technical geeks gain insight. The capability of SDN to manage a majority of network components functionality efficiently has earned the confidence of service providers. OpenFlow [3] The associate editor coordinating the review of this manuscript and approving it for publication was Xingwang Li . and Path Computation Element [4] are two technologies supporting SDN. OpenFlow is a standard protocol recommended by the Open Networking Foundation (ONF), which separates the control plane from the switch and provides an interface between the control planes in the controller and the data plane in the switch [5] for communication. Path Computation Element (PCE) is supported by the Internet Engineering Task Force (IETF) [6] and is preferred for closed environments like data centres where the path computation is migrated from the networking component to the controller.
Vendor-specific devices and networks have become very difficult to manage due to cross network operational challenges. The heterogeneous devices are flooded with a sea of vendors providing frameworks, platforms, and end solutions to handle the increasing load. These devices function based on hard coding done for specific legacy networking. The routing protocols and the management issues and challenges still have more added overhead on the network. The solution providers [7] need an easy approach to adapt a platform by matching customer requirements so that the adaptability completes the process in quick turnaround time and be protocol friendly.
Load balancing is a method for assigning load to network components to optimize network performance and boost QoS. Load balancing techniques, strategies, and algorithms help both the end-users and service providers to assign or transfer the load to improve efficiency. Load balancing helps to predict the traffic bottleneck before happening. The load balancer [8] is like a network traffic control police.
Knowing the fact that load balancing improves the performance of SDN, there is a minimal review conducted in this area, and this prompted the authors to investigate more in this area. This paper mainly aims at examining the various conventional load balancing techniques as well as the artificial intelligence-based load balancing techniques in SDN to identify the issues to be considered in balancing the load efficiently and enhance the performance.
The authors in [9] have conducted a systematic literature review on load balancing techniques in SDN by examining a total of 19 articles published between the years 2013 and 2017. The articles were categorized into deterministic and non-deterministic approaches. Furthermore, the authors in [10] have surveyed 23 articles published between the years 2013 and 2017 based on nature-inspired meta-heuristic algorithms used to balance the load in SDN. The articles were categorized into ant colony optimization, genetic algorithm, particle swarm optimization, greedy, and simulated annealing. There were a significant number of articles published after 2017, and none of them has considered the articles published after that for review. Therefore, this paper conducts a systematic literature review on load balancing techniques in SDN by collecting the articles from various sources published between 2015 and 2019. Also, from Figure 3, it is evident that around 45% of the total number of articles considered for review are published in the years 2018 and 2019. The reason for considering the recent past five years publications is that the advancement in technology helps to propose and implement new techniques to improve the performance. Moreover, during this period, the development in the field of SDN has accelerated, which is going to have a major impact on future development and invention. Therefore, in this review paper, our significant contributions are: • We present a systematic literature review of load balancing techniques in SDN • We discuss the taxonomy of current trends in load balancing techniques by focusing on their improvements and limitations.
• We present the metrics used in measuring the performance of current approaches.
• We identify future research works, which forms the recommendations for current and future research. The objective of this categorization is to provide the basis for future research. The goal of the evaluation is to analyze and understand the prevailing techniques. This is necessary if further viable methods are to be established, which could improve current techniques or benefit from previous studies. A formal statement expanding through the parts is the next tentative brief part of the review. Section II describes the background of SDN architecture. Section III addresses the related reviews in SDN. The methodology adopted in this paper is established in Section IV, while Section V discusses the results and Section VI starts with addressing the research questions, discusses the various articles published by categorizing the current load balancing techniques based on the policy/strategy used, metrics used and finally puts forward the research trends and open issues in the field of SDN during load balancing, while Section VII summarizes the inference and makes suggestions in this direction for further research.

II. BACKGROUND
An Ethernet Switch [11] comprises of two key segments, the switching segment, and the software, or firmware. When a packet touches the base of one of the switch ports, the device confirms from the firmware what to do with the bundle. The firmware at that point investigates the target address on a rundown (called a MAC table), which contains all the devices that are at present associated with the switch and communicates with the equipment from which port to send the bundle out. This is the point where the SDN finds its way to better perform in the network by isolating the brain of the switch called the Control Plane from the forwarding equipment, or Data Plane. By setting this Control Plane onto a separate server rather than inside the real switch, it adds additional functionalities to the device. This new Control Plane programming moved towards becoming what is presently known as an SDN Controller, and the extra functions are executed as SDN applications that plugin to the controller.
This section focuses on the SDN architecture. Load balancing in SDN is done in different ways, either by applying artificial intelligence techniques or by using traditional or modified traditional techniques. Artificial intelligence techniques are rule-based that mimics human characteristics to implement real-time applications in the system. Eventually, the metrics used to assess load balancing efficiency are listed.
A. SDN ARCHITECTURE SDN architecture has three layers, namely the infrastructure layer, the control layer, and the application layer, which is illustrated in Figure1. Each of these layers performs specific functions and interact with each other using interfaces.

1) INFRASTRUCTURE LAYER
Starting with the infrastructure layer, it has all the physical network elements like a switch, router, openVswitch [12], wireless access point [13], etc. These devices' primary functions are to receive the request from the client and forward the data to the next layer, i.e., to the control layer. The data plane of these network components moves it to the controller FIGURE 1. SDN architecture [14].
in the flow tables by following the rules. The controller is the key element to define and install the rules in the switches.

2) CONTROL LAYER
The control layer is an intermediary between the lower and upper layers of the architecture. SDN controller [15] is a decision-making module in this layer to balance the load to improve performance. It is also responsible for configuring, managing, and controlling the network elements by communicating with them using flow messages. It offers an abstract and centralized view of the layer of infrastructure. Some of the examples of controllers are ONOS [16], Opendaylight [17], Floodlight [18], Beacon [19], Ryu [20], POX [21], etc. The control layer and the network layer interact using the southbound interface. Some of the southbound interfaces used are OpenFlow [3], Border Gateway Protocol [22] (BGP), SNMP [23], OVSDB [24], NETCONF [25], etc.

3) APPLICATION LAYER
All the end-user applications are in this layer, which has their network requirements and is passed to the control layer through the northbound interface. Some of the northbound interfaces are REST API [26], pyretic [27], Frenetic [28], Procera [29], etc.
SDN also allows full network access via a single programmable controller, regardless of whether the network is in the cloud or physically present. The interaction between the networking device and the controller is done through means of flow messages. Flow messages can be of different categories.
• Group flows: The controller configures the group, and that information is stored in the group tables in the network devices.
• Connection: An echo request and reply message are exchanged between the networking device and controller to verify whether the controller is active or not.
• Asynchronous: Asynchronous messages reach the controller via the networking system from the configured switch to remove the flow rule from the networking device, configure and apply failure, port up / down.

III. RELATED WORK
The ever-growing dependability of the users on cloud services has increased the load on the network. Managing the load has put many challenges for the research community, which grasped their interest to balance the load efficiently using software-defined networking. The current directions to program the network and to automate the process are dragging the researchers and the practitioners in the course of improving load balancing in SDN. Therefore, this review focuses and discusses the current load balancing mechanisms in SDN. The authors in [30] have proposed a mechanism to measure the real-time traffic when the requests are added into the network in passive mode. The increased overheads related to communication cost, controller computation is to be minimized and maintaining accuracy. The proposed techniques were implemented on both fixed and elastic schemas to verify its acceptability by overcoming the challenges related to overhead. Similarly, to balance the load efficiently, bandwidth is considered as one of the inputs. The growing demand for bandwidth and data transfer is also rising with the number of terminals linked in the network. Therefore, to address this issue, the authors in [31] suggested a load balancing framework for service-oriented SDN-SFC to improve network performance. The request was classified based on the type, and a priority was assigned to each service and then used a heuristic algorithm to decide on taking a specific transmission path among the service function chains available. Furthermore, this technique shortened data transmission time. It improved the degree of load balancing, too, while the other parameters like response time, size of the task, execution time, etc., which could affect the performance of load balancing were paid least importance.
Load balancing gained more importance in softwaredefined networking as the mechanisms used to affect the QoS provided to the users. QoS can be measured by considering the bandwidth, delay, jitter, and packet loss but not limited to only these. QoS is motivated by resource scheduling, network monitoring, and by routing mechanisms like flow routing, inter-domain routing, etc., and by other QoS oriented mechanisms. The authors surveyed the QoS in software-defined networking in [32] to identify the potential challenges in improving the QoS in SDN. However, the load balancing problem was not investigated here. Improvising the QoS in intradomain has always been the focus rather than interdomain autonomous system communication QoS provisioning. The main reason behind this is being the network administrators running their proprietary software and are not ready to share their policies. The authors in [33] have conducted a systematic literature review on handling big data applications in the field of healthcare. The vast data sets collected must be efficiently managed and processed by maintaining QoS, at high priority as the data is highly sensitive. In the survey, the authors have highlighted the areas for improvement of big data techniques in healthcare.
A systematic literature review on integrated NFV/SDN was conducted by the authors in [34] to understand the related architectures to address the challenges to improve the architecture designs further. The improvement in the architectural design of integrated NFV/SDN addresses the challenges of reliability, performance, and scalability in SDN. NFV and SDN are supporting technologies striving to provide a standard network solution. Providing network functions to the users at ease is one of the applications of SDN, while NFV utilizes SDN to provide programmable network function. In this review, though many issues of SDN were discussed in future research directions, load balancing was neglected. Without neglecting the prominent technologies related to SDN are cloud computing and Internet of Things (IoT). The authors in [35] have conducted a systematic survey on the integration of cloud computing and IoT. In the review, the authors have highlighted the challenges in the integration by presenting the possibilities for integration in terms of platforms and architectures, and applications. Also, the authors in [36] studied the integration of artificial intelligence in software-defined networking to identify the scope of improving various areas in SDN by AI-based mechanisms. Multiple fields of AI, like machine learning, metaheuristics, and fuzzy inference systems with the subfields in them, were investigated for the inclusion of AI in SDN. Many articles were reviewed, and it was discussed along with the purpose for which AI was included in SDN along with their findings. Very little focus was given on the inclusion of AI for the task of load balancing in SDN.
It is crucial to consider that these studies did not attempt to analyze the existing load balancing approaches and the available problems to be solved. Also, it lacks classification depending on the definition, and the critical role of load balancing within the SDN, specifically in a full literature review. In this article, five questions are formalized in the next portion, which explicitly illustrates the significance of load balancing for SDN, with a focus on the scope of improvements by considering future directions.

IV. METHODOLOGY
This section presents the methodology used in performing a Systematic Literature Review (SLR). Following the guidelines given by the authors in [37], the researchers have done an SLR with a particular focus on load balancing in SDN. Formulating research questions is a part of the SLR, and so the research questions, along with the motivating factors, are mentioned in this section. The articles have been selected from various data sources, as listed below. Furthermore, a specific search strategy has been stratified to get the articles in the domain, which is also discussed here. Later the research articles are selected for review after undergoing thorough scrutiny and after considering the inclusion and exclusion criteria specified below.
To identify the state of the art of load balancing in SDN, the following Table 1 lists the research questions and the motivations to raise such questions.
Research Questions: Data Sources: The articles from quality publishers like IEEE, Springer, Science Direct, Wiley, ACM digital library, Sage, Inderscience, MDPI, google scholar are collected for review, which is shown in the following Table 2.
Search Strategy: The focus on software-defined networking to improve the network performance and monitoring came into light from 2011, as this technology is much related to cloud computing. Moreover, in the beginning, significant research was not done in this area, so the articles considered for review here is from the past five years, i.e., from 2015. Based on the theme and the proposed research questions, we characterize the seeking watchwords as an initial step to figure the search string.
The researchers likewise considered the search terms ''load balancing,'' ''Software-Defined Networking,'' as the primary keywords. We used the logical operators ''AND'' and ''OR'' for associating the significant watchwords. In the long run, after a few tests, we pick the accompanying search string that gives us the adequate number of related research by considering the keywords mentioned in Table 3 and framed the search string as follows: VOLUME 8, 2020  Articles Selection Process: The methodology used in the article's selection process starts with framing the research questions. Framing the search string helps in the selection and search process. The articles published in the English language are considered. The PRISMA flow diagram [38] for the scoping review process is followed, which is shown in Figure 2. After finding fitting literary works, a review on load balancing techniques in software-defined networks is done in this research.
The search process closes in all respects by categorizing the load balancing techniques thoroughly to guarantee the completeness of this survey. Most of the articles were screened out since their titles did not apply to the determination criteria, or on the other hand, abstracts were not identified to be considered in this survey.   Figure 2, the underlying inquiry brought about a sum of 1219 articles published between 2015 up to 2019 from different quality publishers, as mentioned in table 1, using the framed search string. For choosing the significant related research, the inclusion and exclusion criteria are connected, which are specified in Table 4, and the articles were reduced to 592 articles. And based on their titles and studies based on their abstracts, the number of selected articles were condensed to 114. From that point onward, 114 articles were studied and entirely checked based on the content matching our categorization of conventional load balancing techniques in SDN or artificial intelligence-based load balancing techniques in SDN, resulting in 76 articles based on the content finally. Based on the set criteria, the essential research articles are selected after the match of title, abstract, and comprehensive published researches for guaranteeing that the outcomes are related to the current research work. Inclusion and Exclusion Criteria: From the articles which are selected for review, Figure 3 shows the number of articles published year-wise, which are selected for the study. Figure 4 shows the articles which were published by well-known scholarly publishers between 2015 and 2019. The articles are categorized based on the methods they have used as conventional load balancing techniques and artificial intelligence-based load balancing techniques and publisher. Finally, the number of published articles using conventional load balancing techniques was 49 after elimination. Out of which 24 were from IEEE, 13 were from Springer, five from Elsevier, two from Wiley, one from IET, one from ACM, one from Sage, and two from others as shown in Figure 4. Moreover, the number of articles published based on artificial intelligence was 27. Out of which 13 were from IEEE, five from Springer, two from Elsevier, one from Wiley, one from ACM, and five from others.

VI. DISCUSSION
The literature review has revealed the following facts and findings against each research question.
Q1. What are the challenges in traditional networks that led to the emergence of SDN?
The following are the challenges of traditional networks which are to be addressed using SDN. Challenges: • The rules in traditional networks are predefined as to decide on forwarding the packets to the destination. The network operators have a loose control on it, and so all the packets follow the same path. Once congestion [39] arises on the path, all the packets must pass by the same congestion without taking an  alternative route even though the alternative path is not congested.
• Lack of visibility into cloud and P2P applications for QoS [40] as the services are limited to port and protocol with policy-based routing [41].
• There is no centralized zero-touch provisioning and automation in the traditional networks.
• The high cost of MPLS links [44] and backhauled internet traffic usually do not carry security solutions.
• From the point of network topology, there are some connections between the switches which need many ports than the numbers of servers or end nodes. Adding another degree of network sophistication is the inclusion of virtual switches [45] with increasing complexity.
• In terms of scalability, the customers using IaaS [46] in the cloud perform a wide variety of applications where the traditional VLAN [47] technology does not support as they need logical separation from each other. However, the SDN supports scalable LAN segmentation to function in the cloud environment effectively. VOLUME 8, 2020 • In a traditional environment, the network operators cannot easily upgrade the infrastructure and face challenges in real-time as they must meet many constraints. At the same time, SDN can do in a short time with no additional hardware, thereby reducing the CAPEX and OPEX.
SDN addresses the above challenges, and the following are the advantages of SDN and the reasons for its fast acceptability.
Advantages of SDN: • Flexible and innovative: The networking components in SDN are scalable, making it for the administrator more flexible as the devices are vendor-free. Also, the provision of accessing the multi-vendor elements through a common interface makes it more innovative.
• Decoupling and Abstraction: SDN isolates the network performing functions from the hardware and places them in a centralized environment called controller, where abstraction can be done. The centralized controller supports the efficient management of networks by providing automation and orchestration.
• Centralized management and control: As all the control planes from the switches are moved to a single location, i.e., to a controller, it helps the administrator to have complete traffic control with accessible APIs to effectively handle them, offering a detailed image of the network as a whole. Network administrators may handle traffic loads without difficulty by configuring network code from a single unified controller instead of having multiple machines that are the speciality of Simple Network Management Protocol (SNMP) [48].
• Boosting network visibility: The network visibility allows the network managers to access all the components and helps in the identification and elimination of network errors. SDN caters the administrators to dynamically troubleshoot the delay in traffic flows and adapt to the changing needs.
• Better network security: The security benefits provided by the protocols using SDN are substantially more than the traditional networking protocols.
• Scalability: The switch from legacy technology like Multiprotocol Label Switching (MPLS) 49] to SDN helps to add the users and sites very fast. The performance not only accelerates on-premises but also on the cloud-hosted platforms too.
• Vendor free Environment: Different vendor administrations have their proprietary procedures and functions and are unique. SDN provides a single environment for all the vendors with a standard interface and having centralized control.
• Complexity: SDN reduces the complexity by providing an automated environment to configure and update the networks.
• Programming: The isolation of the control plane from the switches allows having centralized control by programming them and having an abstract view. It enables creating a generalized framework for multiple vendors to have a standard policy. Moreover, it gives scope to test and deploy a new network protocol to improve the functionality effectively.
• Reliability and QoS: Network faults can be easily detected and fixed by unified network monitoring of the system as there is centralized control. Traffic control allows the QoS of network operations to be accomplished.
• Low cost: With existing components and programming them to use has reduced the cost on the part of organizations.

Reasons for Fast Acceptability of SDN:
• Increased cloud usage is the primary reason. With more online connectivity, one crucial concern is that services and data are not managed at the same pace as in the local network today. SDN treats cloud-based services as network devices and thus offers a way of accessing and handling them.
• The other reason is client programmability. OpenFlow right now works with Python and different programming dialects, so the administrator can manage the devices connected and configure them according to the requirements by programming them. Above all this, standards are followed in customizing the network without waiting for the device manufacturers to build those functionalities.

Q2. How is load balancing beneficial for SDN?
This question is answered in two parts by first discussing the need for load balancing in SDN and then explaining the significance of load balancing.
The Need for Load Balancing in SDN: The servers in the network are getting piled with the load as the demand from the users is increasing. So, to provide a better service and fulfilling QoS requirements, the load must be balanced. If this concern is ignored, then it leads to failure of the links and sometimes server crash.
In comparison with the traditional networks, the switches have only data plane with them while separating all the control planes from the switches and moving them to a centralized unit called controller in Software Defined Networks. The extensive technical services provided by the internet are supporting the strategies of Industry 4.0 [50]; most of the traditional industries are moving towards being smart and intelligent. A large amount of data must be compiled and uploaded to the cloud to do so. While to access that data, the networking resources must be allocated dynamically and efficiently for better user satisfaction and better performance. Load balancing is a decision-making module to improve performance in a distributed environment. The load balancer can be either a hardware device or a software module that runs in the control layer of SDN architecture. Load balancing can be static as well as dynamic. In static load balancing, the requirements are predefined, and the rules are already set to follow and fulfil the requirements. However, this type of load balancing is not as efficient as the requirements of the users cannot be static in a real-time environment. Therefore, the need for dynamic load balancing arises. Moreover, dynamic load balancing does not need the requirements before, and the load is distributed based on the changing requirements. The function of a load balancer is the optimization of throughput to improve performance, with low response time, efficiently utilizing the resource with no deadlocks, and not imposing extra overhead on the network. However, with a single controller, there are problems regarding reliability and scalability. So, to overcome this problem, having multiple distributed controllers [51] is a solution when the east-west interface enables those controllers to communicate with each other. The issue of reliability can be resolved as a more significant number of controllers are available and can take over the tasks of a failed controller by the other controllers. In terms of scalability, the networking elements can be added to the times each controller can accommodate. However, the increasing load on each networking element is to be balanced and is an issue to be addressed.
Significance of Load Balancing: The three layers in software-defined networks communicate with each other using interfaces. On the one hand, the network devices present in the infrastructure layer forwards the requests to the control layer. On the other hand, the applications with burdens of various services in the application layer are to fulfil. So, to satisfy both the requirements, the control layer plays a central intelligent role. With the increasing demand of the customers over the cloud services, the number of requests from the clients is increasing, so this puts an increased load on the networking elements to handle them. Management of load raises a concern to efficiently balance the load with the existing infrastructure and gain the satisfaction of the customers by improving the QoS provided to them.
Q3. What are the existing strategies, policies, and algorithms used for load balancing in SDN?
This paper has classified the articles broadly as conventional load balancing techniques and artificial intelligence-based load balancing techniques based on the methods used in the articles selected for review from different sources.
Load Balancing Techniques in SDN: In this review, we explored the load balancing techniques and algorithms implemented by various researchers and sorted them based on the methodologies, which fall in one of these two techniques. Load balancing related problems include the analysis of requests from the network device, defining and mapping the flow tables, server response time, and finding a path to the destination. Based on the above criteria, 76 articles are selected for the review. Each article is discussed in terms of the technique used along with the problem addressed, advantages, and disadvantages. In this section, the findings are reviewed to perform load balancing in SDN by adopting either artificial intelligence-based technique or non-artificial intelligence or conventional technique. Conventional load balancing techniques are classical techniques which rely on symbolic logic and formalism and follows a top-down approach in problem-solving. On the other hand, artificial intelligence-based load balancing techniques are the techniques which mimic the outcome based on the pattern of previous behaviour. The problems are solved using case-based reasoning, rule-based systems, genetic models, swarm intelligence and hybrid models. Artificial intelligence-based load balancing techniques follow a hybrid approach in problemsolving. The objective of this categorization is the base to choose or enhance any one of the techniques in the future to balance the load in software-defined networks.

A. CONVENTIONAL LOAD BALANCING TECHNIQUES
The conventional load balancing techniques are the current techniques in use to balance the load. These techniques use the traditional algorithms for load balancing, and prominent of them include round-robin technique, equal-cost multipath routing protocol, least connections, random techniques, etc. Initially, all selected conventional load balancing techniques with their characteristics are discussed in Table 5, and later, the metrics used to measure the performance are presented in Table 7.
The researchers in the above Table 5 have proposed conventional load balancing techniques to balance the load. The authors in [52] balanced the load with a focus on the controller. The incoming traffic is balanced using Virtual SDN (vSDN) controller duplication and share the load. For example, in a vSDN network, one application in the master controller will periodically assign virtual IPs to other controllers, and the master controller then maps virtual IPs to actual IPs. The addition of vSDN controller plays the role of virtual network function (VNF), where the copy of the controller is the same as that of the first controller, and the existence of both the controllers are made transparent to all the cloud users. While in [94], using the distributed controllers, the proposed mechanism splits the traffic into transmission control protocol (TCP) and user datagram protocol (UDP) and uses a failover mechanism to create high availability environment leading to guaranteed reliability. Furthermore, in [54], when a message from a controller's flow rule arrives in TALON, the flow rule first becomes a physical context, which translates the target switch and the virtual address into a switch and physical address. Then TALON collects the trajectory information for each tenant and assigns the performance by using multi-path calculations, which consider the required throughput and bandwidth available for each link. Finally, flow rules are created based on the calculated paths, and TALON sends messages from the flow rule to the appropriate physical switches. In [71], the load balancer takes over the prioritizing of QoS flow requirements and transfers them to the controllers based on weight coefficients. If there is a connection between the traffic streams and the network, they are classified as two major traffic types: critical (realtime) and non-critical traffic (non-real time). To ensure QoS, the priority procedure provides that the controllers process   critical traffic before non-critical traffic based on necessary data on the packet header. To identify the unloaded controller and concurrently call switch relocation, the authors suggested strategies for controller adaptation and migratory decision using the medium network load in [96]. A migration index factor is used to pick the target controller that shows the difference between migration cost and variance in load among idle controllers. To handle the traffic coming from communication-intensive applications, the authors in [75] tackle this difficult problem by adding a programmable middlebox that can spread traffic equally. The middlebox is a Clos network architecture that utilizes SDN to maximize capacity utilization, thus maintaining QoS. To learn the traffic distribution and serve, the Middlebox SDN controller collects information from switches and servers and processes them intending to improve bandwidth utilization and minimizing latency.
Moreover, the controller placement technique proposed in [58] describes first the overall flux function costs that take into account switching weights, routing costs from a switch to the controller, and routing costs for intercontrollers. Next, with a known number of controllers, a controller-based load balance factor is proposed, which results in the positioning and linear function of the load balance factor and total flow demand cost of the controllers. Some studies on the control system placement problem have now been carried out in SDN from various areas such as delay, capacity, reliability, and load balance. The issue of placement of the controller from delay and load balance is discussed in [69]. The authors have conducted a study for a specific topology, to minimize the average delay or the worst delay of all control paths, to select the places of multiple controllers regarding load balance. The authors in [90] suggested that multiple controllers are a solution to reduce latency between controller and switch. However, balancing the load on such controllers and deploying them at correct locations is a challenge that was addressed by them using a hierarchical control architecture. The controller and switch placements were adjusted to balance the load better. According to simulative findings, the proposed technique proves to be efficient in terms of migration costs and balancing the load.
Furthermore, the multi-controller deployment algorithm proposed in [99] balances the load among the controllers placed in different regions. Moreover, the controller placement was decided based on the least number of switches present under the controller within an area considering the topology. In [83], the mechanism used by the authors was the implementation of a hierarchical control plane, both a meta control plane and a local control plane in a multi-controller SDN environment for optimizing the processing performance. The authors in [100] proposed a novel algorithm for multi-controller placement based on different parameters. Initially considering latency, clusters are formed, then the isolated nodes are eliminated to maintain connectivity, and then load balancing has been carried out.
Considering switch migration, some researchers have proposed techniques to balance the load. In [53], two methods were introduced, one for the requests to process which do not arrive in a serial manner named BalCon and the other called BalConPlus to handle different types of requests. In either case, the migration of switches is minimal and reduces the migration cost and balances the load effectively. The authors in [84] proposed Flow Stealer, the lightweight method for load balancing distributed SDN controllers. Flow Stealer uses a low-cost flow stealing method by stealing flow events, which allows idle controllers to temporarily sharing workloads with overloaded controllers. The proposed method not only reacts more quickly to network traffic changes, but it also reduces the switching frequency. Flow Stealer often involves flow theft and turn movement to respond to traffic congestion and long-term shifts in behaviour. The researchers in [76] focus on minimizing cost and time of migration and proposes an algorithm for migrating optimally. The calculated values are compared with the threshold to trigger the proposed technique. In [91], the authors presented a new way of load balancing SDN networks to improve load balance by reducing the response time of the server. The higher the load on the cluster, the longer it takes to respond, the higher the servers in a server cluster have several similar performances and offer the same service. The longer the response time, the larger the load. Based on the duration of the response, the load balance problem in the server cluster is solved. The authors in [60], [67], [82], [86], [97] have used dynamic load balancing techniques to perform load balancing and optimize the use of resources by finding the shortest path to reach the destination and also improve the QoS performance.
With the advent of energy harvesting technologies, green energy can be used by Base Stations (BS) to reduce power demand on the grid. The traffic load balance is essential for mobile grids with high BS density to take advantage of small cell base stations (SCBs) capacity. Green energy use should be incorporated into traffic load balancing strategies as a performance measure to use harvested energy fully. The authors in [66] proposed a distributed algorithm to balance the load and minimize the overhead by utilizing green energy. For the load balance of the LTE and Wi-Fi integrated network, an appropriate network coordination mechanism is required. The proposed technique in [85] provides a right base station selection (e.g., LTE evolved node BS or Wi-Fi access points) for user equipment (UE) for load balance using the access network discovery and selection function (ANDSF). The ANDSF is integrated with software-defined networking (SDN) to make the ANDSF network more programmable, flexible, and dynamically manageable.
Furthermore, an ANDSF (PSA) power-saving algorithm is proposed for the proper assignment of network resources to UEs and reduced Wi-Fi access points (APs) power consumption. In [92], a centralized LTE RAN (SD-LTE-RAN) framework and new QoS Aware Load Balance (QALB) algorithm are proposed to address load imbalance problems. The QALB algorithm takes several neighbour cells, UEs, and QoS profiles and expected outputs of neighbouring cells into consideration in making load-balance choices. The proposed mechanism [98] adopts the distribution and centralization methods and design a double threshold load allocation by using hybridflow in a wide-area wireless network environment within multiple controllers to balance the load effectively. To optimize the resource allocation, the authors in [77] proposed an Extensive Messaging and Presence Protocol (XMPP) based cross-domain load balancing mechanism(CDLB) for SDN in the Cloud data centre. Unlike the polling method, the proposed scheme is an XMPP-based push model that prevents the wasting of network and computer resources in a broadly distributed network environment. The proposed system requires all controllers on the centralized control level to communicate in real-time, utilizing XMPP and the XMPP publication / subscribe extension, the same compatible global network details. The authors in [80] introduced an SDN-enhanced Inter-cloud Manager (S-ICM) that assigns cloud-based network flows. S-ICM contains two primary parts: surveillance and decision-making. For monitoring, S-ICM uses an SDN control message which observes and collects data and decides on network delay in packet measurements.
Round-robin is a technique based on the queuing model. The incoming requests are assigned to the server for a fair amount of time and avoid the problem of starvation. It incurs overhead as the requests which do not complete execution within the quantum of time allocated has to be saved and wait for the turn on a cycle basis. Sometimes the priority requests also have to wait for the resources to be allocated. The authors in [73], [78], [79], [87] have either used the method or modified versions directly by adding weights or considering the least time needed to perform load balancing.
Based on routing and re-routing, various techniques have been proposed by the researchers to balance the load. The proposed method in [68] employs re-routing if the use of the bandwidth falls below and the loss reaches a specified value, the algorithm begins and balance the load by re-routing some traffic to a new path with lower use of the bandwidth. In [88], the return request from the webserver to the application is not included in the load balancer. This ensures that the server explicitly reacts to the request, thus improving performance. The authors in [74] proposed a framework across an Open-Flow to enhance video streaming service quality, where the controller program manages the complex load of the system and dynamically re-routes to low loaded servers when surge situation is observed. The authors in [59] proposed two new heterogeneous LTE vehicle networks (LTE-V HetNets) to improve the transmission performance of beacon messages. The study focuses on LTE-V HetNets with the mechanism for uplink-downlink disconnection. The software-defined network (SDN) architecture is built into LTE-V to achieve centralized control. The SDN framework proposes the centralized usefulness function-based algorithm that allows global load equilibrium to be achieved through the self-adjustment of the number of vehicles connected to each base station. The problem caused by overburdening or congestion in a specific access point (AP) is alleviated in [61]. It depends on the mobile station being forced to transfer to another AP in the overlapping area between APs. It works in three phases; AP load calculation, AP load monitoring, and forced delivery phases. Furthermore, in [55], a hierarchical geographical routing protocol was proposed by the authors based on the concept of SDN in vehicular ad hoc networks to identify the vehicle density in each grid and evaluate the cost function to balance the load with minimal cost path. Since individual routing adjustment strategies often take a remarkable amount of time in the software-defined network (SDNs) to achieve load balance and network stability, the authors in [65] provides two different routing adjustment strategies-the global and partial, for reducing the time consumption. It takes less time to achieve the desired load balance because, as opposed to individual strategies, it rearranges the optimal path once. In a significantly reduced period compared with different approaches, the global strategy will, at the same time, adjust the routings to achieve the desired load balance. Network congestion is a result of increasing load on the network and degrades the QoS. So re-routing the traffic is a solution, where the authors in [56], [62], [70], [72], [93], [95] have used and modified the flow rules to improve the degree of load balancing.
The authors in [57] adopt a load balancing mechanism based on the hierarchical control plane. Considering the controller factor and switch factor, the total load of each controller is estimated. Then the proposed mechanism moves the load from the high-loaded controller to a quick charge controller with switch migration. In [63], the authors suggested MBalancer, a simple load balance program for Memcached, that can be integrated seamlessly into Memcached software-defined networks (SDN) architectures. MBalancer functions as an SDN device that duplicates hotkeys on a variety of (or all) servers. The SDN controller updates the SDN transmission tables with SDN ready-to-use load balancing functionality.
The researchers in [81] used information allocation flow requests strategy, considering the current load and propagation delay of idle controllers. The idle controller is assigned part of the flow request information with a minimum of flow delay and propagation requests. The overloaded controller triggers the load balancing based on the magnitude of the table to avoid incoherence of network status. Secondly, an adaptive service-sensitive load balance mechanism is designed to determine the service types through the northbound interface and periodically observe the network state. The adaptive load-balancing algorithm is suggested, and the connection weight dependent on QoS-aware is implemented, which tests the maximum efficiency of the link by collecting the QoS in real-time. In [64], the authors proposed an SD-WiFi network load balance scheme called adaptive connection and hand-off (ACH), which considers the overload and hand-out process together to balance the load. Moreover, in [89], the authors suggested a self-adapting load balancing (SALB) scheme, which dynamically manages load between multiple controllers through multiple moving switches from source to goal controllers. The critical feature in the framework is the efficient transfer of load under high loads while also considering the difference between switches and having control.

B. ARTIFICIAL INTELLIGENCE BASED LOAD BALANCING TECHNIQUES
Artificial Intelligence-based techniques use a metaheuristic approach to solve real-world problems. The sub-areas of artificial intelligence include deep learning, neural network, natural language processing, knowledge representation, reasoning (logical and probabilistic), and decision making with search, planning, and decision theory. Initially, all selected artificial intelligence-based load balancing techniques with their characteristics are discussed in Table 6, and later, the metrics used to measure the performance are presented in Table 8.
Artificial intelligence-based load balancing techniques provide better learning abilities and foster decision making in SDN. The various techniques used by the researchers, as shown in Table 6, states the policy used in balancing the load along with the problem addressed as well as the advantages and disadvantages of each of the techniques proposed. In this section, a description of how each of the techniques was used will be discussed.
Some of the researchers have used a heuristic approach in migrating the switches from highly loaded controllers to low loaded controllers while fulfilling the task of load balancing. The authors in [101] present a heuristic approach to solving the migration problem. Swap movements and shifts are integrated into a search scheme. The value to both immigration and exit controllers is measured at every move. In comparison to current methods, when a switch migration is not feasible, the suggested algorithm will not halt the search. Instead, it searches for more complex movements such as switching two keys to boost more performance. In [126], the authors proposed an SDN based publish/subscribe (SDNPS) system that can build and finalize subject-related overlays efficiently and without redundancies, based on a global topology overview, to disseminate events. It organizes and codes the subjects into binary strings, as a Huffman tree so that SDN-configurable switches can run filtering and forwarding events to reduce end-to-end latency. This hierarchical organization of the huffman tree allows the construction and storage of overlays, which lessen the computing process time and space complexity.
The researchers in [104] used optimization technique for load balancing and also minimizing congestion running in four phases. Initial two stages create sub-topology, which improves the performance by reducing the space. In the third phase, the process to balance the load is implemented, and the last phase does a post-processing task of creating paths and injecting corresponding flows in the switches. The online controller load balancing (OCLB) technique proposed in [102] focuses on balancing the load by reducing the average response time of the controller. The switch migrations are done considering the distribution of real-time application  with a dependable parameter aimed at decreasing response time. The optimal solution is dependent on the conditions for termination and migration where OCLB determines. The authors in [107], genetic-based optimization technique to minimize the load imbalance in software-defined elastic optical networks, and reduce the cost of service delay. It works in three phases. Initially, the optimizer selects the available solutions. Secondly, the defragmentation algorithm verifies the feasibility of each solution, and finally, the power budget algorithm evaluates the validity. The optimization techniques are merged with other methods to give the best solutions like in [112], the authors merged the ant colony optimization technique with dynamic load balancing technique with each of them serving their purpose. The dynamic load balancing technique is used to find the least loaded server, and the optimization technique is used to find the optimal path to reach the server.
Furthermore, the authors in [122] utilized the strength of a genetic algorithm with ant colony optimization to generate the best solutions in handling the load imbalance and convergence latency. Another optimization technique is the particle swarm optimization (PSO), in which the solution convergence rate is fast. The authors in [110] have used a modified PSO to balance the load in the wireless Internet of Vehicles. The purpose of this technique is to efficiently find the vehicular nodes when the remaining energy is less so that the power consumption is reduced, and the delivery of information is reliable. Karush-Kuhn-Tucker (KKT) conditions are the necessary constraints that are to be met to guarantee a limited local minimum optimum. The authors in [120] used the KKT conditions to find the optimal controller in the process of balancing the load. Demand and supply curve based SDN (DSSDN) is used to know the load factors, and then KKT conditions are used by OpenFlow device to improve response time and make optimal decisions efficiently. The authors in [114] use a support vector machine (SVM) to classify the traffic based on priority. Markov Chain Model (MCM) is used to predict the load of controllers and using Type-2 Fuzzy based Particle Swarm Optimization (TFPSO) optimal controller is selected. The researchers in [116] have considered hybrid routing by joint optimization problem and first proved it to be NP-Hard. Then Rounding-based Route Joint deployment (RRJD) algorithm is used to solve the problem and improve the network performance. The authors in [125], proposed a two-level fast re-routing technique to solve the mixed-integer linear programming (MILP) optimization problem and puts forth the primary and secondary paths and ensuring load balancing.
The authors used three functionalities, which include path selection, significant nodes, and flow prediction using intelligent algorithms in [108]. Deep Neural Networks (DNNs) and Q-learning are used for path selection. Network traffic information is complicated and cannot be distributed according to a specific probability. So DNNs are appropriate than the probability to process traffic. The results of DNNs are used to find an optimal route. Then the significant nodes are identified, and later flow rules are predicted to prevent abnormal flow blocking off the path.
Similarly, the authors in [113] used a backpropagation neural network and K-Mean cluster to train the network and forecast if the user would access the networking device in the future or not. The queuing model used in [117] to verify whether or not the flow rule is present in the switch to reach the destination for a new request. The offload manager (OM) in this technique predicts the future paths by executing the proposed algorithm considering the delay threshold. Using the binary tree concept, the authors adjust the networking elements load in [111]. Wild card rules are used to adjust the IP address and are distributed to different regions. Then a dynamic algorithm is run to update the flow table considering the server utilization. The researchers in the SDN system utilizes a form of load balancing to provide network congestion management in [124] by finding the best path using Dijkstra's algorithm.
Fuzzy logic is another subset of artificial intelligence, which is used to solve the load balancing problem in SDN. The authors in [115] used a fuzzy function to analyze the parameters affecting the server load. SDN control feature is used for monitoring server data in the entire network and program the virtual server functions. Servers freeze and restart to have an increased performance, which balances the load and energy consumption dynamically. The authors proposed a similar kind of technique in [123] by measuring the performance using other metrics and ensuring load balancing with improved network performance.
The authors in [106] explicitly describe the load balance and low delay route deployment problems for the control connection and illustrate NP-hardness to improve QoS by taking the control link constraints and other data plane restrictions in SDN into consideration. The issue of performing controller load balancing and link load balancing is formulated as NP-Hard in [118]. The rounding-based algorithm is proposed to solve the problem and provide better scalability and reduce the load. Similarly, other authors in [119] suggest partial flow statistics collection (PFSC) problem to be NP-Hard. Load balancing is done to reduce the overhead caused due to flow re-routing and obtain an optimal solution by considering the quality of flow statistics. The authors in [121] use the Analytical Hierarchical Process (AHP) method to assign the flow to each controller, considering various constraints. The controllers are organized as global and local. The global controller handles cluster formation and the local controller handles local device load and clustering is updated timely.
Game theory is another subset of artificial intelligence used to handle social situations among competing entities. This concept has been used by the authors in [109] to balance traffic across a cluster of SDN controllers. The proposed algorithm trains the network to learn the appropriate flow rate from switch to controller in attaining Wardrop equilibrium and converges to stable policies resulting in balancing the load. Similarly, in [103], the authors proposed a load balancing approach which is noncooperative and learns Wardrop equilibrium. The SDN Proxy receives the requests, and these proxies forward the request to the controller using the proposed method. Better load balancing is achieved by migration, which is one of the solutions but involves overhead. The authors in [105] have used a greedy method to have an efficient switch migration, thereby balancing the load. Whenever there is a load imbalance, it is triggered by a metric, and then the migration is done by evaluating the tradeoff between migration costs and load variation. The authors in [127] have proposed a framework to balance the load in SDN using switch migration. The target controller selection is made considering multi-criteria. Decision analysis is conducted by using a method called ''Technique for Order Preference by Similarity to an Ideal Solution'' to identify the controller nearest to the ideal solution to migrate the load.
Q4. What are the parameters and metrics considered during load balancing in SDN?
In this segment, we discuss the metrics and criteria used for the study of load balance efficiency in the current studies. It helps to assess and know its comparative performance and consider the advantages and disadvantages of it, and to equate it to previous methods. Such criteria apply to consistency parameters. During the review, 21 metrics have been identified and are discussed below. The metrics used by different researchers in each of their techniques used by conventional load balancing and artificial intelligence-based load balancing are listed in Table 7 and Table 8, respectively.
Metrics Used for Assessing the Load Balance Efficiency in SDN: For load balance in the SDN, the following qualitative criteria are described.
1. Throughput: The rate of successful requests processed in a unit of time from the source to the destination an as throughput [52].
2. Response time: It is the time difference that the request was sent, and when it addresses the start of processing [53], [128].
Response time = abs request i (sub time start time ) (2) where sub time is the time at which the request is submitted, and start time is the time at which the request starts to process.
3. Execution time: It is the difference of time at which the request completes or finishes the processing and the time the request starts to process [80].
where finish time is the time at which the request has been completed processing, and start time is the time at which the request starts processing. 4. Round Trip Time (RTT): Round trip time is the time taken by a packet to move from source to destination and back [71]. RTT is a necessary performance measurement element because it is the time to wait until an ACK is transmitted before a segment is retransmitted. If the estimated time for the round trip is below the actual time of the round trip, segments are transmitted earlier than the authentic phase or if the corresponding ACK has spread through the network. If the duration of the round trip is too high, timeouts are longer than necessary and are therefore less successful. 5. Resource utilization: It is measured as the efficient use of the resource to process the request, and the objective is to maximize the most important resource in processing the request [129]. The resources can be either CPU or memory or Input/Output or network or bandwidth.
ResourceUtilization = n i requesti Execution time MaxrequestExecution time (4) 6. Delay: Time taken by a packet to move from node to node is called delay. There are different types of delays like communication delay [130], routing delay [131], processing delay [132], migration delay [133]. 7. Packet delivery ratio: The ratio of the total number of packets received at the target to the total number of packets sent at the source [55] is termed as packet delivery ratio. 8. End to End delay or Latency: End to End delay [134] is the time taken by the packet to transit from the source to destination in a network. It includes the transmission delay, propagation delay, and switch delay caused by the switch while forwarding the packet.
where EED is the end to end delay, TD sr is the transmission delay at the source, PD is the propagation delay, TD dt is the transmission delay at the destination and SD is the delay at the switch. 9. Energy consumption: The amount of energy consumed by each node in the network to process a request irrespective of whether the processing is a success or a failure is called energy consumption [66], [135], [136]. Energy consumption is minimized if load balancing is done effectively. 10. Packet loss rate: The total number of packets not reached by the number of packets sent to the destination is called packet loss. The rate at which the packets loss [137] is known as a packet loss rate. The objective is always to have a low packet loss rate to ensure efficiency. 11. Degree of load balancing: It is a metric used to measure the distribution of load on the networking element. This metric can be measured using several indices like Jain's fairness index [82], [106] and load balance rate [96], [105], [113]. 12. Number of migrations: It is the number of times the packet is shifted from one switch to another in the path of reaching the destination. To have an efficient performance of communication, the number of migrations should be less [53], [84], [102]. 13. Migration cost: Migration costs [105] includes the exchange of message costs and load costs between the networking elements. To deliver the packet to the destination, some switch needs to communicate with the other switch, which is termed as message costs and to have a balanced load between switches or controllers, the cost incurred to transfer load between switches or controllers is termed as load cost. 14. Overhead: Excess cost, time, space incurred during communication is termed as overhead [81]. 15. Uplink/downlink rate: During the process of communication between the networking elements, the speed at which the packets are transmitted is said to be uplink/downlink rate [106]. 16. Threshold miss probability: Duan et al. in [117], have defined a metric called threshold miss probability, to measure the delay in 5G heterogeneous networks. The likelihood of a WiFi network not meeting the latency requirements of service is specified as a threshold miss probability. The threshold error likelihood should be reduced to improve the performance at the end of the customer. 17. Peak load ratio: The maximum traffic load on each link is termed as a peak load ratio [119]. 18. Jitter: The difference in the latency of packet transmission from one networking element to the other is known as jitter. When there is congestion in the network, jitter is increased [120]. 19. Re-association time: In the process of WiFi load balancing based on SDN, the authors in [82] have defined a metric called re-association time, where it is the time taken to associate the client stations to a lightly loaded access point (AP) decided by the controller. A huge re-association time results in massive data transfer, which consumes enormous computing power by the SDN controller. 20. Availability: Availability [94] is characterized as the positive communication ratio of controllers and servers that exclude servers and control errors.
In the above equation, S f is the socket failure, Time_out is the time spent by the controller waiting for the 98628 VOLUME 8, 2020 message, and C t is the number of attempts made for connections. 21. Concurrency: It is defined as the number of mutual communications provided by the server, as given by the authors in [94]. The function of concurrency decreases with the decrease in server efficiency.
This study focuses on the qualitative metrics having an impact on load balancing in SDN. The metrics like response time, throughput, end-to-end delay, packet loss ratio, latency, degree of load balancing, migration cost, resource utilization are used as qualitative metrics. From the conventional load balancing techniques, considered in our study, it is evident from Figure 5 that the metrics considered are qualitative. It shows the number of times each metric was used to measure the performance in different conventional load balancing techniques. The count of response time is 10; throughput is 26; the end-to-end delay is 7; packet loss ratio is 12; latency is 11; the degree of load balancing is 17; migration cost is 7; resource utilization is 10, and others contribute to a total of 16. Similarly, from the artificial intelligence-based load balancing techniques, considered in our study, it is also evident from Figure 6 that the metrics are qualitative. The count of response time is 10; throughput is 12; the endto-end delay is 4; the packet loss ratio is 7; migration cost is 2; latency is 9; the degree of load balancing is 9; resource utilization is 4, and others contribute to a total of 16 as shown in Figure 6.
Additionally, Figure 7 shows the number of times each metric was used in each year in different conventional load balancing techniques. Similarly, Figure 8 shows the number of times each metric was used in each year in artificial intelligence-based load balancing techniques.
Q5. What are the research trends and open issues that are unaddressed in load balancing in SDN?
SDN has been facing challenges of tremendous scale off late. Though there are several industries like banking, insurance, manufacturing, healthcare, central / state government,   transportation, education, customer services, etc., telecommunications stand on the top as it connects all the industries mentioned above by allowing to network and communicates with each other. SDN is deployed in different ways in the VOLUME 8, 2020 industry. However, the central concept is to manage the network function with a centralized controller keeping the forwarding plane with the hardware device itself.
Trends and Open Issues: The following are some of the trends and issues in SDN. Further SDN functions are responsible for the administration, monitoring, and engagement of a network transfer cluster within a distributed architecture. A failure of one controller can be taken over by the other to keep the networking function active by reducing the risk of failure, but still, there is an overhead of shifting a load of the failed controller to the active ones. The degree of overhead reduction in migration of load has not been considered in the current techniques, which can be explored in the future. And in an environment where there is only one centralized controller, the failure of risk is higher as the entire network comes down with the failure of the controller.
The load balancing on the SDN controller and the lag of contact between controller and switches are a severe challenge to SDN. In an environment where there is one centralized controller, the load increases significantly with the increase of users or applications accessing the services. Very little research has been done with a focus on traffic-aware load balancing, and none of the researchers have considered the requests coming from delay-sensitive data applications. The connection establishment requests and the exception of the traffic increase on the controller cause high communication delay, which can be considered as future direction to reduce it. Another challenge from the point of load balancing is that the load should be distributed considering the efficiency of the switch. The load migrations from one network element to others is done as the intermediate element is nearer to the destination. However, this results  in high response time as the load difference, as well as the traffic estimation, was not considered in the previous research. Therefore, future work in this direction is very interesting.
Messages are shared between switches and controllers during the process of load balancing. During this process, the messages are not free of threats, and there is every possibility that the messages get attacked by various threats. So, to handle this challenge, there should be some secured co-operative mechanism for proving the authenticity of messages in the platform to manage them smartly, which has not been considered in the current techniques and is another future direction. The OpenFlow rules updating problem is another exciting challenge to address as the rules need to be updated based on the dynamic network behaviour.
Fault-tolerant rules are to be developed to support this robust approach. Also, the impact of default rules to act in forwarding the flow table to controllers and software switches increases the processing delay. Various versions of OpenFlow support flat table, multi-level table, and pipeline processing, and to take the best advantage, the issue of a specific rule to be placed in a flow table must be given attention. Therefore, the combination of prediction of flow rules and the controller placement problem from past experiences is another direction for future work to be addressed to optimize network performance. Energy efficiency has grabbed the attention of the researchers while performing load balancing in SDN. The topology framing and cluster formation play a significant role while the communication is carried out between the nodes. So, an efficient cluster formed along with cluster head rotation can be considered further while the intra-cluster and inter-cluster communication are performed, to reduce energy consumption. With the growing demand for SDN virtualization, cloud services have attracted the attention of industry and academia. Network Function Virtualization replaces the networking elements with the software-based functions on giant volume servers at the data centres. The question of how and where to place these network functions to enable NFV to the cloud users to balance the load efficiently has not been taken into consideration in the present works and can be considered as future work.
Another challenge can be from the point of the data plane because traditional switches may not easily support SDN due to evolving standards. Therefore, a hybrid approach can be used in this scenario by partially implementing SDN in accessing the network, while the other part is still doing a core network. To implement SDN immediately, the SDN enabled platforms can be in actual switches while the traditional platforms are in intermediate nodes without supplementing the entire network. Furthermore, an interface to communicate between them is another future direction. Very little research has been done in load balancing using artificial intelligence-based techniques. In contrast, a combination of two or more techniques resulting in a hybrid approach can be used effectively in balancing the load as a future direction, making it very interesting.
The researchers in the current techniques have used a few parameters to access the QoS, but not all. So, as a future direction, all parameters can be considered to measure the QoS efficiently. The application of SDN architectural principles to a WAN network is termed as Software Defined Wide Area Network (SD-WAN). And the challenge it has put forth is to manage thousands of sites ensuring service delivery and scalable security by compelling and providing cost-effective technology for the enterprises and the service providers. With massive centralization and inefficient load balancing mechanism, both the users and service providers are struggling, as observed from the current research. So, as a future direction, while load balance proliferation in SDN is essential, the mechanism must be optimized.

Limitations of This Review:
This review has considered a limited number of databases, Journals, and Conferences. Further, a limited number of keywords, strings have been used for the searching of literature. The articles published before 2015 have not been included in this review. Mainly, this review focuses on only load balancing issues and not on any other related issues in SDN.

VII. CONCLUSION AND RECOMMENDATIONS
This paper provides a systematic review of load balancing techniques and algorithms used by different researchers. The selected papers are categorized into conventional and artificial intelligence-based load balancing techniques based on the methodology used to solve the load balancing problems in SDN. This paper also discusses the issues addressed, strategies used, and solution results. Based on various studies considered in this study, we find that multiple techniques did not consider some essential criteria and that enhancing the efficiency of the existing techniques is crucial. This study allows network administrators, service providers, and end-users to undertake additional research in the future to improve the efficiency in load balancing in SDN.
Software-defined networking is an emerging architecture that should efficiently balance the load for better network performance and improving QoS. Further work on the target distribution of services with finite resources is needed. Also, extensive research on load balancing schemes concerning the green optimization of the data centre is recommended. This review aims to provide a possible path for further study in load balancing in Software-defined networking.