93
DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE DOS TECNOLOGÍAS DE ROUTERS UTILIZANDO MDA CARLOS JOHANY SIERRA GUZMÁN DAVID RICARDO RAMÍREZ BUITRAGO UNIVERSIDAD FRANCISCO JÓSE DE CALDAS FACULTAD TECNOLÓGICA INGENIERIA EN TELECOMUNICACIONES BOGOTA 2016

DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

Embed Size (px)

Citation preview

Page 1: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE DOS

TECNOLOGÍAS DE ROUTERS UTILIZANDO MDA

CARLOS JOHANY SIERRA GUZMÁN

DAVID RICARDO RAMÍREZ BUITRAGO

UNIVERSIDAD FRANCISCO JÓSE DE CALDAS

FACULTAD TECNOLÓGICA

INGENIERIA EN TELECOMUNICACIONES

BOGOTA

2016

Page 2: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE DOS

TECNOLOGÍAS DE ROUTERS UTILIZANDO MDA

CARLOS JOHANY SIERRA GUZMÁN

DAVID RICARDO RAMÍREZ BUITRAGO

Trabajo de tesis para optar por el título de Ingeniero en Telecomunicaciones

GUSTAVO ADOLFO HIGUERA CASTRO

INGENIERO EN TELECOMUNICACIONES

DIRECTOR DE TESIS

UNIVERSIDAD FRANCISCO JÓSE DE CALDAS

FACULTAD TECNOLÓGICA

INGENIERIA EN TELECOMUNICACIONES

BOGOTA

2016

Page 3: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

3

Nota de Aceptación

Director de Tesis: Ing. Gustavo Adolfo Higuera Castro

Jurado: Ing. Edward Jacinto Gómez

Bogotá DC, 05 de Mayo de 2016

Page 4: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

4

Dedicatoria

A Dios, a nuestras familias y a nuestro director de tesis.

AGRADECIMIENTOS

Agradecemos a nuestro director del trabajo de grado el Ingeniero Gustavo Adolfo

Higuera Castro por brindarnos su conocimiento y ayuda para el desarrollo de este

proyecto además de su esfuerzo y dedicación en las correcciones del mismo.

A nuestras familias por proporcionarnos la mejor educación posible y lecciones de

vida, en especial a nuestros padres que nos brindaron todas las herramientas y

valores para abordar la vida

Al cuerpo docente que nos brindaron el conocimiento que nos permitió mirar de

diferentes maneras el mundo y a nuestros compañeros de academia por compartir

grandes momentos y estar presentes en todos los momentos de esta etapa.

Page 5: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

5

CONTENIDO

Pág

1. INTRODUCCIÓN ............................................................................................... 14

2. OBJETIVOS ....................................................................................................... 15

2.1 OBJETIVO GENERAL ..................................................................................... 15

2.1.2 OBJETIVOS ESPECÍFICOS ......................................................................... 15

3. PLANTEAMIENTO DEL PROBLEMA ................................................................ 16

3.1 DEFINICIÓN DEL PROBLEMA ...................................................................... 16

3.2 JUSTIFICACIÓN .............................................................................................. 16

4. MARCO TEÓRICO ............................................................................................ 17

4.1 MODELO ........................................................................................................ 17

4.1.1 INGENIERÍA DIRIGIDA POR MODELOS ..................................................... 17

4.1.2 ARQUITECTURA DIRIGIDA POR MODELOS ............................................. 19

4.1.3 TRANSFORMACION DE MODELOS ........................................................... 24

4.1.4 TRANSFORMACIÓN DE MODELO A MODELO .......................................... 24

4.1.5 TRANSFORMACIÓN DE MODELO A TEXTO ............................................. 24

4.1.6 DIAGRAMA DE USOS .................................................................................. 25

4.1.7 DIAGRAMA DE SECUENCIA ....................................................................... 26

4.1.8 DIAGRAMA DE CLASES .............................................................................. 27

4.2 PROTOCOLOS ................................................................................................ 28

4.2.1 Configuración de Host Dinámico (DINAMIC HOST CONFIGURE

PROTOCOL DHCP) .............................................................................................. 29

4.3 ROUTER .......................................................................................................... 33

4.3.1 ROUTER CISCO E-SERIES ......................................................................... 35

4.3.2 ROUTER CISCO 1941.................................................................................. 36

4.3.3 MIKROTIK ROUTERBOARD 750GL ............................................................ 36

5. METODOLOGÍA ................................................................................................ 37

Page 6: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

6

6. DESARROLLO DEL PROYECTO ..................................................................... 38

6.1 EVALUACIÓN DE TECNOLOGÍAS: ................................................................ 38

6.2 DESARROLLO DEL ALGORITMO PARA LA CONFIGURACIÓN DE DOS

ROUTERS DE DIFERENTES TECNOLOGÍAS ..................................................... 40

6.3 DESARROLLO DE UN MODELO UML PARA EL ALGORITMO PARA LA

CONFIGURACIÓN DE DOS DIFERENTES ROUTERS. ....................................... 43

6.3.1 DIAGRAMA DE CASOS DE USOS Y VISUALIZACIÓN DE LA INTERFAZ

DE USUARIO ......................................................................................................... 43

6.3.2 DIAGRAMA DE CLASES .............................................................................. 47

6.3.3 DIAGRAMA DE SECUENCIA ....................................................................... 49

6.3.4 SELECCIÓN DE LENGUAJES DE PROGRAMACIÓN ................................ 54

6.4 DISEÑO DE LA TOPOLOGÍA DE RED IMPLEMENTADA PARA LA

REALIZACIÓN DE PRUEBAS ............................................................................... 56

6.5 USO Y CONSIDERACIONES PREVIAS PARA IMPLEMENTACIÓN DEL

APLICATIVO DESARROLLADO ........................................................................... 59

6.6 PRUEBAS DE IMPLEMETACION DEL MODELO ........................................... 60

7 CONCLUSIONES ............................................................................................... 66

8 BIBLIOGRAFÍA ................................................................................................... 66

Page 7: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

7

LISTA DE TABLAS

Pág

Tabla 1: Resultados de la encuesta con relación a la forma estándar de programar

............................................................................................................................... 64

Tabla 2: Comparación entre diferentes sistemas operativos de los Routers ......... 65

Page 8: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

8

LISTA DE FIGURAS

Pág

Figura 1: Cambios en los lenguajes de programación a través del tiempo ............ 18

Figura 2: Esquema de MDA. .................................................................................. 19

Figura 3: Método Tradicional del desarrollo de software ....................................... 21

Figura 4: Desarrollo de software por MDA. ............................................................ 22

Figura 5: Representación de IBM para MDA ......................................................... 23

Figura 6: Componentes de un Lenguaje de modelado .......................................... 25

Figura 7: Formato de mensaje de DHCPV4 .......................................................... 31

Figura 8: Imagen de metodología a desarrollar ..................................................... 37

Figura 9: Imagen de Router Cisco 1941 ................................................................ 39

Figura 10: Imagen de Router Linksys e900 ........................................................... 39

Figura 11. RouterBoard 750GL .............................................................................. 40

Figura 12, Algoritmo para configuración de router ................................................. 42

Figura 13. Diagrama de Casos de uso .................................................................. 44

Figura 14. Diseño de interfaz de usuario 1. ........................................................... 45

Figura 15. Diseño de interfaz de usuario 2 ............................................................ 45

Figura 16. Caso de uso finalizado .......................................................................... 46

Figura 17. Diagrama de Clases ............................................................................. 48

Figura 18. Diagrama de secuencia, Inicio de Aplicación ........................................ 50

Figura 19. Diagrama de secuencia, Conexión con el Router ................................. 51

Figura 20. Diagrama de secuencia, Cargando Configuración del Router .............. 52

Figura 21. Diagrama de secuencia, Barrado de Configuración del Router ............ 53

Figura 22. Interfaz gráfica desarrollada en Java .................................................... 55

Figura 23. Interfaz gráfica desarrollada en Python ................................................ 55

Figura 24: Esquema de la topología. ..................................................................... 57

Figura 24: Algoritmo de configuración de Router ................................................... 58

Figura 25, Archivos para configurar computadora. ................................................ 59

Figura 26, Configuración de dirección estática ...................................................... 60

Page 9: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

9

Figura 27, Configuración de DHCP ........................................................................ 60

LISTA DE GRÁFICOS

Pág

Gráfico 1: Resultados de la pregunta número 1. .................................................... 61

Gráfico 2: Resultados de la pregunta número 2. .................................................... 62

Gráfico 3: Resultados de la pregunta número 3. .................................................... 62

Gráfico 4: Resultados de la pregunta número 4. .................................................... 63

Gráfico 5: Resultados de la pregunta número 5. .................................................... 63

Page 10: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

10

LISTA DE ANEXOS

Pág

ANEXO A, Código Fuente en Java ........................................................................ 68

ANEXO B, Código fuente en Python ...................................................................... 80

ANEXO C, Código Fuente Consola Windows ........................................................ 92

Page 11: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

11

GLOSARIO

CIM: Descripción de la lógica del negocio, perspectiva independiente de la

programación.

DHCP: Dynamic Host Configuration Protocol, es un protocolo para asignar IP de

forma dinámica dentro de un rango de direcciones.

DNS: Domain Name Server, ofrece acceso a sitios web para usuarios que usan

nombres de domino.

ENRUTAMIENTO: Es el proceso de envío de paquetes entre diferentes redes

buscando la ruta más óptima.

ISM: Descripción a nivel de código en un lenguaje específico.

M2M: Trasformación de modelo a modelo.

M2T: Transformación de modelo a texto.

MD5: Es un algoritmo de reducción criptográfica de 128 bits.

MDA: Arquitectura dirigida por modelos.

MDE: Ingeniería dirigida por modelos.

MOF: Meta Object Facility y es un estándar de OMG.

NTP: Network Time Protocol el cual obtiene la hora por medio de un servidor

ubicado en la red.

OCL: Object Constraint Language, es un lenguaje para la descripción formal de

expresiones en los modelos UML.

OMG: Object Management Group.

PIM: Descripción de la funcionalidad del sistema en forma independiente de las

características de plataformas de implementación específica.

PSM: Es el modelo especifico de la plataforma en UML.

QVT: Transformación de vistas por preguntas.

SMTP: Simple Mail Transfer Protocol para transportar un email en una red.

SSH: Protocolo de transporte de datos con encriptación MD5.

Page 12: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

12

TFTP: Protocolo de transferencia de archivos de cliente y servidor que usa la capa

de transporte.

UML: Lenguaje unificado de modelado el cual es un estándar a nivel internacional.

XML: Intercambio de metadatos del lenguaje permitiendo que diversas herramientas

se integren al serializar modelos.

Page 13: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

13

RESUMEN

En este trabajo de grado se desarrolló un algoritmo para llevar a cabo la

configuración de un dispositivo de red como lo es un Router. Para la implementación

del algoritmo diseñado se utilizaron dos lenguajes de programación específicos,

Java y Python. El principal objetivo del algoritmo tratado en esta tesis es reducir el

tiempo que toma un usuario sin conocimientos avanzados en redes, en configurar

unos parámetros específicos a un router. Este algoritmo permite al usuario

configurar dos tecnologías de Router, la Tecnología de Cisco Systems y Mikrotīkls

Ltd (comúnmente llamada Mikrotik), donde la comunicación entre los routers y los

equipos terminales se realiza por un protocolo de acceso remoto, llamado Secure

Shell Versión 2 (SSH V2), para encriptar los datos en formato MD5 y dar mayor

seguridad con respecto a otros protocolos de red como Telnet. En la creación del

algoritmo se tuvo en cuenta la arquitectura dirigida por Modelos MDA, arrojando los

diferentes diagramas de caso de uso, diagrama de clase y diagramas de

secuencias. Finalmente se realizan pruebas del algoritmo con una muestra de

usuarios que evaluaron su uso.

Palabras Claves:

Algoritmo, DHCP, Enrutamiento estático, Lenguajes de Programación, MDA,

Router.

Page 14: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

14

1. INTRODUCCIÓN

Cada proveedor de tecnologías de routers busca brindar al usuario la facilidad de

programar sus dispositivos con diferentes tipos de parámetros, para poder

conformar una topología dentro de una red especifica por medio de una plataforma

única para cada tipo marca.

Este proyecto busca por medio de un modelo MDA crear una única interfaz para

programar dos tecnologías de routers con algunos parámetros para su correcto

funcionamiento dentro de la topología de red.

Esto debido al reciente crecimiento en las redes a nivel mundial y a la interacción

entre diversos entornos de programación con sus respectivos lenguajes de

programación por medio de Modelos y diagramas que ayuden solución de errores

e implementaciones de parámetros posteriores.

Se utilizará el modelo estándar de OMG llamado MDA el cual permita generar

portabilidad al código e integrarlo con diferentes plataformas de programación y

diversos lenguajes de programación.

Para la construcción de este modelo se usaran una plataforma de programación y

dos lenguajes de programación Python y Java, además por medio del código escrito

generar el diagrama de clase para posteriormente crear el modelo UML y finalmente

generar el modelo MDA.

Page 15: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

15

2. OBJETIVOS

2.1 OBJETIVO GENERAL

Crear un algoritmo a partir de un lenguaje de programación específico para

configurar tecnologías de diferentes proveedores de routers, basándose en

arquitectura dirigida por modelos (MDA).

2.1.2 OBJETIVOS ESPECÍFICOS

1. Generar un algoritmo de configuración de un router que permita gestionar algunos

parámetros como mínimo en dos routers de diferentes tecnologías.

2. Desarrollar el modelo UML para el algoritmo de configuración de los diferentes

dispositivos de red.

3. Realizar las pruebas de implementación del modelo con una muestra de personas

para observar su estandarización.

Page 16: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

16

3. PLANTEAMIENTO DEL PROBLEMA

3.1 DEFINICIÓN DEL PROBLEMA

En la actualidad se conocen diferentes tecnologías de routers para crear

aplicaciones de redes de datos, donde es necesario conocer a profundidad los

dispositivos de red que se requieren para solucionar una necesidad, estos métodos

con los que se configura un router pueden demandar horas en el reconocimiento

del dispositivo y realizando pruebas de funcionamiento. Los costos que demanda la

configuración de un router pueden variar dependiendo de hacer un curso de o

certificación para adquirir los conocimientos o contratar a un experto para ejecutar

las instrucciones correctas.

Buscando una solución alternativa que permita optimizar tiempo y la reducción de

costos se elaboró este proyecto, que facilita a un usuario reducir procedimientos

para la configuración de un router, a través de un algoritmo que actualmente permite

una configuración predeterminada en dos tecnologías de routers. Con esto último

