Este Trabajo de Fin de Grado consiste en modelar una topología de switches Spine-Leaf
multidimensionales en un entorno SDN (Software Defined Network), mediante el
emulador Mininet-WiFi. El objetivo principal es explorar y analizar esta topología,
ampliamente utilizada en centros de datos modernos, para ello utilizando el lenguaje de
programación Python. El proyecto desarrolla la configuración, implementación y pruebas
de rendimiento automatizadas.
Como el entorno es SDN, requerimos de un controlador, inicialmente se utilizó “ONOS”,
pero debido a problemas técnicos, se migro a “OpenDaylight”. Posteriormente se
implementó un algoritmo de prevención de bucles, que elimino la dependencia con el
controlador. El trabajo se realizó en un entorno Linux, inicialmente con una máquina
virtual, posteriormente se migro a una partición.
Para analizar los parámetros de rendimiento de la topología, se desarrolló distintos scripts
de testeo que automatizan las pruebas de rendimiento, permiten personalizar la topología y
la prueba en cuestión. Para ello se creó distintos scripts auxiliares que se encargar de
interactuar con los distintos entornos, como el emulador Mininet-WiFi, el protocolo
OpenFlw, la entrada de datos mediante los argumentos de consola y la salida de datos en
forma de gráfica. Dichos scripts auxiliares son utilizados por los scripts de testeo.
Durante las pruebas en las distintas configuraciones de Spine-Leaf, se dedujo que los
controladores usaban el algoritmo Spanning Tree Protocol (STP) para topologías con
bucles, dicho algoritmo consiste en bloquear los enlaces redundantes. Para aprovechar la
topología Spine-Leaf se implementó el algoritmo Equal-Cost Multi-Path (ECMP),
permitiendo aprovechar los enlaces redundantes, y por ello, mejorar el ancho de banda y
latencia. Se realizo la implementación del algoritmo ECMP mediante un script auxiliar que
automatizada la definición de los flujos necesarios mediante comandos del protocolo
OpenFlow, de esta manera podemos emular la topología Spine-Leaf sin controlador.
Al implementar algoritmo ECMP, se enfocó en pruebas de ancho de banda con distintos
tipos de flujos, revelando que en flujo único no se obtenía mejoras, pero en flujo múltiple y
distribuido incrementaba el ancho de banda, pero en cambio mostraba cierta inestabilidad
en los resultados, debido a que el algoritmo ECMP designada los flujos de manera
aleatoria a los enlaces. Lo que podía provocar con pocos flujos, saturación de enlaces. Al
aumentar el número de flujos, el tráfico se distribuiría de manera más uniforme,
incrementando la estabilidad.
Al experimental con ECMP, se descubrió la utilización de cada capa de la topología, el
número de switches en la capa Spine definía el ancho de banda máximo, mientras que los
switches de la capa Leaf permitieran acceso a un mayor número de dispositivos a la red.
Este trabajo demuestra las mejoras que introduce el algoritmo ECMP teniendo como
referente el algoritmo STP, utilizado por los controladores. También demuestra la utilidad
del entorno SDN, ya que permite implementar algoritmos que no están en los switches
convencionales, ya que son sistemas cerrados.This Final Degree Project involves modeling a multidimensional Spine-Leaf switch
topology in a Software Defined Network (SDN) environment, using the Mininet-WiFi
emulator. The main objective is to explore and analyze this topology, widely used in
modern data centers, utilizing the Python programming language. The project develops
automated configuration, implementation, and performance testing.
As the environment is SDN-based, a controller is required. Initially, "ONOS" was used,
but due to technical issues, it was migrated to "OpenDaylight". The work was carried out
in a Linux environment, initially using a virtual machine, and later migrating to a partition
to optimize computational resources.
To analyze the topology's performance parameters, various testing scripts were developed
that automate performance tests and allow customization of both the topology and the
specific test. For this purpose, several auxiliary scripts were created to interact with
different environments, such as the Mininet-WiFi emulator, the OpenFlow protocol, data
input through console arguments, and data output in the form of graphs. These auxiliary
scripts are utilized by the main testing scripts.
During tests on various Spine-Leaf configurations, it was deduced that the controllers used
the Spanning Tree Protocol (STP) algorithm for topologies with loops, which blocks
redundant links. To leverage the Spine-Leaf topology, the Equal-Cost Multi-Path (ECMP)
algorithm was implemented, allowing the use of redundant links, thereby improving
bandwidth and latency. The ECMP implementation was achieved through an auxiliary
script that automated the definition of necessary flows using OpenFlow protocol
commands, enabling the emulation of the Spine-Leaf topology without a controller, as the
script acted as one.
Upon implementing ECMP, the focus shifted to bandwidth tests with different types of
flows, revealing that single-flow tests showed no improvements, but multiple and
distributed flows increased bandwidth. However, this also demonstrated some instability in
the results, as the ECMP algorithm assigned flows to links randomly.
Experimenting with ECMP revealed the utilization of each layer in the topology: the
number of switches in the Spine layer defined the maximum bandwidth, while the switches
in the Leaf layer allowed access to a greater number of devices in the network.
This work demonstrates the improvements introduced by the ECMP algorithm, using the
STP algorithm (employed by controllers) as a reference. It also showcases the utility of the
SDN environment, as it allows the implementation of algorithms that are not present in
conventional switches due to their closed-system nature