## 5 Machine Learning Algorithms for SDN
### Resource Management  
Network operators and service providers use resource management techniques to improve the performance of the network. SDN maximizes resource utilization using network-based resources management. Data plane level resource management includes the utilization of computing, networking, and caching resources. Networking resources include bandwidth, spectrum, and power, which are used to fulfill user QoE and QoS requirements. Caching techniques to store the most frequently requested data at the device end to remove data redundancy and reduce data transmission delay. Recent technology trends such as face recognition and augmented reality require high computation at the device end to enhance QoS and QoE. Due to scarce computation and battery capacity, the device resources fail to perform these computational tasks. One solution to offload such computational tasks is by deploying computing resources near the end-users using EC [169]. SDN networks are deployed in single and multi-tenant environments for the efficient resources management of data plane. In a single tenancy SDN network, a logically centralized controller manages all data plane resources. In a multi-tenancy SDN network, multiple tenants share data plane layer resources, SDN controller of each tenant manages their isolated resources. In the paper, [170] a framework for software-defined virtualized vehicular ad-hoc-network (VANET) is proposed that enhances the network performance using data plane resources allocation dynamically. A multi-objective optimization problem is formulated from the resource allocation problem. Deep Reinforcement Learning (DRL) algorithms are used to solve the problem and obtain policies regarding resource allocation. Solution of multi-objective optimization resource allocation problem is proposed for the case study of smart cities [170; 171]. Multi-tenancy SDN network-based resource allocation challenges in mobile network operators are addressed [172] in C-RAN. For this, a resource allocation problem is formulated as a non-cooperative game-theoretic problem. Each player selects an optimal set of mobile network operators using a learning algorithm based on regret matching to solve the problem. The computational offloading issue in mobile edge computing (MEC) is also addressed as a non-cooperative game-theoretic problem [173]. MEC servers are the players, and each player performs two actions, active and inactive. The optimization goal of each player is to minimize the consumption of energy. Each player learns optimal actions using RL based model. Network virtualization's latest advancements enable multi-tenancy SDN networks for sharing data plane resources using network hypervisor installation between the control and data plane. Each tenant manages its isolated network resource using a network hypervisor such as FlowVisor [174] and OpenVirteX [175]. Hypervisors use machine learning algorithms for efficient resource management. In paper [176], hypervisor's CPU consumption monitoring tool is proposed, which is named hvbench. Hvbench is a benchmarking tool used to measure the control message rate. Three regression models are trained to learn the correlation between control message rate and consumption of CPU. These trained models are used to detect the overload of network hypervisors in real-time. Control-plane resource management in SDN is done using the SDN controller placement, which has a significant impact on the SDN network performance. SDN controller processes traffic flows from switches installed at different locations. If the distance between network devices and SDN controller is long, the delay in traffic flow processing will be considered by the resource management. In literature, heuristic algorithms are proposed to solve the problem of controller placement, but these algorithms have a high computational cost. Thus supervised learning algorithms are used to obtain an optimal controller placement [177; 178].