se pretende buscar la generalización de los comandos de configuración de routers

para mejorar el aprendizaje y uso de las diferentes tecnologías implementadas por

los actuales dispositivos de red, para llevar a cabo esta solución se propone un

aplicativo estándar de fácil uso para el usuario final.

3.2 JUSTIFICACIÓN

El desarrollo de software se ha incrementado en los últimos años, lo cual ha hecho

que el profesional actual tenga que aprender múltiples entornos de desarrollo

desaprovechando tiempo y recursos. Cada dispositivo configurable para el diseño

de redes tiene comandos diferentes para su uso influenciando a que un usuario se

enfoque en una marca ante la imposibilidad de desarrollar en diversos dispositivos.

Al consultar en la web y en otros recursos se observa que no hay un entorno que

facilite al usuario hacer una configuración predeterminada de dos marcas diferentes

con un mismo aplicativo. La configuración de una topología puede ser una tarea

ardua si se quiere implementar diferentes tecnologías de routers, ya que implicaría

tiempo en conocer ambas tecnologías y limita al usuario a solo acceder a una marca

Page 17: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

17

que puede ser costosa y elevar el precio de una aplicación. Al continuar con la

consulta no se encontró un modelo de software que facilite a un desarrollador

asociar rápidamente lenguajes específicos con la configuración de un router, esto

limita algunas aplicaciones posibles y desarrollos en las redes de datos.

4. MARCO TEÓRICO

Se necesitó de diferentes conceptos teóricos que posibilitaron el desarrollo dentro

de ciertos parámetros estos conceptos teóricos se observan a continuación.

4.1 MODELO

Se define modelo como la representación de un objeto existente en pequeñas

dimensiones en donde se genera un esquema teórico para después ser

representado mediante un objeto real, en los modelos para el desarrollo de software

se busca automatizar la etapa de desarrollo, este proceso es llamado como

Ingeniería Dirigida por Modelos MDE(1).

4.1.1 INGENIERÍA DIRIGIDA POR MODELOS

Ingeniería dirigida por modelos (MDE) es la forma de optimizar el proceso de

desarrollo que se genera a partir de un modelo. En el desarrollo de software existen

modelos en donde se pueden automatizar algunos procesos(2).

El objetivo principal del MDE en la creación de software es automatizar la mayor

parte del desarrollo del modelo, dado que el software se vuelve cada vez más

complejo y la industria necesita industrializar el desarrollo del software.

Anteriormente no se hablaba de crisis del software, referido a que en el tiempo que

no existían las computadoras la programación no era ningún problema, pero a lo

largo de la historia y con la creación de las computadoras la programación fue de

problema leve a volverse un problema gigantesco(1). Durante las últimas dos

décadas los lenguajes y plataformas han aumentado el nivel de abstracción

creciendo rápidamente, dando paso a nuevas (3).

Para tratar el tema del crecimiento del software la orientación a objetos no es

suficiente y la reutilización de objetos en la industria de software no ha tenido tanto

éxito, por esta razón ha aparecido una propuesta basada en modelos en donde se

Page 18: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

18

conserve el marco conceptual del negocio independiente de la plataforma y el

lenguaje con el que se implemente(3).

Figura 1: Cambios en los lenguajes de programación a través del tiempo.

En la figura 1 se observa la evolución en los lenguajes de programación, primero se

creó el binario en el cual existían mayor número de errores en el desarrollo y a

medida que avanza el tiempo el nivel de abstracción de los lenguajes ha

aumentado(1).

Esto se ha dado a partir de la necesidad de reducir la complejidad de las plataformas

actuales, de expresar los conceptos de los diferentes dominios de forma más

apropiada, de hacer una abstracción de los sistemas de la implementación de la

plataforma, de mejorar la portabilidad reusabilidad e interoperabilidad y de optimizar

la productividad(1).

La ingeniería dirigida por modelos MDE incluye dos conceptos fundamentales,

lenguajes de dominio específico los cuales definen la estructura de la aplicación y

los requisitos de un dominio en particular y los motores de transformación que son

los que se encargan de analizar el código y crear el código fuente entradas de

simulaciones o representaciones de dicho modelo(3).

Finalmente se define que MDE sirve para crear modelos de software en donde los

conceptos de un dominio predeterminado definen un modelo, y las tecnologías

existentes permiten trabajar con MDE como si fueran lenguajes de programación de

alto nivel pero estos tienen la particularidad que son lenguajes de dominio

especifico, esto tiene muchas aplicaciones en muchos sectores como en Telefonía

IP, Gestor de para Android, aplicaciones móviles, relojes digitales, automatización

del hogar entre muchas otras(1).

Page 19: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

19

4.1.2 ARQUITECTURA DIRIGIDA POR MODELOS

Dentro del MDE se define un estándar el cual es Arquitecturas dirigidas por

modelos, definido por la Grupo de manejo de Objetos OMG en donde se aproxima

como el diseño de los sistemas se orienta a objetos y está organizada en el concepto

de modelo independiente de la plataforma (PIM), PIM se define como la

especificación de un sistema en términos de conceptos del dominio y con

independencia de las plataformas tecnológicas y este puede transformarse

automáticamente en un modelo de plataforma o PSM, MDA tiene como objetivo

acelerar el desarrollo de aplicaciones simplificar la integración entre distintas

tecnologías y reducir el costo de la migración de aplicaciones a nuevas plataformas,

en donde la importancia son los modelos en el proceso de desarrollo de software,

MDA propone la el uso de modelos para guiar el proceso de desarrollo, y de esta

forma generar de forma automática partiendo de los modelos definidos y las reglas

de transformación de dichos modelos (1)(4)(5).

El éxito en la línea de productos de software es importante la parte de licitación

representación y gestión de la variabilidad y para este fin se recurre a MDA como

una herramienta de construcción de herramientas de dominio y su transformación a

través de modelos de arquitectura (4).

Dentro de MDA se tiene un esquema como el que se observa en la figura 2.

Figura 2: Esquema de MDA.

En donde CIM se define como modelo independiente de la computación (modelo de

dominio), PIM es Modelo independiente de la plataforma en donde se describe la

funcionalidad de un sistema, PSM Modelo especifico de plataforma, ISM

Page 20: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

20

Implementación del modelo especifico en donde se describe con que lenguaje se

va a trabajar(1).

Dentro de MDA el grupo OMG definió varios estándares como Lenguaje de modelo

unificado UML, Facilidad de meta modelar Objetos MOF, intercambio de meta datos

por XML XMI, Lenguaje de restricción de objetos OCL, Transformación de vistas por

preguntas QVT(1).

En donde MOF es el lenguaje para crear meta modelos propuesto por OMG para

MDA en donde es independiente de la plataforma y es el medio universal para definir

lenguajes de modelado en donde las herramientas de MOF son interoperables entre

sí(1).

UML toma elementos de MOF en donde es un estándar para visualizar documentar

y más, en donde es independiente del lenguaje y es el principal modelo utilizado en

el modelado de MDA; UML es una familia de lenguajes en donde un perfil define

una extensión UML en donde se define una forma específica para el uso de UML

para un dominio especifico y estos a su vez son usados como PSM(1).

Los perfiles se definen mediante un modelo formal en donde se crean estereotipos,

valores etiquetados y restricciones.

XML permite que las herramientas se integren al serializar modelos y meta modelos

MOF en XML y es independiente de la plataforma en donde va más orientado a los

modelos en general.

OCL se utiliza para definir restricciones y consultas este estándar es parte de UML,

y resuelve varias problemáticas y limitaciones en los diagramas UML agrega

precisión y genera un diagrama más completo.

QVT es un lenguaje de transformación de modelos es dependiente de las

especificaciones de MOF y OCL en donde Query hace un filtrado y selecciona

elementos del modelo MOF, View es una modelo que se deriva de otro modelo y

transformación existen reglas para aplicar transformaciones al modelo(1).

Por otro lado MDA separa las especificaciones de un sistema y los detalles de la

plataforma en la que se ejecuta para proporcionar bases de:

Definir un sistema independiente de la plataforma.

Page 21: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

21

Definir plataformas sobre la cual construir los sistemas.

Elegir una plataforma específica para el sistema.

Transformar la especificación inicial del sistema a la plataforma elegida.

En el desarrollo de software tradicional se siguen las siguientes fases:

Identificación de requisitos

Análisis

Diseño

Codificación

Prueba

Despliegue

Figura 3: Método Tradicional del desarrollo de software

La figura 3 muestra el método tradicional de desarrollo de software lo cual baja la

productividad al hacer el modelo susceptible a errores en cualquier parte del

proceso y al tener que documentar y hacer diagramas demasiado extensos, además

si varia con el tiempo variara la documentación(6).

En la parte de portabilidad si se necesita migrar el sistema en una industria a otra

plataforma hay que hacer un desembolso importante y hacer varias modificaciones

Page 22: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

22

al modelo (6). Otro aspecto importante es la interoperabilidad, se necesita que la

comunicación entre sistemas existentes y sistemas nuevos de manera sencilla y

simple(6).

Finalmente se obtiene que en la parte de documentación y mantenimiento es un

proceso tedioso al tener que realizarse a mano y a los desarrolladores no les

interesa mucho documentar el código y esto hace que se pierda calidad, los

anteriores ítems se solucionan con MDA en donde en la parte de análisis diseño y

codificación cambian al ser reemplazadas por PIM y PSM como se muestra en la

figura 4 (6).

Figura 4: Desarrollo de software por MDA.

Según IBM MDA es el resumen de tres ideas complementarias las cuales son:

1) Representación directa: Se hace enfoque en las ideas y conceptos del

dominio del problema en vez de la tecnología usada y del desarrollo del

software, logrando diseños más acertados e incrementando la

productividad(6).

2) Automatización: MDA incrementa la velocidad en el desarrollo y reduce

errores usando herramientas para transformar modelos específicos en

códigos de implementación(6).

3) Estándares Abiertos: Los estándares ayudan al progreso de las tecnologías

eliminando la diversidad gratuita ayudando tanto como al vendedor a producir

Page 23: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

23

herramientas de propósito general y especializado como al usuario de

manejarlas(6).

Figura 5: Representación de IBM para MDA

En la figura 5 se muestra la representación según los desarrolladores de IBM para

MDA. Lo importante en esta descripción de MDA son las transformaciones que se

realizan de PIM a PSM y se definen dos tipos principales de transformaciones:

1) Transformaciones de tipos: Según la definición “ Un mapping de tipos

especifica un mapping para transformar cualquier modelo construido con

tipos PIM a otro modelo expresado con tipos PSM” esto quiere decir que a

un PIM se le aplica una regla o norma para transformarlo en uno o varios

PSM, puede ser a través del estándar UML.

2) Transformaciones de Instancia: Identifica elementos específicos de un PIM

para ser transformados a una plataforma en particular esto se logra a través

de marcas, En donde una marca representa un concepto del PSM y se le

aplica a un elemento PIM para dirigir una la transformación a una plataforma

determinada(7).

Existen varias herramientas para lograr estas transformaciones en MDA, como

Optimaj, CASE, ArcStyler de código abierto para.

Optimaj se usa específicamente para la transformación de PIM a PSM, las

herramientas CASE se usan para transformar de PSM a código, y ArcStyler e usa

para transformar de PIM a código usando marcas.

En todo esto se necesita un IDE de desarrollo o una plataforma para lo cual

recurrimos a usar Eclipse que ofrece la posibilidad de usar estas herramientas para

MDA(6).

Page 24: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

24

4.1.3 TRANSFORMACION DE MODELOS

Los modelos pueden relacionarse a través de transformaciones, estas se definen a

nivel de meta-modelo y se aplican a nivel del modelo de modo que se ajuste a dicho

meta modelo.

Los modelos necesitan se migrados tradu8cidos y representados a otros lenguajes

o representaciones esto es posible por medio de las transformaciones de modelos,

existen dos tipos fundamentales de transformaciones de modelo a modelo y de

modelo a texto.

4.1.4 TRANSFORMACIÓN DE MODELO A MODELO

Una Transformación de Modelo a Modelo (M2M) es un programa que recibe uno o

más programas como entrada y devuelve uno o más programas como salidas dando

como resultando transformaciones uno a uno, uno a muchos, muchos a uno,

muchos a muchos, y se definen como exógenas cuando los modelos están definidos

en distintos lenguajes o endógenos cuando están definidos en el mismo lenguaje(8).

4.1.5 TRANSFORMACIÓN DE MODELO A TEXTO

Una Transformación de Modelo a Texto M2T es un programa que recibe uno o más

modelos para generar automáticamente un modelo representado a texto, estas son

las más comunes dentro de la ingeniería de software para la generación de

documentación, lista de tares y el código fuente, para representar un modelo es

necesario expresarlos de alguna manera, los lenguajes de modelado definir la

información de un sistema por un conjunto de reglas definidas, estas reglas son

usadas para interpretar el significado de los componentes de esta estructura(8).

Page 25: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

25

Figura 6: Componentes de un Lenguaje de modelado

4.1.6 DIAGRAMA DE USOS

Representa la forma de como un usuario opera con el sistema, además de la forma,

tipo y orden en como los elementos interactúan (operaciones o casos de uso). Un

diagrama de casos de uso consta de los siguientes elementos:

Actor: Una definición previa, es que un Actor es un usuario del sistema. Es un rol

donde el actor realiza una labor frente al sistema. Como ejemplo el caso de un

sistema de ventas en que el rol de Vendedor con respecto al sistema puede ser

realizado por un Vendedor o bien por el Jefe de Local.

Caso de Uso: Es una operación/tarea específica que se realiza tras una orden de

algún agente externo, sea desde una petición de un actor o bien desde la invocación

desde otro caso de uso.

Hay diferentes tipos de relaciones en los casos de uso:

Asociación: Es el tipo de relación más básica que indica la invocación desde un

actor o caso de uso a otra operación (caso de uso). Dicha relación se denota con

una flecha simple.

Dependencia o Instanciación: Es una forma muy particular de relación entre clases,

en la cual una clase depende de otra. Dicha relación se denota con una flecha

punteada.

Page 26: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

26

Generalización: Cumple una doble función dependiendo de su estereotipo, que

puede ser de Uso (<<uses>>) o de Herencia (<<extends>>). Este tipo de relación

está orientado exclusivamente para casos de uso (y no para actores). Tenemos

entonces:

extends: Se recomienda utilizar cuando un caso de uso es similar a otro (características).

uses: Se recomienda utilizar cuando se tiene un conjunto de características que son similares en más de un caso de uso y no se desea mantener copiada la descripción de la característica. (26)

4.1.7 DIAGRAMA DE SECUENCIA

