# Optimization Algorithms in SDN: Routing, Load Balancing, and Delay Optimization
## 4 Specific Routing and Traffic-Related Algorithms in SDN
### Load Balancing Algorithms  
These algorithms are designed to optimize the distribution of network traffic across multiple paths or servers, thereby enhancing the network's efficiency, reliability, and scalability. Academic research [23; 24] into load-balancing algorithms focuses on developing methodologies that can dynamically allocate resources in response to changing network demands, ensuring equitable load distribution and minimizing congestion. The theoretical underpinning of load-balancing algorithms draws from various fields, including computer science, operations research, and applied mathematics. These algorithms typically aim to solve optimization problems where the objective is to minimize the maximum load on any given server or network path, subject to constraints such as capacity limits and priority rules. The complexity of these problems often necesstitates the use of heuristic or approximation algorithms to find solutions that are close to optimal within a reasonable amount of computational time. Several strategies underlie the functioning of load-balancing algorithms in SDN environments:  
Round-Robin Scheduling: This simple yet effective strategy cycles through a list of servers, assigning each new request to the next server in line. While not sensitive to server load or response time, round-robin scheduling is easy to implement and can work well in environments where servers are roughly equal in capacity and load. In [25], the incoming requests are handled each at a time by different servers. The environment was composed of a POX controller that managed a network designed with a Mininet emulator, where using specific mechanisms, the load distribution could be dynamically controlled based on the number of servers available and health conditions. Least Connections: This strategy directs new requests to the server with the fewest active connections, under the assumption that fewer connections correlate with a lower load. It is more dynamic than round-robin and better suited to environments with heterogeneous server capacities. In [26], [PERSON] and [PERSON] used on SDN frameworks various load balance methods such as Shortest Delay or Least Connection in order to do an extensive comparison on which of them is able to better reduce the delay and network load. The techniques revealed important aspects relative to the methods that can be used in load balancing for SDN networks. Focusing on web server applications, [PERSON] et al. [27] are focusing on enhancing the SDN network performance by exploring a scheme for load balancing. Using advanced load balance strategies, the research demonstrates that server efficiency and traffic handling can be improved in a significant manner. Weighted Load Balancing: Here, servers are assigned weights based on their capacity or other metrics, and load balancing decisions are made in proportion to these weights. This allows for a more nuanced distribution of traffic, accommodating differences in server performance. In [23], the weighted round-robin method was used to assign to every path a \"weight\" based on specific characteristics. Using this approach, the algorithm is allowed to distribute the requests in a proportional and sequential manner instead of making a distribution of the requests based on connection or sequence counts. Applying the method, it can be seen that handling capacities are enhanced by considering the conditions of load and server capabilities. The article in [24] presents an SDN implementation using a Weighted Load-Balancing algorithm that implements weights for the servers by assigning them static numerical values. Based on the value of the weight, each server will receive a lower or a higher number of requests (higher values mean more requests). It is a very good approach to modeling the traffic considering the capabilities of the network, and this can be translated into enhanced network performance and an optimal network load.