<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1646-9895</journal-id>
<journal-title><![CDATA[RISTI - Revista Ibérica de Sistemas e Tecnologias de Informação]]></journal-title>
<abbrev-journal-title><![CDATA[RISTI]]></abbrev-journal-title>
<issn>1646-9895</issn>
<publisher>
<publisher-name><![CDATA[AISTI - Associação Ibérica de Sistemas e Tecnologias de Informação]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1646-98952019000200006</article-id>
<article-id pub-id-type="doi">10.17013/risti.n32.67-82</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Aplicación de Balanceo De Carga Dinámico Para Servidores, Basada En Redes Definidas Por Software]]></article-title>
<article-title xml:lang="en"><![CDATA[Dynamic Load Balancing Application for Servers, Based on Software Defined Networking]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Gilces]]></surname>
<given-names><![CDATA[Carlos Enrique Minda]]></given-names>
</name>
<xref ref-type="aff" rid="A1"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Villamar]]></surname>
<given-names><![CDATA[Rubén Pacheco]]></given-names>
</name>
<xref ref-type="aff" rid="A1"/>
</contrib>
</contrib-group>
<aff id="AA1">
<institution><![CDATA[,Universidad de Especialidades Espíritu Santo  ]]></institution>
<addr-line><![CDATA[Samborondón Guayas]]></addr-line>
<country>Ecuador</country>
</aff>
<aff id="A">
<institution><![CDATA[,rpachevov@uees.edu.ec  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>06</month>
<year>2019</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>06</month>
<year>2019</year>
</pub-date>
<numero>32</numero>
<fpage>67</fpage>
<lpage>82</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.pt/scielo.php?script=sci_arttext&amp;pid=S1646-98952019000200006&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.pt/scielo.php?script=sci_abstract&amp;pid=S1646-98952019000200006&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.pt/scielo.php?script=sci_pdf&amp;pid=S1646-98952019000200006&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[Un aspecto relevante en investigación a nivel de redes de datos es la optimización de recursos. Las redes deben gestionar grandes volúmenes de tráfico sin introducir tiempos de espera innecesarios y garantizar la disponibilidad de servicios. Este artículo propone un algoritmo de balanceo de carga basado en un sistema de criterios combinados que utiliza tecnologías de redes definidas por software para obtener en tiempo de ejecución, parámetros desde distintos puntos de la red y seleccionar el servidor con las mejores condiciones para responder. La aplicación propuesta está escrita en lenguaje Python utilizando el controlador Ryu; la implementación de este programa en un switch, lo convierte en un balanceador de carga. Se utilizó la herramienta de simulación Mininet para la evaluación resultados; el experimento demuestra que el balanceador de carga basado en criterios combinados, reduce, hasta en un 50%, el tiempo de respuesta del servidor en comparación con el método tradicional Round Robin.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[A relevant topic in current data network research is network resource optimization. Networks must cope with large volumes of traffic and ensure the availability of services without introducing unnecessary timeouts. This article presents a load balance algorithm based on software defined networks; it uses combined criteria to obtain at runtime, parameters from different nodes in the network to select the server with the best capability to deliver services. The proposed load balancer is written in Python language using the Ryu controller. The implementation of the python code on a switch allows it to act as a network load balancer. Mininet simulation tool was used in the experiment. Results demonstrate that the SDN load balancer obtains a response time up to 50% lower than Round Robin algorithm.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[SDN]]></kwd>
<kwd lng="es"><![CDATA[balanceo de carga]]></kwd>
<kwd lng="es"><![CDATA[redes]]></kwd>
<kwd lng="es"><![CDATA[servidores]]></kwd>
<kwd lng="es"><![CDATA[OpenFlow]]></kwd>
<kwd lng="en"><![CDATA[SDN]]></kwd>
<kwd lng="en"><![CDATA[load balancing]]></kwd>
<kwd lng="en"><![CDATA[networks]]></kwd>
<kwd lng="en"><![CDATA[servers]]></kwd>
<kwd lng="en"><![CDATA[OpenFlow]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font size="2"><b>ARTÍCULOS</b></font></p>     <p><font size="4"><b>Aplicación de Balanceo De Carga Dinámico Para Servidores,    Basada En Redes Definidas Por Software.</b></font></p>     <p><font size="3"><b>Dynamic Load Balancing Application for Servers, Based on    Software Defined Networking.</b></font></p>     <p><b>Carlos Enrique Minda Gilces<sup>1</sup>, Rubén Pacheco Villamar<sup>2</sup></b></p>     <p><sup>1,2</sup> Universidad de Especialidades Espíritu Santo, Samborondón, Guayas,    Ecuador. <a href="mailto:cminda@uees.edu.ec">cminda@uees.edu.ec</a>, <a href="mailto:rpachevov@uees.edu.ec">rpachevov@uees.edu.ec</a></p> <hr/>     <p>&nbsp;</p>     <p><b>RESUMEN</b></p>     <p>Un aspecto relevante en investigación a nivel de redes de datos es la optimización    de recursos. Las redes deben gestionar grandes volúmenes de tráfico sin introducir    tiempos de espera innecesarios y garantizar la disponibilidad de servicios.    Este artículo propone un algoritmo de balanceo de carga basado en un sistema    de criterios combinados que utiliza tecnologías de redes definidas por <i>software    </i>para obtener en tiempo de ejecución, parámetros desde distintos puntos de    la red y seleccionar el servidor con las mejores condiciones para responder.    La aplicación propuesta está escrita en lenguaje Python utilizando el controlador    Ryu; la implementación de este programa en un <i>switch</i>, lo convierte en    un balanceador de carga. Se utilizó la herramienta de simulación Mininet para    la evaluación resultados; el experimento demuestra que el balanceador de carga    basado en criterios combinados, reduce, hasta en un 50%, el tiempo de respuesta    del servidor en comparación con el método tradicional <i>Round Robin</i>.</p>     <p><b>Palabras-clave</b>: SDN; balanceo de carga; redes; servidores; OpenFlow.</p> <hr/>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p><b>ABSTRACT</b></p>     <p>A relevant topic in current data network research is network resource optimization.    Networks must cope with large volumes of traffic and ensure the availability    of services without introducing unnecessary timeouts. This article presents    a load balance algorithm based on <i>software </i>defined networks; it uses    combined criteria to obtain at runtime, parameters from different nodes in the    network to select the server with the best capability to deliver services. The    proposed load balancer is written in Python language using the Ryu controller.    The implementation of the python code on a <i>switch </i>allows it to act as    a network load balancer. Mininet simulation tool was used in the experiment.    Results demonstrate that the SDN load balancer obtains a response time up to    50% lower than <i>Round Robin </i>algorithm.</p>     <p><b>Keywords</b>: SDN; load balancing; networks; servers; OpenFlow.</p> <hr/>     <p>&nbsp;</p>     <p><b>1. Introducción</b></p>     <p>La navegación web emplea un modelo cliente-servidor en donde un cliente solicita    datos y el servidor responde. Dependiendo del tipo de servicio, pueden existir    millones de<a name="__Fieldmark__114_3273677783"></a><a name="__Fieldmark__114_3384240417"></a><a name="__Fieldmark__8689_2768863069"></a><a name="__Fieldmark__20_821307823"></a><a name="__Fieldmark__20_471305690"></a><a name="__Fieldmark__20_4262602254"></a><a name="__Fieldmark__22_3352347617"></a><a name="__Fieldmark__4_46969717"></a> conexiones al servidor, en un mismo instante.    De acuerdo a (KLEINER PERKINS, 2018) hasta julio del 2018 se registraron 4,119    millones de usuarios de Internet. Esta creciente demanda genera sobrecarga;    los aumentos repentinos de tráfico en la red ocasionan congestión en los enlaces,    lo que a su vez compromete el despliegue de las aplicaciones y los servicios    ofrecidos por los proveedores. Un estudio empírico de Kandula, Sengupta, Greenberg,    Patel, y Chaiken (2009) demuestra que el 15% de la congestión en una red de    centro de datos conformada por 150 <i>switches </i>y 1500 servidores dura más    de 100 segundos, aun cuando muchos de los enlaces se encuentran subutilizados;    esto implica una necesidad considerable de optimizar la asignación de recursos    de red.</p>     <p>La mayoría de centros de datos opta por la implementación de un balanceador    de carga con el fin de satisfacer el gran número de usuarios y los requerimientos    que estos generan (Chen, Shang, Tian, &amp; Li, 2015). Usualmente, las estrategias    de balanceo implementadas a los servicios web (HTTP) suelen basarse en las métricas    de enlace proporcionadas al momento de la instalación y no consideran las condiciones    de red dinámicas relativas a la utilización del ancho de banda, la pérdida de    paquetes y los retrasos, por lo tanto carecen de flexibilidad para ajustarse    a los distintos requerimientos de la red, o del tráfico o de las aplicaciones    que operan sobre ésta (Qilin &amp; Weikang, 2015).</p>     <p>La problemática recae en que al momento de aplicar el balanceo, los elementos    de juico disponibles para la toma de decisiones no contemplan parámetros variantes    de la red que también influyen en el desempeño y pueden ser medidos dinámicamente    (Kanungo, 2013), tales como la latencia, la variación de la latencia y las rutas    alternas disponibles desde el punto de vista de procesos estocásticos. Como    respuesta al requerimiento de alta disponibilidad, surgieron las Redes Definidas    por <i>Software </i>(SDN, por sus siglas en inglés), que controlan la red de    forma central o &ldquo;programada&rdquo; mediante aplicaciones de <i>software</i>. (Fernandez    &amp; L.Muñoz, 2016). Al implementar SDN, equipos de red de funcionalidad básica    como los <i>switches</i>, son capaces de realizar funciones avanzadas.</p>     <p>Este artículo propone una solución de balanceo de carga que utiliza tecnologías    de redes definidas por <i>software</i>. El mecanismo de balanceo de carga es    aplicado a un grupo de servidores y está basado en criterios combinados, calculados    a partir de la monitorización de múltiples parámetros de desempeño del servicio,    que de acuerdo a estudios previos influyen en la calidad percibida por el usuario.    El estudio está estructurado de la siguiente forma: La primera parte describe    los Antecedentes y trabajos relacionados y la segunda el desarrollo de la investigación.</p>     <p><b>2. Antecedentes y Trabajos Relacionados</b></p>     ]]></body>
<body><![CDATA[<p>En lugar de utilizar un algoritmo estático como el <i>Round Robin</i>, los    estudios de (Qilin, 2015);(Cui &amp; Xu, 2016; Zhang &amp; Guo, 2014) proponen    a las redes definidas por <i>software </i>(SDN) como un nuevo acercamiento al    balanceo de carga a través de un controlador de red centralizado. El trabajo    de Fernandez &amp; L. Muñoz (2016) menciona que existen dos métodos por los    cuales se pueden agregar entradas a una tabla de flujos. La primera es de forma    proactiva, esto se refiere a que la tabla es poblada por entradas mucho antes    de que los paquetes transiten por la red. El segundo método es el reactivo,    en este método el dispositivo de red se inicializa sin ninguna regla de flujo    prestablecida. Todo paquete entrante es enviado al controlador y posterior a    tomar la decisión de qué hacer con el paquete, actualiza la tabla de flujo con    la regla respectiva en el <i>switch</i>. La segunda vez que un paquete perteneciente    al mismo flujo ingrese al dispositivo de red, este ya conocerá que acción debe    realizar.</p>     <p>Por lo tanto, existen dos tipos de balanceadores de carga SDN que pueden ser    desarrollados (Golinelli, 2015). La diferencia está en la manera en que el controlador    aplica las reglas de flujo en el <i>switch</i>. En el método proactivo se establece    previamente una división de las distintas direcciones IP que harán los requerimientos    y dependiendo de la fuente se selecciona el servidor. En el método reactivo,    la selección del servidor que atenderá el requerimiento es tomada cada vez que    un paquete entra al <i>switch </i>y es enviado al controlador.</p>     <p><b>3. Métricas de Calidad</b></p>     <p>Según la investigación de Changhui (2016), el uso efectivo de los limitados    recursos de red para satisfacer las necesidades de Calidad de Servicio de los    negocios es un problema clave en el desarrollo de Internet. Conforme a las investigaciones    de Kandula et al., (2009); Tashtarian, Erfanian, &amp; Varasteh, (2018) los    parámetros con mayor influencia en el establecimiento de niveles satisfactorios    de QoE y QoS en una red de datos se reducen a: la capacidad de la red para acomodar    el tráfico (rendimiento de procesamiento o throughput), la latencia o retraso    que existe en la transferencia de datos de un punto a otro, el jitter, la variación    en un periodo de tiempo que tiene la latencia y la pérdida de paquetes ocasionada    por fallas en la transmisión de paquetes IP de un nodo a otro. Los estudios    de (Tashtarian et al., 2018; Wawge &amp; Tijare, 2014) expanden estas investigaciones    y correlacionan el nivel de los parámetros medidos con el nivel de satisfacción    que se genera en el usuario en referencia (TIPHON, 2002) como se detalla en    la <a href="#t1">tabla 1</a>.</p>     <p>&nbsp;</p>     <p align="center"><a name="t1"></a><img src="/img/revistas/rist/n32/32a06t1.jpg"/></p>     
<p>&nbsp;</p>     <p align="center"><a name="f1"></a><img src="/img/revistas/rist/n32/32a06f1.jpg"/></p>     
<p>&nbsp;</p>     <p>La <a href="#f2">figura 2</a> muestra la separación en capas en una arquitectura    SDN, como se explica en el trabajo de Barrientos, Rico, Coronel y Cuesta(2019)    estas capas se comunican por medio de una interfaz de programación de aplicaciones    API lo cual brinda a las nuevas redes emergentes una mayor flexibilidad, fiabilidad    y seguridad.</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p align="center"><a name="f2"></a><img src="/img/revistas/rist/n32/32a06f2.jpg"/></p>     
<p>&nbsp;</p>     <p><b>3. Desarrollo</b></p>     <p>Las métricas a tomar en consideración para el diseño de sistemas combinados    son las de: latencia (ms) y ancho de banda disponible (kb/s), por la facilidad    que se tiene para monitorizarlos desde el controlador. Adicional a estos parámetros    de red se considera el consumo de CPU y memoria del servidor, debido a que,    de acuerdo a Tashtarian et al., (2018) y Wawge &amp; Tijare, (2014) estos afectan    directamente al tiempo de respuesta del servicio, por el hecho de que de ellos    depende la capacidad del servidor de procesar y atender los requerimientos.    Estas métricas tienen un mayor peso en consideración con los parámetros medibles    en red, ya que su influencia decrece directamente con la capacidad de la red    de entregar correctamente un paquete. Para establecer los rangos permitidos    para los valores medidos se hace referencia a estándares revisados. Utilizando    estos estándares, los rangos y pesos para el sistema de criterios combinados    escogidos se muestran en la <a href="#t2">tabla 2</a>.</p>     <p>&nbsp;</p>     <p align="center"><a name="t2"></a><img src="/img/revistas/rist/n32/32a06t2.jpg"/></p>     
<p>&nbsp;</p>     <p><b>3.1. Descubrimiento de equipos</b></p>     <p>Para relacionar las direcciones físicas e IP de los equipos se implementó dentro    del controlador una tabla ARP. El controlador genera paquetes ARP que llevan    un ARP REQUEST a todas las direcciones especificadas en la configuración. Al    recibir un ARP_ REPLY se agrega en un diccionario la dirección IP y su correspondiente    dirección física. La <a href="#f3">figura 3</a> muestra una captura del intercambio    de paquetes ARP.</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p align="center"><a name="f3"></a><img src="/img/revistas/rist/n32/32a06f3.jpg"/></p>     
<p>&nbsp;</p>     <p><b>3.2. Cálculo de Ancho de Banda Disponible</b></p>     <p>Se utiliza una aplicación de monitoreo de tráfico desarrollada por Machi y    Cheng(2018). La obtención del ancho de banda disponible se calcula en base a    los valores de la capacidad de ancho de banda del <i>switch </i>y la tasa de    transferencia del puerto. La capacidad de ancho de banda es consultada directamente    al <i>switch </i>por el controlador por medio del mensaje OFPPORT_FEATURES.    La tasa de transferencia del puerto se calcula por medio de la variación de    paquetes transmitidos en un periodo de tiempo determinado, la fórmula es la    siguiente:</p>     <p>&nbsp;</p>     <p align="center"><a name="e1"></a><img src="/img/revistas/rist/n32/32a06e1.jpg"/></p>     
<p>&nbsp;</p>     <p>Donde <i>Pq </i>es el número de paquetes transmitidos y <i>Ttp </i>la tasa    de Transferencia del Puerto. Luego, el ancho de banda disponible se calcula    a partir de (2), donde <i>Cp </i>representa la capacidad del puerto. El ancho    de banda queda expresado en las unidades de kb/s.</p>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p align="center"><a name="e2"></a><img src="/img/revistas/rist/n32/32a06e2.jpg"/></p>     
<p>&nbsp;</p>     <p><b>3.3. Cálculo de Latencia</b></p>     <p>Para el cálculo de latencia se desarrolló un módulo dentro de la aplicación    de balanceo de carga que construye y envía paquetes <i>ICMP </i>hacia cada dirección    IP definida en el archivo de configuración del balanceador. Este cálculo se    realiza desde el punto de vista del balanceador hacia los servidores, utilizando    el tiempo de ida y vuelta (RTT) provisto por la aplicación PING (<i>ICMP</i>).</p>     <p>La Latencia, se calcula determinando el lapso transcurrido desde que el balanceador    envió el paquete de prueba <i>ICMP </i>(tiempo de envío paquete), hasta el momento    en que le llega la respuesta correspondiente (tiempo actual). Se adjunta fórmula    utilizada:</p>     <p>&nbsp;</p>     <p align="center"><a name="e3"></a><img src="/img/revistas/rist/n32/32a06e3.jpg"/></p>     
<p>&nbsp;</p>     <p><b>3.4. Datos del Servidor</b></p>     <p>Con el objetivo de simplificar el diseño y evitar el uso de herramientas adicionales    para la medición de las métricas del servidor se implementó una pequeña aplicación    en Python. Esta aplicación utiliza la librería <i>psutil </i>para consultar    los porcentajes de consumo de CPU y memoria del servidor y es compatible con    sistemas operativos Windows o Linux (Rodola, 2018). Luego de consultar las métricas    el controlador construye un paquete UDP con la información requerida, el cual    es enviado a la dirección IP virtual designada para el balanceador de carga.    Cuando este paquete llega al controlador la información de las métricas es almacenada.    La <a href="#f4">figura 4</a> muestra una captura de tráfico en el que se verifica    el envío de los paquetes hacia la dirección IP del balanceador.</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p align="center"><a name="f4"></a><img src="/img/revistas/rist/n32/32a06f4.jpg"/></p>     
<p>&nbsp;</p>     <p><b>3.5. Normalización de datos</b></p>     <p>Debido a que las métricas que conforman el sistema de criterios combinados    poseen unidades y rangos de valores distintos es necesario realizar la normalización    de los datos previo a realizar el cálculo del peso de cada servidor. La función    implementada dentro de la aplicación de balanceo de carga para normalizar los    datos está dada por (4):</p>     <p>&nbsp;</p>     <p align="center"><a name="e4"></a><img src="/img/revistas/rist/n32/32a06e4.jpg"/></p>     
<p>&nbsp;</p>     <p>Donde V<i>min </i>y V<i>max </i>son los valores mínimos y máximos respectivamente,    VM el valor medido y VN el valor normalizado. De este modo, de cada métrica    se obtiene una calificación sobre 100 puntos, como se muestra en la <a href="#t3">Tabla    3</a>.</p>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p align="center"><a name="t3"></a><img src="/img/revistas/rist/n32/32a06t3.jpg"/></p>     
<p>&nbsp;</p>     <p>Dado que cada parámetro medido, por su nivel de importancia en el tiempo de    respuesta, debe tener el peso específico que le corresponde en la determinación    de la métrica combinada (peso), se utilizó una escala basada en la experiencia    y el criterio de expertos, desarrollada a través de encuestas e investigaciones    predecesoras, y se determinó la ponderación de acuerdo a la fórmula (5) donde    W representa el Peso, <i>Ccpu </i>el consumo de cpu, <i>M </i>la memoria, <i>l    </i>la latencia y <i>B </i>el ancho de banda.</p>     <p>&nbsp;</p>     <p align="center"><a name="e5"></a><img src="/img/revistas/rist/n32/32a06e5.jpg"/></p>     
<p>&nbsp;</p>     <p><b>3.6.Aplicación de Balanceo de Carga</b></p>     <p>La aplicación de balanceo de carga es de tipo reactivo. Todos los paquetes    entrantes al <i>switch </i>son enviados al controlador para la selección del    servidor. Los paquetes entrantes levantan un evento del tipo OFPPacketIn. Si    la dirección de destino coincide con la del servicio, el paquete pasa a ser    procesado, caso contrario el paquete es ignorado y no se realiza ninguna acción.</p>     <p>El controlador verifica que el paquete corresponda a un paquete TCP y en ese    momento realiza la selección del servidor. El destino escogido se decanta por    el servidor que posee la mejor calificación, basado en el sistema de criterios    combinados, calculado en ese instante de tiempo. Una vez seleccionado el servidor    el controlador construye dos entradas con las que actualiza la tabla de flujo    del <i>switch </i>utilizando la dirección IP y dirección física del servidor    seleccionado y del cliente. Una entrada corresponde al flujo cliente-servidor    para los requerimientos entrantes. La segunda entrada corresponde al flujo servidor-cliente    para la entrega de las respuestas del servidor.</p>     <p>Como se visualiza en la <a href="#f5">Figura 5</a>, una vez establecida la    conexión con el <i>switch</i>, para la monitorización de las estadísticas del    equipo de red, el controlador genera un paquete del tipo <i>OFPPortStatsRequest</i>.    La respuesta, un paquete <i>OFPPORTStatsReply</i>, es enviada por el <i>switch    </i>al controlador y contiene información de los puertos como: la capacidad    de ancho de banda, velocidad de transmisión, paquetes transmitidos y recibidos.</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p align="center"><a name="f5"></a><img src="/img/revistas/rist/n32/32a06f5.jpg"/></p>     
<p>&nbsp;</p>     <p>La información del uso de CPU y memoria llegan al controlador por medio de    unpaquete UDP generado por el servidor. En este caso, el evento OFPPacketIn    inicia el gestionador de paquetes UDP implementado en la aplicación del balanceo    de carga y extrae de la trama UDP la información y la dirección IP de origen.</p>     <p>La actualización de la tabla de flujos es realizada por medio del paquete OFPFlowMod    enviado desde el controlador hacia el <i>switch</i>. Una vez ingresadas las    entradas en la tabla de flujo del <i>switch </i>el paquete es enviado al destino    seleccionado y se establece la conexión TCP. Una vez establecida la conexión,    se realiza el intercambio de información por medio del protocolo HTTP.</p>     <p><b>3.7. Ambiente de pruebas</b></p>     <p>La aplicación de balanceo de carga fue desarrollada e implementada sobre una    red virtualizada en <i>Mininet</i>,<a href="#1"><sup>[1]</sup></a><a name="top1"></a>    utilizando <i>OpenVswitch </i>y el controlador <i>Ryu</i>. Se escogió este controlador    porque de acuerdo a (Shah, Faiz, Farooq, Shafi, &amp; Mehdi 2013) es el que    cubre un mayor número de especificaciones técnicas para el desarrollo de aplicaciones.    La <a href="#f6">figura 6</a> denota la topología del entorno de pruebas, el    <i>OVSwitch </i>actúa como balanceador de carga y se conecta a los servidores    S1, S2, S3. El equipo H1 funciona como cliente. Para la implementación del balanceador    de carga se desarrolló el archivo <i>lb-topology.py </i>para automatizar el    despliegue de los servidores, los enlaces y la inicialización del módulo de    estadísticas del servidor y el servicio web.</p>     <p>&nbsp;</p>     <p align="center"><a name="f6"></a><img src="/img/revistas/rist/n32/32a06f6.jpg"/></p>     
<p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p><b>3.8.HTTPerf</b></p>     <p>Para la generación de tráfico se optó por utilizar la herramienta <i>httperf</i>,    un <i>software </i>de código abierto que permite realizar pruebas de servicios    <i>HTTP</i>. Con <i>httperf </i>se realiza la medición del tiempo de respuesta    promedio de un servidor web y el número de requerimientos exitosos y fallidos.</p>     <p>El objetivo de las pruebas es constatar el funcionamiento y medir los tiempos    de respuesta del balanceo de carga basado en criterios combinados. Para este    efecto, se ejecutó la virtualización del balanceador y se obtuvieron varias    mediciones del tiempo de respuesta bajo diferentes condiciones. Luego se implementó    el método de balanceo de carga, <i>Round Robin</i>, para comparar los resultados    de rendimiento de éste versus el balanceo de carga basado en criterios combinados    sobre el mismo ambiente. En las <a href="#f7">figura 7</a> y <a href="#f8">8</a>,    se muestra el proceso de selección con cada técnica de balanceo.</p>     <p>&nbsp;</p>     <p align="center"><a name="f7"></a><img src="/img/revistas/rist/n32/32a06f7.jpg"/></p>     
<p>&nbsp;</p>     <p align="center"><a name="f8"></a><img src="/img/revistas/rist/n32/32a06f8.jpg"/></p>     
<p>&nbsp;</p>     <p><b>4. Resultados</b></p>     <p>Para confirmar el funcionamiento del balanceo de carga, dentro de la etapa    de implementación, se capturó el tráfico generado dentro de <i>Mininet </i>con    la herramienta <i>Wireshark</i>. En la <a href="#f9">figura 9</a>, se visualiza    el intercambio de mensajes del Protocolo Openflow. Se muestran los paquetes    que corresponden a los eventos de <i>OFPT_PACKET_IN </i>y <i>OFP_PACKET_OUT    </i>que confirman que los paquetes entrantes al <i>switch </i>están siendo enviados    hacia el controlador. Adicionalmente, se verificó que al enviar un paquete hacia    la dirección virtual, este sea redirigido hacia uno de los servidores.</p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p align="center"><a name="f9"></a><img src="/img/revistas/rist/n32/32a06f9.jpg"/></p>     
<p>&nbsp;</p>     <p>La <a href="#f9">figura 10</a> muestra una captura de pantalla de la secuencia    de eventos en ese caso. Aquí se verifica que al realizar un requerimiento desde    el cliente a la dirección del servicio posteriormente se selecciona uno de los    servidores para atender el requerimiento. También se puede observar el status    de respuesta del paquete.</p>     <p><b>4.1. Resultados Rendimiento de balanceo de carga</b></p>     <p>Con el propósito de realizar pruebas de rendimiento del balanceo de carga sobre    la topología previamente establecida, se utilizó la herramienta httperf para    generar tráfico HTTP hacia la dirección virtual del servicio. Para el primer    conjunto de pruebas todos los enlaces están virtualizados bajo condiciones ideales,    es decir con latencia mínima y cero pérdida de paquetes. En el segundo conjunto    de pruebas se agrega latencia a dos de los enlaces que se conectan del <i>switch    </i>al servidor.</p>     <p>Previo a la ejecución de cada una de las pruebas se reinició la aplicación    de balanceo de carga, y la de la topología virtualizada en Mininet para evitar    que datos residuales en memoria afecten el rendimiento de los algoritmos del    balanceo de carga. Así mismo, previo a iniciar la herramienta HTTPerf se ejecutó    un comando <i>pingall </i>en la línea de comando de <i>Mininet </i>para confirmar    que todos los hosts virtualizados fueron alcanzados.</p>     <p>Los dos conjuntos de pruebas consisten de un número total de conexiones (100,    200 y 300) a establecerse. Para cada caso se varía la cantidad de conexiones    que se establecen por segundo. Por último se limita de manera equitativa el    porcentaje de CPU al que pueden acceder los servidores para evitar que el host    se sature. HTTPerf calcula un promedio del tiempo de respuesta para cada requerimiento    y nos muestra una estadística del tiempo de respuesta promedio para cada prueba.    Con estas estadísticas, se calculó la disminución porcentual, es decir, la proporción    de la cantidad por la cual el tiempo de respuesta se ha reducido al emplear    el sistema de criterios combinados en comparación con el tiempo del sistema    <i>Round Robin</i>. Cuando el valor de disminución porcentual es positivo, implica    que el tiempo de respuesta se ha reducido en dicho porcentaje. Cuando el valor    es negativo se debe entender que ha habido un incremento en el tiempo de respuesta    en dicho porcentaje. La <a href="#t4">Tabla 4</a> y el <a href="#g1">Gráfico    1</a> resumen los resultados obtenidos para el primer conjunto de pruebas en    condiciones ideales.</p>     <p>&nbsp;</p>     <p align="center"><a name="t4"></a><img src="/img/revistas/rist/n32/32a06t4.jpg"/></p>     
]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p align="center"><a name="g1"></a><img src="/img/revistas/rist/n32/32a06g1.jpg"/></p>     
<p>&nbsp;</p>     <p>En cualquiera de los tres escenarios (100, 200 o 300 conexiones) se puede observar    que el balanceo de carga basado en el sistema de criterios combinados (línea    naranja) obtiene un menor tiempo de respuesta comparado con el método <i>Round    Robin </i>(línea azul) para la mayoría de tasas de conexión. Así mismo, la disminución    porcentual es positiva para la mayoría de casos, indicando que el tiempo de    respuesta se reduce con la aplicación del sistema de criterios combinados. En    promedio, el tiempo de respuesta se reduce en un rango del 20 hasta 50% utilizando    el sistema de criterios combinados. La única excepción se da cuando la tasa    de conexiones por segundo es de 50. Esto puede ser atribuido al hecho de que    en el ambiente de pruebas los recursos de CPU y memoria son limitados por la    maquina host.</p>     <p>El método <i>Round Robin </i>es un método simple el cuál utiliza poco recursos    del controlador a diferencia del sistema de criterios combinados. Esto se debe    a que a una mayor cantidad de conexiones por segundo, decrece la efectividad    del algoritmo de selección propuesto ya que el ambiente sobre el cuál se está    realizando la simulación debe hacer uso de tiempos de CPU y memoria del host    para la virtualización de los elementos, la creación de la carga o conexiones    y en generar la respuesta de los servidores.</p>     <p>La aplicación de balanceo de carga basado en criterios combinados, al monitorear    en tiempo real las estadísticas de la red y los servidores y realizar el cálculo    con las métricas obtenidas hace fuerte uso de estos recursos, y el tiempo de    respuesta del servidor sufre un incremento debido al tiempo que le toma al controlador    realizar los cálculos, el cual aumenta al existir menor cantidad de recursos    disponibles.</p>     <p>En el segundo conjunto de pruebas se aprovechó la flexibilidad que brinda la    herramienta de Mininet para agregar latencia en los enlaces que conectan al    dispositivo de red, el OVS <i>switch</i>, con los servidores. En estas pruebas    a dos de los enlaces se les agregó una latencia correspondiente a 50 ms y 80ms,    mientras que el enlace restante no es afectado por latencia. En la <a href="#t5">Tabla    5</a> y <a href="#g2">Gráfico 2</a> se puede observar los tiempos de respuesta    obtenidos para ambos algoritmos de selección. Nuevamente se observa una disminución    en el tiempo de respuesta al utilizar el sistema de criterios combinados. Incluso    agregando la latencia, la disminución porcentual es positiva para casi todos    los casos a excepción del de 5 conexiones por segundo, en el grupal de 100 conexiones.    La tabla denota una mejora general en los tiempos de respuesta en todos los    casos, reduciéndolo hasta en más del 50% del tiempo de respuesta obtenido por    el método <i>Round Robin</i>.</p>     <p>&nbsp;</p>     <p align="center"><a name="t5"></a><img src="/img/revistas/rist/n32/32a06t5.jpg"/></p>     
<p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p align="center"><a name="g2"></a><img src="/img/revistas/rist/n32/32a06g2.jpg"/></p>     
<p>&nbsp;</p>     <p>También se observa que cuando existe una gran cantidad de conexiones por segundo    el tiempo de respuesta del sistema de criterios combinados tiende a aumentar    con respecto a los casos anteriores. Aún cuando existe latencia en los enlaces    el algoritmo propuesto demuestra un mejor desempeño comparado al <i>Round Robin</i>.    Esto se debe, en gran parte a que, cuando se incluye latencia en los enlaces,    el balanceo de carga propuesto tenderá a escoger el enlace que presente menor    latencia hasta que la carga sobre este servidor cause que el consumo de CPU    y memoria aumenten y reduzcan la calificación de este servidor bajo el sistema    de criterios combinados, pasando a seleccionar uno de los enlaces restantes.</p>     <p><b>5. Conclusiones y recomendaciones</b></p>     <p>El experimento demostró que el algoritmo de selección que toma en consideración    parámetros de la red y servidores para la técnica de balanceo de carga permite    obtener un menor tiempo de respuesta y en consecuencia, incrementa el rendimiento    de los servicios web. Al comparar el sistema de criterios combinados versus    el algoritmo <i>Round Robin</i>, se concluye que para entornos de red en los    que existe latencia en los enlaces, el balanceador de carga basado en criterios    combinados funciona mejor, con un tiempo de respuesta hasta 50% menor que el    obtenido en comparación con la estrategia <i>Round Robin</i>. Adicionalmente,    los tiempos de respuesta obtenidos usando el sistema de criterios combinados    van desde valores de 25 a 68.2 ms en el caso de enlaces sin latencia y 29.7    a 116.9 ms en los enlaces con latencia. Valores que se encuentran por debajo    al límite recomendado por Google de los 200ms para tiempo de respuesta de un    servidor. Basado en esto se puede concluir que la implementación del balanceo    de carga basado en criterios combinados ayuda a mejorar la experiencia de usuario    al utilizar un servicio web.</p>     <p>El algoritmo propuesto en este documento, además de disminuir los tiempos de    respuesta para proporcionar una mejor experiencia de usuario, permite también    una utilización más eficiente del CPU y la memoria del servidor y por lo tanto    ofrece un método de balanceo de carga más eficaz en comparación a las estrategias    tradicionales.</p>     <p>La implementación actual del balanceo de carga basado en un sistema de criterios    combinados recolecta y procesa datos utilizando la memoria del equipo en el    que corre el controlador, esta configuración puede ser mejorada almacenando    los parámetros monitoreados en una base de datos y no en memoria. La arquitectura    SDN presenta un punto de fallo en el controlador, si éste falla, la red quedaría    incapacitada, debido a esto las aplicaciones que se ejecuten dentro del controlador    deben de ser eficientes en cuanto al consumo de CPU y memoria. Una solución    a este problema es utilizar dos controladores dentro de la arquitectura de la    red. La primera etapa de balanceo determinaría el controlador que realiza la    segunda etapa de balanceo correspondiente a las aplicaciones del usuario. En    trabajos futuros se sugiere modificar el esquema empleando dos controladores.</p>     <p>Experimentar sobre otro tipo de servicios, como FTP o flujo (streaming) de    video, para comparar el desempeño del algoritmo de selección propuesto son sugerencias    para trabajos de investigación futuros.</p>     <p>&nbsp;</p>     <p><b>REFERENCIAS</b></p>     ]]></body>
<body><![CDATA[<!-- ref --><p>Barrientos-Avendaño, E., Rico-Bautista, D., Coronel-Rojas, L. A., &amp; Cuesta-Quintero,    F. R. (2019). Granja inteligente: Definición de infraestructura basada en internet    de las cosas, IpV6 y redes definidas por software. RISTI - Revista Ibérica de    Sistemas e Tecnologias de Informação, (E17), 183-197.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004575&pid=S1646-9895201900020000600001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>Changhui, C. (2016). Research on QoS flow control method based on OpenFlow    technology. RISTI - Revista Ibérica de Sistemas e Tecnologias de Informação,    (17B), 14. DOI: <a href="http://risti.xyz/issues/risti17b.pdf" target="_blank">10.17013/risti.17B.14-26</a>  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004577&pid=S1646-9895201900020000600002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Chen, W., Shang, Z., Tian, X., &amp; Li, H. (2015). Dynamic Server Cluster    Load Balancing in Virtualization Environment with OpenFlow. International Journal    of Distributed Sensor Networks, July 2015. <a href="https://doi.org/10.1155/2015/531538" target="_blank">https://doi.org/10.1155/2015/531538</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004578&pid=S1646-9895201900020000600003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Cui, C. X., &amp; Xu, Y. Bin. (2016). Research on load balance method in SDN.    International Journal of Grid and Distributed Computing, 9(1), 25-36. <a href="https://doi.org/10.14257/ijgdc.2016.9.1.03" target="_blank">https://doi.org/10.14257/ijgdc.2016.9.1.03</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004579&pid=S1646-9895201900020000600004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Fernandez, C.L., &amp; Muñoz, J. (2016). Software Defined Networking (SDN)    with OpenFlow 1.3, Open vSwitch and Ryu, (June 2010), 183.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004580&pid=S1646-9895201900020000600005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>Golinelli, E. S. (2015). A Software Defined Networking evaluation approach    to distributing load. Retrieved from <a href="https://www.duo.uio.no/bitstream/handle/10852/45126/Golinelli-master.pdf" target="_blank">https://www.duo.uio.no/bitstream/handle/10852/45126/Golinelli-master.pdf</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004582&pid=S1646-9895201900020000600006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Ikram, A., Arif, S., Ayub, N., &amp; Arif, W. (2018). Load Balancing In Software    Defined Networking (SDN).    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004583&pid=S1646-9895201900020000600007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     ]]></body>
<body><![CDATA[<!-- ref --><p>Kandula, S., Sengupta, S., Greenberg, A., Patel, P., &amp; Chaiken, R. (2009).    The Nature of Datacenter Traffic : Measurements &amp; Analysis. Provider. (pp    202-208). Microsoft Research. <a href="https://doi.org/10.1145/1644893.1644918" target="_blank">https://doi.org/10.1145/1644893.1644918</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004585&pid=S1646-9895201900020000600008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Kanungo, P. (2013). Study of Server Load Balancing Techniques. International    Journal of Computer Science &amp; Engineering Technology, 4(11), 1383-1389.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004586&pid=S1646-9895201900020000600009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>Kleiner, P. (2018). Internet Trends. Kpcb.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004588&pid=S1646-9895201900020000600010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <!-- ref --><p>Machi, H., &amp; Cheng, L. (2018). PureSDN. Github.Com.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004590&pid=S1646-9895201900020000600011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <p>Qilin, M., &amp; Weikang, S. (2015). A Load Balancing Method Based on SDN.    In Proceedings - 2015 7th International Conference on Measuring Technology and    Mechatronics Automation, ICMTMA 2015. <a href="https://doi.org/10.1109/ICMTMA.2015.13" target="_blank">https://doi.org/10.1109/ICMTMA.2015.13</a></p>     <!-- ref --><p>Rodola, G. (2018). Psutil. Github.Com.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004593&pid=S1646-9895201900020000600013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     ]]></body>
<body><![CDATA[<!-- ref --><p>Shah, S. A., Faiz, J., Farooq, M., Shafi, A.,&amp; Mehdi, S. A.(2013). Anarchitectural    evaluation of SDN controllers. In IEEE International Conference on Communications,    1, 3504-3508. <a href="https://doi.org/10.1109/ICC.2013.6655093" target="_blank">https://doi.org/10.1109/ICC.2013.6655093</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004595&pid=S1646-9895201900020000600014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Tashtarian, F., Erfanian, A., &amp; Varasteh, A. (2018). S2VC: An SDN-based    framework for maximizing QoE in SVC-based HTTP adaptive streaming. Computer    Networks, 146, 33-46. <a href="https://doi.org/10.1016/j.comnet.2018.09.007" target="_blank">https://doi.org/10.1016/j.comnet.2018.09.007</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004596&pid=S1646-9895201900020000600015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>TIPHON. (2002). Etsi tr 101 329-7 Telecommunications and Internet Protocol    Harmonization Over Networks (TIPHON) Release 3; End-to end Quality of Service    in TIPHON systems; Part 7: Design guide for elements of a TIPHON connection    from an end-to-end speech transmission per. Intellectual Property, 1, 1-72.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1004597&pid=S1646-9895201900020000600016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>     <p>Wawge, P., &amp; Tijare, P. (2014). Implementing Parameterized Dynamic Load    Balancing Algorithm Using CPU and Memory, 3(5), 12828-12834.</p>     <p>&nbsp;</p>     <p>Recebido/Submission: 27/01/2019 </p>     <p>Aceitação/Acceptance: 15/03/2019</p>     <p>&nbsp;</p>     <p><a href="#top1"><sup>[1]</sup></a><a name="1"></a> Mininet es un <i>software    </i>de código abierto que permite la virtualización de redes y hosts para la    simulación de distintas topologías de red. Esta herramienta le provee al desarrollador    un ambiente de pruebas para todo tipo de aplicaciones. <i>Mininet </i>permite    describir y levantar topologías de manera programática.</p>      ]]></body>
<body><![CDATA[ ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Barrientos-Avendaño]]></surname>
<given-names><![CDATA[E.]]></given-names>
</name>
<name>
<surname><![CDATA[Rico-Bautista]]></surname>
<given-names><![CDATA[D.]]></given-names>
</name>
<name>
<surname><![CDATA[Coronel-Rojas]]></surname>
<given-names><![CDATA[L. A.]]></given-names>
</name>
<name>
<surname><![CDATA[Cuesta-Quintero]]></surname>
<given-names><![CDATA[F. R.]]></given-names>
</name>
</person-group>
<article-title xml:lang="es"><![CDATA[Granja inteligente: Definición de infraestructura basada en internet de las cosas, IpV6 y redes definidas por software]]></article-title>
<source><![CDATA[RISTI - Revista Ibérica de Sistemas e Tecnologias de Informação]]></source>
<year>2019</year>
<numero>E17</numero>
<issue>E17</issue>
<page-range>183-197</page-range></nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Changhui]]></surname>
<given-names><![CDATA[C.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Research on QoS flow control method based on OpenFlow technology]]></article-title>
<source><![CDATA[RISTI - Revista Ibérica de Sistemas e Tecnologias de Informação]]></source>
<year>2016</year>
<numero>17B</numero>
<issue>17B</issue>
<page-range>14</page-range></nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chen]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
<name>
<surname><![CDATA[Shang]]></surname>
<given-names><![CDATA[Z.]]></given-names>
</name>
<name>
<surname><![CDATA[Tian]]></surname>
<given-names><![CDATA[X.]]></given-names>
</name>
<name>
<surname><![CDATA[Li]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Dynamic Server Cluster Load Balancing in Virtualization Environment with OpenFlow]]></article-title>
<source><![CDATA[International Journal of Distributed Sensor Networks]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Cui]]></surname>
<given-names><![CDATA[C. X.]]></given-names>
</name>
<name>
<surname><![CDATA[Xu]]></surname>
<given-names><![CDATA[Y. Bin.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Research on load balance method in SDN]]></article-title>
<source><![CDATA[International Journal of Grid and Distributed Computing]]></source>
<year>2016</year>
<volume>9</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>25-36</page-range></nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Fernandez]]></surname>
<given-names><![CDATA[C.L.]]></given-names>
</name>
<name>
<surname><![CDATA[Muñoz]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
</person-group>
<source><![CDATA[Software Defined Networking (SDN) with OpenFlow 1.3, Open vSwitch and Ryu]]></source>
<year>2016</year>
<page-range>183</page-range></nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Golinelli]]></surname>
<given-names><![CDATA[E. S.]]></given-names>
</name>
</person-group>
<source><![CDATA[A Software Defined Networking evaluation approach to distributing load]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ikram]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Arif]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Ayub]]></surname>
<given-names><![CDATA[N.]]></given-names>
</name>
<name>
<surname><![CDATA[Arif]]></surname>
<given-names><![CDATA[W.]]></given-names>
</name>
</person-group>
<source><![CDATA[Load Balancing In Software Defined Networking (SDN)]]></source>
<year>2018</year>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kandula]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Sengupta]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Greenberg]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Patel]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
<name>
<surname><![CDATA[Chaiken]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
</person-group>
<source><![CDATA[The Nature of Datacenter Traffic: Measurements & Analysis Provider]]></source>
<year>2009</year>
<page-range>pp 202-208</page-range><publisher-name><![CDATA[Microsoft Research]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kanungo]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Study of Server Load Balancing Techniques]]></article-title>
<source><![CDATA[International Journal of Computer Science & Engineering Technology]]></source>
<year>2013</year>
<volume>4</volume>
<numero>11</numero>
<issue>11</issue>
<page-range>1383-1389</page-range></nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kleiner]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
</person-group>
<source><![CDATA[Internet Trends]]></source>
<year>2018</year>
<publisher-name><![CDATA[Kpcb]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Machi]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
<name>
<surname><![CDATA[Cheng]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
</person-group>
<source><![CDATA[PureSDN]]></source>
<year>2018</year>
<publisher-name><![CDATA[Github.Com]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B12">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Qilin]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Weikang]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[A Load Balancing Method Based on SDN]]></article-title>
<source><![CDATA[Proceedings - 2015 7th International Conference on Measuring Technology and Mechatronics Automation]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B13">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Rodola]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Psutil]]></source>
<year>2018</year>
<publisher-name><![CDATA[Github.Com]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B14">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Shah]]></surname>
<given-names><![CDATA[S. A.]]></given-names>
</name>
<name>
<surname><![CDATA[Faiz]]></surname>
<given-names><![CDATA[J.]]></given-names>
</name>
<name>
<surname><![CDATA[Farooq]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Shafi]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Mehdi]]></surname>
<given-names><![CDATA[S. A.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Anarchitectural evaluation of SDN controllers]]></article-title>
<source><![CDATA[IEEE International Conference on Communications]]></source>
<year>2013</year>
<volume>1</volume>
<page-range>3504-3508</page-range></nlm-citation>
</ref>
<ref id="B15">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tashtarian]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
<name>
<surname><![CDATA[Erfanian]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Varasteh]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[S2VC: An SDN-based framework for maximizing QoE in SVC-based HTTP adaptive streaming]]></article-title>
<source><![CDATA[Computer Networks]]></source>
<year>2018</year>
<volume>146</volume>
<page-range>33-46</page-range></nlm-citation>
</ref>
<ref id="B16">
<nlm-citation citation-type="journal">
<collab>TIPHON.</collab>
<article-title xml:lang="en"><![CDATA[Etsi tr 101 329-7 Telecommunications and Internet Protocol Harmonization Over Networks (TIPHON) Release 3; End-to end Quality of Service in TIPHON systems; Part 7: Design guide for elements of a TIPHON connection from an end-to-end speech transmission per]]></article-title>
<source><![CDATA[Intellectual Property]]></source>
<year>2002</year>
<volume>1</volume>
<page-range>1-72</page-range></nlm-citation>
</ref>
<ref id="B17">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Wawge]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
<name>
<surname><![CDATA[Tijare]]></surname>
<given-names><![CDATA[P.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Implementing Parameterized Dynamic Load Balancing Algorithm Using CPU and Memory]]></article-title>
<source><![CDATA[International Journal of Innovative Research in Science Engineering and Technology]]></source>
<year>2014</year>
<volume>3</volume>
<numero>5</numero>
<issue>5</issue>
<page-range>12828-12834</page-range></nlm-citation>
</ref>
</ref-list>
</back>
</article>