Es una forma de diagrama de interacción que muestra los objetos como líneas de

vida a lo largo de la página y con sus interacciones en el tiempo representadas como

mensajes dibujados como flechas desde la línea de vida origen hasta la línea de

vida destino.

Los diagramas de secuencia son buenos para mostrar qué objetos se comunican

con qué otros objetos y qué mensajes se envían en esas comunicaciones. Los

diagramas de secuencia no están pensados para mostrar lógicas de procedimientos

complejos, y se componen de los siguientes elementos:

Línea de Vida: Una línea de vida representa un participante individual en un

diagrama de secuencia. Una línea de vida usualmente tiene un rectángulo que

contiene el nombre del objeto. Algunas veces un diagrama de secuencia tendrá una

línea de vida con un símbolo del elemento actor en la parte superior. Este

usualmente sería el caso si un diagrama de secuencia es contenido por un caso de

uso. Los elementos entidad, control y límite de los diagramas de robustez también

pueden contener líneas de vida.

Mensajes: Los mensajes se muestran como flechas. Los mensajes pueden ser

completos, perdidos o encontrados; síncronos o asíncronos: llamadas o señales. En

el siguiente diagrama, el primer mensaje es un mensaje síncrono (denotado por una

punta de flecha oscura), completo con un mensaje de retorno implícito; el segundo

mensaje es asíncrono (denotado por una punta de flecha en línea) y el tercero es

un mensaje de retorno asíncrono (denotado por una línea punteada).

Page 27: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

27

Ocurrencia de ejecución: Un rectángulo fino a lo largo de la línea de vida denota la

ocurrencia de ejecución o activación de un foco de control. En el diagrama anterior

hay tres ocurrencias de ejecución. El primero es el objeto origen que envía dos

mensajes y recibe dos respuestas, el segundo es el objeto destino que recibe un

mensaje asíncrono y retorna una respuesta, y el tercero es el objeto destino que

recibe un mensaje asíncrono y retorna una respuesta.

Mensaje Self: puede representar una llamada recursiva de una operación, o un

método llamando a otro método perteneciente al mismo objeto. Este se muestra

como cuando crea un foco de control anidado en la ocurrencia de ejecución de la

línea de vida.

Inicio y final de línea de vida: Una línea de vida se puede crear o destruir durante la

escala de tiempo representada por un diagrama de secuencia. En el último caso, la

línea de vida se termina por un símbolo de detención, representado como una cruz.

En el primer caso, el símbolo al inicio de la línea de vida se muestra en un nivel más

bajo de la página que el símbolo del objeto que causó la creación (27).

4.1.8 DIAGRAMA DE CLASES

Un diagrama de clases sirve para visualizar las relaciones entre las clases que

involucran el sistema, las cuales pueden ser asociativas, de herencia y de uso. Un

diagrama de clases está compuesto por los siguientes elementos:

Clase: atributos, métodos y visibilidad.

Relaciones: Herencia, Composición, Agregación, Asociación y Uso.

Elementos

Clase: Es la unidad básica que encapsula toda la información de un Objeto (un

objeto es una instancia de una clase). A través de ella se puede modelar el entorno

en estudio (una Casa, un Auto, una Cuenta Corriente, etc.). En UML, una clase es

representada por un rectángulo que posee tres divisiones:

Superior: Contiene el nombre de la Clase

Intermedio: Contiene los atributos (o variables de instancia) que caracterizan a la Clase (pueden ser private, protected o public).

Page 28: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

28

Inferior: Contiene los métodos u operaciones, los cuales son la forma como interactúa el objeto con su entorno (dependiendo de la visibilidad: private, protected o public).

Atributos: Los atributos o características de una Clase pueden ser de tres tipos, los

que definen el grado de comunicación y visibilidad de ellos con el entorno, estos

son:

public (+,): Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.

private (-,): Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar).

