[en] 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.

[es] 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.