<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">
    ojapps
   </journal-id>
   <journal-title-group>
    <journal-title>
     Open Journal of Applied Sciences
    </journal-title>
   </journal-title-group>
   <issn pub-type="epub">
    2165-3917
   </issn>
   <issn publication-format="print">
    2165-3925
   </issn>
   <publisher>
    <publisher-name>
     Scientific Research Publishing
    </publisher-name>
   </publisher>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="doi">
    10.4236/ojapps.2024.148149
   </article-id>
   <article-id pub-id-type="publisher-id">
    ojapps-135439
   </article-id>
   <article-categories>
    <subj-group subj-group-type="heading">
     <subject>
      Articles
     </subject>
    </subj-group>
    <subj-group subj-group-type="Discipline-v2">
     <subject>
      Biomedical 
     </subject>
     <subject>
       Life Sciences, Chemistry 
     </subject>
     <subject>
       Materials Science, Computer Science 
     </subject>
     <subject>
       Communications, Engineering, Physics 
     </subject>
     <subject>
       Mathematics
     </subject>
    </subj-group>
   </article-categories>
   <title-group>
    Optimising Energy Consumption in SD-DCN Networks (Software Defined-Data Center Network)
   </title-group>
   <contrib-group>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Narcisse
      </surname>
      <given-names>
       Tahi
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff1"> 
      <sup>1</sup>
     </xref>
    </contrib>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Etienne
      </surname>
      <given-names>
       Soro
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff2"> 
      <sup>2</sup>
     </xref>
    </contrib>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Pacôme
      </surname>
      <given-names>
       Brou
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff2"> 
      <sup>2</sup>
     </xref>
    </contrib>
    <contrib contrib-type="author" xlink:type="simple">
     <name name-style="western">
      <surname>
       Olivier
      </surname>
      <given-names>
       Asseu
      </given-names>
     </name> 
     <xref ref-type="aff" rid="aff1"> 
      <sup>1</sup>
     </xref> 
     <xref ref-type="aff" rid="aff2"> 
      <sup>2</sup>
     </xref>
    </contrib>
   </contrib-group> 
   <aff id="aff1">
    <addr-line>
     aUMRI STI, INPHB INP—Houphouët Boigny, Yamoussoukro, Côte d’Ivoire
    </addr-line> 
   </aff> 
   <aff id="aff2">
    <addr-line>
     aEcole Supérieure Africaine des Technologies de l’Information et de la Communication (ESATIC), LASTIC Laboratory of ESATIC, Abidjan, Côte d’Ivoire
    </addr-line> 
   </aff> 
   <pub-date pub-type="epub">
    <day>
     01
    </day> 
    <month>
     08
    </month>
    <year>
     2024
    </year>
   </pub-date> 
   <volume>
    14
   </volume> 
   <issue>
    08
   </issue>
   <fpage>
    2223
   </fpage>
   <lpage>
    2235
   </lpage>
   <history>
    <date date-type="received">
     <day>
      27,
     </day>
     <month>
      July
     </month>
     <year>
      2024
     </year>
    </date>
    <date date-type="published">
     <day>
      20,
     </day>
     <month>
      July
     </month>
     <year>
      2024
     </year> 
    </date> 
    <date date-type="accepted">
     <day>
      20,
     </day>
     <month>
      August
     </month>
     <year>
      2024
     </year> 
    </date>
   </history>
   <permissions>
    <copyright-statement>
     © Copyright 2014 by authors and Scientific Research Publishing Inc. 
    </copyright-statement>
    <copyright-year>
     2014
    </copyright-year>
    <license>
     <license-p>
      This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/
     </license-p>
    </license>
   </permissions>
   <abstract>
    Over the last decade, the rapid growth in traffic and the number of network devices has implicitly led to an increase in network energy consumption. In this context, a new paradigm has emerged, Software-Defined Networking (SDN), which is an emerging technique that separates the control plane and the data plane of the deployed network, enabling centralized control of the network, while offering flexibility in data center network management. Some research work is moving in the direction of optimizing the energy consumption of SD-DCN, but still does not guarantee good performance and quality of service for SDN networks. To solve this problem, we propose a new mathematical model based on the principle of combinatorial optimization to dynamically solve the problem of activating and deactivating switches and unused links that consume energy in SDN networks while guaranteeing quality of service (QoS) and ensuring load balancing in the network.
   </abstract>
   <kwd-group> 
    <kwd>
     DCN
    </kwd> 
    <kwd>
      Optimisation
    </kwd> 
    <kwd>
      Energy Consumption
    </kwd> 
    <kwd>
      QoS
    </kwd> 
    <kwd>
      SDN
    </kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <sec id="s1">
   <title>1. Introduction</title>
   <p>The development of intelligent connection equipment because of Industry 4.0 has led to rapid growth in traffic and the number of network devices, resulting in increased energy consumption in networks <xref ref-type="bibr" rid="scirp.135439-1">
     [1]
    </xref>. As a result, more and more companies are using Software Defined Networking (SDN), an emerging technique that separates the control plane and the data plane of the connected deployment network, enabling centralized control of the network while offering flexibility in network management, to solve the energy problems of data center networks <xref ref-type="bibr" rid="scirp.135439-2">
     [2]
    </xref>. Energy consumption is a significant part of the total cost of information and communication technology <xref ref-type="bibr" rid="scirp.135439-3">
     [3]
    </xref>. Computer network equipment is designed to handle network traffic; however, the level of use of the device is not necessarily proportional to the energy it consumes <xref ref-type="bibr" rid="scirp.135439-4">
     [4]
    </xref>. For example, DCNs do not always operate at full capacity, but the fact that they support lower loads means minimal energy consumption. It has been shown that the DCN consumes too much energy unnecessarily when it is not fully loaded. Some research work is moving in the direction of optimizing energy consumption, but still does not ensure good performance and quality of service of the DCN network <xref ref-type="bibr" rid="scirp.135439-5">
     [5]
    </xref>. Therefore, we propose a new mathematical model based on combinatorial optimization principles to dynamically solve the problem of switch activation and deactivation as well as idle links and zero energy consuming activity in the DCN network, while guaranteeing Quality of Service (QoS) constraints. And ensuring load balance in the network. Part 2 presents different mathematical models. The problem statement is presented in Section 3. The proposed model is presented in Section 4. We conclude by summarizing the main contributions and highlighting some future directions in Section 6.</p>
  </sec><sec id="s2">
   <title>2. Related Works</title>
   <p>This section of our paper presents important recent work that has used integer linear programming to solve the problem of optimizing energy consumption in SDN networks. To minimize power consumption in SDNs, Kra et al. <xref ref-type="bibr" rid="scirp.135439-6">
     [6]
    </xref> proposed a mathematical model in the form of an integer linear program. This model involves turning ports on and off at certain intervals to minimize power consumption. This model is flexible and can double the energy savings at port and link level, but does not take into account switch switching or load balancing in the network. A traffic-sensitive mathematical model for making energy consumption proportional to traffic in SDN networks was proposed by Assefa and Ozkasap in <xref ref-type="bibr" rid="scirp.135439-7">
     [7]
    </xref>. This model presents a multi-objective function that minimizes the total energy consumption of switches and links. The problem to be solved is defined as the allocation of links and switches for each flow. It is true that this model shows a significant reduction in energy consumption, but it does not take into account certain parameters such as timing, the elimination of redundant paths and, above all, load balancing in the network. Wu et al. in <xref ref-type="bibr" rid="scirp.135439-8">
     [8]
    </xref> presented a model similar to the previous one, but this time applied to SDN-based data center networks. The energy-efficient routing problem is modelled as a mixed-integer linear problem, which aims to minimize the network energy consumption according to the flow demand of the data center network. This model considers network redundancy by defining redundancy parameters within a limited framework to manage potential bandwidth emergencies. But it offers average requirements in terms of quality of service and load balancing. Lu et al. in <xref ref-type="bibr" rid="scirp.135439-9">
     [9]
    </xref> also presented the energy optimization problem in SDN-based data centers as an integer linear program that also aims to minimize the number of switches and links activated to meet the traffic demand. This model takes into account traffic variability and uses multipath routing to satisfy flow allocation QoS in high traffic situations. In addition, the model presented does not take into account load balancing or end-to-end latency. Torkzadeh et al. in <xref ref-type="bibr" rid="scirp.135439-10">
     [10]
    </xref> proposed a model that minimizes energy consumption in SDN data centers and takes into account QoS parameters such as latency and packet loss rate. In addition, the link load balancing model in the network was added to the model, making the proposed model multi-objective. Nsaif et al. in <xref ref-type="bibr" rid="scirp.135439-11">
     [11]
    </xref> proposed an integer linear programming model for traffic-aware routing that minimizes the number of active links in order to minimize energy consumption. The model takes into account the correlation between links and traffic. In addition, this model does not take into account load balancing and the deactivation of under-used switches. Most of the above work uses integer linear programming to solve the energy optimization problem. Our contributions include the consideration of additional parameters such as time, bandwidth and the elimination of redundant paths. To avoid network congestion, we will ensure load balancing in the data center network.</p>
  </sec><sec id="s3">
   <title>3. Energy Consumption Model Based on Ear (Energy Aware Routing)</title>
   <p>To reduce energy consumption in SDN data centre networks, we propose a model for optimising energy consumption based on EAR (Energy Aware Routing), which is a type of routing suitable for reducing the amount of energy. For data centres, a traffic-aware approach can save up to 50% energy during periods of low load <xref ref-type="bibr" rid="scirp.135439-4">
     [4]
    </xref>. The aim is to direct traffic to the most energy-efficient links while maintaining the required performance and quality of service. The basic idea behind (EAR) is that during periods of low traffic (e.g. at night), traffic requests can be routed via a subset of the network’s links and switches while maintaining connectivity and quality of service. In this way, the links and switches excluded by the routing path can be put to sleep to save energy. We propose a general optimization model that determines the energy capacity of SDN from a traffic perspective, where the main energy-saving components considered are links and switches. Our proposed model collectively minimises the number of switches and links used to carry network traffic. For us, this will involve automatically putting idle switches and links into sleep mode as a first step, and then minimising the number of active network devices in order to minimise network energy consumption.</p>
   <sec id="s3_1">
    <title>3.1. Graph Modelling of the Problem</title>
    <p>We begin by presenting a few notations that will be used in the rest of the document. This notation is used below to construct our optimization model.</p>
    <p>C: The switches in the network where i with ( 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         i 
       </mi> 
       <mo>
         ∈ 
       </mo> 
       <mi>
         C 
       </mi> 
      </mrow> 
     </math>) represents switch i.</p>
    <p>L: The links in the network where ( 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           j 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         ∈ 
       </mo> 
       <mi>
         L 
       </mi> 
       <mo>
         ; 
       </mo> 
       <mi>
         i 
       </mi> 
       <mo>
         ≠ 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math>), represents the link between switches i and j.</p>
    <p>n: Total number of switches in the network.</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>: The bandwidth or capacity of the link connecting switches i and j with 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         i 
       </mi> 
       <mo>
         ≠ 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math>.</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          E 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math>: Power consumption by switch i when it is activated.</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          E 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>: Energy consumption of the link between switch i and j with ( 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         i 
       </mi> 
       <mo>
         ≠ 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math>).</p>
    <p>F: All network flows 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         f 
       </mi> 
       <mo>
         ∈ 
       </mo> 
       <mi>
         F 
       </mi> 
      </mrow> 
     </math>.</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           s 
         </mi> 
         <mi>
           r 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           d 
         </mi> 
         <mi>
           s 
         </mi> 
         <mo>
           , 
         </mo> 
         <msub> 
          <mi>
            λ 
          </mi> 
          <mi>
            f 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>: flows between switches i and j.</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math>: Binary variable. If 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mn>
         1 
       </mn> 
      </mrow> 
     </math> then switch i is enabled; otherwise 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mn>
         0 
       </mn> 
      </mrow> 
     </math>.</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>: Binary variable, if 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mn>
         1 
       </mn> 
      </mrow> 
     </math> then a link between switches i and j is activated, 0 otherwise.</p>
    <p>In this paper, we consider the FAT TREE data centre network as a weighted directed graph 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         G 
       </mi> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           C 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           L 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> where 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         C 
       </mi> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mrow> 
         <mn>
           1 
         </mn> 
         <mo>
           , 
         </mo> 
         <mo>
           ⋯ 
         </mo> 
         <mo>
           , 
         </mo> 
         <mi>
           n 
         </mi> 
        </mrow> 
        <mo>
          } 
        </mo> 
       </mrow> 
      </mrow> 
     </math> represents a finite set of nodes (switches) in the graph; ( 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           j 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         ∈ 
       </mo> 
       <mi>
         L 
       </mi> 
       <mo>
         ; 
       </mo> 
       <mi>
         i 
       </mi> 
       <mo>
         ≠ 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math>) represents a finite set of arcs (links) between switches, where each link is used for communication in both directions. <xref ref-type="fig" rid="fig1">
      Figure 1
     </xref> shows two switches i and j interconnected by an 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           j 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> link.</p>
    <fig id="fig1" position="float">
     <label>Figure 1</label>
     <caption>
      <title>Figure 1. Representation of the link between two switches.</title>
     </caption>
     <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312674-rId48.jpeg?20240823094707" />
    </fig>
   </sec>
   <sec id="s3_2">
    <title>3.2. Network Model</title>
    <p>The network topology is modelled using a weighted directed graph 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         G 
       </mi> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           C 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           L 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> with a set of vertices C, and a set of edges L. Each node is an OpenFlow switch and a switch is represented by the letter i. The role of each switch is to transmit information according to the path chosen by the network controller. Each edge of the graph is a link. The transmission of packets between two ports forms a link. The link between switches i and j is called 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           j 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>. The links and switches in the network can be in ON or OFF mode.</p>
    <p>We define the binary variables 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math> and 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>: 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math> to specify the current mode of the switch. is 1 if switch i is ON, 0 otherwise. Furthermore, the variable 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> specifies the mode state of the link between two connected ports. 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mn>
         1 
       </mn> 
      </mrow> 
     </math> if the link between switches i and j is active and 0 otherwise.</p>
    <p>We define another binary variable 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> to identify flows on the DCN topology. A flow represents a group of packets with the same source and destination addresses, using the same link to reach the destination.</p>
    <p>The variable 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math> takes the value 1 if the flow f crosses the link 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           ; 
         </mo> 
         <mi>
           j 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> with 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           ≠ 
         </mo> 
         <mi>
           j 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math> and the value 0 otherwise. The link utilisation matrix, U, is constructed by considering the utilisation of each link. DCN traffic is represented by the set of flows 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mi mathvariant="double-struck">
        F 
      </mi> 
     </math>, where each 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         f 
       </mi> 
       <mo>
         ∈ 
       </mo> 
       <mi mathvariant="double-struck">
         F 
       </mi> 
      </mrow> 
     </math> is defined as 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           s 
         </mi> 
         <mi>
           r 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           d 
         </mi> 
         <mi>
           s 
         </mi> 
         <mo>
           , 
         </mo> 
         <msub> 
          <mi>
            λ 
          </mi> 
          <mi>
            f 
          </mi> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>. Source and destination switches are represented respectively by sr and ds. 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          λ 
        </mi> 
        <mi>
          f 
        </mi> 
       </msub> 
      </mrow> 
     </math>, transmission rate of f packets measured in bits per second.</p>
    <p>In this model, we consider links and switches as the main energy-consuming components of the network. Our deployment model allows them to be dynamically enabled and disabled to save energy. To support distributed traffic, the model uses the smallest possible set of active links and the fewest possible switches. Our optimisation model considers the following features:</p>
    <p>1) For the sake of simplicity, the model parameters are based on the state of the network at a given time.</p>
    <p>2) The model is defined as a problem of flows of various commodities.</p>
    <p>3) the problem is defined as allocating links and switches to each flow while minimising the total number of active links and switches.</p>
    <p>4) Given the model formulation and parameters, the result of the optimizer is a list of active links and switches for each flow 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         f 
       </mi> 
       <mo>
         ∈ 
       </mo> 
       <mi>
         F 
       </mi> 
      </mrow> 
     </math>.</p>
    <p>5) In our model, we assume that all links have the same energy consumption and that this is a fixed constant. Switches also have a similar constant energy consumption. In other words, and are constants in our problem.</p>
   </sec>
   <sec id="s3_3">
    <title>3.3. Mathematical Formulation of the Problem</title>
    <p>We formulate the SD-DCN energy optimisation problem as an integer linear programme (ILP). To better characterise the problem, we define binary variables for each switch and link in the network.</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
      </mrow> 
     </math>: Binary variable indicating whether switch i is active (1) or on standby (0).</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mtable columnalign="left"> 
         <mtr> 
          <mtd> 
           <mn>
             1 
           </mn> 
           <mo>
             , 
           </mo> 
           <mtext>
               
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             if 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             the 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             Switches 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mi>
             i 
           </mi> 
           <mtext>
               
           </mtext> 
           <mtext>
             is 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             activated 
           </mtext> 
          </mtd> 
         </mtr> 
         <mtr> 
          <mtd> 
           <mn>
             0 
           </mn> 
           <mo>
             , 
           </mo> 
           <mtext>
               
           </mtext> 
           <mtext>
             otherwise 
           </mtext> 
          </mtd> 
         </mtr> 
        </mtable> 
       </mrow> 
      </mrow> 
     </math></p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>: Binary variable indicating whether the link between switches i and j is active (1) or not (0).</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <mrow> 
        <mo>
          { 
        </mo> 
        <mtable columnalign="left"> 
         <mtr> 
          <mtd> 
           <mn>
             1 
           </mn> 
           <mo>
             , 
           </mo> 
           <mtext>
               
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             if 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             a 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             link 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             between 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             switches 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mi>
             i 
           </mi> 
           <mtext>
               
           </mtext> 
           <mtext>
             and 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mi>
             j 
           </mi> 
           <mtext>
               
           </mtext> 
           <mtext>
             is 
           </mtext> 
           <mtext>
               
           </mtext> 
           <mtext>
             activated 
           </mtext> 
          </mtd> 
         </mtr> 
         <mtr> 
          <mtd> 
           <mn>
             0 
           </mn> 
           <mo>
             , 
           </mo> 
           <mtext>
               
           </mtext> 
           <mtext>
             otherwise 
           </mtext> 
          </mtd> 
         </mtr> 
        </mtable> 
       </mrow> 
      </mrow> 
     </math></p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
      </mrow> 
     </math>: Packet flow over the link between switches i et j.</p>
    <p>The optimisation problem described at the beginning of this section can be modelled as follows:</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         min 
       </mi> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <munderover> 
          <mstyle mathsize="140%" displaystyle="true"> 
           <mo>
             ∑ 
           </mo> 
          </mstyle> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mo>
             = 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
          <mi>
            n 
          </mi> 
         </munderover> 
         <mtext>
             
         </mtext> 
         <mtext>
             
         </mtext> 
         <msub> 
          <mi>
            ω 
          </mi> 
          <mi>
            i 
          </mi> 
         </msub> 
         <mo>
           ⋅ 
         </mo> 
         <msub> 
          <mi>
            E 
          </mi> 
          <mi>
            i 
          </mi> 
         </msub> 
         <mo>
           + 
         </mo> 
         <munderover> 
          <mstyle mathsize="140%" displaystyle="true"> 
           <mo>
             ∑ 
           </mo> 
          </mstyle> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mo>
             = 
           </mo> 
           <mn>
             1 
           </mn> 
          </mrow> 
          <mi>
            n 
          </mi> 
         </munderover> 
         <mtext>
             
         </mtext> 
         <mtext>
             
         </mtext> 
         <munderover> 
          <mstyle mathsize="140%" displaystyle="true"> 
           <mo>
             ∑ 
           </mo> 
          </mstyle> 
          <mrow> 
           <mi>
             j 
           </mi> 
           <mo>
             = 
           </mo> 
           <mn>
             1 
           </mn> 
           <mo>
             ; 
           </mo> 
           <mi>
             i 
           </mi> 
           <mo>
             ≠ 
           </mo> 
           <mi>
             j 
           </mi> 
          </mrow> 
          <mi>
            n 
          </mi> 
         </munderover> 
         <mtext>
             
         </mtext> 
         <mtext>
             
         </mtext> 
         <msub> 
          <mi>
            σ 
          </mi> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mi>
             j 
           </mi> 
          </mrow> 
         </msub> 
         <mo>
           ⋅ 
         </mo> 
         <msub> 
          <mi>
            E 
          </mi> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mi>
             j 
           </mi> 
          </mrow> 
         </msub> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
      </mrow> 
     </math>(1)</p>
    <p>At the same time as relation (1), certain constraints are necessary to meet the limitations of the problem.</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mo>
         ∀ 
       </mo> 
       <mi>
         i 
       </mi> 
       <mo>
         ; 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math> j among the switches, with, 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mi>
         i 
       </mi> 
       <mo>
         ≠ 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math>,</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         + 
       </mo> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          j 
        </mi> 
       </msub> 
       <mo>
         − 
       </mo> 
       <mn>
         1 
       </mn> 
       <mo>
         ≤ 
       </mo> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         ≤ 
       </mo> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         ; 
       </mo> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         ≤ 
       </mo> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          j 
        </mi> 
       </msub> 
      </mrow> 
     </math>(2)</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <munderover> 
        <mstyle mathsize="140%" displaystyle="true"> 
         <mo>
           ∑ 
         </mo> 
        </mstyle> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           = 
         </mo> 
         <mn>
           1 
         </mn> 
        </mrow> 
        <mi>
          n 
        </mi> 
       </munderover> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          i 
        </mi> 
       </msub> 
       <mo>
         ≤ 
       </mo> 
       <mi>
         K 
       </mi> 
      </mrow> 
     </math>(3)</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         ≤ 
       </mo> 
       <msub> 
        <mi>
          C 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <msub> 
        <mi>
          σ 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         , 
       </mo> 
       <mtext>
           
       </mtext> 
       <mo>
         ∀ 
       </mo> 
       <mi>
         i 
       </mi> 
       <mo>
         ; 
       </mo> 
       <mi>
         j 
       </mi> 
       <mtext>
           
       </mtext> 
       <mtext>
         et 
       </mtext> 
       <mtext>
           
       </mtext> 
       <mi>
         i 
       </mi> 
       <mo>
         ≠ 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math>(4)</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <munder> 
        <mstyle mathsize="140%" displaystyle="true"> 
         <mo>
           ∑ 
         </mo> 
        </mstyle> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           ≠ 
         </mo> 
         <mi>
           k 
         </mi> 
        </mrow> 
       </munder> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           k 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         = 
       </mo> 
       <munder> 
        <mstyle mathsize="140%" displaystyle="true"> 
         <mo>
           ∑ 
         </mo> 
        </mstyle> 
        <mrow> 
         <mi>
           j 
         </mi> 
         <mo>
           ≠ 
         </mo> 
         <mi>
           k 
         </mi> 
        </mrow> 
       </munder> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          k 
        </mi> 
        <mi>
          j 
        </mi> 
       </msub> 
       <mo>
         , 
       </mo> 
       <mtext>
           
       </mtext> 
       <mo>
         ∀ 
       </mo> 
       <mi>
         k 
       </mi> 
       <mo>
         ∉ 
       </mo> 
       <mi>
         S 
       </mi> 
       <mo>
         ∪ 
       </mo> 
       <mi>
         T 
       </mi> 
      </mrow> 
     </math>(5)</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <munder> 
        <mstyle mathsize="140%" displaystyle="true"> 
         <mo>
           ∑ 
         </mo> 
        </mstyle> 
        <mrow> 
         <mi>
           j 
         </mi> 
         <mo>
           : 
         </mo> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mi>
             s 
           </mi> 
           <mo>
             , 
           </mo> 
           <mi>
             j 
           </mi> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
         <mo>
           ∈ 
         </mo> 
         <mtext>
           link 
         </mtext> 
        </mrow> 
       </munder> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           s 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         − 
       </mo> 
       <munder> 
        <mstyle mathsize="140%" displaystyle="true"> 
         <mo>
           ∑ 
         </mo> 
        </mstyle> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           : 
         </mo> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mo>
             , 
           </mo> 
           <mi>
             s 
           </mi> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
         <mo>
           ∈ 
         </mo> 
         <mtext>
           link 
         </mtext> 
        </mrow> 
       </munder> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           s 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         ≥ 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mrow> 
         <mi>
           s 
         </mi> 
         <mi>
           t 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         , 
       </mo> 
       <mtext>
           
       </mtext> 
       <mo>
         ∀ 
       </mo> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           s 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           t 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         ∉ 
       </mo> 
       <mi>
         S 
       </mi> 
       <mo>
         × 
       </mo> 
       <mi>
         T 
       </mi> 
      </mrow> 
     </math>(6)</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <munder> 
        <mstyle mathsize="140%" displaystyle="true"> 
         <mo>
           ∑ 
         </mo> 
        </mstyle> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mo>
           : 
         </mo> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mo>
             , 
           </mo> 
           <mi>
             t 
           </mi> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
         <mo>
           ∈ 
         </mo> 
         <mtext>
           link 
         </mtext> 
        </mrow> 
       </munder> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           i 
         </mi> 
         <mi>
           t 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         − 
       </mo> 
       <munder> 
        <mstyle mathsize="140%" displaystyle="true"> 
         <mo>
           ∑ 
         </mo> 
        </mstyle> 
        <mrow> 
         <mi>
           j 
         </mi> 
         <mo>
           : 
         </mo> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <mi>
             t 
           </mi> 
           <mo>
             , 
           </mo> 
           <mi>
             j 
           </mi> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
         <mo>
           ∈ 
         </mo> 
         <mtext>
           link 
         </mtext> 
        </mrow> 
       </munder> 
       <mtext>
           
       </mtext> 
       <mtext>
           
       </mtext> 
       <msub> 
        <mi>
          f 
        </mi> 
        <mrow> 
         <mi>
           t 
         </mi> 
         <mi>
           j 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         ≥ 
       </mo> 
       <msub> 
        <mi>
          D 
        </mi> 
        <mrow> 
         <mi>
           s 
         </mi> 
         <mi>
           t 
         </mi> 
        </mrow> 
       </msub> 
       <mo>
         , 
       </mo> 
       <mtext>
           
       </mtext> 
       <mo>
         ∀ 
       </mo> 
       <mrow> 
        <mo>
          ( 
        </mo> 
        <mrow> 
         <mi>
           s 
         </mi> 
         <mo>
           , 
         </mo> 
         <mi>
           t 
         </mi> 
        </mrow> 
        <mo>
          ) 
        </mo> 
       </mrow> 
       <mo>
         ∉ 
       </mo> 
       <mi>
         S 
       </mi> 
       <mo>
         × 
       </mo> 
       <mi>
         T 
       </mi> 
      </mrow> 
     </math>(7)</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          j 
        </mi> 
       </msub> 
       <mo>
         ≤ 
       </mo> 
       <mstyle displaystyle="true"> 
        <msub> 
         <mo>
           ∑ 
         </mo> 
         <mrow> 
          <mi>
            i 
          </mi> 
          <mo>
            ≠ 
          </mo> 
          <mi>
            j 
          </mi> 
         </mrow> 
        </msub> 
        <mrow> 
         <msub> 
          <mi>
            σ 
          </mi> 
          <mrow> 
           <mi>
             i 
           </mi> 
           <mi>
             j 
           </mi> 
          </mrow> 
         </msub> 
        </mrow> 
       </mstyle> 
       <mo>
         + 
       </mo> 
       <mstyle displaystyle="true"> 
        <msub> 
         <mo>
           ∑ 
         </mo> 
         <mrow> 
          <mi>
            i 
          </mi> 
          <mo>
            ≠ 
          </mo> 
          <mi>
            j 
          </mi> 
         </mrow> 
        </msub> 
        <mrow> 
         <msub> 
          <mi>
            σ 
          </mi> 
          <mrow> 
           <mi>
             j 
           </mi> 
           <mi>
             i 
           </mi> 
          </mrow> 
         </msub> 
        </mrow> 
       </mstyle> 
       <mo>
         , 
       </mo> 
       <mtext>
           
       </mtext> 
       <mo>
         ∀ 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math>(8)</p>
    <p>
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <msub> 
        <mi>
          ω 
        </mi> 
        <mi>
          j 
        </mi> 
       </msub> 
       <mo>
         ≤ 
       </mo> 
       <mstyle displaystyle="true"> 
        <msub> 
         <mo>
           ∑ 
         </mo> 
         <mrow> 
          <mi>
            i 
          </mi> 
          <mo>
            ≠ 
          </mo> 
          <mi>
            j 
          </mi> 
         </mrow> 
        </msub> 
        <mrow> 
         <mrow> 
          <mo>
            ( 
          </mo> 
          <mrow> 
           <msub> 
            <mi>
              f 
            </mi> 
            <mrow> 
             <mi>
               i 
             </mi> 
             <mi>
               j 
             </mi> 
            </mrow> 
           </msub> 
           <mo>
             + 
           </mo> 
           <msub> 
            <mi>
              f 
            </mi> 
            <mrow> 
             <mi>
               j 
             </mi> 
             <mi>
               i 
             </mi> 
            </mrow> 
           </msub> 
          </mrow> 
          <mo>
            ) 
          </mo> 
         </mrow> 
        </mrow> 
       </mstyle> 
      </mrow> 
     </math>, 
     <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
       <mo>
         ∀ 
       </mo> 
       <mi>
         j 
       </mi> 
      </mrow> 
     </math> is neither source nor destination(9)</p>
    <p>Relation (1) is made up of two terms; the first term represents the energy consumption of the links traversed by a network flow, and the second term concerns the energy consumption of all the active switches in the network. Constraint (2) concerns network connectivity. Constraint (3) stipulates that the controller cannot simultaneously manage a certain number of switches more than the maximum capacity. The constraint is given in Equation (4), which represents the flow constraint and states that the total packet throughput between two switches cannot exceed the capacity of the link. Constraint (5) represents the flow conservation constraint and states that the number of incoming and outgoing packets for switches that are neither the destination nor the source of the flow must be equal. Constraints (6) and (7) are path constraints for the source and destination and indicate that the flow from the source switch must reach the destination switch. Constraint (8) ensures that no flow passes through an idle switch. Constraint (9) states that if no flows pass through the links connected to a given switch, the switch will be disabled.</p>
    <p>Relation (1) is made up of two terms; the first term represents the energy consumption of the links traversed by a network flow, and the second term concerns the energy consumption of all the active switches in the network.</p>
    <p>Constraint (2) concerns network connectivity. Constraint (3) states that the controller cannot simultaneously manage a certain number of switches in excess of the maximum capacity. The constraint is given in Equation (4), which represents the flow constraint and states that the total packet throughput between two switches cannot exceed the link capacity. Constraint (5) represents the flow conservation constraint and states that the number of incoming and outgoing packets for switches that are neither the destination nor the source of the flow must be equal. Constraints (6) and (7) are path constraints for the source and destination and indicate that the flow from the source switch must reach the destination switch. Constraint (8) ensures that no flow passes through an idle switch. Constraint (9) states that if no flows pass through the links connected to a given switch, the switch will be disabled.</p>
   </sec>
  </sec><sec id="s4">
   <title>4. Design of the Algorithm</title>
   <p>The optimization problem described in the previous section can be solved using optimization software such as CPLEX or Gurobi <xref ref-type="bibr" rid="scirp.135439-9">
     [9]
    </xref>, but the computation time increases exponentially with the size of the network. In a real network scenario with hundreds or thousands of nodes, it is difficult to compute the optimal solution in a limited time, especially with a large number of traffic requests.</p>
   <p>Our problem solving is based on the EAR technique, which is a multi-objective problem and therefore consists of finding the set of paths that minimizes the number of network links and switches. The solution we propose is an algorithm for finding this set of paths. Let’s assume that the network contains switches. If we compute all the paths in the network, then the time complexity of the algorithm is 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mi>
        O 
      </mi> 
      <mrow> 
       <mo>
         ( 
       </mo> 
       <mrow> 
        <mi>
          n 
        </mi> 
        <mo>
          ! 
        </mo> 
       </mrow> 
       <mo>
         ) 
       </mo> 
      </mrow> 
     </mrow> 
    </math> <xref ref-type="bibr" rid="scirp.135439-12">
     [12]
    </xref>. Various algorithms and methods such as dynamic programming, interactive methods, evolutionary algorithms, etc. have been deployed and studied to solve this type of problem. We propose a heuristic to solve the problem. This heuristic is divided into two parts: the first stage takes as input, at a given time, the initial topology of the FAT TREE data center, the state of the links and switches and provides as output a subset of active links and switches which is in fact a basic topology responsible for routing. In the first phase, using the SDN controller’s monitoring module, all inactive switches and links are deactivated to make way for the sub-topology responsible for the traffic, as shown in the algorithm below.</p>
   <p>
    <xref ref-type="bibr" rid="scirp.135439-"></xref>Algorithm 1. Heuristics for building an energy-efficient sub-topology.</p>
   <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td class="aleft" width="149.84%">Input: Topology SD-DCN (FAT TREE),<p style="text-align:left"></p>Link capacity: W<p style="text-align:left"></p>Link status: Link_statut<p style="text-align:left"></p>Switch status: Switch_status<p style="text-align:left"></p>Output: Sub-topology (Set of enabled switches and links)<p style="text-align:left"></p>Until Link_statut==0 Do<p style="text-align:left"></p>1. Deactivate the link<p style="text-align:left"></p>End Until<p style="text-align:left"></p>2. Until Link_statut==0 Do<p style="text-align:left"></p>3. Deactivate the link<p style="text-align:left"></p>End Until<p style="text-align:left"></p>4. For all links;<p style="text-align:left"></p>5. List activated links<p style="text-align:left"></p>EndFor<p style="text-align:left"></p>6. For all links Do<p style="text-align:left"></p>7. List links actived<p style="text-align:left"></p>EndFor<p style="text-align:left"></p>8. Return a sub-graph of all activated links and switche<p style="text-align:left"></p></td> 
    </tr> 
   </table>
   <p>The second phase will involve the installation of flows through different conduits. To avoid network congestion based on the initial topology and ensure good quality of service, our algorithm redirects certain flows and balances the network load (<xref ref-type="bibr" rid="scirp.135439-#a1">
     Algorithm 1
    </xref>).</p>
   <p>In <xref ref-type="bibr" rid="scirp.135439-#a2">
     Algorithm 2
    </xref>, we use the first Find Paths function on line 1 to initialize an empty path list. On lines 2 and 3 for each node in the topology, it checks the neighbors of that node. On lines 4 and 5, if the capacity between the node and its neighbor is less than or equal to the capacity of the link, it calls the Find Paths function. On lines 6 and 7, if a valid (non-empty) path is found, it is added to the list of paths.</p>
   <p>
    <xref ref-type="bibr" rid="scirp.135439-"></xref>Algorithm 2. Energy-saving traffic management algorithm.</p>
   <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td class="aleft" width="149.84%">Input: SD-DCN (FAT TREE) sub-topology: newTopology<p style="text-align:left"></p>Link capacity: W<p style="text-align:left"></p>Set of paths: Epath<p style="text-align:left"></p>Set of possible paths: Epossible_path<p style="text-align:left"></p>Traffic matrix: MT<p style="text-align:left"></p>Output: Set of candidate paths for routing flows<p style="text-align:left"></p>1. Function findPaths (newTopology, Link capacity):<p style="text-align:left"></p>Paths &lt;- ∅<p style="text-align:left"></p>2. For each node in newTopology:<p style="text-align:left"></p>3. For each node neighbour:<p style="text-align:left"></p>4. If capacity(node neighbour) ≤ Link Capacity:<p style="text-align:left"></p>5. Path &lt;- FindPath(node, neighbour, capacity Link)<p style="text-align:left"></p>6. If Path ≠ ∅:<p style="text-align:left"></p>7. add path to paths<p style="text-align:left"></p>8. Return Paths<p style="text-align:left"></p>9. Function FindPath(node, neighbour, capacity Link):<p style="text-align:left"></p>10. Path &lt;- [node]<p style="text-align:left"></p>11. current node &lt;- node<p style="text-align:left"></p>12.Until current node ≠ neighbout:<p style="text-align:left"></p>13. Find &lt;- False<p style="text-align:left"></p>14.For each nextNode in neighbours (Currentnode):<p style="text-align:left"></p>15. If capacity(currentNode, nextNode) ≤ Linkcapacity and nextNode isn’t in the Path:<p style="text-align:left"></p>16 add nextNode to path<p style="text-align:left"></p>17. CurrentNode &lt;- nextNode<p style="text-align:left"></p>18. Find &lt;- False<p style="text-align:left"></p>19. Getting out of the loop For<p style="text-align:left"></p>20. If not find:<p style="text-align:left"></p>21. Return ∅<p style="text-align:left"></p>22. Return path<p style="text-align:left"></p></td> 
    </tr> 
   </table>
   <p>For the second function from line 9, takes as parameters the node, the neighboring node and the link capacity. It initializes a path with the starting node (line 10). It analyses the neighbors of the current node to find a valid path to the target neighbor (lines 11 to 13). Then, if a valid path is found, it will be returned. Otherwise, the function returns an empty set (indicating no path found) from lines 14 to 22.</p>
  </sec><sec id="s5">
   <title>
    <xref ref-type="bibr" rid="scirp.135439-"></xref>5. Simulations and Results</title>
   <p>In this section, we describe the evaluation of our energy approach and analyze the results obtained. We used the linear programming solver Gurobi Optimizer <xref ref-type="bibr" rid="scirp.135439-13">
     [13]
    </xref> to evaluate the performance of the ILP model and the heuristic algorithm developed in Python. All calculations were performed on a computer equipped with an Intel Core i7 at 2.80 GHz and 16 GB of RAM. We ran our simulation using a FAT TREE topology with 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mi>
        k 
      </mi> 
      <mo>
        = 
      </mo> 
      <mn>
        4 
      </mn> 
     </mrow> 
    </math>.</p>
   <p>To illustrate the energy savings achieved by the algorithm, we define the percentage of energy savings as an indicator of energy savings. We define an energy savings index E.S(%). It is given by this formula:</p>
   <p>
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mtext>
        E 
      </mtext> 
      <mtext>
        .S 
      </mtext> 
      <mrow> 
       <mo>
         ( 
       </mo> 
       <mi>
         % 
       </mi> 
       <mo>
         ) 
       </mo> 
      </mrow> 
      <mo>
        = 
      </mo> 
      <mrow> 
       <mo>
         ( 
       </mo> 
       <mrow> 
        <mn>
          1 
        </mn> 
        <mo>
          − 
        </mo> 
        <mrow> 
         <mrow> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <mtext>
              Energy Obtained 
            </mtext> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
         </mrow> 
         <mo>
           / 
         </mo> 
         <mrow> 
          <mrow> 
           <mo>
             ( 
           </mo> 
           <mrow> 
            <mtext>
              Initial Energy 
            </mtext> 
           </mrow> 
           <mo>
             ) 
           </mo> 
          </mrow> 
         </mrow> 
        </mrow> 
       </mrow> 
       <mo>
         ) 
       </mo> 
      </mrow> 
      <mo>
        × 
      </mo> 
      <mn>
        100 
      </mn> 
     </mrow> 
    </math></p>
   <p>In our experiment, the percentage energy saving is a function of the number of active switches and links in the network for the initial topology and then it is a function of the number of flows in the network, i.e. the new topology responsible for the traffic at a given moment. It should be noted that this topology changes at each instant due to the random state of the links and switches. We assume that each link 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mrow> 
       <mo>
         ( 
       </mo> 
       <mrow> 
        <mi>
          i 
        </mi> 
        <mo>
          , 
        </mo> 
        <mi>
          j 
        </mi> 
       </mrow> 
       <mo>
         ) 
       </mo> 
      </mrow> 
     </mrow> 
    </math> has the same energy consumption 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <msub> 
       <mi>
         E 
       </mi> 
       <mrow> 
        <mi>
          i 
        </mi> 
        <mi>
          j 
        </mi> 
       </mrow> 
      </msub> 
      <mo>
        = 
      </mo> 
      <mn>
        0.6 
      </mn> 
      <mtext>
          
      </mtext> 
      <mtext>
        kW 
      </mtext> 
     </mrow> 
    </math> and that each switch consumes the same power 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <msub> 
       <mi>
         E 
       </mi> 
       <mi>
         i 
       </mi> 
      </msub> 
      <mo>
        = 
      </mo> 
      <mn>
        3 
      </mn> 
      <mtext>
          
      </mtext> 
      <mtext>
        kW 
      </mtext> 
     </mrow> 
    </math> <xref ref-type="bibr" rid="scirp.135439-14">
     [14]
    </xref>. This table shows the variation in the number of switches and links activated from the initial topology. Consequently, the variation in energy consumption before data transmission. Our algorithm for building a sub-topology proves to be energy-efficient, as can be seen from <xref ref-type="table" rid="table1">
     Table 1
    </xref>.</p>
   <table-wrap id="table1">
    <label>
     <xref ref-type="table" rid="table1">
      Table 1
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.135439-"></xref>Table 1. Variation in energy after generation of a sub-topology.</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td acenter" width="15.95%">Instances<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="28.01%">Initial topology energy<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="28.02%">Energy obtained after applying <xref ref-type="bibr" rid="scirp.135439-#a1">
        Algorithm 1
       </xref><p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="28.02%">Ratio E.S (%)<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td acenter" width="15.95%">1<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="28.01%">79.2<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="28.02%">55.8<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="28.02%">29.54<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="15.95%">2<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.01%">79.2<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">54.6<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">31.06<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="15.95%">3<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.01%">79.2<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">64.2<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">18.93<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="15.95%">4<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.01%">79.2<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">56.4<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">28.78<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="15.95%">5<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.01%">79.2<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">54<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">31.81<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="15.95%">6<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.01%">79.2<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">49.8<p style="text-align:center"></p></td> 
      <td class="acenter" width="28.02%">38.03<p style="text-align:center"></p></td> 
     </tr> 
    </table>
   </table-wrap>
   <p>
    <xref ref-type="fig" rid="fig2">
     Figure 2
    </xref> shows an example of an initial topology to which we apply our sub-topology algorithm. The aim is to deactivate (put to sleep) these inactive switches and links in red, which are consuming unnecessary energy. Activated switches and links are shown in green in <xref ref-type="fig" rid="fig2">
     Figure 2
    </xref>.</p>
   <fig id="fig2" position="float">
    <label>Figure 2</label>
    <caption>
     <title>Figure 2. An initial FAT TREE 

      <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
  
        <mi>
         
   k
  
        </mi>
  
        <mo>
         
   =
  
        </mo>
  
        <mn>
         
   4
  
        </mn>
 
       </mrow>

      </math> topology.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312674-rId123.jpeg?20240823094708" />
   </fig>
   <p>The graph below clearly shows a reduction in energy consumption after disabling inactive links and switches at a given time in the FAT TREE network with 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mi>
        k 
      </mi> 
      <mo>
        = 
      </mo> 
      <mn>
        4 
      </mn> 
     </mrow> 
    </math>. This reduction has an average energy saving ratio of around 29.7%. This energy reduction is shown in <xref ref-type="fig" rid="fig3">
     Figure 3
    </xref> below.</p>
   <fig id="fig3" position="float">
    <label>Figure 3</label>
    <caption>
     <title>Figure 3. Graph of variation in energy consumption for <xref ref-type="bibr" rid="scirp.135439-#a1">
       Algorithm 1
      </xref>.</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312674-rId128.jpeg?20240823094708" />
   </fig>
   <p>In the second part of our simulations, we will apply <xref ref-type="bibr" rid="scirp.135439-#a2">
     Algorithm 2
    </xref> to our new traffic management topology. To evaluate the effectiveness of our algorithm, we compare the energy savings ratio as shown in <xref ref-type="table" rid="table2">
     Table 2
    </xref>, the algorithm for minimum energy consumption in the framework of the Random-order Demand Minimum Energy Consumption (RD-MEC) strategy of the author <xref ref-type="bibr" rid="scirp.135439-9">
     [9]
    </xref> with our own under the same experimental conditions, i.e. we use the same FAT TREE topology with 
    <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> 
      <mi>
        k 
      </mi> 
      <mo>
        = 
      </mo> 
      <mn>
        4 
      </mn> 
     </mrow> 
    </math> and the same proportions of elephant-mouse flows (1:9) and (2:8) generated randomly.</p>
   <table-wrap id="table2">
    <label>
     <xref ref-type="table" rid="table2">
      Table 2
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.135439-"></xref>Table 2. Comparison of the RD-MEC algorithm and the H2ES algorithm in the proportion (1:9).</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td acenter" width="13.79%">Instances<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="23.72%">Number of Flows<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="31.25%">Energy Saving Ratio RD-MEC (%)<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="31.25%">H2ES Energy Saving Ratio (%)<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td acenter" width="13.79%">1<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="23.72%">100<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="31.25%">35<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="31.25%">38.63<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="13.79%">2<p style="text-align:center"></p></td> 
      <td class="acenter" width="23.72%">200<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">35<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">36.1<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="13.79%">3<p style="text-align:center"></p></td> 
      <td class="acenter" width="23.72%">300<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">34<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">35.2<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="13.79%">4<p style="text-align:center"></p></td> 
      <td class="acenter" width="23.72%">400<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">33<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">33.4<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="13.79%">5<p style="text-align:center"></p></td> 
      <td class="acenter" width="23.72%">500<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">30<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">30<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="13.79%">6<p style="text-align:center"></p></td> 
      <td class="acenter" width="23.72%">600<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">27<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.25%">28<p style="text-align:center"></p></td> 
     </tr> 
    </table>
   </table-wrap>
   <p>The graph in <xref ref-type="fig" rid="fig4">
     Figure 4
    </xref> below compares the energy-saving ratio of the RD-MEC algorithm and our algorithmic approach in proportions (1:9).</p>
   <fig id="fig4" position="float">
    <label>Figure 4</label>
    <caption>
     <title>Figure 4. Energy saving ratio as a function of the number of flows (1:9).</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312674-rId131.jpeg?20240823094708" />
   </fig>
   <p>The graph above shows that our algorithmic approach has a much higher ratio than that of the author <xref ref-type="bibr" rid="scirp.135439-9">
     [9]
    </xref>. With regard to the number of flows in the proportions (2:8), we obtain <xref ref-type="table" rid="table3">
     Table 3
    </xref>.</p>
   <table-wrap id="table3">
    <label>
     <xref ref-type="table" rid="table3">
      Table 3
     </xref></label>
    <caption>
     <title>
      <xref ref-type="bibr" rid="scirp.135439-"></xref>Table 3. Comparison of the RD-MEC algorithm and our H2ES algorithm in the proportion (2:8).</title>
    </caption>
    <table class="MsoTableGrid custom-table" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td class="custom-bottom-td acenter" width="11.45%">Instances<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="21.74%">Number of flows<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="35.73%">Energy Saving Ratio RD-MEC<p style="text-align:center"></p></td> 
      <td class="custom-bottom-td acenter" width="31.08%">H2ES Energy Saving Ratio<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="custom-top-td acenter" width="11.45%">1<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="21.74%">100<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="35.73%">25<p style="text-align:center"></p></td> 
      <td class="custom-top-td acenter" width="31.08%">25.63<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="11.45%">2<p style="text-align:center"></p></td> 
      <td class="acenter" width="21.74%">200<p style="text-align:center"></p></td> 
      <td class="acenter" width="35.73%">35<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.08%">28.1<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="11.45%">3<p style="text-align:center"></p></td> 
      <td class="acenter" width="21.74%">300<p style="text-align:center"></p></td> 
      <td class="acenter" width="35.73%">30<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.08%">32.2<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="11.45%">4<p style="text-align:center"></p></td> 
      <td class="acenter" width="21.74%">400<p style="text-align:center"></p></td> 
      <td class="acenter" width="35.73%">25<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.08%">27.8<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="11.45%">5<p style="text-align:center"></p></td> 
      <td class="acenter" width="21.74%">500<p style="text-align:center"></p></td> 
      <td class="acenter" width="35.73%">15<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.08%">17.3<p style="text-align:center"></p></td> 
     </tr> 
     <tr> 
      <td class="acenter" width="11.45%">6<p style="text-align:center"></p></td> 
      <td class="acenter" width="21.74%">600<p style="text-align:center"></p></td> 
      <td class="acenter" width="35.73%">10<p style="text-align:center"></p></td> 
      <td class="acenter" width="31.08%">11<p style="text-align:center"></p></td> 
     </tr> 
    </table>
   </table-wrap>
   <p>The graph below in <xref ref-type="fig" rid="fig5">
     Figure 5
    </xref> compares the energy saving ratio of the RD-MEC algorithm and our algorithmic approach in the proportions (2:8).</p>
   <p>In the end, our algorithm is no worse than the RD-MEC approach. It provides an average energy saving ratio of 23.67% in the case where the number of elephant flows: mouse flows (1:9) is 0.34% higher than that of RD-MEC.</p>
   <p>For the proportion of elephant flows: mouse flows of (2:8) we observe an energy saving of 33.55%, i.e. a ratio of 1.22% above the energy saving ratio of the author <xref ref-type="bibr" rid="scirp.135439-9">
     [9]
    </xref>.</p>
   <fig id="fig5" position="float">
    <label>Figure 5</label>
    <caption>
     <title>Figure 5. Energy saving ratio as a function of the number of flows (2:8).</title>
    </caption>
    <graphic mimetype="image" position="float" xlink:type="simple" xlink:href="https://html.scirp.org/file/2312674-rId132.jpeg?20240823094708" />
   </fig>
  </sec><sec id="s6">
   <title>6. Conclusion</title>
   <p>In this article, we propose a mathematical model based on integer linear programming. This model makes it possible to reduce energy consumption in data centre networks by disabling network links and switches. Our model integrates all QoS parameters. Through our proposed heuristic for solving the model, the set of paths found for dynamic routing of data flows minimizes the energy consumption of FAT TREE data center. However, we intend to work on further improving QoS using machine learning algorithms. Our ultimate objective is to use the results of our simulations to implement the system in a real enterprise environment.</p>
  </sec>
 </body><back>
  <ref-list>
   <title>References</title>
   <ref id="scirp.135439-ref1">
    <label>1</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Giroire, F., Moulierac, J., Phan, T.K. and Roudaut, F. (2015) Minimization of Network Power Consumption with Redundancy Elimination. Computer Communications, 59, 98-105. &gt;https://doi.org/10.1016/j.comcom.2014.12.002
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref2">
    <label>2</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Tu, R., Wang, X. and Yang, Y. (2014) Energy-Saving Model for SDN Data Centers. The Journal of Supercomputing, 70, 1477-1495. &gt;https://doi.org/10.1007/s11227-014-1237-3
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref3">
    <label>3</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Chiaraviglio, L., Mellia, M. and Neri, F. (2012) Minimizing ISP Network Energy Cost: Formulation and Solutions. IEEE/ACM Transactions on Networking, 20, 463-476. &gt;https://doi.org/10.1109/tnet.2011.2161487
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref4">
    <label>4</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Heller, B., Seetharaman, S., Mahadevan, P., Yiakoumis, Y., Sharma, P., Banerjee S. and McKeown, N. (2010) Elastictree: Saving Energy in Data Center Networks. chez Nsdi, 2010.
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref5">
    <label>5</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Hammadi, A. and Mhamdi, L. (2014) A Survey on Architectures and Energy Efficiency in Data Center Networks. Computer Communications, 40, 1-21. &gt;https://doi.org/10.1016/j.comcom.2013.11.005
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref6">
    <label>6</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Kra, L., Gondo, Y., Gooré, B.T. and Asseu, O. (2018) Contribution to the Optimization of the Energy Consumption in SDN Networks. Journal of Sensor Technology, 8, 59-67. &gt;https://doi.org/10.4236/jst.2018.83005
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref7">
    <label>7</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Assefa, B.G. and Özkasap, Ö. (2019) A Survey of Energy Efficiency in SDN: Software-Based Methods and Optimization Models. Journal of Network and Computer Applications, 137, 127-143. &gt;https://doi.org/10.1016/j.jnca.2019.04.001
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref8">
    <label>8</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Wu, Z., Ji, X., Wang, Y., Chen, X. and Cai, Y. (2018) An Energy-Aware Routing for Optimizing Control and Data Traffic in SDN. 2018 26th International Conference on Systems Engineering (ICSEng), Sydney, 18-20 December 2018, 1-4. &gt;https://doi.org/10.1109/icseng.2018.8638019
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref9">
    <label>9</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Lu, Z., Lei, J., He, Y., Li, Z., Deng, S. and Gao, X. (2019) Energy Optimization for Software-Defined Data Center Networks Based on Flow Allocation Strategies. Electronics, 8, Article 1014. &gt;https://doi.org/10.3390/electronics8091014
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref10">
    <label>10</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Torkzadeh, S., Soltanizadeh, H. and Orouji, A.A. (2021) Energy-Aware Routing Considering Load Balancing for SDN: A Minimum Graph-Based Ant Colony Optimization. Cluster Computing, 24, 2293-2312. &gt;https://doi.org/10.1007/s10586-021-03263-x
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref11">
    <label>11</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Nsaif, M., Kovásznai, G., Rácz, A., Malik, A. and de Fréin, R. (2021) An Adaptive Routing Framework for Efficient Power Consumption in Software-Defined Datacenter Networks. Electronics, 10, Article 3027. &gt;https://doi.org/10.3390/electronics10233027
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref12">
    <label>12</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Zhu, H., Liao, X., de Laat, C. and Grosso, P. (2016) Joint Flow Routing-Scheduling for Energy Efficient Software Defined Data Center Networks. Journal of Network and Computer Applications, 63, 110-124. &gt;https://doi.org/10.1016/j.jnca.2015.10.017
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref13">
    <label>13</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Gurobi optimization (2016) Gurobi Optimizer Reference Manual. &gt;http://www.gurobi.com 
    </mixed-citation>
   </ref>
   <ref id="scirp.135439-ref14">
    <label>14</label>
    <mixed-citation publication-type="other" xlink:type="simple">
     Wang, R., Gao, S., Yang, W. and Jiang, Z. (2017) Energy Aware Routing with Link Disjoint Backup Paths. Computer Networks, 115, 42-53. &gt;https://doi.org/10.1016/j.comnet.2017.01.015
    </mixed-citation>
   </ref>
  </ref-list>
 </back>
</article>