# JSSTR: A Joint Server Selection and Traffic Routing Algorithm for the Software-Defined Data Center
## 3 Related Work  
In a traditional network, the server load balancing technology has some shortcomings (e.g., inflexibility of updating and high cost). However, as a different network architecture, SDN provides new solutions to many issues. Meanwhile, SDN has already been widely accepted as the next generation of network in academia and industry, which means that the server load balancing technology should be applied in SDN and re-designed using new technology provided by SDN. However, currently, only a few works have been done to research how to achieve server load balancing in SDN. An efficient SDN load balancing scheme was presented by [PERSON] et al. [11]. The key idea of that proposed scheme was distributing requests to different servers based on the response time of each server. More specifically, in that scheme, the controller periodically sends the packet-out messages to the switches. Then, the switches parse these packet-out messages and send the encapsulated requests to each server. Once the response is sent from the server, the switch will package that response into a packet-in message and send that packet-in message to the controller. After the controller receives that packet-in message, it will calculate the corresponding server's response time. Once all servers' response times are found, the controller will select the destination server using the following strategy. First, the maximum response time and minimum response time will be found and recorded as \(T_{max}\) and \(T_{min}\). Subsequently, if \(\mid T_{max}-T_{min}\mid<\lambda\) (a predefined parameter), the server with the minimum response time will be chosen as the destination server. Otherwise, the server with the minimum standard deviation in \(m\) historical data of response time will be chosen as the destination server. Compared with other approaches, this method uses the SDN controller to measure the server response time instead of adding extra devices to realize that. Figure 2: Illustration of SFLA. (**a**) At the beginning of Time Loop 1, 16 frogs are randomly generated and divided into four memeplexes (denoted by triangle, square, pentagon, and circle); (**b**) at the end of Time Loop 1, each memeplex is evolved; (**c**) at the beginning of Time Loop 2, all frogs are mixed and re-divided; (**d**) at the end of Time Loop 2, each memeplex is evolved. [PERSON] et al. proposed a server load balancing algorithm used in SDN [13; 14]. The proposed server load balancing algorithm first dynamically obtains the current load (CPU occupancy rate, memory occupancy rate and response time) of each server. Subsequently, the computation ability of each server will also be calculated. After that, the selection probability of each server will be calculated. At last, the server load balancing algorithm selects a server as the destination server based on that probability. Once the destination server has been chosen, related flow entries will be added in the OpenFlow switches [15; 16]. Then, the subsequent user traffic will be sent to the chosen destination server. A new probabilistic-based server load balancing method was proposed based on variance analysis by [PERSON] [17]. In that method, the SDN controller monitors the data traffic of each port, and the variance analysis is executed to analyze this traffic. Based on the analysis result, a probability-based selection algorithm is proposed to redirect the traffic dynamically. Using the Network Address Translation (NAT) technology, the presented server load balancing method can be implemented in SDN. The performance of several SDN load balancing methods was evaluated by [PERSON] [18]. The authors developed a comprehensive methodology for evaluating the SDN load balancers. The main steps of that methodology include the problem description, goals' definition, metrics' definition, evaluation techniques' definition, architecture definition, hypothesis definition, workloads' execution, results' analysis and results' presentation.