protected (#,): Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven (ver herencia).

Métodos: Los métodos u operaciones de una clase son la forma en como ésta

interactúa con su entorno, éstos pueden tener las características:

public (+,): Indica que el método será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.

private (-,): Indica que el método sólo será accesible desde dentro de la clase (sólo otros métodos de la clase lo pueden accesar).

protected (#,): Indica que el método no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de métodos de las subclases que se deriven (ver herencia). (28)

4.2 PROTOCOLOS

Es un sistema o conjunto de reglas estandarizadas ante algún organismo

internacional para permitir la comunicación a través de cualquier medio físico, y se

puede implementar por software o hardware, un protocolo de comunicación son

llamados protocolos de red, en la cual se definen como o se deben trasmitir los

distintos tipos de mensaje y en que capa del modelo OSI serán enviadas para

circular en una red de computo.

Page 29: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

29

4.2.1 Configuración de Host Dinámico (DINAMIC HOST CONFIGURE PROTOCOL

DHCP)

Todo dispositivo que se conecte a un red necesita una dirección IP única, por lo cual

se necesita que para equipos que no cambien de ubicación dentro de la red como

servidores e impresoras se les asigne estas direcciones de forma estática, para los

demás equipos como los host cambian de ubicación física y lógica por lo cual es

necesario un protocolo el cual asigne direcciones IP y otra configuración ante estos

cambios.

El protocolo de configuración de host dinámico DHCP, permite a un equipo

conectado en red obtener su configuración de forma dinámica y solo se le deba

suministrar al equipo mediante DHCP que encuentre una dirección IP de forma

independiente, utiliza los puertos 68 y 69 de la capa de transporte.

El protocolo DHCP distribuye las direcciones IP en una red haciendo su

administración más sencilla este protocolo es orientado sin conexión por lo que

opera.

Para el funcionamiento del protocolo DHCP se necesita un servidor DHCP que

distribuya las direcciones IP el servidor será el único que tendrá una dirección IP

estática.

El sistema de comunicación es BOOTP enviando tramas UDP, así cuando un

equipo se inicia transmite un paquete 255.255.255.255 con información adicional

como el tipo de solicitud, los puertos de conexión y más través de una red local de

esta forma cuando el servidor recibe el paquete responde con otro paquete de

transmisión que contiene la información solicitada por el cliente.

Existen varios tipos de paquetes que pueden enviarse tanto del cliente al servidor

como del servidor al cliente los cuales son:

DHCPDISCOVER: Ubica un servidor DHCP desde el cliente, el cliente envía

un broadcast en IPV4 para hacer este procedimiento.

DHCPOFFER: Respuesta que se le da a un DHCPDISCOVER con los

parámetros iniciales desde el servidor DHCP de modo Unicast.

Page 30: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

30

DHCPREQUEST: Solicitudes de los clientes de broadcast para aceptar la

configuración enviada desde el servidor y para que otros host y servidores

DHCP no asignen esa dirección IP.

DHCPACK: Respuesta del servidor para indicarle que tiene la dirección IP y

demás parámetros del cliente

DHCPDECLINE: El cliente indica que la dirección ya está en uso.

DHCPRELEASE: El cliente termina la conexión.

DHCPINFORM: El cliente solicita parámetros locales pero ya tiene la

dirección IP.

El cliente envía un paquete DHCPDISCOVER con la dirección de difusión de capa

2 y capa 3, el servidor contesta con un DHCPOFFER en unidifusión o solo se

comunica con el cliente que solicita el servicio DHCP para enviarle una dirección IP

al cliente, el cliente realiza su configuración y luego hace un DHCPREQUEST para

validar su dirección IP en modo difusión para que todos los demás equipos de la red

se enteren que ese cliente tiene una dirección IP asignada, el servidor responde con

DHCPACK con la dirección IP para confirmar la asignación y este es el

procedimiento para que un cliente se conecte a un servidor DHCP.

Este protocolo tiene concesiones para optimizar los recursos de red, de esta forma

las direcciones IP se asignan con una fecha de inicio y de vencimiento para su

validez, este proceso se le llama concesión, así un cliente detecta que su concesión

está a punto de vencer y puede solicitar al servidor un DHCPREQUEST, y también

cuando el servidor detecta que la solicitud va a vencer enviar un DHCPACK, para

consultarle al cliente si quiere extenderla, y si el servidor no recibe respuesta pone

la dirección IP como disponible y cierra la conexión, también se puede optimizar las

concesiones planeando la duración de las concesiones(9–11).

El protocolo DHCP tiene 3 métodos de asignación de una dirección IP:

Asignación manual o estática: Se asigna una dirección a una maquina

determinada y se usa cuando se quiere controlar la asignación IP a cada

cliente y que clientes no identificados accedan a la red.

Asignación automática: Asigna una dirección IP de forma permanente a una

maquina la primera vez que el cliente hace la solicitud al servidor hasta que

el cliente la libera.

Page 31: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

31

Asignación dinámica: El administrador determina un rango de direcciones IP,

y se configura cada dispositivo para que al inicializar su tarjeta de red solicite

su dirección IP esto facilita la conexión de nuevas máquinas clientes en la

red además es el único método de reasignación dinámica de las direcciones

IP.

Los parámetros configurables según la RFC 2132:

Dirección del servidor DNS.

Nombre DNS.

Puerta de enlace de la dirección IP.

Dirección de broadcast.

Mascara de subred.

Tiempo máximo de espera del ARP.

MTU

Servidores NIS.

Servidores NTP

Servidor SMTP

Servidor TFTP

Nombre del servidor WINS.

Figura 7: Formato de mensaje de DHCPV4

Page 32: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

32

En la ilustración se muestra los diferentes campos que componen un mensaje

DHCP en IPV4 y se describen a continuación.

Código de Operación: Especifica el código del mensaje en donde un uno asigna un

mensaje de solicitud y un dos asigna un mensaje de respuesta.

Tipo de Hardware: Identifica que tipo de hardware se está utilizando en la red si es

1 es Ethernet, 15 Indica que es Frame Relay y 20 indica línea serial.

Longitud de dirección del hardware: Especifica la longitud de la dirección.

Saltos: Este controla la cantidad de retransmisiones en una solicitud.

Identificador de transacción: Los utiliza el cliente para hacer coincidir la solicitud con

las respuestas recibidas por los servidores DHCP.

Segundos: Indica la cantidad de segundos desde que el cliente comenzó a adquirir

o renovar el arrendamiento de la dirección IP, y este número es usado por los

servidores para dar prioridad a las solicitudes de los clientes.

Indicadores: Este se utiliza cuando un cliente no conoce su dirección IP y envía una

solicitud de difusión y este utiliza solo uno de los 16 bits de este campo.

Dirección IP del Cliente: Lo utiliza el cliente solo cuando va a renovar la dirección

provista por el servidor y solo se usa en el caso de que el cliente tenga anteriormente

una dirección IP asignada de lo contrario este valor se establece en 0.

Su dirección IP: La utiliza el servidor para asignar una dirección IP al cliente.

Dirección IP del servidor: La utiliza el servidor para identificar la dirección del

servidor que asigna el servicio DHCPV4.

Dirección IP de Gateway Enruta los mensajes DHCPV4 esta dirección facilita las

comunicación cuando las respuestas vienen de servidores ubicados en diferentes

redes o subredes.

Dirección de hardware del cliente: Especifica que tipi de medio físico usa el cliente

en la conexión.

Nombre del Servidor: Lo usa el servidor que cuando envía los mensajes de

DHCPOFFER o DHCPACK, el servidor puede colocar de forma opcional su nombre

en este campo.

Nombre de archivo de arranque: En el proceso en que el cliente solicita un

DHCPDISCOVER lo utiliza para solicitar determinado tipo de archivo de arranque o

lo utiliza el servidor en el proceso de DHCPOFFER para especificar completamente

los archivos de arranque que necesita el cliente.

Page 33: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

33

Opciones de DHCP: Contiene las opciones de DHCP, incluidos parámetros

requeridos para el funcionamiento básico de DHCP, este campo es de longitud

variable y el cliente como el servidor pueden utilizarlos.

4.3 ROUTER

Un router es un dispositivo que permite la interconexión de una red LAN a la red

Internet, además también guía los paquetes a través de una red correcta e ir

determinando que recorrido hacen los mismo para llegar a su destino, estos usan

tecnología ADSL la cual el manejo de internet de banda ancha y ser distribuido a

través de medios guiados(14).

El router tiene varios componentes los cuales son:

CPU: Es el sistema central de procesamiento del router y ejecuta las

instrucciones del sistema operativo las cuales incluyen la inicialización del

sistema funciones de enrutamiento y de interfaz gráfica.

RAM: Es la memoria de acceso aleatorio y se usa para guardar la las

tablas de enrutamiento.

Memoria Flash: La memoria flash se usa para almacenar una imagen del

sistema operativo.

NVRAM: La memoria de acceso aleatorio no volátil se usa por lo general

para guardar la configuración de inicio.

Buses: Los buses se usan en la comunicación entre la CPU y las

interfaces y ranuras de expansión.

ROM: Memoria de solo lectura se usa para almacenar de forma

permanente el código de diagnóstico de inicio.

Fuente de alimentación: Brinda alimentación de energía a los

componentes internos.

Interfaces: Son conexiones de los routers hacia el exterior y pueden ser

de tres tipos LAN, WAN y de Consola AUX.

En un router se tienen versiones del sistema operativo que pueden o no ser

restrictivos y limitar funcionalidades por lo cual a continuación se mencionan las

diferentes alternativas para superar estas limitantes.

Page 34: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

34

Tomato: Es un firmware de reemplazo del Router Linksys WRT54G/GL/GS

y otros Router basados en el chip Broadcom, con funcionalidades sencillas

simples y fácil de aprender.

Entre estas esta una interfaz gráfica de acceso Web, con un monitor de

ancho de banda, incluye una mejora con respecto al QoS y restricciones de

acceso, habilita una nueva característica inalámbrica como WDS y nuevos

modos de acceso inalámbrico para los clientes, y aumenta el número máximo

de conexiones P2P, además permite ejecutar script por medio de SSH/Telnet

y hacer más cosas como observar por medio de la interfaz gráfica el nivel de

conexión inalámbrica de los vecinos cercanos de la red (15).

DDWRT: Es un firmware OpenSource basado en Linux adecuado para gran

cantidad de Router con WLAN y sistemas embebidos, en donde el principal

énfasis radica en proporcionar un fácil manejo mientras soporta un gran

número de funcionalidades sin la necesidad de usar el sistema operativo

original.

La interfaz gráfica tiene una estructura lógica y se maneja a través de

buscadores Web, así personas no expertas pueden hacer sus

configuraciones en unos pocos pasos.

El manejo simple velocidad y estabilidad son ejes fundamentales de este

firmware, si se compara el software preinstalados en la mayoría de Router

WLAN, DDWRT permite una operación confiable con una gran funcionalidad.

DDWRT tiene un gran soporte por usuarios que utilizan este mismo sistema

operativo debido a esto permite respuestas rápidas, los usuarios también

pueden encontrar respuestas a preguntas de otros usuarios por medio del

foro y la Wiki contiene información futura y guías para mantener a la

comunidad DDWRT actualizada.

Para dispositivos usados con fines personales DDWRT está disponible

gratuitamente, para plataformas usadas comercialmente requiere una

licencia de pago. La versión de pago permite modificar parámetros de WLAN

para dar confiabilidad a la conexión de redes (16).

OpenWrt: Es una versión GNU-LINUX para sistemas embebidos en general

Router inalámbricos, a diferencia de otros OpenWrt es construido para dar

Page 35: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

35

unas características máximas, con una fácil modificación del sistema

operativo lo cual significa que se pueden obtener muchas características

personalizadas basadas en Linux.

Open Wrt es un firmware estático el cual permite sobrescribir archivos del

sistema operativo con manejo opcional de paquetes, y es libre de

restricciones en la configuración de esta forma permite usar paquetes propios

y sistemas embebidos para la aplicación.

Para los desarrolladores OpeWrt permite crear una aplicación sin tener que

crear una imagen completa del firmware, esto le da libertad al usuario de

crear aplicaciones que requiera sin ningún tipo de licencias.

Esto quiere decir que es Open Source totalmente con una licencia GPL, e

intenta siempre ser accesible desde un sitio Web con una fuente completa

de código disponible y fácil de modificar.

OpenWrt ofrece un acceso fácil y gratuito lo que quiere decir que está abierto

para nuevas contribuciones que se quieran realizar, también tiene una

comunidad interesada en un proyecto en común (17).

RouterOS: es un sistema operativo para los Mikrotik RouterBOARD basado

en el kernel de Linux (V2.6). Se caracteriza por ser un S.O de fácil

configuración. Una de las características que hace diferente a RouterOS es

que puede ser instalado en un computador, emulando un router con todas

las características necesarias de red, (firewall, routing, punto de acceso

wireless, administración de ancho de banda, servidor VPN, etc…) (18)

Hay diferentes métodos de configuración como:

Acceso local vía teclado y monitor, Consola serial con una terminal, Acceso

vía Telnet y SSH vía una red, WinBox interfaz gráfica, etc…

4.3.1 ROUTER CISCO E-SERIES

Usa el protocolo de comunicación inalámbrica 802.11n con seguridad WPA2 para

la encriptación de datos y un firewall SPI para ayudar a proteger la red de posibles

intrusiones incluye 4 puertos Ethernet (10/100) para la comunicación por red de los

computadores conectados a la misma.

Page 36: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

36

Incluye un puerto WAN conectar por medio del cable Ethernet a un modem y de

esta forma realizar la primera configuración, trae un botón de Wifi Secure Setup

para configurar de forma fácil la red inalámbrica de seguridad, indicador de

encendido y Jack de conexión AC, Indicador de Actividad de color verde para indicar

cual puerto de Ethernet se está usando(19).

Este Router no incluye funciones de acceso por entornos remotos como SSH y

telnet originalmente, únicamente el acceso es vía HTTP/HTTPS puerto 80 o 443

para su configuración.

Es un tipo de Router tipo SOHO el cual sirve para entornos caseros y conectividad

limitada y velocidad FastEthernet a 100Mb.

4.3.2 ROUTER CISCO 1941

Este Router es de la familia 1900 de Cisco el cual tiene cuatro puertos de acceso

FastEthernet con velocidad de transmisión a 100Mb por defecto, además tiene dos

puertos físicos tipo Giga Ethernet que soportan una velocidad de trasmisión de

10/100/1000 Mb/s.

Cuenta con un puerto auxiliar para conectarse por medio telefónico dial-up y un de

Consola para acceder a la configuración de los parámetros iniciales.

Este Router tiene acceso de forma remota por los telnet y SSH que manejan los

puertos 23 y 22 respectivamente además del acceso por via web por protocolo

HTTP/HTTPS.

Este cuenta con posibilidad de agregar puertos físicos WAN de alta velocidad de

hasta 25Mb/s y dos puerto WAN con velocidad de 1.512 Mb.

Este Router se usa en ambientes industriales para medianas empresas debido a

sus prestaciones además permite interactuar con el sistema operativo de Cisco y

utilizar los requerimientos que permite la licencia LAN-BASE (20)

4.3.3 MIKROTIK ROUTERBOARD 750GL

Es un router sencillo de bajo costo, un router SOHO. Cuenta con cinco puertos

Gigabit Ethernet independientes y la funcionalidad opcional de chip de conmutación

Gigabit. La velocidad de la CPU es de unos 400MHz con una memoria RAM de

64MB. Sistema operativo RouterOS. Para las pruebas y resultados deseados es

suficiente. Además es un modelo apto para el ámbito educativo y también utilizado

en el entorno empresarial (21)

Page 37: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

37

5. METODOLOGÍA

Seleccionar

tecnologías de

router a usar

Conexión entre router y

PC

Escoger Protocolo de

comunicación entre

Router y PC

Crear diagrama de

clase, estado y casos de

uso.

Generar modelo UMLGenerar modelo MDA

Seleccionar lenguajes

de programación para

programar parámetros

del Router.

Enviar los comandos

para programar

enrutamiento estatico.

Enviar comandos para

programar DHCP.

Realizar las pruebas del

Modelo MDA en la

comunicación

Figura 8: Imagen de metodología a desarrollar

El proyecto inicia seleccionando el tipo de tecnologías de routers con sus

respectivos detalles operativos de conectividad entre los cuales se escogen las

plataformas Cisco y Mikrotik.

Se realiza la conexión con el PC por medio de cable cruzado, y en el tipo de

protocolo que se escoge en el modo de conexión es el más seguro para interactuar

con el Router entre las opciones de Telnet/SSH o Puerto de Consola y se elige SSH

Versión 2 por tener encriptación en los datos a transmitir.

Luego se crean diagramas de clases, casos de uso y diagramas de secuencia para

generar el modelo UML guiado por MDA. Para tener el modelo de lo que se quiere

implementar en el lenguaje de programación especifico, dentro de este se emiten

comandos de configuración al router como servidor DHCP para obtener dentro de

un rango direcciones una dirección IP en el PC.

Page 38: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

38

Adicionalmente cada interfaz del Router es una red diferente por lo cual se necesita

interconectar las redes de los dos Router configurados en esta topología, por lo cual

se escoge un modo de enrutamiento estático al ser una red pequeña y fácilmente

administrable.

Se eligen dos lenguajes de programación específicos los cuales serán Java y

Python para desarrollar el aplicativo, además se escogen las respectivas librerías

que permitan la interconexión entre el Router y el PC a través de cada plataforma

por medio de SSH y de esta forma enviarle parámetros directamente desde el

aplicativo en Java o Python.

Por último se harán las pruebas finales por usuarios, estudiantes de la Universidad

Distrital Facultad Tecnológica, verificando el funcionamiento del aplicativo y a su vez

del algoritmo, esto permite consolidar que el modelo es portable a diferentes

entornos de programación sin necesidad de utilizar un entorno específico para

programar un Router y brindar al usuario una plataforma que soporte dos

tecnologías de Routers escalables a un futuro.

6. DESARROLLO DEL PROYECTO

6.1 EVALUACIÓN DE TECNOLOGÍAS:

En este trabajo de grado se usaron dos tipos de tecnologías las cuales fueron Cisco

y MikroTik, que tienen sistemas operativos propios del fabricante y tienen

conexiones necesarias para el desarrollo del proyecto. Se buscaron dos

proveedores de tecnologías que facilitaran su configuración a través de consola.

También que ofrecieran características comerciales costo/beneficio. Como se sabe

Cisco Systems es un proveedor bastante reconocido a nivel mundial ofreciendo una

amplia gama de dispositivos para diferentes aplicaciones de red, este fabricante

llamó bastante la atención de este proyecto para ser incluido en las tecnologías a

utilizar. Entonces se revisaron dos referencias de routers marca Cisco y se

evaluaron parámetros esenciales para la ejecución del proyecto.

Cisco 1941: Con el IOS Original de Cisco y licencia LAN-BASE V15.1 permite

acceso remoto por Telnet puerto 23, SSH puerto 22 además también tiene acceso

por vía web protocolos HTTP/HTTPS, permite un enlace serial por medio del puerto

de consola y un puerto AUX para comunicación por vía Telefónica o Dial-UP,

Page 39: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

39

adicionalmente permite poner el router como servidor de DHCP y cuenta con

protocolos de enrutamiento tanto dinámico como estático.

Figura 9: Imagen de Router Cisco 1941.

Se evaluó también el router SOHO Cisco E900 Linksys con el IOS original de cisco

y este solo tiene acceso por medio de HTTP/HTTPSPS puerto 80 o 443 a su

configuración por lo que se requiere tener de una conexión a Internet Disponible.

Figura 10: Imagen de Router Linksys e900

Debido a las pocas prestaciones que tiene el Router Cisco E900 con su Sistema

operativo original, se debería cambiar a un sistema operativo como OpenWrt. Así

que se procede a utilizar el router Cisco 1941

Respecto a lo anterior se eligió el Router Cisco 1941, dejando el sistema operativo

provisto por el fabricante

Para la elección de la segunda tecnología se realizó una búsqueda en los routers

tipo SOHO (Small office/home office) ya que la primera tecnología a tratar (el router

Cisco 1941) es una tecnología orientada a entornos empresariales más exigentes y

robustos.

Page 40: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

40

En los routers tipo SOHO un proveedor de tecnología como Mikrotik se prefirió por

su sistema operativo que está basado en software libre, por ser un router de bajo

costo, con una amplia documentación y porque su sistema operativo puede ser

instalado en un computador de escritorio emulando un Router. Por ello la referencia

adquirida es la Mikrotik RB750GL (21)

Figura 11. RouterBoard 750GL

6.2 DESARROLLO DEL ALGORITMO PARA LA CONFIGURACIÓN DE DOS

ROUTERS DE DIFERENTES TECNOLOGÍAS

El desarrollo de software depende generalmente de tres etapas: desarrollo del

algoritmo, programación y pruebas. Anteriormente se dedicaba un 40% del tiempo

dedicado a desarrollar el algoritmo y aplicar las pruebas de funcionamiento, y el

tiempo restante a la programación en un lenguaje determinado. Ahora con MDE y

MDA se busca implementar un 60% del tiempo en el desarrollo del algoritmo, y el

otro 40% del tiempo se destina a la programación y a las pruebas, esto da un gran

peso a las acciones previas a la programación, por lo tanto es de gran importancia

contar con buenas especificaciones del proyecto a realizar.

Como especificaciones del lado del usuario se consideró las direcciones IP del

router y de la computadora, el usuario predeterminado del router, la contraseña

predeterminada del router y los parámetros a configurar en el router. Las

especificaciones que requiere considerar el algoritmo desde la parte operativa son

la conexión con el router, las banderas de errores, los elementos de la interfaz de

usuario, identificar que tecnología de router se conectó, seleccionar los comandos

a enviar dependiendo de la tecnología y publicar la configuración aplicada. Al revisar

estas especificaciones se realizó un algoritmo descrito en las siguientes etapas:

1. Cargar elementos de la interfaz de usuario del aplicativo

Page 41: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

41

2. Definir las variables (usuario, contraseña, dirección IP, puerto), valores

constantes (puerto 22 SSH) y operaciones (verificación de conexión,

identificador, enviar comandos, publicar en pantalla)

3. Establecer comunicación con el router

4. Reconocer que router se conectó al aplicativo

5. Revisión de errores

6. Envío de comandos al router, configuración de red requerida por el usuario

7. Recepción información proveniente del router, verificación de la

configuración

8. Cierre de la aplicación.

Estas etapas se visualizan mejor en el diagrama de flujo de la figura 12.

El algoritmo fue sometido a diferentes modificaciones para poder ser plasmado en

la figura 12. Como se mencionó anteriormente el trabajo dedicado antes de la

programación debe ser extenso, someter el algoritmo a revisiones más rigurosas,

para evitar el gasto de recursos al momento de realizar la programación.

Para comprobar la validez de este algoritmo se implementó por medio de dos

lenguajes específicos dando paso a dos aplicativos, uno desarrollado en Java y otro

en Python, estos resultados se mostraran posteriormente en este documento.

De acuerdo al estándar MDA, se recomienda desarrollar previamente a la

programación los siguientes modelos.

1. CIM: Descripción de la lógica del negocio, perspectiva independiente de la

programación.

2. PIM: Descripción de la funcionalidad del sistema en forma independiente de

las características de plataformas de implementación específica.

3. ISM: Descripción a nivel de código en un lenguaje específico (Java, Python)

Estos modelos serán representados mediante una serie de diagramas de clases

que se mostraran mediante la herramienta Enterprice Architect versión 8.0 (usando

la licencia de prueba)

Page 42: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

42

Figura 12, Algoritmo para configuración de router

Page 43: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

43

6.3 DESARROLLO DE UN MODELO UML PARA EL ALGORITMO PARA LA

CONFIGURACIÓN DE DOS DIFERENTES ROUTERS.

6.3.1 DIAGRAMA DE CASOS DE USOS Y VISUALIZACIÓN DE LA INTERFAZ DE

USUARIO

De acuerdo a los modelos recomendados por el estándar MDA se procede a

desarrollar la lógica del negocio mediante un diagrama de casos de uso que

interpreta la relación del usuario con el aplicativo. Como actor definimos al usuario

que desea configurar un router:

1. El actor iniciará la aplicación ejecutando la aplicación

2. El actor pulsará el botón que reconoce el router conectado

3. El actor ingresará el usuario predeterminado en el router

4. El actor ingresará la clave predeterminada por en el router

La asociación que se define entre el actor y los casos de uso estará definida como

flujo de información para el caso de uso de ingresar usuario y contraseña. Para los

demás casos se asociara como un uso. Se observarán las siguientes imágenes del

caso de uso desarrollado (13)

Page 44: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

44

Figura 13. Diagrama de Casos de uso

Al implementar el diagrama casos de uso anteriormente descrito se plantea el primer

diseño de interfaz de usuario. Esta interfaz se modificó durante el desarrollo del

proyecto como muestra la figura 14 y 15.

uc Casos de uso principales

Aplicación SSH2 Java

Inicio de Aplicación

Cargando Configuración

Auto

Ingreso de usuario

Ingreso de Clav e

Usuario

«extend»

«extend»

«flow»

«flow»

Page 45: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

45

Figura 14. Diseño de interfaz de usuario 1.

Al realizar las debidas revisiones de las especificaciones se modifica la interfaz de

la figura 14 y el caso de usos anteriormente mostrado por las figuras mostradas a

continuación.

Figura 15. Diseño de interfaz de usuario 2

Page 46: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

46

Figura 16. Caso de uso finalizado

Como se puede observar en el diseño de la interfaz y en el caso de usos, el usuario

está obligado a conocer los datos de fábrica del router, es decir, la dirección IP,

usuario y contraseña del router a configurar. Además el usuario debe configurar en

la computadora la dirección IP, mascara de red y puerta de enlace, esta última debe

ser la dirección IP que viene predeterminada en el router a configurar. Más adelante

en este documento se explica una alternativa para facilitar al usuario la

configuración de sus direcciones IP. Finalmente para el caso de usos se estableció

los casos siguientes:

1. El actor inicia la aplicación

2. El actor pulsará el botón conectar para inicio de sesión y reconocer el router

conectado, para esto se requiere ingresar los datos del router (dirección IP,

usuario y clave)

3. El actor pulsará el botón que configura el router conectado

4. Opcionalmente, el actor puede borrar la configuración del router

uc Casos de uso principales

Aplicación SSH2 Java

Inicio de Aplicación

Cargando Configuración

Auto

Usuario

Borra la configuración

Conexión con Router

«extend»

Page 47: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

47

6.3.2 DIAGRAMA DE CLASES

El diagrama de clases para este proyecto se pensó de manera que permitiera la

ejecución del algoritmo en tres clases que están en constante interacción. Las

clases que se relacionaron en este diagrama son la clase principal, que llama y

define los elementos de interfaz de usuario, capta los datos ingresados por el

usuario y permite saber la interacción del usuario con el aplicativo, como conectar

el router con el aplicativo, cargar la configuración al router, borrar la configuración

en el router y cerrar la aplicación. En esta clase hay definidos cinco atributos para

almacenar los datos del router (tipo String, atributos de tipo públicos), e interactuar

con el usuario (variables para botones de tipo privados). Respecto a las operaciones

que se definieron en esta clase están: Operación Principal (main) para que el

ordenado puntualice en que clase iniciará el aplicativo, operación de tipo público.

Otras dos operaciones de tipo públicas detalladas en esta clase son la operación

para conectar y enviar comandos al router. Estas dos operaciones se relacionaran

con la segunda clase del diagrama. Las operaciones privadas serán las fijadas por

los “botones” de la interfaz de usuario.

La segunda clase que en orden jerárquico sigue es la clase de Conexión y Envío de

comandos. En esta clase se abre una sesión que permite reconocer el router

conectado, enviar los comandos requeridos para la comunicación y recibir la

respuesta del router a configurar. También genera banderas de errores si no hay

conexión con el dispositivo de red o si el router fue desconectado al ser configurado,

con lo cual se evita que el aplicativo “colapse” y se bloquee (mediante uso de

excepciones). Además en esta misma clase se especifica el protocolo de

comunicación para establecer una sesión no interactiva o interactiva con el router,

dicho protocolo como se mencionó en la metodología del proyecto será SSH versión

2. Los atributos de esta clase están determinados por las variables de recepción y

envió de comandos que deben ser tipo String. Adicionalmente dentro de la

planeación posterior a la programación se consultó que para establecer una

conexión por SSHv2 se debe aprovechar ciertas librerías al momento de programar,

por ello se generan dos atributos para el uso de la librería. Estos atributos son

públicos y el tipo de la variable dependerá de la librería utilizada. Las operaciones

en esta clase son operaciones públicas, y están relacionadas con la descripción

realizada al inicio de este párrafo, (conectar el router, envío de comandos, revisar

errores, recibir mensaje)

La última clase consta de un solo atributo y de dos operaciones. Esta es la clase de

Autenticación, que posibilita la verificación de la clave que pueda tener el router a

Page 48: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

48

configurar. En esta clase también se tiene en cuenta el uso de la librería para

SSHv2. El atributo es privado y de tipo String. Las operaciones dedicadas para

verificar la clave llevan el String con la clave al router y retornan un valor verdadero

o falso. Estos métodos u operaciones son públicas. El diagrama de clases entonces

será el siguiente (Figura 17):

Figura 17. Diagrama de Clases

Como se puede apreciar en la figura 17, las clases están relacionadas entre sí.

Estas relaciones son singularizadas como asociación y generalización, donde la

clase principal de interfaz de usuario se relaciona por medio de una asociación con

la clase de Conexión y Envío de comandos, esto debido a que la clase de conexión

class Modelo de clases

UserInfo

AutenticacionDeClav e

- password: String

+ AutenticacionDeClave(password :String)

+ promptYesNo(arg0 :String) : boolean

ConexionRouterEnv ioComandos

~ comand_enviar: ChannelExec

~ conect: Session

~ pssh: JSch = new JSch()

~ recepcion: String = ""

+ AutenticacionDeClave(password :String)

+ enviar_comando(comando :String) : void

+ error_conexion() : String

+ metodo_recepcion() : String

+ subconectar(admin_ip_contraseña :String, puerto :int) : void

javax.swing.JFrame

InterfazDeUsuario

~ admin: String = "admin"

- boton_configuracion_auto: javax.swing.JTextField

~ ip_gateway: String = "192.168.88.1"

~ port_router: int = 22

- terminalSalida: javax.swing.JTextArea

- boton_conectar(evt :ActionEvent) : void

- boton_desconect(evt :ActionEvent) : void

- boton_identificador(evt :ActionEvent) : void

+ comando_config_automatica()(ComandoRouter :int) : void

+ main(args :String[]) : void

+ publicar_consola() : void

Generalización

Asociación

Page 49: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

49

colabora con la clase interfaz, pero no condiciona la existencia de los objetos en las

clases.

La relación establecida entre la clase de Conexión y la clase de Autenticación está

calificada como una Herencia de tipo Generalización donde el método para

autenticar la clave es heredado de la clase Conexión a la clase de Autenticación.

6.3.3 DIAGRAMA DE SECUENCIA

Los diagramas de secuencia, son la descripción más detallada dentro del estándar

MDA, en esta etapa se describen los mensajes entre las clases y el debido “camino”

que debe seguir el programa. Se relacionan los atributos y operaciones de cada

clase y se revisa el valor de retorno (tipos de variables texto, enteros, caracteres,

etc…), también se precisa bloques de condiciones tipo IF o CASE. Es importante

saber que el diagrama de secuencia parte del diagrama de casos de usos, porque

por cada caso de uso se realiza un diagrama de secuencia. La figura 16 permite ver

los de casos que se listaran a continuación:

1. Inicio de aplicación

2. Conexión con el router para inicio de sesión pulsando el botón conectar, para

esto se requiere ingresar los datos del router (dirección IP, usuario y clave)

3. Configuración del router conectado

4. Opción de borrado de la configuración del router

El diagrama de secuencias relacionará los casos de uso y las clases mencionadas

en el diagrama anterior, se tendrá en cuenta los atributos y operaciones

especificados. Las siguientes figuras muestran los diagramas de secuencias

partiendo de los casos de usos.

Page 50: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

50

Figura 18. Diagrama de secuencia, Inicio de Aplicación

Page 51: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

51

Figura 19. Diagrama de secuencia, Conexión con el Router

sd Sec Conexión

Usuario

«button»

:Conectar

«text»

:Caja dirección IP

«text»

:Caja Usuario

«text»

:Clave Router

Clase

:ConexionTXRX

Clase

:AutenticacionDeClave

alt Rev isaConexión

[i f(dispositivo=conectado)]

[else]

Accionar()

Obtener

Texto(String)

Obtener Texto(String)

Obtener Texto(String)

AlmacenaDatosTemporales(String, int)

subconectar(String admin, String ip,

String clave, int puerto)

EntregaValoresVariables((String, Int))

AutenticacionDeClave(String)

Bandera() :booleano

valorBooleano()

enviar_comando(String)

metodo_recepcion() :String

identidadRouter() :String

GuardarNombreRouter(String)

publicar_Router() :String

error_conexion() :String

Page 52: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

52

Figura 20. Diagrama de secuencia, Cargando Configuración del Router

sd Sec Cargar Confg

Usuario

«button»

:Configurar Router

:InterfazDeUsuario :ConexionTXRX

alt IndentificadorRouter

[if(router=Mikrotik)]

[if(router=Cisco)]

alt ComandoRouter

[if(comando=1)]

[if(comando=2)]

Accionar()

Configurar(int)

GuardarNombreRouter(String)

bandera(int)

bandera(int)

comando_config_automatica(bandera)

enviar_comando(String)

metodo_recepcion() :String

enviar_comando(String)

metodo_recepcion() :String

publicar_consola()

Page 53: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

53

Figura 21. Diagrama de secuencia, Barrado de Configuración del Router

sd Sec Borra Confg

Usuario

:InterfazDeUsuario :ConexionTXRX«button»

:Borrar

Configuración

alt IndentificadorRouter

[if(router=Mikrotik)]

[if(router=Cisco)]

alt ComandoRouter

[if(comando=1)]

[if(comando=2)]

Comando Borrar para

Mikrotik

Comando Borrar Cisco

Accionar()

Configurar(int)

GuardarNombreRouter(String)

Bandera(int)

Bandera(int)

comando_config_automatica(bandera)

enviar_comando(String)

metodo_recepcion() :String

enviar_comando(String)

metodo_recepcion() :String

publicar_consola()

Page 54: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

54

Como se puede observar en las figuras 20 y 21 se puede observar una secuencia

muy similar, esto se debe a que el envío del comando sigue la misma rutina,

identificando el router a configurar, así la secuencia que describe al caso de uso de

borrado de configuración se puede aplicar sin depender del anterior caso de uso

permitiendo que el borrado de la configuración sea opcional.

6.3.4 SELECCIÓN DE LENGUAJES DE PROGRAMACIÓN

Se requería ofrecer al usuario una interfaz gráfica sencilla mediante un lenguaje de

programación para configurar los parámetros descritos anteriormente en el

algoritmo. Así que se seleccionó el lenguaje de programación Java orientado a

objetos independiente de la plataforma (24) y el lenguaje Python (25) que resulta

ser un lenguaje de programación de propósito general, orientado a objetos y que

también puede utilizarse para el desarrollo web.

Para el desarrollo en Java se requirió de la librería JSCH versión 0.1.53 (21) para el

manejo de SSHv2 que facilita y establece un puente para el envío y recepción de

comandos con el router. También se utilizó el paquete java.io que está incluido

dentro del entorno de Java, necesario para el control de entrada y salida del flujo de

datos. Para el diseño de la interfaz gráfica se aprovechó el entorno de programación

Netbeans (22), que ya viene con un complemento para el desarrollo de una interfaz

de usuario y genera el código fuente de la parte grafica automáticamente. La

programación en Java se realizó siguiendo el algoritmo planteado y aplicando las

características definidas por el modelado con MDA (ver código fuente en los

anexos). Respecto a la interfaz de usuario, con la herramienta Netbeans se obtuvo

un resultado muy similar a la propuesta con el software Enterprice Architect. En la

figura 22 se visualiza el resultado.

Para la implementación del segundo lenguaje de programación Python se tuvieron

en cuenta las siguientes consideraciones:

La conexión entre Python y el router se hace por medio de SSH versión 2 como se

estipulo anteriormente en el documento. En Python el API de comunicación con

SSH se llama Paramiko y se debe importar en conjunto con la librería de Crypto.Py

debido a que es una librería compilada en C y se envían políticas de acceso en la

conexión, a estas se le agregan las líneas de autenticación del usuario y clave de

acceso como se hace normalmente en una sección de SSH. Después se envían los

comandos de configuración al router.

Page 55: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

55

Figura 22. Interfaz gráfica desarrollada en Java

Figura 23. Interfaz gráfica desarrollada en Python

Page 56: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

56

El editor escogido para trabajar en Python fue Eclipse, este entorno nos ofrece una

librería para trabajar con Python y crear nuevos proyectos en Eclipse que se puede

descargar desde Eclipse MarketPlace llamado PyDev, además se instala la librería

Paramiko para generar una conexión via SSH para realizar la conexión con el router,

esta librería tiene código de ejecución en C++, por lo que es necesario instalar la

librería PyCrypto 2.7 para poder ejecutar correctamente la librería de Paramiko.

Posteriormente a eso se desarrollan una interfaz gráfica con la librería PyQt4 la cual

permite tener compatibilidad entre interfaces graficas en Linux como en Windows

esta librería tiene una interfaz independiente externa al IDE de programación de

Eclipse llamada Qt Designer que facilita hacer el diseño y vincularlo a un entorno de

programación. La interfaz de usuario en Python se visualiza en la figura 23. (Código

fuente en anexos).

Al revisar la figura 23, la interfaz realizada en Python presenta algunas diferencias

a la propuesta en el modelo, dichas modificaciones se realizaron para facilitar la

presentación y realización de una encuesta con una muestra de personas de

carreras afines con las telecomunicaciones.

6.4 DISEÑO DE LA TOPOLOGÍA DE RED IMPLEMENTADA PARA LA

REALIZACIÓN DE PRUEBAS

Se seleccionan dos parámetros para programar en los router los cuales son DHCP

y protocolos para enrutamiento de tipo estático para interconectar las diferentes

redes agregadas en la topología de red, esta topología será fija. Se desarrolla el

siguiente esquema.

Page 57: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

57

PC-APC-B

Router MikroTikRouter Cisco

Figura 24: Esquema de la topología.

Explicando la figura anterior se configura cada router para que utilice dos puertos,

cada interfaz será es una red diferente donde se agregan redes de clase C. En el

router MikroTik se usa la interfaz Ethernet 2 con la dirección IP 192.168.88.1/24 al

cual se conecta el PC-B. En el puerto Ethernet 3 se configura con la IP

192.168.80.1/30 que se conecta al router Cisco.

En el Router Cisco se usa la interfaz G0/0 con IP 192.168.1.1/24 al cual se conecta

el PC-A, y en la interfaz G0/1 se coloca la IP 192.168.80.2/30 que se habilita para

el router MikroTik.

En los routers Cisco y Mikrotik se configura DHCP para que los equipos (PC-A y

PC-B) obtengan la dirección IP automáticamente, definiendo un rango de 254

direcciones posibles y excluir la dirección IP de la interfaz del router.

Por último se dispone de un enrutamiento que permita administrar la topología, por

ende se escoge el protocolo de enrutamiento estático, que admite el conocimiento

de las diferentes redes configuradas en los routers, como se mencionó las

direcciones tienen una máscara de red de 30 para admitir solo 2 direcciones IP y

evitar el desperdicio de direcciones IP. A continuación se presenta en la figura 25 el

algoritmo de la configuración de los routers Cisco y Mikrotik

Page 58: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

58

Inicio

Conexión física con

el Router

¿Se estableció

correctamente

la conexión?

Si

Ingresar por SSHV2

Acceso Correcto

al Router

Si

Definir rango de

direcciones para DHCP

Excluir

dirección del

Gateway del

rango DHCP

Establecer

puerto del

router de

salida para

DHCP

Establecer

Enrutamiento

Estático

Definir Puerto

para

enrutamiento

estático

Definir rango de

direcciones IP y

mascara de subred

Pruebas de

Comunicación

¿Parámetros

Correctos?

Si

Fin

No

No

No

Figura 24: Algoritmo de configuración de Router

Page 59: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

59

6.5 USO Y CONSIDERACIONES PREVIAS PARA IMPLEMENTACIÓN DEL

APLICATIVO DESARROLLADO

El aplicativo obtenido en los lenguajes de programación tiene un manejo muy

sencillo. Como se mencionó anteriormente se requiere de los datos básicos del

router y de seleccionar la opción de conectar para establecer una comunicación con

el dispositivo. El usuario entonces también debe configurar su computadora para

realizar una conexión con el router. Para esto se realizó una sencilla aplicación que

otorga al usuario el medio para configurar la dirección IP de su computadora.

Se generaron dos archivos de Consola para Windows, la siguiente imagen muestra

los archivos en carpeta (figura 25). El archivo CONF IP GATEWAY.cmd permite al

usuario establecer una dirección IP fija a su computadora, y el archivo CONF IP

DHCP.cmd le facilita la opción de establecer una IP dinámica suministrada por el

router. Solo requiere ingresar la dirección tipo C que se establece en el router desde

fábrica, esto antes de ejecutar la aplicación propuesta en este proyecto, y la

dirección que se desea configurar en la computadora (figuras 26 y 27)

Figura 25, Archivos para configurar computadora.

Adicionalmente después de ejecutar la aplicación se imprime una breve

configuración de las direcciones de red de la computadora

Page 60: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

60

Figura 26, Configuración de dirección estática

Figura 27, Configuración de DHCP

Los códigos fuentes de estas aplicaciones se pueden visualizar en anexos

6.6 PRUEBAS DE IMPLEMETACION DEL MODELO

Esta prueba se realizó en la universidad Manuela Beltrán con un grupo de catorce

estudiantes de diversas carreras. Para esta prueba se hizo una encuesta evaluando

aspectos básicos como tiempos y facilidad de la aplicación desarrollada por medio

del modelo.

Se evaluó la interface mostrada en la figura 23 desarrollada en Python para tener

compatibilidad entre diferentes sistemas operativos, en la interface se muestra que

solo se tiene que tener un conocimiento básico de usuario y contraseña de acceso

a SSH.

Se realizaron las siguientes preguntas en la encuesta:

Page 61: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

61

1. Califique como le parece la interacción de la interfaz gráfica con el usuario

de (1-5) siendo 5 muy interactiva y 1 muy poco interactiva.

2. Califique que tan útil le pareció esta aplicación siendo 5 muy útil y 1 muy poco

útil.

3. Cuánto tiempo se demoró configurando los parámetros del router con la

interfaz y cuanto se demoró por línea de comandos.

4. Qué nivel de conocimiento necesito para configurar estos parámetros siendo

5 un nivel muy bajo de conocimientos y 1 un nivel muy alto de conocimientos.

5. Recomendaría esta aplicación en su sitio de trabajo o lugar de estudió.

Se obtuvieron los siguientes resultados para cada pregunta descrita anteriormente:

1. A la pregunta califique como le parece la interacción de la interfaz gráfica con

el usuario de (1-5) siendo 5 muy interactiva y 1 muy poco interactiva se

obtuvieron los siguientes resultados.

Gráfico 1: Resultados de la pregunta número 1.

2 A la pregunta califique que tan útil le pareció esta aplicación siendo 5 muy útil

y 1 muy poco útil se obtuvo el siguiente gráfico.

0

2

4

6

8

10

5 4 3 2 1

Interacción de la interfaz gráfica con el usuario

Interactividad de la interfaz

Page 62: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

62

Gráfico 2: Resultados de la pregunta número 2.

3 A la pregunta cuánto tiempo se demoró configurando los parámetros del

router con la interfaz y cuanto se demoró por línea de comandos se

obtuvieron los siguientes resultados.

Gráfico 3: Resultados de la pregunta número 3.

4 A la pregunta qué nivel de conocimiento necesito para configurar estos

parámetros siendo 5 un nivel muy bajo de conocimientos y 1 un nivel muy

alto de conocimientos se obtuvo lo siguiente.

0

2

4

6

8

10

12

5 4 3 2 1

Utilidad de la aplicación

Utilidad de la aplicación

0

2

4

6

8

10

12

Menos de unminuto

Entre unminuto a dos

minutos

Entre dosminutos a

cuatro minutos

Mas de cuatrominutos

Tiempos con la interface Tiempos por linea de Comandos

Page 63: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

63

Gráfico 4: Resultados de la pregunta número 4.

5 A la pregunta recomendaría esta aplicación en su sitio de trabajo o lugar de

estudió se respondió lo siguiente.

Gráfico 5: Resultados de la pregunta número 5.

El resultado de esta encuesta es positivo comparando la interfaz desarrollada en

este proyecto en relación a la programación por línea de comandos observando que

los usuarios aceptan la interfaz en el diseño, además se observa que es fácil el uso

de la misma, pero se obtiene una variación en tiempos de programación en ambas

interfaces esto debido a las habilidades de cada usuario con el manejo de ambas

plataformas.

El nivel de conocimientos para usar la interfaz según los usuarios son muy básicas

en relación con la línea de comandos usada para este fin, y todos están de acuerdo

0

1

2

3

4

5

6

Categoría 1 Categoría 2 Categoría 3 Categoría 4

Nivel de Conocimientos Requeridos para usar la interface

Nivel de Conocimientos Requeridos para usar la interface

Recomendaria esta aplicación en su lugar de estudio o trabajo

Si No

Page 64: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

64

en recomendarla en sus sitios de estudio o trabajo para un resultado de 100% de

satisfacción al usuario.

En la tabla 1 se realizó una comparación entre los diferentes sistemas operativos

de los Routers entorno a las preguntas de la encuesta y además utilidad en cuanto

a costos y licenciamiento para obtener una comparación entre las plataformas de

los Routers y la desarrollada en este proyecto.

En la tabla 2 se hace un comparativo entre diferentes sistemas operativos para

obtener un punto de referencia sobre un uso posterior de la aplicación y modificación

de parámetros adicionales al aplicativo.

Consola MikroTik

Interface desarrollada

Mikrotik

Consola Cisco Interface desarrollada

Cisco

Interactividad de la Interfaz con respecto al usuario

Baja Alta Baja Alta

Utilidad del programa respecto a configuración del Router

Alta Media Alta Media

Tiempo de configuración de parámetros

Alta Baja Alta Baja

Nivel de Conocimiento en el uso de la aplicación

Alta Baja Muy Alta Baja

Recomendación en sitios de trabajo

Si Si No Si

Tabla 1: Resultados de la encuesta con relación a la forma estándar de programar

los routers

Page 65: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

65

Cisco Mikrotik Interfaz del Proyecto

OpenWrt

Interfaz Grafica Si Si Si Si

Nivel de conocimientos para el uso de la plataforma

Medio Medio Bajo Alto

Tiempo de Configuración de parámetros

Bajo Medio Bajo Alto

Utilidad de la plataforma Alta Alta Media Alta

Uso en entornos escolares o empresariales

Alta Alta Los usuarios por medio de la encuesta lo

recomendarían

Bajo

Interactividad de la Plataforma con el usuario

Alta Alta Alta Media

Puertos de Ingreso a la plataforma

80 22,23,80 22,23 22,23,80,443

Tipo de Licencia Cisco IOS RouterOS GPL GPL

Costos de Licenciamiento Alto Medio Ninguno Ninguno

Tabla 2: Comparación entre diferentes sistemas operativos de los Routers

Page 66: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

66

7 CONCLUSIONES

Se desarrolló un algoritmo para configurar dos tecnologías de routers basados en

arquitectura basadas en modelos (MDA), aplicada a lenguajes de programación

específicos configurando dos tipos de parámetros del las tecnologías escogidas.

Los routers Mikrotik 750 y Cisco 1941 se escogieron para configurar los parámetros

DHCP y un tipo de Enrutamiento dinámico.

Se realizó una comparación en tiempos de ejecución de la plataforma por el método

tradicional y con la aplicación desarrollada la cual se ejecutó por estudiantes para

realizar las pruebas y además por dos programadores que conocen estas

tecnologías obteniendo unas reducción de tiempos entre un 40 a 50 % en la

ejecución de los dos parámetros configurados los cuales fueron DHCP y un tipo de

enrutamiento para los routers como se muestra en la tabla 1 y tabla 2.

Se observó una disminución de tiempos con la aplicación desarrollada tanto en

conexión como en estabilidad de la plataforma y facilidad al usuario, evaluada por

dos programadores en la cual se obtiene por el método tradicional una tiempo de

programación de los dos parámetros entre 50 segundos a 1 minuto y 20 segundos

tomadas en 5 muestras mientras que con la aplicación los mismos parámetros se

configuraron en un intervalo de tiempo entre 20 a 30 segundos según la figura 23.

8 BIBLIOGRAFÍA

Page 67: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

67

1. García Díaz V. Ingeniera dirigida por Modelos. :117.

2. Favre J-M. Towards a Basic Theory to Model Model Driven Engineering. 2003;

3. Ruiz F, Piattini M. Model Driven Engineering Aplicado a Business Process

Management. Inf Tec UCLMTSI002 [Internet]. 2007; Available from:

http://scholar.google.com/scholar?hl=en&btnG=Search&q=intitle:Model+Driv

en+Engineering+Aplicado+a+Business+Process+Management#0

4. González-Baixauli B, Laguna M a. MDA e Ingenieria de Requisitos para

Lineas de Producto. Actas del II Taller sobre Desarro Softw Dirigido por Model

MDA y Apl (DSDM 2005) [Internet]. 2005;11. Available from:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.142.9785&amp;rep

=rep1&amp;type=pdf

5. Cuesta MA, López TM, Joyanes L a. Comparativo de herramientas MDA

(AndroMDA, ArcStyler, OptimalJ). Vector. 2009;50–8.

6. Rodriguez J. Ingenieria de Modelos con MDA estudio comparativo de optimalJ

y ArcStyler. 2004;106.

7. Perez JM. Metodología y Técnicas en Proyectos software para la Web

Metodologías Web Metodologías Web Metodologías Web. 2007;1–15.

8. Jimenez Dorado JC. Lenguaje Específico De Dominio Para La Definición De

La Plataforma En El Desarrollo De Software Dirigido Por Modelos. 2014;156.

9. Dhcp P. Router Teldat. 2002;

10. Dhcp. 2011;1–26.

11. Translation NA, Server D, Translation A. NAT y DHCP Server en los Speedlan.

12. Nat F, Nat T De. Router Teldat. 2003;

13. Chimento JM. Comunicaciones. NAT.

14. Lara E. Funcionamiento de un router. 2010;3–22. Available from:

http://personals.ac.upc.edu/elara/documentacion/INTERNET - UD4 -

Funcionamiento Router.pdf

Page 68: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

68

15. Tomato Firmware | polarcloud.com [Internet]. [cited 2016 Feb 28]. Available

from: http://www.polarcloud.com/tomato

16. About DD-WRT | www.dd-wrt.com [Internet]. [cited 2016 Feb 28]. Available

from: http://www.dd-wrt.com/site/content/about

17. About OpenWrt [OpenWrt Wiki] [Internet]. [cited 2016 Feb 28]. Available from:

https://wiki.openwrt.org/about/start

18. http://blog.capacityacademy.com/2014/04/09/que-es-mikrotik-routeros/

19. Cisco. Linksys E-Series. 2012;

20. Cisco 1941 Series Integrated Services Routers [Internet]. [cited 2016 Feb 27].

Available from:

http://www.cisco.com/c/en/us/products/collateral/routers/1900-series-

integrated-services-routers-isr/data_sheet_c78_556319.pdf

21. http://www.jcraft.com/jsch/

22. https://netbeans.org/

ANEXOS

ANEXO A, Código Fuente en Java

Clase Principal

Page 69: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

69

/*

* @author Carlos Sierra

*/

import java.awt.event.KeyEvent;

public class InterfazSSH_Java extends javax.swing.JFrame {

public InterfazSSH_Java() {

initComponents();

this.getContentPane().setBackground(new

java.awt.Color(102,102,102));

}

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

cajaIP = new javax.swing.JTextField();

cajaUsuario = new javax.swing.JTextField();

cajaClave = new javax.swing.JTextField();

boton_conectar = new javax.swing.JButton();

nombre_dispositivo = new javax.swing.JLabel();

boton_configurar = new javax.swing.JButton();

boton_borrar = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

terminalSalida = new javax.swing.JTextArea();

etiqueta_consola = new javax.swing.JLabel();

caja_comandos = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

setTitle("V1 APP SSH");

setAutoRequestFocus(false);

setBackground(new java.awt.Color(255, 255, 255));

setSize(new java.awt.Dimension(0, 0));

addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

formMouseClicked(evt);

}

});

