ESTUDIO DEL FUNCIONAMIENTO DE LA HERRAMIENTA MININET
JACKSON EMILIO MARTÍNEZ COPETE
UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BASICAS E INGENIERIA INGENIERIA DE SISTEMAS Y TELECOMUNICACIONES
PEREIRA RISARALDA 2015
ESTUDIO DEL FUNCIONAMIENTO DE LA HERRAMIENTA MININET
JACKSON EMILIO MARTÍNEZ COPETE Informe Final
Director:
NÉSTOR ÁLZATE MEJÍA Ingeniero de Sistemas
UNIVERSIDAD CATÓLICA DE PEREIRA FACULTAD DE CIENCIAS BASICAS E INGENIERIA INGENIERIA DE SISTEMAS Y TELECOMUNICACIONES
PEREIRA RISARALDA 2015
1
AGRADECIMIENTOS
El presente proyecto fue realizado bajo la supervisión del docente Néstor Álzate Mejía a quien me gustaría expresar mi agradecimiento, por haberme guiado desde el principio hasta el final siempre confiando en mí, destacando la paciencia y la dedicación que tuvo para que el proyecto se desarrollara de manera exitosa.
A mis compañeros (Puyi, Dave, Bañol, Sebastián, Chelcy), que a lo largo de este tiempo fuera y dentro del aula me han llenado con momentos de alegrías y de humor que me ayudaron a soportar momentos intensos de estudio.
A los amigos de toda la vida que siempre están en los momentos buenos y malos, alentándome para seguir adelante, y con los cuales me podía desconectar un poco del estudio.
2
DEDICATORIA
A mi familia que es el pilar por el cual soy la persona que soy, en especial a mi madre, Mirian Inés Mosquera Copete le dedico con mucho amor todo el esfuerzo realizado en el desarrollo de este proyecto.
3
RESUMEN
El propósito principal de Mininet, es relacionar a las personas con las redes definidas por software (SDN), a través de la emulación, ya sea en un entorno gráfico o por interfaz de línea de comandos, desarrollados a través del lenguaje de programación Python. Mininet también funciona como un software que permite emular redes reales, en donde esta característica se puede utilizar en el ámbito investigativo, educativo, etc. Las SDN proporcionan un mejor rendimiento y uso de los recursos de la red, debido a la virtualización de estos, en este documento se introduce al lector, a la arquitectura de SDN así como su protocolo Openflow, y se explora de forma general el funcionamiento de la herramienta Mininet.
Descriptores.
Redes, emulación, Mininet, recursos, redes definidas por software.
4
ABSTRACT
The main purpose of Mininet, is to connect people with the software-defined network (SDN), through emulation, in a graphical environment with the official publisher of Mininet or command-line interface, where the GUI as the command- line interface has been developed through the Python programming language.
Mininet also works as a software which allows emulate real networks, where this feature can be used in the field research, educational, etc. The SDN provide a better performance and use of the resources of the network, due to virtualization, in this document one introduces the reader to SDN's architecture as well as his protocol Openflow, and there is explored of general form the functioning of the tool Mininet.
Descriptors.
NETWORKS, PROTOCOL, REAL TIME, SOFTWARE DEFINED NETWORKING.
5
CONTENIDO
RESUMEN ... 3
ABSTRACT ... 4
CONTENIDO ... 5
INTRODUCCION ... 14
OBJETIVOS ... 17
JUSTIFICACIÓN ... 18
ALCANCE Y LIMITACIONES. ... 19
METODOLOGÍA ... 20
MARCO TEORICO ... 21
5.1 Antecedentes ... 21
5.2 Marco conceptual ... 23
5.2.1 Virtualización de redes. ... 23
5.2.2 Ejemplos de las primeras virtualizaciones. ... 23
5.2.3 Limitaciones en las tecnologías de red actuales. ... 25
5.2.4 La necesidad de una nueva arquitectura de red. ... 26
5.2.5 Nuevos paradigmas de virtualización ... 28
MININET... 34
GUÍA DE COMANDOS ... 38
TRABAJANDO CON MININET. ... 47
8.1 Crear y editar topologías desde el editor nano en Ubuntu. ... 47
8.2 Importación de una topología creada en python. ... 51
8.3 Miniedit. ... 55
6
CONTROLADOR POR DEFAULT DE MININET POX. ... 61
CONCLUSIONES Y RECOMENDACIONES ... 65
BIBLIOGRAFÍA ... 68
ANEXOS ... 70
7
LISTA DE ILUSTRACIONES
ILUSTRACIÓN 1. ARQUITECTURA DE SDN 32
ILUSTRACIÓN 2. OPENFLOW SWITCH 33
ILUSTRACIÓN 3. COMANDO SUDO SU 38
ILUSTRACIÓN 4. RESULTADO COMANDO SUDO SU 38
ILUSTRACIÓN 5. COMANDO TOPOLOGÍA BÁSICA MN 39
ILUSTRACIÓN 6. COMANDO TOPOLOGÍA SINGLE 39
ILUSTRACIÓN 7. COMANDO TOPOLOGÍA LINEAR 40
ILUSTRACIÓN 8. COMANDO TOPOLOGÍA TREE 40
ILUSTRACIÓN 9. COMANDO LINK 41
ILUSTRACIÓN 10. COMANDO PING 41
ILUSTRACIÓN 11. COMANDO PINGALL 41
ILUSTRACIÓN 12. COMANDO PINGPAIR 42
ILUSTRACIÓN 13. COMANDO IPERF 42
ILUSTRACIÓN 14. COMANDO NODES 42
ILUSTRACIÓN 15. COMANDO DUMP 42
ILUSTRACIÓN 16. COMANDO NET 43
ILUSTRACIÓN 17. COMANDO EOF 43
ILUSTRACIÓN 18. COMANDO S1 43
ILUSTRACIÓN 19. COMANDO H1 IFCONFIG 44
ILUSTRACIÓN 20. COMANDO S1 IFCONFIG 44
ILUSTRACIÓN 21. COMANDO H1 PS 44
ILUSTRACIÓN 22. COMANDO S1 PS 45
ILUSTRACIÓN 23. COMANDO XTERM H1 45
8
ILUSTRACIÓN 24. RESULTADO COMANDO XTERM H1 45
ILUSTRACIÓN 25. COMANDO HELP 46
ILUSTRACIÓN 26. EJECUCIÓN COMANDO NANO 48
ILUSTRACIÓN 27. VENTANA DONDE SE CREA LA TOPOLOGÍA MEDIANTE EL EDITOR NANO 48 ILUSTRACIÓN 28. IMPORTANDO LAS LIBRERÍAS NECESARIAS, EDITOR NANO 49 ILUSTRACIÓN 29. DEFINIENDO NOMBRE DE LA MI TOPOLOGÍA Y AÑADIENDO
CONTROLADOR Y SWITCHES 49
ILUSTRACIÓN 30. INGRESO DE LAS DIRECCIONES IP EN LOS HOST Y LOS ENLACES PARA
LOS DISPOSITIVOS DE LA RED 50
ILUSTRACIÓN 31. LÍNEAS PARA DAR INICIO A LA RED 50 ILUSTRACIÓN 32. COMANDO CD MININET, PARA ENTRAR AL DIRECTORIO MININET 51
ILUSTRACIÓN 33. RESULTADO COMANDO CD MININET 51
ILUSTRACIÓN 34. COMANDO LS 52
ILUSTRACIÓN 35. IMPORTACIÓN TOPOLOGÍA CONSOLES.PY DESDE EL DIRECTORIO
EXAMPLES. 52
ILUSTRACIÓN 36. RESULTADO IMPORTACIÓN CONSOLES.PY 53
ILUSTRACIÓN 37. ENLACES VIRTUALES 54
ILUSTRACIÓN 38. QUITANDO ENLACES VIRTUALES 55
ILUSTRACIÓN 39. GUI MININET 56
ILUSTRACIÓN 40. CREANDO TOPOLOGÍA CON EL MINIEDIT 57
ILUSTRACIÓN 41. SELECCIONADOR 58
ILUSTRACIÓN 42. HOST 58
ILUSTRACIÓN 43. SWITCH OPENFLOW 58
ILUSTRACIÓN 44. SWITCH 58
ILUSTRACIÓN 45. ROUTER 58
9
ILUSTRACIÓN 46. CABLE CONECTOR 59
ILUSTRACIÓN 47. CONTROLADOR 59
ILUSTRACIÓN 48. GUARDANDO TOPOLOGÍA DESDE MINIEDIT 59 ILUSTRACIÓN 49. EXPORTAR A CÓDIGO PYTHON UNA TOPOLOGÍA 60 ILUSTRACIÓN 50. ABRIR UNA TOPOLOGÍA CREADA EN MINIEDIT 60 ILUSTRACIÓN 51. EJECUCIÓN CONTROLADOR POX CON EL COMPONENTE LEARNING Y
CONEXIÓN DE LA TOPOLOGÍA AL CONTROLADOR 63
ILUSTRACIÓN 52. PRUEBA CON EL CONTROLADOR POX 64
ILUSTRACIÓN 53. BÚSQUEDA DE VIRTUAL BOX 71
ILUSTRACIÓN 54. DESCARGA VIRTUAL BOX 72
ILUSTRACIÓN 55. EJECUCIÓN DEL INSTALADOR DE VIRTUAL BOX 73
ILUSTRACIÓN 56. INSTALACIÓN VIRTUAL BOX 73
ILUSTRACIÓN 57. CONFIGURACIÓN DE LA UBICACIÓN DE VIRTUAL BOX 74 ILUSTRACIÓN 58. FINALIZACIÓN DE LA INSTALACIÓN DE VIRTUAL BOX 74
ILUSTRACIÓN 59. BÚSQUEDA XMING 75
ILUSTRACIÓN 60. DESCARGA XMING 76
ILUSTRACIÓN 61. EJECUCIÓN INSTALADOR XMING 76
ILUSTRACIÓN 62. INICIO INSTALACIÓN XMING 76
ILUSTRACIÓN 63. FASE II INSTALACIÓN XMING 77
ILUSTRACIÓN 64. FASE III INSTALACIÓN XMING 77
ILUSTRACIÓN 65. FASE IV INSTALACIÓN XMING 78
ILUSTRACIÓN 66. FASE V INSTALACIÓN XMING 78
ILUSTRACIÓN 67. FASE VI INSTALACIÓN XMING 79
ILUSTRACIÓN 68. FASE VII INSTALACIÓN XMING 79
ILUSTRACIÓN 69. FINALIZACIÓN INSTALACIÓN XMING 80
ILUSTRACIÓN 70. EJECUCIÓN SEGUNDO PLANO XMING 80
10
ILUSTRACIÓN 71. BÚSQUEDA DEL PUTTY 81
ILUSTRACIÓN 72. DESCARGA PUTTY 82
ILUSTRACIÓN 73. DESCARGA PUTTY PARA WINDOWS 83
ILUSTRACIÓN 74. PÁGINA OFICIAL MININET 84
ILUSTRACIÓN 75. PAGINA DE DESCARGA DE MININET 84
ILUSTRACIÓN 76. DESCARGA .OVA O IMAGEN PARA LA VIRTUALIZACIÓN DE MININET 85 ILUSTRACIÓN 77. BÚSQUEDA DEL ARCHIVO .OVA DESDE VIRTUAL BOX 86
ILUSTRACIÓN 78. BÚSQUEDA II DEL ARCHIVO .OVA 86
ILUSTRACIÓN 79. RUTA ARCHIVO .OVA 87
ILUSTRACIÓN 80. CONFIGURACIÓN DE LA MÁQUINA VIRTUAL 87 ILUSTRACIÓN 81. IMPORTACIÓN DE LA IMAGEN O .OVA 88 ILUSTRACIÓN 82. RESULTADO FINAL DE LA IMPORTACIÓN 89
ILUSTRACIÓN 83. EJECUCIÓN PUTTY 90
ILUSTRACIÓN 84. HOSTANAME OR IP ADDRES 90
ILUSTRACIÓN 85. OPENFLOW@LOCALHOST Y PUERTO EN PORT 2222 91 ILUSTRACIÓN 86. RESULTADO CONFIGURACIÓN I PUTTY 92 ILUSTRACIÓN 87. RESULTADO CONFIGURACIÓN II PUTTY 92
ILUSTRACIÓN 88. INICIAR VM EN VIRTUAL BOX 93
ILUSTRACIÓN 89. EJECUTAR XMING 94
ILUSTRACIÓN 90. EJECUTAR PUTTY 94
ILUSTRACIÓN 91. LOGIN 95
ILUSTRACIÓN 92. XTERM 95
ILUSTRACIÓN 93. COMANDO GIT CLONE 96
ILUSTRACIÓN 94. MININET INSTALL 96
ILUSTRACIÓN 95. PRUEBA INSTALACIÓN EXITOSA MININET 97
11
ILUSTRACIÓN 96. TOPOLOGÍA POR DEFAULT MININET 100
ILUSTRACIÓN 97. LISTADO Y CONEXIÓN DE LOS DISPOSITIVOS DE LA RED 100 ILUSTRACIÓN 98. CONEXIÓN ENTRE SWITCH 1 Y SWITCH 2 101 ILUSTRACIÓN 99. CONEXIÓN ENTRE SWITCH 1 Y SWITCH 5 101 ILUSTRACIÓN 100. CONEXIÓN ENTRE SWITCH 2 Y SWITCH 3 101 ILUSTRACIÓN 101. CONEXIÓN ENTRE SWITCH 2 Y SWITCH 4 102 ILUSTRACIÓN 102. CONEXIÓN ENTRE SWITCH 5 Y SWITCH 6 102 ILUSTRACIÓN 103. CONEXIÓN ENTRE SWITCH 5 Y SWITCH 7 102 ILUSTRACIÓN 104. CONEXIÓN ENTRE EL HOST 1 Y EL SWITCH 3 103 ILUSTRACIÓN 105. CONEXIÓN ENTRE EL HOST 2 Y EL SWITCH 3 103 ILUSTRACIÓN 106. CONEXIÓN ENTRE EL HOST 3 Y EL SWITCH 4 103 ILUSTRACIÓN 107. CONEXIÓN ENTRE EL HOST 4 Y EL SWITCH 4 104 ILUSTRACIÓN 108. CONEXIÓN ENTRE EL HOST 5 Y EL SWITCH 6 104 ILUSTRACIÓN 109. CONEXIÓN ENTRE EL HOST 6 Y EL SWITCH 6 104 ILUSTRACIÓN 110. CONEXIÓN ENTRE EL HOST 7 Y EL SWITCH 7 104 ILUSTRACIÓN 111. CONEXIÓN ENTRE EL HOST 8 Y EL SWITCH 7 105
ILUSTRACIÓN 112. TOPOLOGÍA RESULTANTE 105
ILUSTRACIÓN 113. TEST DE CONEXIÓN 106
ILUSTRACIÓN 114. DISEÑO TOPOLOGÍA 106
ILUSTRACIÓN 115. EJECUTAR EDITOR NANO 107
ILUSTRACIÓN 116. RESULTADO EJECUCIÓN NANO 107
ILUSTRACIÓN 117. CÓDIGO PYTHON TOPOLOGIA PERSONALIZADA 108
ILUSTRACIÓN 118. IMPORTACIÓN DE LIBRERÍAS 108
ILUSTRACIÓN 119. CREACIÓN DE DISPOSITIVOS Y ENLACES 109
ILUSTRACIÓN 120. NETWORK START 109
12
ILUSTRACIÓN 121. IMPORTACIÓN Y EJECUCIÓN TOPOLOGÍA PERSONALIZADA 110
ILUSTRACIÓN 122. PARTE 1 CÓDIGO CONTROLADOR 111
ILUSTRACIÓN 123. PARTE 2 CÓDIGO CONTROLADOR 112
ILUSTRACIÓN 124. PARTE 3 CÓDIGO CONTROLADOR 113
ILUSTRACIÓN 125. ACTUALIZAR TABLA DE DIRECCIONES 113 ILUSTRACIÓN 126. DIRIGIR LOS PAQUETES CON UN DESTINO MAC 114 ILUSTRACIÓN 127. PARTE FINAL CÓDIGO CONTROLADOR 114
13
LISTA DE ANEXOS
Anexo 1:
Guía instalación y configuración de la máquina virtual del entorno de trabajo en Mininet
Anexo 2:
Este anexo contiene Prácticas de laboratorio
14
INTRODUCCION
Actualmente se evidencia un auge significativo en el uso de las redes de telecomunicaciones, se puede decir, que estas pasaron a ocupar un papel fundamental en el mundo actual, teniendo la necesidad de una mejora constante, actualmente estamos ante una nueva evolución tecnológica, en donde las telecomunicaciones están involucradas por diferentes razones. La necesidad de una nueva arquitectura, protocolos más dinámicos y la importancia del software, puesto que nos dirigen hacia una era en donde la creación de nuevos paradigmas que mejoren los actuales ocuparan un papel importante, y es que a partir de las progresivas necesidades por brindar u obtener el mejor servicio, los investigadores han tenido que realizar esfuerzos para desarrollar tecnologías que cubran estas necesidades.
Uno de los tantos problemas de la arquitectura de red actual, es que aunque funciona bien y permiten la comunicación entre los distintos dispositivos, en general no están alineados con los objetivos de negocio ni con las diferentes aplicaciones, si no que forman una estructura estática y cerrada que no se puede adaptar a las necesidades cambiantes en tiempo real ni a la lógica de las aplicaciones. Se hace necesario entonces el desarrollo de una nueva arquitectura que permita adaptarse a estos cambios, y es que el principal problema para los investigadores es el tiempo, ya que se debe obtener resultados en un corto periodo de tiempo. La emulación pasa a ser un aliado importante ya que permite obtener resultados sin la necesidad de desplegar una estructura física, siendo Mininet un emulador, que permite emular redes y dispositivos.
15
Los avances en las telecomunicaciones, se han venido desarrollando trabajos de investigación obteniendo resultados como las redes definidas por software y el protocolo OpenFlow, destacando que estas permiten la posibilidad de realizar cambios dinámicos a la red, Mininet permite a los investigadores emular redes definidas por software, posibilitando a los desarrolladores poder crear aplicaciones compatibles con las SDN, sin la necesidad de preocuparse por las APIS de los diferentes fabricantes, ya que en estas, todo sería controlado por un mismo sistema operativo (S:O). Mininet y la emulación son un aliado estratégico para los investigadores, ya que permite relacionarse con los equipos y protocolos desde un entorno virtual. Este emulador se distribuye bajo una licencia de código abierto, la cual permite desarrollar, compartir y experimentar con sistemas de redes definidas por software y OpenFlow que es el protocolo que permite la comunicación entre los dispositivos de la red y el controlador a través de una dirección ip y un puerto especifico conectándose por medio del estándar TCP.
Este documento se centra en el funcionamiento de Mininet, dando una vista general de la operatividad, basado en las emulaciones de que vienen predeterminadas en la herramienta y redes personalizadas.
Además se menciona la necesidad de una nueva arquitectura, así como las limitaciones en las tecnologías de red actual.
En el desarrollo de este estudio se abordaran los temas mencionados anteriormente, mostrando los aspectos generales, ventajas, desventajas y especificaciones básicas del funcionamiento de los mismo.
16
En el siguiente apartado de se describe la distribución del estudio de conforme a los objetivos específicos:
En el primer apartado se hablara generalmente de la Virtualización de redes, de las redes de área local virtual, los tipos de estas redes, redes virtuales privadas (vpn), redes activas, redes programables, redes overlay, y de las SDN, OpenFlow, describiendo la arquitectura y su funcionamiento.
Por último se centra en la herramienta desde formas de instalación, comandos, y emulaciones, se mencionan diferencias en comparación con otras herramientas, se presentan propuestas de laboratorio para el uso fundamental de la misma, también se identifica las ventajas y desventajas más notorias, así como sus principales atributos, el método de iteración con una red SDN, y por último se menciona como se trabaja de forma personalizada con la herramienta.
Este trabajo servirá como ayuda en el manejo de la herramienta Mininet para trabajos o proyectos de investigación que se interesen por las redes definidas por software.
17
OBJETIVOS GENERAL.
Analizar y documentar el funcionamiento de la herramienta para emulación de redes definidas por software Mininet, identificando sus ventajas y desventajas.
OBJETIVOS ESPECÍFICOS.
Establecer mediante búsqueda bibliográfica las fortalezas y debilidades de las redes definidas por software y el protocolo OpenFlow.
Redactar un manual de uso de la herramienta.
Documentar la información obtenida durante el desarrollo del proyecto.
Diseñar prácticas de laboratorio.
18
JUSTIFICACIÓN
En la investigación de nuevas tecnólogas se evidencia inconvenientes para probar las mismas, parte de esto se debe a la falta de recursos económicos o herramientas tecnológicas que permitan probar estos nuevos desarrollos. Antes de implementar los proyectos en ambientes de producción, actualmente se cuentan con diferentes herramientas para la emulación que sirve para los investigadores ajusten sus ideas y proyectos.
Con la utilización de Mininet se pretende establecer una alternativa que posibilite la mejora de las dificultades que se presentan en las áreas como la investigación o educación. Mininet permite recrear un escenario virtual, con la posibilidad de visualizar el comportamiento de los dispositivos, y poder llegar a conclusiones en un periodo de tiempo corto. La herramienta cuenta con las funciones fundamentales que suplen falencias, como el tiempo, los recursos económicos, así se podrá realizar el control de los elementos y facilitar la obtención de resultados.
Un emulador como Mininet es una herramienta importante para las áreas de investigación o educación, ya que permite relacionarse a las personas, sean estudiantes, docentes, investigadores, con las redes definidas por software y nuevos protocolos.
19
ALCANCE Y LIMITACIONES.
En esta investigación se describirá de forma general las limitaciones en las tecnologías de redes actuales, así como la necesidad de una arquitectura y su relación con las redes definidas por software y OpenFlow, desde la perspectiva de la herramienta Mininet.
La principal restricción cuando de investigar y probar nuevos protocolos se trata, es la falta de emuladores que posean la flexibilidad de probar estas nuevas propuestas. Este trabajo se centra en el estudio de la herramienta Mininet, principalmente en la revisión de cómo se instala, su entorno y lógica de programación para configurar redes, así como de la detección de sus ventajas y limitaciones. Una vez realizado este trabajo se propone una práctica de laboratorio que involucre lo investigado.
20
METODOLOGÍA
En el desarrollo de este estudió las principales fuentes de información fueron, artículos, y páginas web de alto reconocimiento internacional como lo es la ONF, puesto que considerando la forma de investigación, el trabajo se apoyó en otras fuentes de información arbitrada.
En la duración y desarrollo de este proyecto se empleará un enfoque metodológico fundamentado en observación, lectura e interpretación, debido a que es un tema moderno y hay poca información en libros, por lo que la información esencial se encuentra en inglés.
La metodología fue en abordada desde tres etapas. En una primera etapa, se realizó la exploración bibliográfica, con el fin de conocer la base teórica de las redes definidas por software y así poder comprender su relación con Mininet, que es el objetivo de este trabajo. Una segunda etapa, donde se resalta el análisis de la información, realizando la organización de la información encontrada, con la cual se construye y se le da estructura al documento con la información encontrada. Una tercera etapa se centra en el análisis y diseño de los laboratorios con el objetivo de que estos sirvan como base para las personas que tendrán un primer acercamiento a la herramienta.
21
MARCO TEORICO
5.1 Antecedentes
Los antecedentes referentes al estudio de la emulación de redes definidas por software que se encontraron para la revisión bibliográfica de este proyecto son escasas, puesto que al ser un tema que se encuentra en discusión e investigación, no ha tenido muchos desarrollos en el ámbito local y nacional pero si un alto impacto en el ámbito internacional.
Ana Rojas realizo una Propuesta para la implementación de un laboratorio de acceso remoto usando redes definidas en software, en el documento se especifica que la motivación que tuvo fue la limitada disponibilidad de recursos de laboratorios físicos, para realizar las prácticas de redes y las barreras que tiene los investigadores para avanzar en el desarrollo de nuevos proyectos de investigación, además se describe en el documento los diseño de la arquitectura de software así como las pruebas de implementación en un entorno emulado utilizando el software Mininet. (Ana Rojas, 2012)
En su trabajo Mecanismos de control de las comunicaciones en la internet del futuro a través de OpenFlow, el autor Sergio Rodríguez, aborda este tema donde describe los elementos que se relacionan con el protocolo, tanto la virtualización como las redes definidas por software (SDN), así como un resumen de la herramienta para la emulación de las SDN, Mininet. (Sergio Rodríguez, 2012)
Juan Chico realizó una implementación de un prototipo de una red definida por software (SDN) empleando una solución basada en hardware, en esta, el autor lo divide en cuatro capítulos, organizados de la siguiente manera: el primer capítulo corresponde al marco teórico básico de las SDN, el segundo capítulo a la
22
emulación de una SDN, el tercer capítulo a la implementación de una SDN y finalmente se presentan las conclusiones y recomendaciones obtenidas de la realización del proyecto. El expone los conceptos básicos de las SDN, su arquitectura y las ventajas de separar el plano de datos del plano de control en una red. Posteriormente, usa la herramienta Mininet para emular una SDN utilizando un controlador NOX (Juan Chico, 2013)
Carlos González en su proyecto de fin de carrera presento la propuesta sobre el Despliegue de una maqueta de red basada en OpenFlow, en la cual el principal objetivo de ese proyecto era desplegar una maqueta OpenFlow, el argumento que él utilizo para llevar acabo la propuesta fue que, OpenFlow ya se está convirtiendo en una alternativa de gran interés para la Internet del Futuro y argumenta además que empresas como Google, ya lo están usando para la comunicación de sus data-center en todo el mundo. (Carlos González, 2014) Diana Fueltala en su proyecto previo a la obtención del título de ingeniería en electrónica y redes de información, presento una implementación de un prototipo de una red definida por software (SDN) empleando una solución basada en software, ella dividió el proyecto en cuatro capítulos: en el primer capítulo se realiza una revisión del fundamento teórico de las SDN, el segundo capítulo corresponde a la implementación del prototipo de una red SDN empleando switches basados en software, el tercer capítulo abarca el desarrollo de la aplicación para control de acceso a la red, y en el cuarto capítulo se presentan las conclusiones y recomendaciones obtenidas durante la realización de este Proyecto. En la fundamentación teórica presento las limitaciones de las redes actuales y las tendencias del tráfico y presento la propuesta de una solución SDN como alternativa ante la necesidad emergente de una nueva arquitectura de red;
resumió la arquitectura de las SDN, el protocolo OpenFlow y el software requerido para el servidor controlador; posteriormente describió algunas aplicaciones del plano de control y habla acerca de la virtualización de los componentes de una
23
red, enfocada en los equipos de conmutación, así como la implementación del prototipo de una red SDN. (Diana Fueltala, 2014).
5.2 Marco conceptual
5.2.1 Virtualización de redes.
La virtualización tiene como características la de optimizar recursos y reducir costos, ganando así rendimiento y escalabilidad, ya que la arquitectura actual de la red depende mucho de la compatibilidad de los dispositivos, impidiendo la introducción de nuevas tecnologías. Por consiguiente la virtualización juega un papel importante cuando se quiere tener una interconexión flexible de redes heterogéneas.
En un ambiente de red cuando un dispositivo físico soporta la convivencia múltiples redes virtuales, se dice que tolera la virtualización, en Oracle (2011) definen la virtualización de redes como la combinación de los recursos de red del hardware con los recursos de red del software en una única unidad administrativa, en donde, el objetivo de la virtualización de redes consiste en facilitar un uso compartido de recursos de redes eficaz, controlado y seguro para los usuarios y los sistemas. El producto final de la virtualización de redes es la red virtual.
5.2.2 Ejemplos de las primeras virtualizaciones.
5.2.2.1 Red de área local virtual.
Las LANs virtuales (VLANs) son agrupaciones, definidas por software, de estaciones LAN que se comunican entre sí como si estuvieran conectadas al mismo cable, incluso estando situadas en segmentos diferentes de una red de edificio o de campus. Gracias a estas redes es posible independizarse de las limitaciones de la arquitectura física, estas limitaciones pueden ser geográficas, de
24
direcciones entre otras, ya que determina una división lógica basada en la asociación de quipos según determinados criterios como las direcciones MAC, protocolos (Collado, 2004). Las VLANs están definidas por los estándares IEEE 802.1D, 802.1p, 802.1Q y 802.10.
Tipos de vlan
La VLAN de nivel 1. Este tipo es la VLAN más sencilla ya que un solo puerto solo puede pertenecer a una VLAN, también se le conoce como VLAN basada en puerto (Kioskea, 2012)
La VLAN de nivel 2. Se fundamenta en la dirección MAC de los equipos, por consiguiente se ejecuta un mapeo para que el usuario pertenezca a una VLAN designada, también se le llama VLAN basada en la dirección MAC (Kioskea, 2012)
La VLAN de nivel 3: existen diferentes tipos de VLAN de este nivel que son:
o La VLAN basada en la dirección de red. Esta conecta subredes según la dirección IP de origen de los datagramas (Kioskea, 2012) o La VLAN basada en protocolo. Esta permite crear una red virtual por
tipo de protocolo puede ser, TCP/IP, IPX, AppleTalk, etc. Por lo tanto, se pueden agrupar todos los equipos que utilizan el mismo protocolo en la misma red (Kioskea, 2012)
5.2.2.2 Redes virtuales privadas (vpn)
Una red VPN (red privada virtual) es una red privada construida dentro de una infraestructura de red pública, como por ejemplo Internet. Las empresas pueden
25
usar una red VPN para conectar de manera segura oficinas y usuarios remotos por medio de un acceso a Internet económico suministrado por un tercero, en lugar de a través de enlaces WAN dedicados o enlaces de acceso telefónico de larga distancia. Las organizaciones pueden usar una red VPN para reducir sus costes de ancho de banda de WAN, a la vez que aumentan las velocidades de conexión al usar la conectividad a Internet de ancho de banda elevado, tales como DSL, Ethernet o cable. Una red VPN proporciona el máximo nivel de seguridad posible a través de Seguridad IP cifrada (IPsec) o túneles VPN Secure Sockets Layer (SSL) y tecnologías de autenticación. Estas redes protegen los datos que se transmiten por VPN de un acceso no autorizado. Las empresas pueden aprovechar la infraestructura de Internet fácil de aprovisionar de la VPN, para añadir rápidamente nuevos emplazamientos y usuarios. También pueden aumentar enormemente el alcance de la red VPN sin ampliar la infraestructura de forma significativa (Seguridad VPN Cisco System, 2009).
5.2.3 Limitaciones en las tecnologías de red actuales.
Cumplir con la demanda de los usuarios de la cantidad de servicios y contenidos que estos manejan, es una tarea que es virtualmente inestable con la arquitectura de las redes tradicionales que se usan hoy en día. Como se menciono son muchos los aspectos por los cuales se tiene que mejorar la tecnologias de las redes actuales, pero tambien hay que mencionar las limitaciones de las tecnologias de red en estos momentos. (Open Networking Foundation) (The New Norm for Networks, 2012) las arquitecturas de red existentes no han sido diseñadas para satisfacer las necesidades de los usuarios, las empresas y los operadores de hoy en día. Los diseñadores de redes se encuentran restringidos por las limitaciones de las redes actuales. Las limitaciones de la arquitectura de las redes se distiguen en los siguientes items:
26
Políticas inconsistentes. Implementar políticas para toda la red supone tener que configurar muchos dispositivos y otros elementos que hacen parte de la red, todo estas configuraciones recurren en gastos que muchas veces son muy eslevados.
Este es uno de los grandes problemas de las redes actuales que para modificar algo en muchas ocaciones toca reediseñar toda la red. Por ejemplo, cada vez que se añade una nueva máquina virtual, el proceso puede llevar horas y, en algunos casos, días para que se vuelvan a configurar las ACLs (listas de control de acceso, es un concepto de seguridad informática usado para fomentar la separación de privilegios en toda la red). (Open Networking Foundation) (The New Norm for Networks, 2012).
Incapacidad para escalar. Al igual que la demanda en los centros de datos crece rápidamente, también debe crecer la red. Sin embargo, se vuelve mucho más compleja con la incorporación de cientos o miles de dispositivos que deben ser configurados y gestionados. (Open Networking Foundation) (The New Norm for Networks, 2012).
Dependencia de proveedores. Los operadores de servicio tratan de mejorar y presentar nuevos servicios disponibles, a las necesidades que se van presentando de los usuarios, pero estas necesidades de estos a medida que pasa el tiempo tambien van cambiando. La capacidad de respuesta se ve obstaculizada por los ciclos de los vendedores de productos, que pueden llegar a los tres años o más.
La falta de interfaces estándar y libres limita la capacidad de los operadores para adaptar la red a sus entornos individuales (Open Networking Foundation) (The New Norm for Networks, 2012).
5.2.4 La necesidad de una nueva arquitectura de red.
Con el continuo avance de las tecnologia y la globalizacion, las telecomunicaciones ya hacen parte de la vida cotidiana de las personas, es por eso que buscar mejoralas hace parte fundamental del desarrollo de las mismas.
La explosión de los dispositivos móviles y los contenidos, la virtualización de servidores, y la llegada de los servicios en la nube son algunas de las tendencias
27
que impulsan a la industria del networking a reexaminar las arquitecturas de red tradicionales. Muchas redes convencionales son jerárquicas, construidas con niveles de conmutadores Ethernet dispuestos en una estructura de árbol. Este diseño tiene sentido cuando el modelo cliente-servidor era dominante, pero esta arquitectura estática es inadecuada para los requisitos actuales (Open Networking Foundation) (The New Norm for Networks, 2012).
Cuando algo funciona quizas no hay que modificarlo, pero cuando esa modificaciones mejoran el funcionamiento y los beneficios obtenidos hay que arriesgarse siempre y cuando la posibilidad de éxito exista. Algunas de las nesidades para una nueva arquitectura de red son las siguientes:
Cambio de patrones de tráfico. Dentro de los data center de empresas, los patrones de tráfico han cambiado significativamente. En contraste con las aplicaciones mas tradicionales donde la mayor parte de la comunicación se produce entre un cliente y un servidor, los servicios de hoy en día acceden a diferentes bases de datos y servidores. Al mismo tiempo, los usuarios están cambiando los patrones de tráfico de red a medida que impulsan el acceso a contenidos y aplicaciones corporativas desde cualquier tipo de dispositivo, conectándose desde cualquier lugar y en cualquier momento. Por último, muchos administradores de data centers de empresas, están considerando un modelo de utility computing, que podría incluir una nube privada, nube pública, o una mezcla de ambas, lo que genera un tráfico adicional en las redes de área extensa (WAN).
(Open Networking Foundation) (The New Norm for Networks, 2012)
La tendencia en el consumo de las TI. El avance de las tecnologías de la comunicación relacionada con el consumo por parte del usuario, provoca un cambio en la forma en que se comunica la sociedad. Los usuarios, hacen un uso
28
cada vez más relevante de dispositivos personales móviles, como teléfonos inteligentes, tablets y computadoras portátiles para acceder a la red corporativa (Open Networking Foundation) (The New Norm for Networks, 2012).
El aumento de servicios en la nube. En la actualidad mucho del procesamiento y almacenamiento masivo de datos se guarda en servidores que alojen esta información del usuario, toda esta informacion esta en la nube, es decir en servidores que guardan la informacion en internet y puedes acceder a ella desde cualquier lugar que tenga conexión a internet. Las empresas han adoptado con entusiasmo los servicios en la nube, tanto públicos como privados, dando lugar a un crecimiento sin precedentes de estos. Las unidades de negocio de la empresa ahora demandan agilidad para acceder a las aplicaciones, la infraestructura y otros recursos TI bajo demanda (Open Networking Foundation) (The New Norm for Networks, 2012).
Mayor tamaño de los datos implica mucho más ancho de banda. Hoy en día la manipulación de grandes datos o conjuntos de mega datos requiere un procesamiento paralelo masivo de miles de servidores, los que requieren a su vez conexiones directas entre sí. La aparición de este tipo de datos está generando una demanda adicional en la capacidad de la red en los data centers (Open Networking Foundation) (The New Norm for Networks, 2012).
5.2.5 Nuevos paradigmas de virtualización
5.2.5.1 Redes activas.
Las redes activas plantean un nuevo modelo de la arquitectura de red en la que los nodos se puedan programar, lo que se considera como un gran avance conceptual en la evolución de las tecnologías de la red. Estas redes permiten a los nodos realizar un proceso a medida que los paquetes se reenvían.
29 5.2.5.2 Redes programables.
Una red programable se diferencia de cualquier otro contexto de red, ya que las redes programables tienen una característica particular de que se pueden programar por medio de APIs, esta programación se consigue con la integración de la capacidad computacional.
5.2.5.3 Redes overlay.
Es una red virtual de nodos enlazados lógicamente, en donde este enlace se hace mediante una aplicación que mantiene simultáneamente la conectividad, para proporcionar los recursos para el mantenimiento de la red.
5.2.5.4 Redes definidas por software.
Las redes definidas por software (SDN) es un tema de mucho interés, muy discutido, aunque es un tema nuevo todavía, tiene una enorme capacidad que transformar el funcionamiento actual de las redes y aún más en las redes complejas, nos acercamos a la era del Todo Definido por Software, que será una época importante, el software se aplica a todas las tecnologías que afectan nuestras vidas y las redes no son una excepción.
SDN está genera un cambio en el diseño del entorno de las tecnologías de la información de las compañías, cambiando el plano de control de la red, a un controlador central que gestiona todos los recursos para los dispositivos. SDN aporta grandes beneficios para las compañías, como, son realizar cambios de forma rápida y mucho más fácil, todo esto en tiempo real, además de que se reducen los costes del uso hardware y personal.
El objetivo principal de SDN es brindar a los administradores las herramientas centralizadas de programación, virtualización y monitorización de la situación, todo esto en tiempo de ejecución o en tiempo real, todo esto hace que las redes se adapten a necesidades determinadas, lo que garantizara un cambio en los data centers, hacia una nueva generación con características para reaccionar y
30
adaptarse a los cambios, automatizar recursos, simplificar tareas, todo esto será determinante en el mundo de las telecomunicaciones y del Networking.
En las SDN, se pueden visualizar 4 etapas muy importantes, automatización de redes, virtualización de redes, ampliación de SDN a las redes WAN y las auténticas redes definidas por software.
Pero, ¿qué es exactamente las redes definidas por software? Es la separación de los planos de control y de datos (Open Networking Foundation) (The New Norm for Networks, 2012). En otras palabras la separación de la capa que se encarga de elaborar el mapa de red y de procesar el tráfico y la otra que decide qué hacer con los paquetes que aterrizan en una interfaz de entrada, trasladando la información desde su origen hasta su destino final, este organismo especifica además, que la SDN es una arquitectura que ha sido diseñada para permitir redes manejables y rentables (Open Networking Foundation) (OpenFlow enabled SDN and Network Functions Virtualization), 2014).
En las SDN existen los dispositivos de conectividad que se pueden generalizar, como elementos constituidos por dos distintos componentes una fracción de software y otra de hardware. En donde el hardware tiene las caracteristicas parecidas a las de una red tradicional, como la commutacion entre otras, por otro lado el software se comunica con el controlador de la red, para obtener las ordenes que definen el comportamiento de la misma.
La ilustración 1 representa la arquitectura de las redes definidas por software, en donde se distingue tres capas, la capa de aplicación (Application layer), capa de control (Control Layer), y la capa de infraestructura (Infrastructure layer).
La capa de aplicación: Esta capa como las aplicaciones del usuario que consume los servicios de comunicaciones de las SDN (Open Networking Foundation) (OpenFlow enabled SDN and Network Functions Virtualization), 2014)
31
La capa de control: Esta capa es la que permite tener el control de las SDN en un centro de control centralizado, además de permite supervisar el estado de la red.
La capa de infraestructura: Consiste en los elementos que conforman la red.
Dentro de cada dispositivo de red y de seguridad (conmutadores, enrutadores y firewall), es posible separar el software en cuatro niveles o planos. Esto niveles son forwarding, control, servicios y administración (Juniper) (Descifrando las redes definidas por software), 2013).
Forwarding. Este nivel se encarga del envío de paquetes. Este plano Está optimizado para mover los datos lo más rápido posible (Juniper) (Descifrando las redes definidas por software), 2013).
Control. Este nivel es el que se encarga de realizar el análisis de la topología de la red. Este toma decisiones sobre el destino del flujo del tráfico de red, asegurando que el tráfico sea fluido (Juniper) (Descifrando las redes definidas por software), 2013).
Servicios. Cuando el tráfico requiere mucho más procesamiento el plano o nivel servicio se encarga de modelar este procesamiento. El plano de servicios se encarga de la toma de decisiones y de llevar a cabo las operaciones complejas con los datos de red que el hardware de reenvío no puede llevar a cabo (Juniper) (Descifrando las redes definidas por software), 2013).
Administración. Este nivel se encarga de la configuración de los dispositivos de red así mismo como la gestión de los mismos.
32
Ilustración 1 Arquitectura de SDN
Fuente: https://www.opennetworking.org/sdn-resources/sdn-definition
5.2.5.4.1 Openflow
Es un protocolo con el cual se puede extraer la inteligencia de red (de los enrutadores) y programar las redes de comunicaciones para cumplir los objetivos específicos de cualquier negocio. En términos más generales es un protocolo que permite a un servidor decirle a los conmutadores de red adónde enviar paquetes.
En una red convencional, cada conmutador tiene software propietario que le dice qué hacer. Con OpenFlow se centralizan las decisiones de migración de paquetes, de modo que la red se puede programar independiente de los conmutadores individuales y equipo del centro de datos (Alvaro, 2012).
Es un protocolo que garantizar la interoperabilidad de los distintos componentes que conforman una red definidas por software OpenFlow, McKeown et al. (2008) afirma que OpenFlow proporciona un protocolo abierto para programar las tablas de flujo en diferentes switches y routers, por lo tanto este protocolo permite definir
33
el flujo y por otro lado determinar el camino por donde se transmitirán los paquetes todo esto sin afectar el trafico normal de la red.
El protocolo OpenFlow permite la comunicación entre el switch y el controlador.
Los switches deben ser capaces de establecer comunicación con los controladores, usando una dirección IP y puerto especificado por el usuario. Si el switch conoce la dirección del controlador éste inicia una conexión TCP estándar con el controlador. (Romero, 2012).
Switch Openflow.
Es posible dividir un Switch OpenFlow en tres partes, como se observa en la ilustración 2, las tablas de flujo, la seguridad del canal y por último el protocolo OpenFlow. Las tablas de flujo indican a los switch como deben proceder los paquetes a través de la red. La seguridad permite conectar a los switch con dispositivos remotos. Protocolo Openflow que es un estándar de comunicación abierta entre los controladores y el switch. (Romero, 2012).
Ilustración 2 Openflow Switch
Fuente: http://yuba.stanford.edu/cs244wiki/index.php/Overview
34
MININET
Mininet es un emulador de red, que permite crear redes virtuales, escalables utilizando las redes definidas por software. Su comportamiento es similar a los elementos de hardware. La eficiencia de esta, permite que con un solo comando se cree y ejecute una red, tal como se muestra en la ilustración 3, Mininet tiene como característica principal que las configuraciones realizadas en una emulación pueden llegar a ser implementadas en una estructura física sin la necesidad de realizar grandes cambios, además Mininet es una solución que está disponible de forma gratuita, además se puede disponer del código fuente.
Como lo afirma (Lantz, et al, 2014) los principales atributos de Mininet es que es una herramienta:
Flexible: Permite interpretación de nuevas topologías y funcionalidades recordando que la principal utilidad se da con redes definidas en software, mediante el uso de lenguajes de programación python en plataformas como Linux y Windows.
Desplegable: La posible implementación de un prototipo funcional no debería exigir cambios en el código o en la configuración en un dispositivo final.
Interactivo: La administración y operación una red emulada se realiza en tiempo real, como si se estuviese trabajando sobre una red física.
Escalable: En una máquina física se permite la escalabilidad cientos y miles de switches.
Realista: El comportamiento de un prototipo desarrollado en Mininet es el mismo que con un dispositivo real.
Compartible: Experimentación sencilla de prototipos independientes, poder realizar pruebas y compartir estas ideas desarrolladas de una manera fácil.
35
Código abierto. Mininet es un proyecto de código abierto, por lo que se le anima a los usuarios a examinar su código fuente, modificarlo, corregir errores, y enviar solicitudes de parches. (Lantz, et al, 2014).
Mininet se puede desempeñar en muchos campos, investigativo, educativo, experimental, en donde se pueden las características que ofrece esta herramienta pueden ser útiles, características como:
• Probar una topología de red compleja sin la necesidad de utilizar una red física.
• Incluye una interfaz de línea de comandos (CLI), que proporciona comandos de diagnóstico, así como la capacidad para enviar una orden a un nodo de la red.
• Compatibilidad con topologías personalizadas.
La primer versión de Mininet fue desarrollado por Bob Lantz y Brandon Heller, basado en el prototipo original creado por Bob Lantz en el 2009.
La versión más reciente de Mininet es la 2.2.1 desarrollada por Bob Lantz y Brian O’Connor, teniendo como valor añadido la incorporación de una GUI (interfaz gráfica de usuario) y la posibilidad de instalar mininet en una Raspberry Pi que es un es un ordenador de placa reducida.
Mininet en comparación de otras herramientas similares, como OpenFlowVMS o el entorno VM Nox, ofrece ventajas como: velocidad en el arranque, mayor escalado, más ancho de banda y la facilidad de instalación.
En la versión de actual de mininet esta se ejecuta sobre una sola máquina y emula solo enlaces cableados, ofreciendo una virtualización parcial que limita su la funcionalidad, ya que no puede manejar diferentes kernels del sistema operativo simultáneamente, por lo que todos los host comparten el mismo sistema de ficheros.
Mininet todavía sigue en continuo desarrollo, y se espera que se convierta en una plataforma altamente útil para investigación y experimentación, entre otras, lo que caracteriza a Mininet es el sencillo método que tiene para experimentar con OpenFlow y SDN.
36 Método para la creación de una SDN.
Mininet proporciona un método o procedimiento para la interacción con una red SDN y es mediante la combinación de virtualización a una interfaz de línea de comandos (CLI), dicho procedimiento es de prototipado rápido para crear, personalizar y compartir una SDN, teniendo la posibilidad de en dispositivos reales, el proceso de creación de una SDN sigue los siguientes ítems (Mininet, 2014):
A-Creación: Mininet emula los diferentes elementos, links, hosts, switches y controladores, para crear una red SDN, este proceso se hace a través de la virtualización del SO Linux.
Links: Es un enlace de Ethernet virtual con la función de actuar como un cable de red conectando dos interfaces virtuales, pudiendo enviar paquetes desde una interfaz con destino de la otra, el comportamiento de este link es como el de un puerto de Ethernet real.
Host: En Mininet un host es un proceso simple de Shell situado dentro de su propio espacio de nombres de red, cada host posee su propio enlace virtual.
Switches: Son dispositivos con software OpenFlow que tienen el mismo comportamiento como un dispositivo real.
Controladores: Un controlador puede estar en algún lugar de la red, solo que este siempre tenga conectividad a nivel ip con otros dispositivos (switch) cuando estos estén en ejecución.
B-Iteración: La iteración en Mininet se realiza cuando se empieza la red, se pueden ejecutar diferentes comandos para los distintos elementos que la conforman, para esto se Mininet la interfaz CLI (interfaz de línea de comandos), permitiendo a los usuarios poder controlar y gestionar la red.
C-Personalización: La posibilidad de exportar un archivo .py, en donde el contenido de este sea una serie de líneas de comandos escritas en lenguaje
37
python, pocas líneas de código permiten la posibilidad de crear una topología y la personalización de los nodos.
D-Ejecución en hardware: En Mininet cada elemento se comportar de la misma forma que lo hace uno físico, esto para realizar la adecuación al hardware, componentes como la topología debe ser la misma de forma virtual a la física, los elementos emulados deben ser reemplazados a su equivalente físico, cada switch con OpenFlow debe ser reemplazado por uno real, ya configurado para conectarse simplemente al controlador.
Escalabilidad: Una de las características especiales de Mininet es la posibilidad de ejecutar topologías con un número determinado de nodos o dispositivos.
38
GUÍA DE COMANDOS Esto son algunas siglas que se utilizan en Mininet que se deben Hx → Host
Sx → Switch Cx → Controller
$ → comando en shell
# → comandos como root
Mininet> → comandos dentro de Mininet Listado de Comandos:
Sudo su
Entrar en modo privilegiado ingresando la contraseña de la cuenta de usuario, esto se hace para poder ejecutar comandos que son privilegiados.
Ilustración 3 Comando sudo su
Ilustración 4 Resultado comando sudo su
$Sudo mn
Crea una topología por default con 1 switch, 1 controlador y 2 hosts.
39
Ilustración 5 Comando topología básica mn
$sudo mn --topo single,N
Para crear una topología single de N host, donde N es el número de hosts deseados.
Ilustración 6 Comando topología single
$sudo mn --topo linear,N
40
Crea una topología linear de N host y N switches, donde N es el número de hosts y switches deseados.
Ilustración 7 Comando topología linear
sudo mn --topo tree,N
Crea una topología en árbol de N host y N switches.
Ilustración 8 Comando topología tree
mininet>link [node1][node2][up o down]
41 Activar o desactivar un o link entre dos nodos.
Ilustración 9 Comando Link
mininet>h1 ping h2
Instrucción para saber si hay conectividad entre un host de origen (h1) y un host de destino (h2).
Ilustración 10 Comando Ping
mininet>pingall
Prueba conectividad entre dos nodos.
Ilustración 11 Comando Pingall mininet>pinPair
42
Realiza un test de conectividad entre las diferentes parejas de host de la red.
Ilustración 12 Comando Pingpair
mininet>iperf
Comando para la caracterización del ancho de banda entre host.
Ilustración 13 Comando Iperf
mininet>nodes
Muestra los nodos de la topología.
Ilustración 14 Comando Nodes
mininet>dump
Con el comando dump, se observa la información de todos los nodos que hacen parte de la topología.
Ilustración 15 Comando Dump
43 mininet>net
Con este comando se muestra como están conectados los dispositivos de la red.
Ilustración 16 Comando Net
mininet>EOF
Detiene los dispositivos de la red y la cierra.
Ilustración 17 Comando EOF
mininet>s(numero del switch) arp
Comando para el protocolo de resolución de direcciones.
Ilustración 18 Comando s1
mininet> h(número del host) ifconfig
Muestra la configuración de la interfaz del host
44
Ilustración 19 Comando h1 ifconfig
mininet> s(número del switch) ifconfig
Muestra la configuración de la interfaz del switch.
Ilustración 20 Comando s1 ifconfig mininet>h(número del host) ps
Imprime la lista de procesos a partir de un proceso de hosts.
Ilustración 21 Comando h1 ps
45 mininet>s(número del switch) ps
Imprime la lista de procesos del switch.
Ilustración 22 Comando s1 ps
mininet>xterm h1
Abre un terminal para el nodo.
Ilustración 23 Comando Xterm h1
Ilustración 24 Resultado comando Xterm h1
mininet>help
Ayuda, muestra lista de comandos de Mininet
46
Ilustración 25 Comando help
mininet>exit Salir de mininet
47
TRABAJANDO CON MININET.
Mininet como se ha venido hablando en todo el documento ofrece una interfaz de línea de comando de donde se ejecuta el comando y se visualiza los resultados de este comando, dicha interfaz se ejecuta des la terminal en Ubuntu y en Windows desde el cmd, a continuación se presentaran como importar topologías previamente creadas en código python, como crear desde el editor nano en Ubuntu, como editarlas, como borrar o limpiar una topología para trabajar con otra, como es el funcionamiento de la GUI de Mininet, y finalmente como conectarse con el controlador que trae Mininet por default.
8.1 Crear y editar topologías desde el editor nano en Ubuntu.
Para crear una topología desde el editor nano (editor de textos para la terminal) en Ubuntu navegamos hasta la carpeta en la que deseamos guardar el archivo con las líneas de código python, para posteriormente ejecutar la topología que acabamos de crear.
Para editar una topología existente se sigue el proceso es similar al de crear una, ya que se tiene que navegar por el directorio hasta llegar a la carpeta que contiene el archivo deseado, con la variante de que al encontrar el archivo se abrirá con las líneas de código que contiene.
Gráficamente seria así:
48
Ilustración 26 Ejecución comando Nano
Ilustración 27 ventana donde se crea la topología mediante el editor nano
49
Ilustración 28 Importando las librerías necesarias, editor nano
Ilustración 29 Definiendo nombre de la mi topología y añadiendo Controlador y Switches
50
Ilustración 30 Ingreso de las direcciones ip en los host y los enlaces para los dispositivos de la red
Ilustración 31 Líneas para dar inicio a la Red
51
8.2 Importación de una topología creada en python.
Para realizar un importación de una topología previamente codificada en python basta con acceder a la terminal y desde allí navegar entre el directorio con el comando “cd nombre de la carpeta que contiene la topología” y “ls” para ver los archivos o carpetas que hay en el directorio actual, esto se hace hasta llegar a la carpeta que contiene la topología que deseamos importar y ejecutar, se deben ejecutar los comando de Mininet como súper usuario para hacerlo se escribe lo siguiente en la terminal sudo su y nos pedirá la contraseña de usuario , ingresamos y ya somos súper usuarios. A continuación se muestra de forma gráfica como se realiza la importación de una topología creada en python.
Al ejecutar el comando ls se muestra un listado con los archivos y directorios de un determinado directorio y con el comando cd nom_directorio se cambia de directorio y se accede al directorio deseado asi:
Ilustración 32 Comando cd mininet, para entrar al directorio mininet
Ilustración 33 Resultado comando cd mininet
52
Ilustración 34 Comando ls
Ilustración 35 Importación topología Consoles.py desde el directorio examples.
53
Ilustración 36 Resultado Importación Consoles.py Limpiar una topología
Al ejecutar topologías están generan unos enlaces virtuales en el ordenador para quitar estas antes de ejecutar el código “exit” para salir y cerrar la topología actual y poder ejecutar otra, se debe detener la misma y quitarla con el comando EOF del cual se habló previamente en el listado de comandos en la Ilustración 44 Comando EOF
Antes del comando EOF.
54
Ilustración 37 Enlaces Virtuales
Después del comando EOF, este va eliminando uno a uno los enlaces.
55
Ilustración 38 Quitando enlaces Virtuales
8.3 Miniedit.
Es una GUI que se agregó desde la versión 2.2.0.1, esta desarrolla en código python, trayendo incorporados los elementos básicos de una red, como lo son, host (pc), switches, controlador, links (cable virtual), routers, entre otros, permitiendo al usuario poder crear la topología escogiendo los dispositivos que desea y poder guardarla para continuar después trabajando en la misma, también permite poder exportar en código python una topología creada, en la ilustración 66 se muestra el editor gráfico oficial de Mininet.
56
Ilustración 39 GUI Mininet
57
Ilustración 40 Creando Topología con el Miniedit
58
Ilustración 41 Seleccionador
Ilustración 42 Host
Ilustración 43 Switch Openflow
Ilustración 44 Switch
Ilustración 45 Router
59
Ilustración 46 Cable conector
Ilustración 47 Controlador
Ilustración 48 Guardando Topología desde Miniedit
60
Ilustración 49 Exportar a código python una Topología
Ilustración 50 Abrir una topología creada en Miniedit
Mininet todavía no cuenta con la opción de generar una topología desde código python para importarla a la GUI de Mininet, ps el código que se genera cuando se crea un topología con el Miniedit tiene variantes como la posición del elemento, el tamaño entre otras, en los anexo se encuentra el código que se genera al crear una topología con Miniedit.
61
CONTROLADOR POR DEFAULT DE MININET POX.
POX es un controlador OpenFlow desarrollado para cubrir los requerimientos de las SDN usando el lenguaje de programación Python. Además de ser un framework para la interacción con los switches de OpenFlow, está siendo usado para explorar nuevos prototipos de redes con distribución, para la depuración de las SDN y el diseño de controladores.
Algunas de las características más relevantes de POX son:
- Interfaz OpenFlow basada en Python.
- Los componentes muestran la selección de ruta de acceso, detección de la topología, entre otras.
Para ejecutar POX, se debe correr pox.py, que está en la carpeta pox descargada previamente automáticamente cuando se realizó la instalación nativa de Mininet, cuando se ejecuta el pox se debe especificar qué componentes se desean incluir en la ejecución. Existen componentes ya desarrollados y otros que pueden ser creados por el administrador. Entre los componentes existentes se encuentran:
Forwarding.l2_learning: Para reconocer las direcciones MAC de los dispositivos conectados.
Forwarding.l3_learning: Para manejar ARP (Address Resolution Protocol).
Samples.spanning_tree: Este Proporciona funcionalidades del protocolo STP.
Web.webcore: Sirve para empezar un servicio web dentro de los procesos POX.
Messenger: Es una interfaz que permite al controlador interactuar con procesos externos
Openflow.of_01: Permite la comunicación con el protocolo OpenFlow.
Openflow.discovery: Envía mensajes para tareas de descubrimiento de topologías.
62
Samples.pong: Este componente implementa un ejemplo de comunicación a través de mensajes ICMP.
Log: Permite manejar la información de logging, así como asignar niveles de alerta a dichos elementos.
POX cuenta con varias API, como por ejemplo:
Manejo de direcciones (pox.lib.addresses): permite el manejo tanto de direcciones MAC como IP con las clases EthAddr e IpAddr respectivamente.
Sistema de eventos (pox.lib.event): para clases que deseen incorporar el manejo de eventos.
Manejo de paquetes (pox.lib.packet): permite manejar varios tipos de paquetes, como por ejemplo: Ethernet, IPv4, ICMP, TCP, UDP,
ARP, DHCP, DNS, entre otros.
Manejo de hilos de ejecución, tareas y contadores (pox.lib.recoco).
Ejemplo con el controlador Pox con el componente Forwarding.l3_learning que sirve para reconocer las direcciones MAC de los dispositivos conectados.
63
Ilustración 51 Ejecución controlador pox con el componente Learning y Conexión de la topología al controlador
Como se observa en la ilustración 71 se evidencia la ejecución del controlador pox en el modo que reconoce direcciones MAC de los dispositivos conectados.
64
Ilustración 52 Prueba con el Controlador Pox
En la ilustración 72 se puede observar que cuando el controlador pox en modo Forwarding.l3_learning, esta Up, desde el host h1 se realiza ping al host h2 los paquetes llegan, pero en el momento que el controlador esta Down se pierde un paquete.