1. Introducción
A medida que las redes crecen en tamaño y requisitos, navegar por los conmutadores de hardware se ha convertido en un desafío. La configuración manual de conmutadores de software de red individuales ha sido muy complicada y requiere mucho tiempo para las empresas que ejecutan sistemas altamente virtuales junto con redes grandes. Aquí es donde SDN entra en juego [1, 2].
SDN se puede describir como un enfoque de red que permite a los operadores de red configurar, rastrear, cambiar y controlar la operación de la red mediante programación a través de interfaces abiertas como el protocolo OpenFlow [3]. La SDN transforma la operación, gestión y configuración de las infraestructuras de red. La vista de SDN se basa en separar el plano de datos del plano de control [4]. SDN propone concentrar la inteligencia de red ,n un solo componente de red al distinguir el mecanismo de reenvío de paquetes de datos (plano de datos) del proceso de enrutamiento (plano de control) Figura 1. [5 , 6].
En el caso de tener que dar permisos de comunicación entre equipos que están de extremo a extremo de la red y que las comunicaciones pasan a través de muchos switches, no sería un trabajo sencillo, ya que se debería analizar la red y determinar por cuales switches viaja la comunicación entre estos dos equipos, este tipo de trabajos tardaría algunas semanas para un administrador de red experimentado. Todo esto sucedería con el modelo de administración tradicional usando Cisco ( Figura 1) con su sistema IOS (Internetwork Operating System) el cual es un sistema cerrado de código propietario.
Este modelo consiste en conmutadores de capa central que se conectan a conmutadores de capa de distribución (a veces llamados conmutadores de agregación), que a su vez se conectan a conmutadores de capa de acceso. La mayoría de la infraestructura de red todavía se presenta de esta manera hoy.
Ante un crecimiento de las redes informáticas y la necesidad de administración más sencilla aparecen las redes definidas por software (SDN) donde los cambios se realizan en un único sistema operativo conocido como controlador, en donde se definen las reglas y ya no se debe configurar cada equipo de red. Las SDN son la evolución de las redes tradicionales [8]. El objetivo del presente trabajo fue mostrar las características de esta nueva tecnología, que desplazará los diseños de red tradicionales.
2. Marco teórico
2.1. SDN
Las redes definidas por software (SDN) son una manera de abordar la creación de redes en la cual el control se desprende del hardware y se le da a una aplicación de software llamada controlador [9].
Las SDN tienen una arquitectura de red cuya característica fundamental es desacoplar físicamente el plano de control (inteligencia) del plano de datos, derivando el control a una computadora (controlador) y con dispositivos en las tareas de conmutación, aunque con limitada inteligencia, Figura 2. Esto facilita un mayor control y nivel de gestión sobre los dispositivos de red, flexibilizando el cambio de su funcionalidad y el de la red en general, empleando para ello un control centralizado, dado que el controlador tiene asociados muchos dispositivos [10].
Cuando un paquete llega a un conmutador en una red convencional, las reglas integradas al firmware propietario del conmutador le dicen al conmutador adónde transferir el paquete. El conmutador envía cada paquete al mismo destino por la misma trayectoria y trata a todos los paquetes de la exacta misma manera. En la empresa, los conmutadores inteligentes diseñados con circuitos integrados de aplicación específica (ASICs, por sus siglas en inglés) son lo suficientemente sofisticados para reconocer diferentes tipos de paquetes y tratarlos de forma diferente, pero estos conmutadores pueden ser bastante costosos [9].
En una red definida por software, un administrador de red puede darle forma al tráfico desde una consola de control centralizada sin tener que tocar conmutadores individuales [11]. El administrador puede cambiar cualquier regla de los conmutadores de red cuando sea necesario, dando o quitando prioridad, o hasta bloqueando tipos específicos de paquetes con un nivel de control muy detallado, Figura 3 [12].
2.2. Comparación de arquitecturas de red tradicionales vs SDN
En las redes tradicionales ( Figura 4 a), los planos de control (CP) y los planos de datos (DP) se ubican en los dispositivos para garantizar el control descentralizado de la red. En las SDN, los DP y los CP se separan con un controlador centralizado ( Figura 4 b) que controla múltiples DP mientras se admite una API hacia el sur para los DP y una API hacia el norte para las aplicaciones SDN, (Figura 5, 6 ) [15].
Los dispositivos de red tradicionales utilizan firmware específico y propietario en el cual está predefinido como se van a tratar los paquetes que redireccionan por lo que son difíciles de integrar [16], Tabla 1 Figura 7 .
2.3. Protocolos SDN
OpenFlow, es el primer protocolo para SDN [3].Existen otros protocolos como: NETCONF, Border Gateway Protocol (BGP), Extensible Messaging and Presence Protocol (XMPP), Open vSwitch Database Management Protocol (OVSDB), MPLS Transport Profile (MPLS-TP).
2.4. Protocolo OPENFLOW
OpenFlow es un protocolo cuyo propósito es administrar dispositivos de red con el controlador SDN. Proporciona una interfaz para la programación directa de equipos de red (como conmutadores y enrutadores), tanto físicos como virtuales, haciendo que la red sea más dinámica y controlada. La característica principal de OpenFlow es el uso de flujos para identificar el tráfico de red. Estas corrientes están basadas en reglas predefinidas que pueden ser estáticamente o programadas dinámicamente utilizando el control SDN [21 ]. Openflow se encuentra entre los protocolos más populares para este propósito y generalmente describe cómo las aplicaciones pueden programar la tabla de flujo de diferentes conmutadores [3].
2.5. Controlador SDN
El controlador SDN actúa como un sistema operativo para la red (NOS: Network Operanting System). Tiene una capa superior es una capa de aplicación, también llamada plano de administración, esta capa es responsable de las tareas relacionadas con la administración y el reenvío de datos (por ejemplo, monitoreo del tráfico de datos, administración de movilidad, enrutamiento, seguridad, equilibrador de carga, etc.), para un flujo de tráfico de datos eficiente. En la arquitectura SDN, las API hacia el sur se utilizan como protocolo de comunicación entre el plano de control (es decir, el controlador SDN) y el plano de datos (es decir, conmutadores y enrutadores) de la red [ 22].
El panorama actual de controladores incluye los productos comerciales de VMware (vCloud / vSphere), Nicira (NVP), NEC (Trema), Big Switch Networks (Floodlight / BNC) y Juniper / Contrail. También incluye una serie de controladores de código abierto [23].
La arquitectura del controlador SDN consta de tres niveles:
1. Complementos y protocolos en dirección sur, que forman la capa de dispositivo de red.
2. Adaptación de servicios y formación de funciones de red. La capa de coordinación y control.
3. APIs hacia el norte y aplicaciones que forman la capa de aplicación [24].
Los controladores de una SDN actúan como un çerebro”de la red. Sirven en una capa intermedia de arquitectura SDN como se muestra en la Figura 4, que proporciona un esquema de control de red unificado. Son un punto de control estratégico que transmite información de control a los conmutadores o enrutadores subyacentes a través de las API hacia el sur y se ocupa de las aplicaciones de red o aplicaciones comerciales a través de las API hacia el norte. En la arquitectura SDN, un controlador SDN (también llamado controlador OpenFlow) usa el OFP (OpenFlow Protocols) para configurar los dispositivos de red subyacentes y elegir la mejor ruta para reenviar el tráfico de datos [5].
2.6. Lista de controladores basados en OPENFLOW
Varios programas de controlador SDN (NOS) de código abierto se están utilizando actualmente para implementar la arquitectura, estos controladores son NOX [25], POX [26], Floodlight [27 ], MuL [28], Trema [29], Beacon [30], Maestro [6], Ryu [31], etc. En la Tabla 2 se enumera una breve descripción de estos controladores OpenFlow de código abierto.
2.7. Controlador NOX
NOX (https://github.com/noxrepo/) fue el primer controlador OpenFlow escrito en C ++ y también proporciona una API para Python. Ha sido la base de muchos proyectos de investigación y desarrollo en la exploración inicial del espacio OpenFlow y SDN. NOX tiene dos líneas de desarrollo separadas:
NOX es un sistema operativo de red en el que se puede construir un controlador OpenFlow. En el lado de la red, NOX interactúa directamente con los dispositivos de red abiertos mediante las instrucciones de OpenFlow. En el lado de la aplicación, NOX expone una API de alto nivel para permitir que las aplicaciones de red intercambien mensajes OpenFlow con la red [].
2.8. Controlador POX
POX es un controlador de código abierto para desarrollar aplicaciones SDN. El cual proporciona una manera eficiente de implementar el protocolo OpenFlow, que es el protocolo de comunicación de facto entre los controladores y los conmutadores. Con el controlador POX puede ejecutar diferentes aplicaciones como concentradoras, conmutadoras, equilibrador de carga y firewall. La herramienta de captura de paquetes Tcpdump se puede utilizar para capturar y ver los paquetes que fluyen entre el controlador POX y los dispositivos OpenFlow.
POX es una plataforma de desarrollo de código abierto para aplicaciones de control de redes definidas por software (SDN) basadas en Python, como los controladores OpenFlow SDN. POX, que permite un rápido desarrollo y creación de prototipos, es cada vez más utilizado que NOX, proyecto hermano [34].
El controlador POX se puede utilizar para convertir dispositivos baratos en hubs, switches, enrutadores o middleboxes como firewall, o balanceadores de carga.
POX también es una gran herramienta para implementar y probar aplicaciones SDN [35]. Su gran fortaleza radica en que puede usarse con hardware real, en bancos de pruebas o con el emulador Mininet. El controlador POX tiene algunas características excelentes, pero no tiene interfaz GUI. Open Flow v1.0 es la versión más utilizada [36.] Open Flow versión 1.3 será la próxima versión que se supone que es ampliamente implementado en productos. POX solo admite v1.0. de OpenFlow [].
2.9. MiniNet
MiniNet es un emulador de red que crea una red de hosts virtuales, conmutadores, controladores y enlaces (ver Figura 7).Los hosts MiniNet ejecutan software de red Linux estándar y sus conmutadores admiten OpenFlow para un enrutamiento personalizado altamente flexible y una red definida por software.
MiniNet admite investigación, desarrollo, aprendizaje, creación de prototipos, pruebas, depuración y cualquier otra tarea que pueda beneficiarse de tener una red experimental completa en una computadora portátil u otra PC [38].
MiniNet ejecuta una colección de hosts finales, conmutadores, enrutadores y enlaces en un solo núcleo de Linux. Utiliza virtualización liviana para hacer que un solo sistema se vea como una red completa, ejecutando el mismo núcleo, sistema y código de usuario. Un host MiniNet se comporta como una máquina real; puede ingresar en él (si inicia sshd y conecta la red a su host) y ejecuta programas arbitrarios
Linux subyacente). Los programas que ejecuta pueden enviar paquetes a través de lo que parece una Ethernet real interfaz, con una velocidad de enlace y retraso dados. Los paquetes se procesan mediante lo que parece un conmutador, enrutador o middlebox Ethernet real, con una cantidad determinada de colas. Cuando dos programas, como un cliente y servidor iperf, se comunican a través de MiniNet, el rendimiento medido debe coincidir con el de dos máquinas nativas (más lentas) [40]
En resumen, los hosts virtuales, los conmutadores, los enlaces y los controladores de MiniNet son reales, simplemente se crean utilizando software en lugar de hardware, y en su mayor parte su comportamiento es similar al de los elementos de hardware discretos. Por lo general, es posible crear una red MiniNet que se parezca a una red de hardware, o una red de hardware que se parezca a una red MiniNet, y ejecutar el mismo código binario y aplicaciones en cualquier plataforma.
2.10. Python y MiniNet
MiniNet está escrito en Python y permite que los scripts de usuario basados en Python interactúen con él. Afortunadamente, Python es uno de los lenguajes de computadora más fáciles de entender, aprender y usar, debido a su sintaxis (principalmente) legible, similitud con otros lenguajes orientados a objetos y muchas bibliotecas útiles. Una vez que se reconcilie con sus peculiaridades (sangría significativa, uso obligatorio de uno mismo, verificación de errores de tiempo de ejecución, etc.), puede apreciarlo como una forma muy rápida (aunque a veces sucia) de crear scripts y códigos útiles [ 41].
2.11. MiniEdit
MiniEdit es una herramienta de interfaz gráfica para graficar redes para MiniNet ( Figura 8)
3. Simulación de una red SDN usando MiniNet y Python
Descargue de VM con Mininet
Baje la imagen del sitio http://sdnhub.org/tutorials/sdn-tutorial-vm/
Desde el siguiente link la versión exportada, incluye modo gráfico Ubuntu 14.04 y Mininet
http://yuba.stanford.edu/∼srini/tutorial/SDN_tutorial_VM_32bit.ova la imagen viene configurada con modo grafico
Luego importar la imagen EN VIRTUAL BOX por default ( Figura 10 ). ( Figura 11)
Para tener internet en la máquina virtual, se debe poner el adaptador uno, conectado a NAT
3.1. Diseño de la red usando MININET
Para diseñar la red se usa MiniEdit, dentro de MiniNet ver Figura 12:
Ingresar a un terminal y teclear cd/MiniNet cd examples sudo./miniedit.py
Aparecerá la herramienta y se puede dibujar y luego grabar con extensión .mn y .py para ejecutar y hacer pruebas.
En el gráfico se puede apreciar: h son los dispositivos (pc, smartphones, etc), son los switches, y el controlador.
Al diseñar gráficamente la red con MiniEdit, se puede exportar el código Python generado automáticamente por MiniEdit
Como MiniEdit no puede agregar direcciones, MAC se tiene que agregar código manualmente al archivo py.
Ejecutar el comando Pingall para ver los caminos de comunicación permitidos entre host (Figura 14).
4. Conclusiones
La evolución de las redes dio como nacimiento una SDN como una red sofisticada.
SDN tiene la ventaja de poder hacer cambios en la programación del controlador en tiempo real, lo que es imposible en las redes tradicionales.
La existencia de MiniNet como emulador usando POX, permite hacer prácticas de laboratorios muy similares a la realidad y es un software Open source bajo Linux, versus el software de CISCO bajo Windows.
SDN tiene la posibilidad de ejecutar lenguajes de programación, amplía las posibilidades de manipulación de la red.
El uso del lenguaje Python aumenta la cantidad de personas que pueden ser administradores de una red SDN.
En una SDN, la definición de reglas va directo entre equipos y no por los caminos de red