Page 70: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

70

getContentPane().setLayout(null);

cajaIP.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N

cajaIP.setText("Dirección IP Router");

cajaIP.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

cajaIPMouseClicked(evt);

}

});

getContentPane().add(cajaIP);

cajaIP.setBounds(30, 30, 280, 30);

cajaUsuario.setFont(new java.awt.Font("Consolas", 0, 12)); //

NOI18N

cajaUsuario.setText("Usuario");

cajaUsuario.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

cajaUsuarioMouseClicked(evt);

}

});

getContentPane().add(cajaUsuario);

cajaUsuario.setBounds(30, 70, 280, 30);

cajaClave.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N

cajaClave.setText("Contraseña");

cajaClave.addMouseListener(new java.awt.event.MouseAdapter() {

public void mouseClicked(java.awt.event.MouseEvent evt) {

cajaClaveMouseClicked(evt);

}

});

getContentPane().add(cajaClave);

cajaClave.setBounds(30, 110, 280, 30);

boton_conectar.setFont(new java.awt.Font("Lucida Console", 0,

13)); // NOI18N

boton_conectar.setText("Conectar");

boton_conectar.addActionListener(new

java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

boton_conectarActionPerformed(evt);

}

});

Page 71: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

71

getContentPane().add(boton_conectar);

