# An SDN Focused Approach for Energy Aware Traffic Engineering in Data Centers
## 3 Optimization Problem
Equation (9) expresses the consumption of a link based on the power state defined by the traffic crossing each interface. This is a typical MIP (mixed integer programming) problem and the solution is relatively fast in case of small topologies with a limited number of devices and interconnecting links. Network topologies in DCs are much larger with a high number of nodes (hundreds of switches and thousands of links) and solving the above optimization problem becomes time consuming. Thus, CPLEX solver [25], a well-known solver for optimization problems and constrained programming for linear and integer programming problems, was used to apply a number of heuristics and produce a suboptimal solution in a timely manner. In addition, flows and capacity values are expressed as integers (bytes per second) to accelerate CPLEX execution times. CPLEX MIP solver applies a number of algorithms to automatically select the best method to solve complex problems. Our problem is by definition feasible since traffic loads can be served in the initial network state. That is, if links are operated on higher energy state, all constrains are fulfilled. In our work, CPLEX as MIP solver uses pre-processing and probing by setting all binary variables to either 0 or 1 and checking the logical implications. It automatically selects an appropriate Branch and Cut algorithm to solve the optimization problem. If heuristics are required, a neighborhood exploration search starts which is called solution polishing after the time limit is reached. Polishing is based on the integration of an evolutionary algorithm within an MIP branch and bound framework. Since we aim at practical implementations, we applied a hard time limit to the execution of the algorithm. A number of parameters were evaluated in order to get a solution in a timely manner. Initially we obtained a sub-optimal solution (that reduces the total power consumption) and then explored for a better one without violating the timing restriction. The CPLEX parameters evaluated are shown in the following Table 1.  
The first parameters were selected so as to fit the available hardware resources where CPLEX was executing. In more detail, _threads_ value was set to 8 to fully utilize available vCPU capacity of hosting VM. _Tilim_ was set to a value that can produce a viable solution even on large data set. _Mipephasis_ was set to feasibility mode in order to produce an initial suboptimal value given the timeframe and later search for the optimal value. _Probe_ was set to the highest possible value since the initial time spend looking for a suboptimal solution guaranteed that we could have power savings for all scenarios. The other parameter (_varsel_, _lbheur_ and _fpheur_) values were selected to fit the nature of the problem and the available input data. Multiple executions of the algorithm on the same data set were performed to find an optimal set considering the time limitations imposed in a production grade network environment. \begin{table}
\begin{tabular}{c l} \hline \hline
**Parameter** & **Description** \\ \hline \hline \multirow{2}{*}{threads} & \multirow{2}{*}{ \begin{tabular}{l} Manages the number of parallel threads used during the calculations (maximum value depends on the available CPUs) \\ \end{tabular}  } \\ \cline{2-2} \cline{1-2} \cline{3-3} \