# QoSComm: A Data Flow Allocation Strategy among SDN-Based Data Centers for IoT Big Data Analytics
## 4 Simulation Model and Experimental Setup
### Experiment Setup  
QoSComm's path selection and communication process were written in Python programming language. We used OpenDayLight (ODL) [33] with RESTCONF module loaded as an SDN controller. The distributed data center topology was developed using a Mininet [34] SDN simulator. For the simulation environment, we configured a virtual machine with Linux Debian 9 operating system (OS) with 4 vCPUs, 8 GB of RAM, and 100 GB of disk space. The ODL SDN controllers were installed in two other virtual machines with the same specifications. Each of the ODL controllers were configured for Domain A and Domain B according to the simulation network topology. A list of software and tools used is as follows:  
* Linux Debian 9 OS
* Mininet 2.3
* OpenDayLight SDN Controller
* Anaconda Python distribution platform
* Spyder Scientific Python development environment
* IPERF and D-ITG for data transfer performance
* MPICH for MPI application performance  
Figure 4: Network topology model for simulation. OpenFlow Switches (OFS): S0 to S13. In the virtual machine with the Mininet simulator, the topology described in the previous section was implemented by developing a Python program that refers to components and objects of the Mininet CLI (Command Line Interface). The switches' links and hosts were configured with their respective values in bandwidth, packet loss, delay, and jitter parameters referred to in Figure 4. We simulated two domains A and B (data centers), and each, along with their SDN controller, was configured to connect with the Mininet simulator. Next, we describe the methodology used to get feasible and optimal paths considering applications requirements and their configuration in the Mininet simulator:  
1. According to experimental topology based on three layers, convert each link to a vector system with delay, packet loss, jitter, and available bandwidth values. 2. Define the end-end paths of hosts H1 to H6, H2 to H5, and H3 to H4 (according to experimentation topology). 3. Make the sum of each of the corresponding values for each path (delay, packet loss, and jitter), for the case of bandwidth, get the minimum available in each of the paths. Store the information in a list arrangement (paths). 4. Define objectives restrictions values (delay, packet loss, jitter, and available bandwidth), with application requirements. In this case, the delay objective is minimized. 5. Search within the list of paths that comply with the imposed restrictions to get the feasible paths. 6. From the feasible path, get the minimum delay to get the optimal path. 7. Configure data flow rules in each OF switches through the SDN controller to use the feasible paths. When running the simulation, Mininet creates networks links connecting ports for each OF switch. The experiment consists of the measurement of the data transfer between H1 to H6, H2 to H5, and H3 to H4 hosts comparing the traditional data forwarding based in the shortest route algorithm (also referred to as controller default) with our proposal QoSComm data forwarding method. In the first phase, we used IPERF [35] and D-ITG [36] applications for the network performance test. In the second phase, we used an MPI parallel application for completion time tests. QoSComm queries the SDN controller to get network topology and calculate end-to-end network paths. Tables 3-5 show the available network paths for corresponding source to destination hosts.