boton_conectar.setBounds(40, 150, 260, 30);

nombre_dispositivo.setFont(new java.awt.Font("Lucida Console", 0,

13)); // NOI18N

nombre_dispositivo.setText("Dispositivo: ");

getContentPane().add(nombre_dispositivo);

nombre_dispositivo.setBounds(30, 190, 280, 30);

boton_configurar.setFont(new java.awt.Font("Lucida Console", 0,

13)); // NOI18N

boton_configurar.setText("Configurar");

boton_configurar.addActionListener(new

java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

boton_configurarActionPerformed(evt);

}

});

getContentPane().add(boton_configurar);

boton_configurar.setBounds(40, 230, 260, 30);

boton_borrar.setFont(new java.awt.Font("Lucida Console", 0, 13));

// NOI18N

boton_borrar.setText("Borrar configuración");

boton_borrar.addActionListener(new

java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

boton_borrarActionPerformed(evt);

}

});

getContentPane().add(boton_borrar);

boton_borrar.setBounds(40, 270, 260, 30);

terminalSalida.setBackground(new java.awt.Color(0, 0, 0));

terminalSalida.setColumns(20);

terminalSalida.setFont(new java.awt.Font("Lucida Console", 0,

13)); // NOI18N

terminalSalida.setForeground(new java.awt.Color(0, 204, 0));

terminalSalida.setRows(5);

jScrollPane1.setViewportView(terminalSalida);

getContentPane().add(jScrollPane1);

Page 72: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

72

jScrollPane1.setBounds(30, 310, 280, 130);

etiqueta_consola.setFont(new java.awt.Font("Lucida Console", 0,

13)); // NOI18N

etiqueta_consola.setText("Consola >>");

getContentPane().add(etiqueta_consola);

etiqueta_consola.setBounds(30, 490, 100, 30);

caja_comandos.setBackground(new java.awt.Color(0, 0, 0));

caja_comandos.setFont(new java.awt.Font("Lucida Console", 0, 13));

// NOI18N

caja_comandos.setForeground(new java.awt.Color(0, 204, 0));

caja_comandos.setCaretColor(new java.awt.Color(0, 204, 0));

caja_comandos.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

caja_comandosKeyPressed(evt);

}

});

getContentPane().add(caja_comandos);

caja_comandos.setBounds(140, 480, 520, 40);

setBounds(0, 0, 359, 510);

}// </editor-fold>

Conexion_envio Conectar_Enviar = new Conexion_envio();

String comando;

int ComandoRouter = 0;

/*

String admin = "admin"; //Usuario determinado por Mikrotik

String ip_gateway = "192.168.88.1"; //Ip del router

int port_router = 22; //Puerto SSH

String contraseña = "admin"; //Contraseña del Router

*/

/*

String admin = "root"; //Usuario determinado por Mikrotik

String ip_gateway = "192.168.1.1"; //Ip del router

int port_router = 22; //Puerto SSH

String contraseña = "hola1234"; //Contraseña del Router

*/

public void iniciar_sesion(String admin, String ip_gateway, int

port_router, String contraseña){

Page 73: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

73

Conectar_Enviar.subconectar(admin, ip_gateway, port_router,

contraseña);

Conectar_Enviar.error_conexion();

String bandera=Conectar_Enviar.error_conexion();

if (bandera.equals("ok"))

this.terminalSalida.setText(this.terminalSalida.getText()+ " Inicio de

Sesión" +"\n");

else this.nombre_dispositivo.setText("Dispositivo: No

Conectado");

}

public void identificador_router(){ //Indentificar con que router se

va a trabajar

Conectar_Enviar.enviar_comando("system identity print");

String linea = Conectar_Enviar.metodo_recepcion();

if (linea.equals("\n" +" name: MikroTik\n" +"\n")) {

this.nombre_dispositivo.setText("Dispositivo: MikroTik

RouterBoard");

ComandoRouter = 1;

}

else{

Conectar_Enviar.enviar_comando("system identity print");

if (linea.equals("Cisco"));

this.nombre_dispositivo.setText("Dispositivo: Cisco

Systems");

ComandoRouter = 2;

}

/*

if{

ComandoRouter = 0

this.nombre_dispositivo.setText("Dispositivo: No Conectado");

}

if (Conectar_Enviar.error_conexion().equals("error"))

{

this.nombre_dispositivo.setText("Dispositivo: No Conectado");

ComandoRouter = 0;

this.caja_comandos.setEnabled(false);

}*/

}

public void publicar_consola()

{

Page 74: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

74

Conectar_Enviar.enviar_comando(comando);

String linea = Conectar_Enviar.metodo_recepcion();

this.terminalSalida.setText(this.terminalSalida.getText()+linea+"\n");

System.err.println("Consola >>" + " : " + linea);

}

public void comando_config_automatica(int ComandoRouter)

{

//String con las instrucciones para

//configurar el router automáticamente por el usuario

if (ComandoRouter==1) comando = "ip address print";// Comando

Mikrotik

else if (ComandoRouter==2) comando = "interface print";// Comando

Cisco

else if (ComandoRouter==0) System.out.println("Comando no

enviado... ");//Errores

else System.out.println("Comando no enviado... ");//Errores

}

//Botones interfaz

private void

boton_configurarActionPerformed(java.awt.event.ActionEvent evt) {

// Configuración Automática

//comando_config_automatica(ComandoRouter);

comando_config_automatica(1);

this.caja_comandos.setText("");

this.terminalSalida.setText(this.terminalSalida.getText()+"Comando >

"+"Configuración Automática Ejecutada"+"\n");

this.publicar_consola();

}

private void boton_borrarActionPerformed(java.awt.event.ActionEvent

evt) {

//Cerrar aplicativo

comando_config_automatica(2);

this.caja_comandos.setText("");

this.terminalSalida.setText(this.terminalSalida.getText()+"Comando >

"+"Configuración Automática Ejecutada"+"\n");

Page 75: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

75

this.publicar_consola();

}

private void caja_comandosKeyPressed(java.awt.event.KeyEvent evt) {

//Configuración manual, escritura de comandos por parte del usuario

char enter1 = evt.getKeyChar();

if (enter1 == KeyEvent.VK_ENTER)

{

comando = this.caja_comandos.getText();

this.caja_comandos.setText("");

this.terminalSalida.setText(this.terminalSalida.getText()+

"Comando > " + comando+"\n");

this.publicar_consola();

}

}

private void boton_conectarActionPerformed(java.awt.event.ActionEvent

evt) {

//Revisión de conexión, identificador de tipo de tecnología de

Router (MikroTik, Cisco)

String user, ip, clave;

user=this.cajaUsuario.getText();

ip=this.cajaIP.getText();

clave=this.cajaClave.getText();

this.iniciar_sesion(user, ip, 22, clave);

//this.identificador_router();

}

private void cajaUsuarioMouseClicked(java.awt.event.MouseEvent evt) {

this.cajaUsuario.setText("");

}

private void cajaClaveMouseClicked(java.awt.event.MouseEvent evt) {

this.cajaClave.setText("");

}

private void formMouseClicked(java.awt.event.MouseEvent evt) {

this.cajaIP.setText("");

}

private void cajaIPMouseClicked(java.awt.event.MouseEvent evt) {

this.cajaIP.setText("");

Page 76: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

76

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) throws Exception{

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel

setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with

the default look and feel.

* For details see

http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

*/

try {

for (javax.swing.UIManager.LookAndFeelInfo info :

javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(InterfazSSH_Java.class.getName()).log(

java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(InterfazSSH_Java.class.getName()).log(

java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(InterfazSSH_Java.class.getName()).log(

java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(InterfazSSH_Java.class.getName()).log(

java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

Page 77: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

77

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new InterfazSSH_Java().setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton boton_borrar;

private javax.swing.JButton boton_conectar;

private javax.swing.JButton boton_configurar;

private javax.swing.JTextField cajaClave;

private javax.swing.JTextField cajaIP;

private javax.swing.JTextField cajaUsuario;

private javax.swing.JTextField caja_comandos;

private javax.swing.JLabel etiqueta_consola;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JLabel nombre_dispositivo;

private javax.swing.JTextArea terminalSalida;

// End of variables declaration

}

Clase ConexionTXRX

/**

*

* @author Carlos Sierra

* @author http://www.jcraft.com/jsch/

*

*/

import java.io.InputStream;

import com.jcraft.jsch.Session;

import java.io.InputStreamReader;

import com.jcraft.jsch.ChannelExec;

import com.jcraft.jsch.UserInfo;

import java.io.BufferedReader;

import com.jcraft.jsch.JSch;

import javax.swing.JOptionPane;

public class Conexion_envio

Page 78: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

78

{

Session conect;//Comando al router

JSch pssh = new JSch();//Variable para establecer conexión con el

router

ChannelExec comand_enviar;//Variable para comunicación con el router

String recepcion="";//Recepción de cadenas del router

String bandera;

public void subconectar(String admin, String ip_gateway, int

port_router, String contraseña)

{

try

{

conect = pssh.getSession(admin, ip_gateway, port_router);

UserInfo ui = new autenticacion(contraseña,null);

conect.setUserInfo(ui);

conect.setPassword(contraseña);

conect.connect();

bandera = "ok";

}

catch (Exception ex)

{

System.out.println("Router desconectado... ");

bandera = "error";

JOptionPane.showMessageDialog(null,"No hay conexión con el

Router, Por favor intentar nuevamente");

}

}

public void enviar_comando (String comando)

{

try

{

comand_enviar = (ChannelExec)conect.openChannel("exec");

InputStream cadena_puerto = comand_enviar.getInputStream();

comand_enviar.setCommand(comando); /**************comando a

enviar*/

comand_enviar.connect();

BufferedReader reader = new BufferedReader(new

InputStreamReader(cadena_puerto));

String recepcione = "";

do

Page 79: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

79

{

recepcion = recepcion + recepcione + "\n";

}

while ((recepcione = reader.readLine()) != null);

}

catch (Exception ex)

{

System.out.println("Comando no enviado... ");

}

}

public String error_conexion()

{

return bandera;

}

public String metodo_recepcion()

{

return recepcion;

}

public void cerrar_sesion()

{

}

}

Clase Autenticacion

/**

*

* @author http://www.jcraft.com/jsch/

* @author https://nemthys.wordpress.com/2012/01/17/conexion-ssh-desde-

java/

*/

import com.jcraft.jsch.UserInfo;

public class autenticacion implements UserInfo{

Page 80: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

80

private String password;

private String passPhrase;

public autenticacion(String password, String passPhrase) {

this.password = "";

this.passPhrase = "";

}

public String getPassphrase() {

return passPhrase;

}

public String getPassword() {

return password;

}

public boolean promptPassphrase(String arg0) {

return true;

}

public boolean promptPassword(String arg0) {

return false;

}

public boolean promptYesNo(String arg0) {

return true;

}

public void showMessage(String arg0) {

System.out.println("SUserInfo.showMessage()");

}

}

ANEXO B, Código fuente en Python

Programa Principal

'''

Created on 12/04/2016

@author: DavidRicardo

Page 81: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

81

'''

import sys

import paramiko

from PyQt4 import QtCore, QtGui

from proyectoall import Ui_MainWindow

import time

import socket

from PyQt4.Qt import QMessageBox

#CLASE 1

class Interface(QtGui.QMainWindow):

def __init__(self,parent=None):

super(Interface, self).__init__()

QtGui.QWidget.__init__(self,parent)

self.ui=Ui_MainWindow()

self.ui.setupUi(self)

self.ui.Btn3.clicked.connect(exit)

self.ui.Btn3.setEnabled(False)

self.ui.Btn2.setEnabled(False)

self.ui.checkBox.setEnabled(False)

self.ui.checkBox_2.setEnabled(False)

self.ui.Btn1.clicked.connect(self.verificar_router)

self.ui.Btn2.clicked.connect(self.conectar)

self.ui.BtnBorrar.clicked.connect(self.borrar_cisco)

self.ui.BtnBorrar.clicked.connect(self.borrar_mikrotik)

def verificar_router(self):

global user,passw,ip

user = str(self.ui.caja2.text())

passw = str(self.ui.caja3.text())

try:

if user == "cisco" and passw == "cisco":

self.ui.label_verify.setText("Cisco")

self.ui.caja1.setText('192.168.1.1')

ip = str(self.ui.caja1.text())

self.ui.checkBox.stateChanged.connect(self.dhcp_cisco)

self.ui.checkBox_2.stateChanged.connect(self.enrutamiento_cisco)

self.ui.Btn2.setEnabled(True)

call_very = Conectar()

Page 82: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

82

call_very.verificar_conexion()

elif user == "admin" and passw == "admin":

self.ui.caja1.setText('192.168.88.1')

ip = str(self.ui.caja1.text())

self.ui.label_verify.setText("Mikrotik")

self.ui.checkBox.stateChanged.connect(self.dhcp_Mikrotik)

self.ui.checkBox_2.stateChanged.connect(self.enrutamiento_Mikrotik)

self.ui.Btn2.setEnabled(True)

call_very = Conectar()

call_very.verificar_conexion()

else :

self.ui.label_verify.setText("Unknow")

except socket.error:

self.ui.label_verify.setText("Unknow")

msg = QtGui.QMessageBox()

msg.setIcon(QMessageBox.Critical)

msg.setText("Error en la conexion")

msg.setInformativeText("Revise las conexiones o la clave y el

usuario ingresado")

msg.setWindowTitle("Error Conexxion SSH")

msg.setStandardButtons(QMessageBox.Ok)

msg.exec_()

def conectar(self):

try:

a = Conectar()

a.verificar_conexion()

self.ui.labelok.setText('OK')

self.ui.BtnBorrar.setEnabled(True)

self.ui.checkBox.setEnabled(True)

self.ui.checkBox_2.setEnabled(True)

except socket.error:

self.ui.labelok.setText('X')

msg = QtGui.QMessageBox()

msg.setIcon(QMessageBox.Critical)

msg.setText("Error en la conexion")

msg.setInformativeText("Revise las conexiones o la clave y el

usuario ingresado")

msg.setWindowTitle("Error Conexion SSH")

msg.setStandardButtons(QMessageBox.Ok)

msg.exec_()

Page 83: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

83

def enrutamiento_cisco(self):

if self.ui.checkBox_2.isChecked():

aa = enviar_comandos()

aa.rutas_estaticas_cisco()

msg = QtGui.QMessageBox()

msg.setIcon(QMessageBox.Information)

msg.setInformativeText("Estos son los Parametros Configurados

en el Router Cisco\n")

msg.setText("R1>enable\nR1>password\nR1>config t\nR1#ip route

192.168.88.0 255.255.255.0 192.168.80.1")

msg.setWindowTitle("Informacion Enrutamento")

msg.setStandardButtons(QMessageBox.Ok)

msg.exec_()

else:

print('Cualquier Cosa')

def dhcp_cisco(self):

if self.ui.checkBox.isChecked():

aa = enviar_comandos()

aa.dhcp_cisco()

msg = QtGui.QMessageBox()

msg.setIcon(QMessageBox.Information)

msg.setInformativeText("Estos son los Parametros Configurados

en el Router Cisco\n")

msg.setText("R1>enable\nR1>password\nR1>config t\nR1#ip dhcp

excluded-address 192.168.1.1\nR1#ip dhcp pool POOL\nR1#network

192.168.1.0 255.255.255.0\nR1#default-router 192.168.1.1")

msg.setWindowTitle("Informacion DHCP")

msg.setStandardButtons(QMessageBox.Ok)

msg.exec_()

def enrutamiento_Mikrotik(self):

if self.ui.checkBox_2.isChecked():

aa = enviar_comandos()

aa.rutas_estaticas_mikrotik()

def dhcp_Mikrotik(self):

if self.ui.checkBox.isChecked():

aa = enviar_comandos()

aa.dhcp_mikrotik()

def borrar_cisco(self):

self.ui.caja1.setText("")

Page 84: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

84

self.ui.caja3.setText("")

self.ui.checkBox.setChecked(False)

self.ui.checkBox_2.setChecked(False)

user=str(self.ui.caja2.text())

if user == 'cisco':

self.ui.caja2.setText("")

aa = enviar_comandos()

aa.borrar_comandos_cisco()

self.ui.Btn3.setEnabled(True)

def borrar_mikrotik(self):

self.ui.caja1.setText("")

self.ui.caja3.setText("")

self.ui.checkBox.setChecked(False)

self.ui.checkBox_2.setChecked(False)

user=str(self.ui.caja2.text())

if user == 'admin':

self.ui.caja2.setText("")

aa = enviar_comandos()

aa.borrar_comandos_mikrotik()

self.ui.Btn3.setEnabled(True)

#CLASE 2

class enviar_comandos:

def rutas_estaticas_cisco(self):

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect(ip,username=user, password=passw)

cliente = client.invoke_shell()

time.sleep(.5)

cliente.send("en\n")

time.sleep(.5)

cliente.send("david\n")

time.sleep(.5)

cliente.send("config t\n")

time.sleep(.5)

output = cliente.recv(65535)

cliente.send("ip route 192.168.88.0 255.255.255.0

192.168.80.1\n")

time.sleep(.5)

client.close()

def dhcp_cisco(self):

Page 85: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

85

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect('192.168.1.1',username='cisco', password='cisco')

cliente = client.invoke_shell()

cliente.send("en\n")

time.sleep(.5)

cliente.send("david\n")

time.sleep(.5)

cliente.send("config t\n")

time.sleep(.5)

output = cliente.recv(65535)

cliente.send("ip dhcp excluded-address 192.168.1.1\n")

time.sleep(.5)

cliente.send("ip dhcp pool POOL\n")

time.sleep(.5)

cliente.send("network 192.168.1.0 255.255.255.0\n")

time.sleep(.5)

cliente.send("default-router 192.168.1.1\n")

time.sleep(.5)

client.close()

def rutas_estaticas_mikrotik(self):

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect(ip,username=user, password=passw)

stdin,stdout,stderr = client.exec_command('ip route add dst-

address=192.168.1.0/24 gateway=192.168.80.1')

time.sleep(1)

client.close()

def dhcp_mikrotik(self):

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect(ip,username=user, password=passw)

stdin,stdout,stderr = client.exec_command('ip dhcp-server add

interface=ether2-master-local address-pool=dhcp-pool lease-time=6h')

time.sleep(1)

client.close()

def borrar_comandos_cisco(self):

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect('192.168.1.1',username='cisco', password='cisco')

cliente = client.invoke_shell()

Page 86: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

86

cliente.send("en\n")

time.sleep(.5)

cliente.send("david\n")

time.sleep(.5)

cliente.send("config t\n")

time.sleep(.5)

output = cliente.recv(65535)

cliente.send("no ip dhcp excluded-address 192.168.1.1\n")

time.sleep(.5)

cliente.send("no ip dhcp pool POOL\n")

time.sleep(.5)

cliente.send("no ip route 192.168.88.0 255.255.255.0

192.168.80.1\n")

time.sleep(.5)

client.close()

def borrar_comandos_mikrotik(self):

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect('192.168.88.1',username='admin',

password='admin')

stdin,stdout,stderr = client.exec_command('ip route remove

0;ip dhcp-server remove 0')

client.close()

#CLASE 3

class Conectar:

def verificar_conexion(self):

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect(ip,username=user, password=passw)

client.close()

#CLASE 4

class Main:

def main(self):

app = QtGui.QApplication(sys.argv)

myform = Interface()

myform.show()

myform.setWindowTitle('Router')

sys.exit(app.exec_())

if __name__ == '__main__':

iface = Main()

iface.main()

Page 87: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

87

_______________________________________________________________________

Elementos de la interfaz en Python

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'proyectoall.ui'

#

# Created by: PyQt4 UI code generator 4.11.4

#

# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:

_fromUtf8 = QtCore.QString.fromUtf8

except AttributeError:

def _fromUtf8(s):

return s

try:

_encoding = QtGui.QApplication.UnicodeUTF8

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig,

_encoding)

except AttributeError:

def _translate(context, text, disambig):

return QtGui.QApplication.translate(context, text, disambig)

class Ui_MainWindow(object):

def setupUi(self, MainWindow):

MainWindow.setObjectName(_fromUtf8("MainWindow"))

MainWindow.resize(383, 642)

self.centralwidget = QtGui.QWidget(MainWindow)

self.centralwidget.setObjectName(_fromUtf8("centralwidget"))

self.label = QtGui.QLabel(self.centralwidget)

self.label.setGeometry(QtCore.QRect(90, 10, 201, 41))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setBold(True)

font.setItalic(True)

Page 88: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

88

font.setWeight(75)

self.label.setFont(font)

self.label.setObjectName(_fromUtf8("label"))

self.Btn1 = QtGui.QPushButton(self.centralwidget)

self.Btn1.setGeometry(QtCore.QRect(140, 60, 112, 34))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.Btn1.setFont(font)

self.Btn1.setObjectName(_fromUtf8("Btn1"))

self.label_2 = QtGui.QLabel(self.centralwidget)

self.label_2.setGeometry(QtCore.QRect(100, 120, 201, 21))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setBold(True)

font.setItalic(True)

font.setWeight(75)

self.label_2.setFont(font)

self.label_2.setObjectName(_fromUtf8("label_2"))

self.label_3 = QtGui.QLabel(self.centralwidget)

self.label_3.setGeometry(QtCore.QRect(100, 150, 191, 21))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.label_3.setFont(font)

self.label_3.setObjectName(_fromUtf8("label_3"))

self.caja2 = QtGui.QLineEdit(self.centralwidget)

self.caja2.setGeometry(QtCore.QRect(120, 180, 141, 27))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setBold(True)

font.setItalic(True)

font.setWeight(75)

self.caja2.setFont(font)

self.caja2.setObjectName(_fromUtf8("caja2"))

self.label_4 = QtGui.QLabel(self.centralwidget)

self.label_4.setGeometry(QtCore.QRect(100, 220, 181, 21))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.label_4.setFont(font)

self.label_4.setObjectName(_fromUtf8("label_4"))

Page 89: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

89

self.caja3 = QtGui.QLineEdit(self.centralwidget)

self.caja3.setGeometry(QtCore.QRect(120, 250, 141, 27))

palette = QtGui.QPalette()

brush = QtGui.QBrush(QtGui.QColor(225, 225, 225))

brush.setStyle(QtCore.Qt.SolidPattern)

palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button,

brush)

brush = QtGui.QBrush(QtGui.QColor(225, 225, 225))

brush.setStyle(QtCore.Qt.SolidPattern)

palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button,

brush)

brush = QtGui.QBrush(QtGui.QColor(225, 225, 225))

brush.setStyle(QtCore.Qt.SolidPattern)

palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button,

brush)

self.caja3.setPalette(palette)

font = QtGui.QFont()

font.setFamily(_fromUtf8("Harlow Solid Italic"))

font.setItalic(True)

self.caja3.setFont(font)

self.caja3.setEchoMode(QtGui.QLineEdit.Password)

self.caja3.setObjectName(_fromUtf8("caja3"))

self.Btn2 = QtGui.QPushButton(self.centralwidget)

self.Btn2.setGeometry(QtCore.QRect(140, 300, 112, 34))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.Btn2.setFont(font)

self.Btn2.setObjectName(_fromUtf8("Btn2"))

self.checkBox = QtGui.QCheckBox(self.centralwidget)

self.checkBox.setGeometry(QtCore.QRect(70, 350, 161, 25))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.checkBox.setFont(font)

self.checkBox.setObjectName(_fromUtf8("checkBox"))

self.checkBox_2 = QtGui.QCheckBox(self.centralwidget)

self.checkBox_2.setGeometry(QtCore.QRect(70, 390, 201, 25))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.checkBox_2.setFont(font)

Page 90: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

90

self.checkBox_2.setObjectName(_fromUtf8("checkBox_2"))

self.label_5 = QtGui.QLabel(self.centralwidget)

self.label_5.setGeometry(QtCore.QRect(120, 430, 141, 21))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setBold(True)

font.setItalic(True)

font.setWeight(75)

self.label_5.setFont(font)

self.label_5.setObjectName(_fromUtf8("label_5"))

self.caja1 = QtGui.QLineEdit(self.centralwidget)

self.caja1.setGeometry(QtCore.QRect(140, 460, 113, 27))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.caja1.setFont(font)

self.caja1.setAutoFillBackground(False)

self.caja1.setText(_fromUtf8(""))

self.caja1.setEchoMode(QtGui.QLineEdit.Normal)

self.caja1.setReadOnly(True)

self.caja1.setObjectName(_fromUtf8("caja1"))

self.Btn3 = QtGui.QPushButton(self.centralwidget)

self.Btn3.setGeometry(QtCore.QRect(140, 500, 112, 34))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setBold(False)

font.setItalic(True)

font.setWeight(50)

self.Btn3.setFont(font)

self.Btn3.setObjectName(_fromUtf8("Btn3"))

self.label_verify = QtGui.QLabel(self.centralwidget)

self.label_verify.setGeometry(QtCore.QRect(280, 60, 101, 31))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.label_verify.setFont(font)

self.label_verify.setText(_fromUtf8(""))

self.label_verify.setObjectName(_fromUtf8("label_verify"))

self.label_6 = QtGui.QLabel(self.centralwidget)

self.label_6.setGeometry(QtCore.QRect(250, 300, 70, 31))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

Page 91: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

91

font.setBold(True)

font.setItalic(True)

font.setWeight(75)

self.label_6.setFont(font)

self.label_6.setText(_fromUtf8(""))

self.label_6.setObjectName(_fromUtf8("label_6"))

self.labelok = QtGui.QLabel(self.centralwidget)

self.labelok.setGeometry(QtCore.QRect(260, 300, 70, 31))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.labelok.setFont(font)

self.labelok.setText(_fromUtf8(""))

self.labelok.setObjectName(_fromUtf8("labelok"))

self.BtnBorrar = QtGui.QPushButton(self.centralwidget)

self.BtnBorrar.setGeometry(QtCore.QRect(140, 540, 112, 34))

font = QtGui.QFont()

font.setFamily(_fromUtf8("Papyrus"))

font.setItalic(True)

self.BtnBorrar.setFont(font)

self.BtnBorrar.setObjectName(_fromUtf8("BtnBorrar"))

MainWindow.setCentralWidget(self.centralwidget)

self.menubar = QtGui.QMenuBar(MainWindow)

self.menubar.setGeometry(QtCore.QRect(0, 0, 383, 31))

self.menubar.setObjectName(_fromUtf8("menubar"))

MainWindow.setMenuBar(self.menubar)

self.statusbar = QtGui.QStatusBar(MainWindow)

self.statusbar.setObjectName(_fromUtf8("statusbar"))

MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)

QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):

MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow",

None))

self.label.setText(_translate("MainWindow", "Identificar tipo de

Router", None))

self.Btn1.setText(_translate("MainWindow", "Verificar", None))

self.label_2.setText(_translate("MainWindow", "Inicio de Sesion

SSH", None))

Page 92: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

92

self.label_3.setText(_translate("MainWindow", "Nombre de

Autenticacion", None))

self.label_4.setText(_translate("MainWindow", "Clave de

Autenticacion", None))

self.Btn2.setText(_translate("MainWindow", "Conectar", None))

self.checkBox.setText(_translate("MainWindow", "Activar DHCP",

None))

self.checkBox_2.setText(_translate("MainWindow", "Habilitar

Enrutamiento", None))

self.label_5.setText(_translate("MainWindow", "Su direccion IP",

None))

self.Btn3.setText(_translate("MainWindow", "Salir", None))

self.BtnBorrar.setText(_translate("MainWindow", "Borrar", None))

class Crear_Objetos(object):

def retranslateUi(self, MainWindow):

pass

def setupUi(self, MainWindow):

pass

ANEXO C, Código Fuente Consola Windows

CONFIGURAR DIRECCIONES IP PARA DHCP

@echo off

echo CONFIGURAR DIRECCIONES IP PARA DHCP

pause

netsh interface ip set address "Ethernet" dhcp

echo COMPLETO... MOSTRAR CONFIGURACION

pause

ipconfig

pause

exit

CONFIGURACION DE IP Y PUERTA ENLACE DE SU COMPUTADORA

@echo off

echo CONFIGURACION DE IP Y PUERTA ENLACE DE SU COMPUTADORA

pause

Page 93: DESARROLLO DE UN ALGORITMO PARA LA CONFIGURACIÓN DE …repository.udistrital.edu.co/bitstream/11349/4660/1/RamirezBuitr... · 4.2.1 Configuración de Host Dinámico ... LISTA DE

93

set /p ippc= INGRESE UNA DIRECCION IP (TIPO C) PARA EL PC:

echo %ippc%

pause

set /p puerta= INGRESE UNA PUERTA DE ENLACE (TIPO C MISMA RED) PARA EL PC:

echo %puerta%

pause

netsh interface ip set address "Ethernet" static %ippc% 255.255.255.0

%puerta%

echo COMPLETADO... MOSTRANDO CONFIGURACION

pause

ipconfig

pause

exit