You are on page 1of 91

Ingenier Informtica a a

Escuela Superior de Ciencias Experimentales y Tecnolog a Curso acadmico 2005-2006 e

Proyecto Fin de Carrera

NetWeb. Un nuevo enfoque para el interfaz de NetKit

Autor: Tutor:

Miguel Angel Hernando Fernndez a Pedro de las Heras Quirs o

Septiembre 2006

A mis padres y hermano

Agradecimientos
Este proyecto no hubiera sido posible sin el apoyo del Grupo de Sistemas y Comunicaciones (GSyC) de la Universidad Rey Juan Carlos y en especial a Pedro de las Heras, mi tutor, a quien le agradezco la conanza que ha depositado en m . Gracias a mis padres por darme la oportunidad de estudiar lo que realmente me gusta, sin su apoyo no hubiera podido llegar tan lejos. A Ral, mi hermano, que sin l mi vida hubiera sido muy tranquila. u e Gracias a mi familia porque han sido un gran punto de apoyo durante toda mi vida. A Noem por haberme dado lo que nadie me dio, gracias por apoyarme. A mis amigos, Rafa, Mila, Alberto, Dani, David y un gran etctera. Gracias por haberme e hecho pasar los mejores momentos de mi vida. A Jess por ensearme a ver la vida de otra forma. u n A mis compaeros de la Universidad, que sin ellos la Universidad hubiera sido muy n aburrida.

Resumen
En los ultimos aos, Internet, y en especial el Web, ha cambiado el modo de vida de n muchas personas y empresas, tanto es as que Internet es un medio inevitable de transmisin o y recepcin de informacin, quin no lee el peridico por Internet?, quin no tiene correo o o e o e electrnico?. Estas preguntas, formuladas hace unos aos pod ser respondidas unicamente o n an por algunas empresas e instituciones publicas, por suerte actualmente conectarse a Internet es una accin cotidiana para cualquier persona. o Coloquialmente, se conoce como Internet al acceso a la informacin existente en la red o mediante el Web. Cualquier contenido disponible en Internet y que se desee divulgar, inevitablemente debe estar accesible mediante el Web. Gracias a ello, Internet ha avanzado a pasos agigantados en la ultima dcada. e Este proyecto intenta realizar un sistema enfocado a la enseanza y apoyo de Ingenieros. n En titulaciones como Ingenier Informticas y Telecomunicaciones existen asignaturas en as a las cuales se explican los conceptos bsicos de las redes de computadores, en concreto como a funciona Internet. El problema que se encuentran muchas veces los docentes, es que el alumno no puede asimilar bien los conceptos tericos con las prcticas existentes. Tener un laboratorio o a con innidad de mquinas, todas ellas conectadas formando una red de ordenadores para hacer a pruebas, puede ser un trabajo costoso, tanto en trminos econmicos como de espacio. e o Actualmente, existe innidad de software que permite realizar este tipo de simulaciones de entornos de red. El alumno normalmente se encuentra con bastantes dicultades a la hora de poder utilizar software demasiado complejo para poder disear entornos de red bastantes n sencillos. Netkit es un conjunto de aplicaciones que permite hacer simulaciones de mquinas a GNU/Linux conectadas en red. El problema que frena el uso de Netkit a los alumnos, es la compleja instalacin y ejecucin de las simulaciones de red, todo esto unido a que Netkit o o no dispone de un interfaz de usuario. Actualmente, existen distintos sistemas que dotan a Netkit de un interfaz de usuario, aunque no eliminan al alumno la tarea de instalacin y o conguracin de Netkit, tarea ardua para un usuario inexperto. o Para ello, en este proyecto se va a tomar un modelo de desarrollo en el cual el usuario pueda interactuar con Netkit sin necesidad de congurarlo ni realizar ninguna instalacin de o software adicional. Cmo se puede conseguir esto ?, pues realizando un interfaz de usuario o basado en el Web. Todo el mundo posee un navegador Web, por ello se va a dotar a Netkit de un interfaz de usuario aplicado a este entorno, relegando la conguracin e instalacin del o o software de Netkit a otra mquina gestionada por un administrador experto. Todo esto no a ser posible sin la evolucin que se ha ido aplicando al Web en los ultimos aos, sobre todo a o n gracias al nuevo concepto de entender el Web como una nueva forma de realizar aplicaciones, el Web 2.0.

Indice general
1. Introduccin o 1.1. Netkit . . . . . . . . . . . . . . . . . . . 1.2. Internet . . . . . . . . . . . . . . . . . . 1.3. Introduccin al modelo del Web . . . . . o 1.3.1. HTML . . . . . . . . . . . . . . . 1.3.2. Protocolo HTTP . . . . . . . . . 1.3.3. Navegador Web . . . . . . . . . . 1.3.4. Servidor Web . . . . . . . . . . . 1.4. Evolucin del Web . . . . . . . . . . . . o 1.5. Tecnolog Utilizadas aplicadas al Web as 1.5.1. Ajax . . . . . . . . . . . . . . . . 1.5.2. Javascript . . . . . . . . . . . . . 1.5.3. XML . . . . . . . . . . . . . . . . 1.5.4. CSS . . . . . . . . . . . . . . . . 1.6. GNU/Linux . . . . . . . . . . . . . . . . 1.6.1. Kernel de Linux . . . . . . . . . 1.6.2. GNU . . . . . . . . . . . . . . . . 1.7. Licencia GPL . . . . . . . . . . . . . . . 1.8. Python . . . . . . . . . . . . . . . . . . 1.9. Contenido de la Memoria . . . . . . . . 9 9 9 10 10 10 13 13 14 15 15 15 15 16 16 17 17 17 17 18 19 19 21 21 22 23 24 25 26 27 27 27 28 28

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

2. Objetivos 2.1. NetKit . . . . . . . . . . . . . . . . . . . . . . . 2.2. Interfaz de Usuario para Netkit . . . . . . . . . 2.2.1. NetEdit . . . . . . . . . . . . . . . . . . 2.2.2. NetGUI . . . . . . . . . . . . . . . . . . 2.3. Interfaz Web para Netkit . . . . . . . . . . . . 2.4. Multiplataforma . . . . . . . . . . . . . . . . . 2.5. Ejecucin de Netkit en Remoto . . . . . . . . . o 2.6. Desarrollo usando Ajax . . . . . . . . . . . . . 2.7. Conguracin y Comunicacin mediante XML o o 2.8. Desarrollo siguiendo un control de Versiones . . 2.9. Licencia Software de Software Libre . . . . . . 2.10. Adquisicin de experiencia en programacin . . o o 2.11. Experiencia en la realizacin de un proyecto . . o 7

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

8 3. Metodolog empleada a 3.1. Introduccin . . . . . . . . . . . . o 3.2. Desarrollo en espiral . . . . . . . 3.2.1. Tareas . . . . . . . . . . . 3.2.2. Ventajas . . . . . . . . . . 3.2.3. Inconvenientes . . . . . . 3.2.4. Aplicacin de este modelo o 3.3. Desarrollo basado en prototipos . 3.3.1. Aplicacin de este modelo o

INDICE GENERAL 29 29 29 30 31 31 31 32 32 35 35 35 36 36 37 37 38 38 39 40 58 58 58 61 65 65 66 67 71 71 71 72 79 79 81 82 84 87 87 88 88

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . al desarrollo de . . . . . . . . . al desarrollo de

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . este proyecto . . . . . . . . este proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Dise o e Implementacin n o 4.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . o 4.2. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1. Interfaz de Usuario . . . . . . . . . . . . . . . . . 4.2.2. Servidor Web . . . . . . . . . . . . . . . . . . . . 4.2.3. Nodos Netkit . . . . . . . . . . . . . . . . . . . . 4.2.4. Gestin de Nodos Netkit . . . . . . . . . . . . . . o 4.3. Prototipo 1: Construccin del Interfaz de Usuario . . . . o 4.3.1. Especicacin . . . . . . . . . . . . . . . . . . . . o 4.3.2. Diseo . . . . . . . . . . . . . . . . . . . . . . . . n 4.3.3. Implementacin . . . . . . . . . . . . . . . . . . . o 4.4. Prototipo 2: Interaccin entre Usuario y Servidor Web . o 4.4.1. Especicacin . . . . . . . . . . . . . . . . . . . . o 4.4.2. Diseo . . . . . . . . . . . . . . . . . . . . . . . . n 4.4.3. Implementacin . . . . . . . . . . . . . . . . . . . o 4.5. Prototipo 3: Ejecucin Remota de los nodos virtual . . . o 4.5.1. Especicacin . . . . . . . . . . . . . . . . . . . . o 4.5.2. Diseo . . . . . . . . . . . . . . . . . . . . . . . . n 4.5.3. Implementacin . . . . . . . . . . . . . . . . . . . o 4.6. Prototipo Final: Acceso a los nodos por medio del Web 4.6.1. Especicacin . . . . . . . . . . . . . . . . . . . . o 4.6.2. Diseo . . . . . . . . . . . . . . . . . . . . . . . . n 4.6.3. Implementacin . . . . . . . . . . . . . . . . . . . o 5. Validacin y o 5.1. Prueba1: 5.2. Prueba2: 5.3. Prueba3: 5.4. Prueba4: Pruebas Conguracin de una Red Local o Encaminamiento . . . . . . . . . ARP . . . . . . . . . . . . . . . Encaminamiento Avanzado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6. Conclusiones 6.1. Conocimientos Adquiridos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Posibles usos de NetWeb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3. Trabajos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Cap tulo 1

Introduccin o
En este cap tulo se introducirn al lector todos los conceptos necesarios para la lectura y a comprensin del documento. o

1.1.

Netkit

Desarrollado por la Universidad de Roma, Netkit1 fue creado para disponer de un entorno virtual donde poder congurar y realizar pruebas experimentales de topolog de Red. as La creacin del entorno virtual esta realizada por medio de un gran conjunto de scripts de o Shell para GNU/Linux. Estos scripts permiten crear nodos virtuales de mquinas GNU/Linux a las cuales podemos interconectar, congurar y manipular como si fuera un ordenador f sico. La ventaja que esto conlleva es que nos permite hacer simulaciones de entornos de red con un coste bastante bajo. Netkit es software libre, bajo licencia GPL y esta basado en User Mode Linux (UML)2 .

1.2.

Internet

Internet es una gran red de ordenadores, dicha red est formada por la comunicacin de a o millones de ordenadores de todos los rincones del mundo. Estos ordenadores estn conectados a usando diversos protocolos, entre ellos TCP/IP, el cual es el ms destacado. a Internet naci del conicto entre los Estados Unidos y la URSS, conocido popularmente o como guerra fr La primera versin de la actual Internet, fue Arpanet. Arpanet fue creada a. o por el departamento de Defensa de los Estados Unidos para poder comunicar los distintos o rganos del gobierno de aquel pa en la dcada de los 60. Esta red fue evolucionando hasta que s e en 1983 se estableci como espina dorsal el protocolo TCP/IP que conocemos actualmente. o Cabe destacar que los Padres de Internet Tim Berners-Lee, Larry Roberts, Vinton Cerf y Robert Kahn fueron galardonados con el premio Pr ncipe de Asturias de Investigacin y o Humanidades en el ao 2002. n Tradicionalmente se cree que Internet unicamente esta compuesta por el Web, aunque lo que se conoce popularmente como Internet es un conjunto de protocolos, vase SMTP,IRC,SSH,FTP, e etctera. e
1 2

http://netkit.org http://user-mode-linux.sourceforge.net/

10

CAP ITULO 1. INTRODUCCION

Como dato se debe destacar que la primera conexin plena desde Espaa a la Internet tuvo o n lugar a mediados del ao 1990, como un servicio experimental de RedIRIS que, a nales de ese n ao, interconectaba tan slo cuatro centros: Fundesco, Departamento de Ingenier Telemtica n o a a (Universidad Politcnica de Madrid), Centro de Informtica Cient e a ca de Andaluc y CIEMAT. a

1.3.
1.3.1.

Introduccin al modelo del Web o


HTML

Acrnimo de HyperText Markup Language. Es el lenguaje de marcado usado para o estructurar la informacin que se desea mostrar. Dicho lenguaje es el formato estndar usado o a para la visualizacin de las pginas Web. o a

1.3.2.

Protocolo HTTP

El Protocolo de Transferencia de Hipertexto (Hypertext Transfer Protocol) es un sencillo protocolo cliente-servidor que permite el intercambio de informacin entre los clientes Web o (Navegadores) y los servidores HTTP. La especicacin completa del protocolo HTTP 1/0 o est recogida en el RFC 1945. Fue propuesto por Tim Berners-Lee, atendiendo a las necesidades a de un sistema global de distribucin de informacin como el World Wide Web (WWW). o o Desde el punto de vista de las comunicaciones, el protocolo HTTP se sita usando los u servicios de TCP. Por defecto el puerto TCP usado es el 80, aunque puede usar cualquier otro puerto para establecer una conexin http, por ejemplo el 8080 que tambin es usualmente o e usado para dicho protocolo. HTTP se basa en sencillas operaciones de solicitud/respuesta. Un cliente establece una conexin con un servidor y env un mensaje con los datos de la solicitud. El servidor responde o a con un mensaje similar, que contiene el estado de la operacin y su posible resultado,en el o caso que no hubiera error. Este protocolo permite usar una serie de mtodos para indicar la nalidad de la peticin. e o Se basa en otros conceptos y estndares como Uniform Resource Identier (URI), Uniform a Resource Location (URL) y Uniform Resource Name (URN), para indicar el recurso al que hace referencia la peticin. Los mensajes se pasan con un formato similar al usado por el o Internet Mail y el Multipurpose Internet Mail Extensions (MIME). Mtodos de HTTP e Para la interaccin entre el navegadores y el servidor Web por medio del protocolo HTTP o existen varios mtodos, los cuales permiten realizar distintas operaciones. Estos mtodos sern e e a usados dependiendo de la informacin que se quiera enviar/solicitar al servidor. o OPTIONS. Este mtodo representa una peticin de informacin sobre las opciones e o o que estn disponibles en el servidor Web. Si la URI es un *, entonces la peticin se a o aplica al servidor como un conjunto. GET. El mtodo GET requiere la devolucin de informacin al cliente identicada por e o o la URI. El mtodo GET es el mtodo habitual para la peticin de paginas Web usadas e e o por el navegador.

1.3. INTRODUCCION AL MODELO DEL WEB

11

HEAD. El mtodo HEAD es igual que el mtodo GET, salvo que el servidor no tiene e e que devolver el contenido, sino unicamente las cabeceras HTTP de la respuesta. Por ejemplo este mtodo se usa para validar los link o saber las modicaciones recientes de e una pagina HTML. POST. El mtodo POST se usa para hacer peticiones en las que el servidor destino e acepta el contenido de la peticin. Este mtodo se usa para enviar informacin al servidor o e o por medio de formularios HTML. PUT. El mtodo PUT permite guardar el contenido de la peticin en el servidor bajo e o la URI de la peticin. o DELETE. Este mtodo se usa para que el servidor borre el recurso indicado por la e URI de la peticin. No se garantiza al cliente que el resultado se satisfactorio. o TRACE. Este mtodo es usado para saber si existe el receptor del mensaje y usar la e informacin para hacer un diagnstico. o o Existe una extensin de mtodos de HTTP, denominado WebDAV. Aunque estos mtodos o e e van a ser irrelevantes en la realizacin de este proyecto. o Respuestas HTTP Cuando el servidor Web recibe una peticin de informacin de un navegador por medio o o de un mtodo y la URI relacionada al recurso que desea acceder, el servidor Web debe poder e indicar al navegador el resultado de la peticin. Para ello el servidor web crea un mensaje o con un cdigo numrico que indica el resultado de la peticin. En caso que la peticin sea o e o o correcta tambin se adjunta en el mensaje el resultado de dicha peticin. e o El cdigo de estado es un nmero de 3 d o u gitos que indica si la peticin ha sido atendida o correctamente o no. En caso de no haber sido atendida correctamente, se indica el motivo. Dichos cdigos se dividen en: o 1xx. Informativo. Estas series de respuestas indican una respuesta provisional. 100. Continuar. 101. Cambio de protocolo. [ ... ] 2xx. Exito. La peticin recibida por el navegador ha sido atendida correctamente. o 200. Exito 201. Creado. 202. Aceptado. [ ... ] 3xx. Redireccin. Para realizar la peticin se deben realizar ms acciones. o o a 300. Mltiples elecciones u 301. Movido Permanentemente.

12 302. Movido Temporalmente. [ ... ]

CAP ITULO 1. INTRODUCCION

4xx. Error del cliente. No se puede realizar la peticin al estar mal formada. o 400. Peticin errnea. o o 401. No autorizado. 402. Pago requerido. [ ... ] 5xx. Error del servidor. El servidor tiene un error al procesar la peticin. o 500. Error interno del servidor. 502. Puerta de enlace errnea. o 503. Servicio no disponible [ ... ] Tngase en cuenta que no se ha enumerado ni denido todos los cdigos de respuestas. e o Modo de Funcionamiento A continuacin mostraremos el funcionamiento del protocolo HTTP y como interacta el o u Cliente (Navegador) con el Servidor Web.

Interaccin Cliente-Servidor usando HTTP o 1. El cliente indica por medio del navegador Web la pgina que quiere solicitar, por ejemplo: a http://deltatec-systems.com/contacto.html 2. A continuacin el navegador Web abre una conexin TCP al puerto 80 del servidor o o deltatec-systems.com. 3. Una vez abierta la conexin, el navegador pedir la pgina por medio del protocolo o a a HTTP, mediante el mtodo GET. e GET /contacto.html HTTP/1.0 \r\n

1.3. INTRODUCCION AL MODELO DEL WEB

13

4. El servidor recibir la peticin de solicitud de la pgina, leer dicha pgina del lugar a o a a a donde la tenga almacenada, normalmente en su disco duro, y le responder al cliente. a 200 OK \r\n CONTENIDO DE LA PAGINA 5. Cuando el navegador reciba la respuesta de la pgina pedida, mostrar el contenido del a a HTML al usuario por medio de su interfaz.

1.3.3.

Navegador Web

Un navegador web, o web browser, es una aplicacin software que permite al usuario o visualizar documentos HTML. Tambin, el navegador Web, es el encargado de interactuar e con el servidor. La funcionalidad principal del navegador web es la de visualizar y renderizar el HTML recibido de la peticin que se ha realizado al servidor Web. Cabe recordar que para realizar o esta solicitar y recibir el documento HTML se realiza por medio del protocolo HTTP. Los primeros navegadores unicamente soportaban un versin muy simple de HTML. o Actualmente los navegadores web no solo se encargan de renderizar HTML, sino que tambin e son capaces de visualizar imgenes,v a deos y sonidos. En la actualidad existen diversos navegadores Web, a continuacin describiremos los ms o a importantes: Mozilla Firefox3 . Es un navegador web multiplataforma,quiere decir que esta disponible es diversos sistemas operativos. Es unos de los navegadores mas extendidos ya que su licencia es software libre y cumple todos los estndares impuestos por la World Wide a 4. Web Consortium (W3C) Internet Explorer. Es el navegador de Microsoft5 . Unicamente esta disponible para la plataforma Windows y MAC. Es software propietario, por tanto su cdigo fuente no o esta liberado ni disponible a ningn usuario. u Opera. Es un navegador creado por la empresa Opera Software 6 . Opera es un navegador gratuito pero no Libre. Durante el desarrollo del proyecto se ha usado el navegador Mozilla Firefox, el cual hemos cre mas acertado porque es el mas estricto usando los estndares para renderizar HTML. do a No obstante, el proyecto ha sido testeado en los dems navegadores, con resultados ptimos. a o

1.3.4.

Servidor Web

Un servidor web es un programa que implementa el protocolo HTTP. En esencia un servidor Web es un sistema de cheros, el cual sirve unos cheros (paginas HTML) por medio de la red.
3 4

http://www.mozilla.com/refox/ http://www.w3c.org 5 http://www.microsoft.com 6 http://opera.com

14

CAP ITULO 1. INTRODUCCION

Los primeros servidores Web que aparecieron fueron unicamente simples programas que serv paginas HTML a los navegadores, actualmente los servidores Webs son bastantes an mas complejos. Esta complejidad ha derivado en que no unicamente sirven paginas HTML, sino que tambin puede interactuar con el cliente (navegador) para poder crear aplicaciones e destinadas al Web. Actualmente en el mercado existen distintos servidores web Apache7 . Este servidor Web es Software Libre y multiplataforma, el cual dispone de una gran cantidad de plugins (extensiones). Todas estas caracter sticas han contribuido a ser el servidor Web ms usado en la red, con una presencia del 70 %. a Internet Information Services. Conocido tambin por sus siglas ISS, es el servidor e Web de Microsoft que unicamente esta disponible para la plataforma Windows. Para la realizacin de este proyecto hemos cre oportuno realizarlo sobre el servidor o do Web Apache, ya que era el Servidor que mas se amoldaba a nuestros intereses.

1.4.

Evolucin del Web o

En los inicios del web, nos encontramos con pginas HTML totalmente estticas, con las a a cuales el usuario no pod interactuar con el servidor Web. Con el paso del tiempo, el avance a tecnolgico y la popularidad de Internet, el web ha ido tomando un nuevo enfoque. Desde o los inicio del Web hasta nuestros d ha habido distintas deniciones del mismo, las cuales as, detallaremos a continuacin. o Web 1.0. Es llamado al Web tradicional, pginas HTML estticas donde el usuario no a a puede interactuar con el servidor. Web 1.5. El Web Tradicional evolucion a una nueva concepcin de la navegacin Web. o o o Ahora las pginas ya no eran estticas , sino que se creaban dinmicamente, por ejemplo a a a consultando una parte del HTML en una Base de Datos. A partir de este momento y en adelante, el servidor Web llevar la lgica de la aplicacin. Muchos lenguajes como a o o PHP, ASP, JSP ayudaron a que los servidores Web pudieran soportar esta evolucin o del Web. Web 2.0. Acuado por Dale Dougherty de OReilly Media. El Web 2.0 puede denirse n como la transaccin que se ha dado a las aplicaciones normales de escritorio a las o aplicaciones Web. Como en el Web 1.5, el Web 2.0 el usuario puede interactuar con el servidor por medio de un interfaz muy parecido al que tendr si estuviera ejecutando a una aplicacin normal de escritorio. La empresa Google 8 , esta lanzando muchos servicios o basados en el Web 2.0. Un ejemplo muy claro de aplicaciones basadas en el Web 2.0 puede ser Google Maps http://maps.google.com Google Spreadsheets http://spreadsheets.google.com/ En este proyecto intentaremos realizar una aplicacin Web basada en el modelo de Desarrollo o Web 2.0.
7 8

http://apache.org http://google.es

1.5. TECNOLOG IAS UTILIZADAS APLICADAS AL WEB

15

1.5.

Tecnolog Utilizadas aplicadas al Web as

A continuacin se describirn las tecnolog utilizadas para la realizacin de este proyecto. o a as o

1.5.1.

Ajax

Ajax, cuyo acrnimo corresponde a Asynchronous JavaScript And XML. En realidad o Ajax no es una tecnolog unica sino que es un conjunto de tcnicas para el desarrollo de a e aplicaciones Web. La idea fundamental de Ajax, que cambia con respecto al modelo tradicional de las aplicaciones Web, es que con Ajax se mantiene una comunicacin as o ncrona con el servidor, el cual lleva todo la lgica de la aplicacin. o o Ajax,esta compuesto por tres tcnicas que durante aos se han usado por separado pero e n actualmente estn siendo usadas en conjunto para el desarrollo de las nuevas aplicaciones a Web. Javascript. Es el lenguaje utilizado para mostrar la informacin deseada y darle al o navegador funcionalidad adicional. XML. Es el formato utilizado para la interaccin con el servidor. o HTTPRequest. Es un objeto que permite el intercambio as ncrono de informacin o con el servidor. Actualmente la mayor de los navegadores existentes en el mercado soportan la combinacin a o dichas tcnicas que comprenden Ajax. e

1.5.2.

Javascript

Javascript es un lenguaje interpretado orientado al web, su sintaxis es muy similar a Java o C. El lenguaje fue creado por Brendan Eich cuando trabajaba en Netscape. Javascript es un lenguaje que va embebido en el propio HTML. Actualmente la mayor de los navegadores a soportan javascript. Se trata de un lenguaje interpretado por el navegador, a diferencia de otros lenguajes de servidor como PHP,ASP o JSP. Est orientado a objetos, con una serie de limitaciones, cuyo a cometido principal es prevenir que se altere el sistema cheros del cliente, por lo que no puede leer, escribir, crear, borrar o listar cheros. Actualmente gracias a incorporacin del WEB o 2.0, javascript esta tomando mucho protagonismo para la creacin de Aplicaciones Web. o

1.5.3.

XML

Xtensible Markup Language, en castellano lenguaje de marcado extensible de etiquetas, desarrollado por la W3C. XML es un estndar creado para el intercambio de informacin a o estructurada entre diferentes plataformas y aplicaciones. Actualmente es usado tanto en editores, Bases de Datos, Aplicaciones en Red, etctera. Los objetivos por los que fue creado e XML fueron los siguiente: Que fuese fcil de leer y editar a Que fuera idntico a la hora de servir, recibir, y procesar la informacin del HTML para e o aprovechar toda la tecnolog implantada de este. a

16

CAP ITULO 1. INTRODUCCION Que fuese fcil de implantar, programar y aplicar a los distintos sistemas. a Que fuera extensible, para que lo puedan utilizar en todos los campos del conocimiento.

A simple vista, un documento XML tiene un aspecto muy similar al HTML. Al igual que el HTML, se basa en un documento de texto plano en los que se usan etiquetas para delimitar los elementos de los documentos. A continuacin se mostrar un ejemplo de un documento XML: o a <?xml version="1.0"?> <!DOCTYPE MENSAJE SYSTEM "mensaje.dtd"> <mensaje> <remitente> <nombre>Miguel A. Hernando</nombre> <mail>mhernand@gsyc.escet.urjc.es</mail> </remitente> <destinatario> <nombre>Josefina Fernandez</nombre> <mail>josefina.fernandez.sanchez@gmail.com</mail> </destinatario> <asunto>Hola Mama</asunto> <texto> <parrafo>Hola que tal? Hace <enfasis>mucho</enfasis> que no escribes. </parrafo> </texto> </mensaje> XML ser el formato que se utilizar en este proyecto para el intercambio de informacin a a o entre los distintos mdulos. o

1.5.4.

CSS

El lenguaje HTML est limitado a la hora de aplicarle forma a un documento. Esto es a as porque fue concebido para otros usos (cient cos sobretodo), distinto a los actuales, mucho ms amplios. a Las CSS complementan a otros lenguajes de descripcin de pginas utilizados para publicar o a documentos en la Web, como HTML o XML, con el propsito principal de permitir la o separacin entre el contenido de las pginas y su forma de presentacin. o a o El lenguaje de las Hojas de Estilo est denido en la Especicaciones CSS1 y CSS2 del a World Wide Web Consortium (W3C) y, por lo tanto, es un estndar aceptado por toda la a industria relacionada con la Web.

1.6.

GNU/Linux

GNU/Linux (GNU con Linux) es la denominacin defendida por Richard Stallman y o otros para el sistema operativo que utiliza el kernel Linux en conjunto con las aplicaciones de sistema creadas por el proyecto GNU. Comnmente este sistema operativo es denominado u como Linux, aunque esta denominacin no es correcta. o

1.7. LICENCIA GPL

17

Gracias a la licencia libre y la unin del kernel de Linux y las herramientas GNU, han o hecho del sistema operativo GNU/Linux un sistema muy popular, llegando incluso a ser el sistema utilizado en algunas comunidades autnomas, como La Junta de Extremadura. o GNU/Linux ser el Sistema Operativo en el cual se desarrollar, probar y escribir este a a a a proyecto.

1.6.1.

Kernel de Linux

El kernel de Linux fue creado por un estudiante llamado Linus Torvalds. Linus creo el kernel de linux para poder ejecutar un sistema operativo de Tipo Unix en una mquina con a arquitectura de Intel 80386. El kernel de Linux implementa el estndar POSIX de llamadas a al sistema y esta escrito en C, lenguaje en el cual estaba escrito tanto Minix como Unix. El proyecto naci en 1991, cuando Linus escribi un famoso mensaje en el grupo de noticias de o o Minix, exponiendo que estaba desarrollando un ncleo totalmente libre y bajo licencia GPL. u A ra de este mensaje, mucha gente se intereso en el desarrollo del kernel de Linux. z

1.6.2.

GNU

GNU, GNU not Unix, es un proyecto creado por Richard Stallman que tiene como objetivo la creacin de un sistema operativo totalmente libre. GNU adopto el kernel de Linux como o ncleo de su sistema operativo, aadindole sus herramientas como bash, gcc y otras que u n e hac del kernel de Linux un sistema operativo usable. an

1.7.

Licencia GPL

Es la licencia por excelencia del mundo del Software Libre, dicha licencia obliga a todo desarrollo escrito bajo ella la divulgacin del cdigo fuente del software desarrollado. o o Esta licencia fue creada por la Free Software Foundation 9 a mediados de los 80 como parte del ideario de esta organizacin de propugnar el software libre. o La licencia slo habla de la distribucin de software y nunca del uso. Por lo tanto es o o completamente posible utilizar versiones modicadas de un programa sin que se imponga la necesidad de compartir de ninguna manera esas modicaciones. Licencia original. http://www.gnu.org/copyleft/gpl.html Traduccin al castellano. http://gugs.sindominio.net/licencias/gples.html o

1.8.

Python

Python es un lenguaje de programacin Orientado a Objetos e interpretado. Actualmente o es un lenguaje muy extendido y habitualmente es comparado, entre otros lenguajes, con Perl y Java. La licencia del interprete de python es Software Libre. Por curiosidad se comenta que su nombre viene de los celebres humoristas llamados Monty Python. Python permite reubicar el cdigo en mdulos, los cuales se pueden reutilizar en cualquier o o programa realizado en python. Para ello hay mdulos de GUI, tratamientos de E/S,sockets, o etctera. e
9

http://www.fsf.org/

18

CAP ITULO 1. INTRODUCCION

Python es un lenguaje interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intrprete se puede utilizar de modo e interactivo, lo que facilita experimentar con caracter sticas del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. Tambin es una calculadora e muy util. Lo que diferencia a Python de otros lenguajes es que es mucho ms fcil de codicar, leer a a y tiene gran cantidad de mdulos existentes para poder ser utilizados. o Python ha sido elegido como lenguaje de programacin para realizar parte de la lgica de o o la aplicacin, dicha lgica estar alojada en el Servidor Web. o o a

1.9.

Contenido de la Memoria

Despus de realizar una introduccin a diversos conceptos que sern usados para el e o a desarrollo de este proyecto, veremos el cap tulo de Objetivos. Dicho cap tulo, intenta explicar detalladamente cuales son los objetivos principales marcados para la realizacin de este o proyecto. Una vez concluido el cap tulo de Objetivos, este documento contiene el cap tulo de Metodolog a empleada, el cual explicar razonadamente el modelo de desarrollo seguido para la realizacin a o de este proyecto. Avanzando un poco mas en el documento, nos encontramos con el cap tulo de Diseo n e Implementacin, el cual explicar en detalle el diseo, la arquitectura y el desarrollo del o a n proyecto. A continuacin se detallar el cap o a tulo de Pruebas y Validaciones en el cual se expondrn a pruebas reales realizadas al Proyecto que corroboran que su desarrollo se ha realizado con xito. e Despus de Pruebas y Validaciones, se encuentra el cap e tulo de Conclusiones y Trabajos futuros, el cual expondr las conclusiones sacadas con la realizacin de este proyecto y cuales a o pueden ser los trabajos futuros que pueden derivar del mismo. Y para nalizar se encuentra el cap tulo de Bibliograf el cual detalla la bibliograf a, a utilizada para el desarrollo de este proyecto.

Cap tulo 2

Objetivos
En este cap tulo hablaremos de los objetivos que se han planteado para la realizacin de o este proyecto.

2.1.

NetKit

Netkit, es un conjunto de herramientas que permiten la creacin de computadores virtuales o y poder interconectarlos entre si para poder formar topolog de red. Para poder utilizar as Netkit es necesario tenerlo instalado en una mquina GNU/Linux, esta instalacin incluye a o software necesario para poder realizar todas estas tareas. A continuacin mostraremos un ejemplo de un diseo de red: o n

Entorno de Red Como se puede observar existen dos redes de Area Local. La Red A contiene al computador1, computador2 y el Router, mientras que la Red B contiene al computador3, computer4 y al Router. 19

20

CAP ITULO 2. OBJETIVOS

Con el diseo de red expuesto anteriormente, vamos a comprobar como se congurar n a este entorno mediante Netkit. Lo primero que hay que hacer, es lanzar cada nodo indicndole a la red a la que pertenece. Para ello usaremos el comando vstart, incluido en Netkit, de la siguiente forma: vstart vstart vstart vstart vstart computer1 --eth0=A computer2 --eth0=A router --eth0=A --eth1=B computer3 --eth0=B computer4 --eth0=B

El primer argumento que recibe vstart es el nombre del nodo, y los dems son los interfaces a de Red a las cuales pertenece el nodo. Tngase en cuenta que cada Red Local va a poseer e un identicador, en nuestro caso A B. En el caso que hubiera ms redes, los identicadores o a ser C, D .... an

Ejemplo de Ejecucin de Netkit o Como se puede observar en la imagen anterior, cada mquina virtual lanzada posee un a terminal que permite interactuar con el usuario por medio de un Shell Bash. Una vez que estn ejecutados los nodos, se proceder a interactuar con ellos por medio de a a un Shell de Bash. Tngase en cuenta que cada nodo de Netkit ejecuta un sistema operativo e GNU/Linux y su interfaz es similar al que nos podr amos encontrar en cualquier mquina a GNU/Linux. Lo primero que har amos es asignarles una IPa cada una de las mquinas que estamos a ejecutando mediante el terminal que disponen para ello. El comando ifcong nos permitir asignar a direcciones IPa cada uno de los interfaces de las mquinas. a root@computer1:~# ifconfig eth0 root@computer2:~# ifconfig eth0 root@computer3:~# ifconfig eth0 root@computer4:~# ifconfig eth0 root@router:~# ifconfig eth0 up root@router:~# ifconfig eth1 up up 198.76.34.20 up 198.76.34.21 up 198.76.35.20 up 198.76.35.21 198.76.34.1 198.76.35.1

2.2. INTERFAZ DE USUARIO PARA NETKIT

21

Una vez que cada mquina tiene asignada su direccin IP, es necesario congurar las tablas a o de encaminamiento para que las mquinas de las Red A puedan comunicarse con las de la a Red B. Para ello deberemos congurar a computer1 y computer2 que tengan de Gateway a 198.76.34.1 y que las mquinas computer3 y computer4 tengan a 198.76.35.1. Para ello a usaremos el comando router. root@computer1:~# root@computer2:~# root@computer3:~# root@computer4:~# route route route route add add add add -net -net -net -net default default default default gw gw gw gw 198.76.34.1 198.76.34.1 198.76.35.1 198.76.35.1

El router no encamina hac otras redes, as que no es necesario congurar su tabla de a encaminamiento. Una vez que se hayan realizado todas las pruebas pertinentes con la red creado, ser a necesario apagar cada uno de los nodos. Para ello Netkit dispone de un herramienta llamada vhalt que es ejecutada en la mquina donde estn ejecutndose los nodos. a a a root@trinity:~# root@trinity:~# root@trinity:~# root@trinity:~# root@trinity:~# vhalt vhalt vhalt vhalt vhalt computer1 computer2 computer3 computer4 router

2.2.

Interfaz de Usuario para Netkit

Para poder ejecutar Netkit, es necesario poder instalarlo en una mquina GNU/Linux. a La conguracin del entorno de Red que se quiere simular es algo complicado para cualquier o usuario. Para facilitar el uso de Netkit es necesario un interfaz que le permita al usuario poder manejar y congurar los entornos de red que quiere disear. Muchas veces el terminal de n GNU/Linux puede repeler a un usuario nal el usar una herramienta tan potente como puede ser NetKit. Existen varios proyectos software que han proporcionado a Netkit un interfaz que permite al usuario centrarse en el uso unicamente de la aplicacin y no de la instalacin y la conguracin. o o o Para la realizacin de este proyecto se toma como base varios interfaces de usuario para Netkit, o los cuales se expondrn a continuacin. a o

2.2.1.

NetEdit

Desarrollado por la Universidad de Roma, Netedit 1 permite el diseo de redes por medio n de una aplicacin grca. Esta aplicacin, realizada en Java, permite al usuario realizar los o a o diseos de la redes en un entorno de desarrollo amigable. El usuario unicamente se encargar n a de aadir los computadores, hubs o router, y posteriormente realizar los enlaces oportunos. n Una vez que el diseo estuviera completo, se ejecutar la simulacin. n a o Cada nodo creado tendr su propio terminal para poder interactuar con l, igualmente a e como si se lanzar los nodos usando los comandos bsicos de Netkit. a a
1

http://www.netkit.org/download/netedit/netedit-1.0.tgz

22

CAP ITULO 2. OBJETIVOS

Netedit Las ventajas que un usuario encontrar usando Netedit, en vez de usar los comandos bsicos a a que posee Netkit, son las siguientes: Disponer de un interfaz de Usuario para poder realizar los diseos. n El usuario no se deber de preocupar de como usar los comandos de Netkit para realizar a topolog de red. as Permite guardar las conguraciones de red para posteriormente recuperarlas en posteriores sesiones. Aunque en esta aplicacin hemos encontrados diversos inconvenientes: o El usuario para poder usar la aplicacin deber instalar y congurar Netkit en la o a mquina en la que ejecuta Netedit. a La aplicacin al estar realizada en Java, necesita la instalacin de la mquina virtual o o a de Java. Unicamente se podr ejecutar el interfaz en mquinas GNU/Linux. a a

2.2.2.

NetGUI

Desarrollado por la Universidad Rey Juan Carlos, Netgui2 ofrece un interfaz de Usuario a Netkit, igual que la aplicacin comentada anteriormente. o

http://mobiquo.dat.escet.urjc.es/netgui/

2.3. INTERFAZ WEB PARA NETKIT

23

NetGUI NetGUI, ofrece un interfaz de Usuario bastante completo. Esta herramienta es bastante ms a sosticada y potente que Netedit. Aunque su nalidad sea la misma, optaremos por NetGUI como referente a la hora de realizar este proyecto. NetGUI, ha sido usada como mtodo docente en asignaturas de la Titulacin de Ingenier e o a de Telecomunicaciones de la Universidad Rey Juan Carlos, en concreto la asignatura de Arquitectura de Redes de Ordenadores. Esta herramienta ha permitido a los alumnos realizar diseos de redes y asentar los conocimientos tericos. n o El principal inconveniente que vemos de la utilizacin de esta aplicacin, una vez ms es o o a la instalacin de Netkit en la mquina donde se ejecuta NetGUI. Tambin otro inconveniente, o a e es que unicamente esta aplicacin puede ser usada en entorno GNU/Linux y siempre que la o mquina donde se ejecute disponga de una mquina virtual de Java. a a

2.3.

Interfaz Web para Netkit

Como hemos visto anteriormente, ya existen herramientas que dotan a Netkit de un interfaz de Usuario bastante completo, en el cual el usuario se puede encontrar muy cmodo o a la hora de disear un red de nodos virtuales. n El objetivo de este proyecto es dar un paso mas de lo que han dado las aplicaciones anteriores. Como bien hemos comentado anteriormente, las dos aplicaciones vistas usan como lenguaje de programacin Java. Esto es una ventaja, ya que Java al ser multiplataforma o podr amos ejecutar las aplicaciones en cualquier sistema operativo. Pero en realidad este escenario no es correcto, ya que estas aplicaciones deben estar ejecutndose en la misma a mquina donde se tenga instalado Netkit. a Esto puede ser un problema, ya que Netkit esta pensado para funcionar sobre GNU/Linux, y por desgracia el numero de usuarios que disponen de este sistema operativos no es muy grande.

24

CAP ITULO 2. OBJETIVOS

Un usuario que quisiera usar Netkit con cualquiera de las aplicaciones vistas anteriormente, deber poder instalarse un sistemas operativo GNU/Linux y posteriormente proceder a a la instalacin y conguracin de Netkit. El proceso al ser complicado, descarta a usuarios o o potenciales de Netkit. Para solventar este problema, se pens en un modelo de aplicacin el cual permitiera poder o o tener un Interfaz de Usuario para Netkit, dicho interfaz no conllevar la instalacin complicada a o de Netkit y que se pudiera ejecutar en cualquier sistema operativo sin coste adicional para el usuario. Para ello existe un modelo de desarrollo y comunicacin, El Web. Usando el nuevo o concepto de Web 2.0, se va a pretender disear un interfaz Web para Netkit, el cual tenga las n caracter sticas de las aplicaciones de escritorio, pero ejecutndose en un navegador web. a La evolucin del Web y de nuevas tecnolog aplicadas al Web, puede permitir crear o as aplicaciones con aspecto e interaccin muy similar a las encontradas en las aplicaciones de o escritorio. Como base usabilidad, se ha usado NetGUI, para dotar a este proyecto de una funcionalidad similar a la encontrada en la herramienta descrita anteriormente. Con la ventaja que el usuario necesitar solo un navegador para ejecutar la aplicacin. a o Los objetivos que se pretenden conseguir con este interfaz son: El usuario podr aadir componentes (computadores, hubs o routers) a la red que a n pretende disear. n El usuario podr crear enlaces para crear las distintas redes que quiere simular. a El usuario podr interactuar con el navegador, de forma parecida como si estuviera a interactuando con una aplicacin de escritorio convencional. o La mquina donde se ejecuta el navegador no debe de llevar ningn software adicional a u que diculte su conguracin. o La aplicacin Web, debe poder comunicarse con un componente software, que estar en o a otra mquina, que contenga Netkit. a Como se ha descrito anteriormente, la conguracin e instalacin de Netkit no ir en la o o a mquina donde el usuario nal ejecuta el Interfaz. a Con esto se pretende, que Netkit llegue a un nmero mayor de usuarios, y no unicamente u a usuarios que solo usan sistemas operativos GNU/Linux.

2.4.

Multiplataforma

Como bien se ha comentado en el apartado anterior, el principal objetivo por el cual se ha realizado este proyecto, es que Netkit llegue a los mximos usuarios posibles. Para ello se a ha utilizado el Web como plataforma de desarrollo. El protocolo HTTP, como HTML, al estar estandarizados, permiten que mltiples Sistemas, u arquitecturas y plataformas puedan usar esta arquitectura. Uno de los objetivo primordiales de este proyecto, es que el interfaz realizado pueda ser usado en mltiples sistemas operativos ( Windows, GNU/Linux, MacOS X .....) y por u mltiples navegador (Firefox, Opera, Internet Explorer, Safari). u

2.5. EJECUCION DE NETKIT EN REMOTO

25

Separar el interfaz de Usuario del ncleo y gestin de Netkit, ha permitido que se pueda dar u o el escenario que hemos comentado. El usuario unicamente se deber de preocupar de disponer a de un navegador web que cumpla los estndares de HTML. Las dems consideraciones quedarn a a a relegadas al software de gestin de Netkit, que se ejecutar en una mquina remota y estar administrado o a a a por personal especializado.

2.5.

Ejecucin de Netkit en Remoto o

Para poder ejecutar remotamente, se necesita que el software de gestin de los nodos o este ejecutndose en una mquina GNU/Linux. Se ha elegido el sistema GNU/Linux, ya que a a Netkit unicamente este disponible en este sistema. El software que lleve la gestin de los nodos de Netkit, creados por medio del interfaz de o usuario disponible desde el navegador, debe permitir llevar un control de dichos nodos. Para ello el interfaz de usuario debe poder comunicarse con el software que gestiona los nodos por medio del protocolo HTTP. Para ello se necesita un servidor Web en la mquina a que lleva dicha gestin, la cual ser la misma que tenga instalado Netkit. El servidor Web que o a se utilizar para esta tarea ser Apache, ya que es el servidor predominante en la mayor a a a de las mquinas que operan en internet. Otra razn por la cual se ha elegido Apache para a o realizar de intermediario con el software de Gestin de los nodos de Netkit, es que Apache o permite una gran facilidad de ejecutar software interactuando con peticiones HTTP.

Ejecucin Remota o El lenguaje elegido para realizar esta tarea, ser Python. Python es un lenguaje fcil de usar a a y bastante potente para realizar este tipo de tareas, a su vez puede ser llamado directamente desde el propio servidor Apache. Tngase en cuenta que unicamente Apache, ser el encargado de hacer de intermediario e a entre el interfaz de Usuario y el propio software que lleva la gestin de los nodos virtuales, o realizado en Python. El software que llevar el control de los nodos Netkit debe permitir las siguientes acciones. a Ejecucin de todos los nodos que el usuario haya diseado en el interfaz. o n Debe permitir que los nodos estn conectado con la misma topolog de red que haya e a diseado el usuario. n

26

CAP ITULO 2. OBJETIVOS El usuario podr interactuar por medio del interfaz con los nodos ejecutados. De la a misma forma como si estuviera ejecutando Netkit en su propia mquina. a Debe permitir detener la simulacin de la red que se ha diseado, para posteriormente o n aadirle ms elementos o directamente crear otra nueva topolog n a a.

El diseo de esta arquitectura puede permitir separar claramente del software de usuario, con n el software de administrador y control de Netkit. Para ello el usuario unicamente se debe de preocupar del diseo y utilizacin de los servicios que aporta esta arquitectura, dejando la n o administracin del servicio totalmente fuera del usuario nal. o

2.6.

Desarrollo usando Ajax

Como bien se ha comentado anteriormente, se desea realizar un interfaz de Usuario que se asemeje a las aplicaciones de escritorio. El usuario podr interactuar con el interfaz por a medio de ratn, aadir elementos, mover elementos, crear enlaces etctera, como se podr o n e a hacer con las aplicaciones descritas anteriormente. Este tipo de aplicacin pensada hace unos aos, hubiera desencadenado en una aplicacin o n o Web en el cual el usuario tuviera que navegar por un gran numero de formularios y de pginas a HTML. Actualmente la creacin de aplicacin Web es posible realizar con una unica pgina o o a HTML, sin tener que ir navegando por innidad de pginas HTML. a Empresas como google 3 , estn lanzando al mercado en los ultimos tiempos innidad de a servicios que ofrecen al usuario un interfaz muy similar a la encontrada en aplicaciones de escritorio. Algunos de los ejemplos pueden ser: YouOS. http://youos.com/ . Aplicacin Web que simula el comportamiento de un o escritorio de un sistema operativo en nuestro navegador. Google Maps. http://maps.google.es/. Aplicacin Web creada por Google que permite o visualizar por medio de satlites la geograf mundial. e a Google Spreadsheets. http://spreadsheets.google.com. Hoja de Calculo creada por Google, que permite tener en nuestro navegador una potente aplicacin con un interfaz o muy similar al que se encontrar un usuario si usara Microsoft Oce Excel. a Todas estas aplicaciones permiten al usuario poder disponer de ellas sin necesidad de instalar ningn software adicional, unicamente usando su propio navegador Web. Para ello se ha u utilizado un conjunto de herramientas y de tcnicas, denominado Ajax. Ajax permite realizar e este tipo de Sistemas, separando claramente lo que es la lgica de la aplicacin con el interfaz o o de usuario. Este mtodo ha sido el empleado para dotar a Netkit de un interfaz web que pueda e permitir al usuario realizar las mismas tareas que podr hacer con las aplicaciones existentes a para Netkit.
3

http://google.com

2.7. CONFIGURACION Y COMUNICACION MEDIANTE XML

27

2.7.

Conguracin y Comunicacin mediante XML o o

Todo el sistema planteado anteriormente, tanto el interfaz de usuario como el software de gestin de nodos, deben de llevar una control de los datos procesados y de la conguracin o o que se quiere dar a la plataforma, para ello se utilizar XML. a La mayor de los lenguajes de programacin permite tratar con informacin almacenada a o o en XML, gracias a que XML al ser un estndar aprobado por World Wide Web Consortium a (W3C) 4 .

2.8.

Desarrollo siguiendo un control de Versiones

Para la realizacin de este proyecto se va a seguir un control de versiones del software o y documentacin desarrollada. El control de versiones permite al programador llevar un o histrico de las versiones del software que est desarrollando. o a Imaginemos que hacemos un gran cambio del software en una jornada de desarrollo y al d siguiente nos encontramos que el trabajo realizado no cumple el modelo arquitectnico a o ni de diseo que hemos realizado anteriormente. Al programador le gustar poder volver a n a una versiones del software que tuviera estable y que cumpliera los requisitos. Pues bien este problema podr estar solventado si el desarrollador mantiene un control de versiones del a software que desarrolla. Por ello creemos que es un objetivo que el software desarrollado este gestionado por un sistema de control de versiones. El sistema elegido ha sido Subversion 5 , por las siguientes caracter sticas: Subversion ha sido desarrollado con una licencia de Software Libre. Subversin es fcil de instalar, mantener y usar. o a Acceso de los repositorios y las versiones del software desarrollado por medio de la red (HTTP,SSH). Verdadero historial de versiones, al contrario de el que usaba el antiguo CVS.

2.9.

Licencia Software de Software Libre

Un objetivo principal para el desarrollo de este proyecto es dotarle de una licencia de Software Libre, es nuestro caso la Licencia GPL descrita en el cap tulo de introduccin. o El software de este proyecto al ser liberado mediante una licencia GPL, contribuye a que algn usuario futuro pueda realizarle modicaciones o aadir funcionalidad adicional. Este u n software modicado puede ser utilizado como medio docente para asignaturas que traten sobre Redes de Ordenadores en titulaciones como Ingenier Informticas o Telecomunicaciones. as a Una vez terminado este proyecto, el cdigo quedar a disposicin de cualquier usuario o o a o persona que quiera usarlo, sin tener que pagar ninguna licencia y siempre suministrando todo el cdigo fuente del software desarrollado. o
4 5

http://www.w3.org/ http://subversion.tigris.com

28

CAP ITULO 2. OBJETIVOS

2.10.

Adquisicin de experiencia en programacin o o

Para la realizacin de este proyecto se necesitar una base en programacin. Un proyecto o a o de estas dimensiones requiere un volumen considerable de programacin. o Un objetivo para el desarrollo de este proyecto es conseguir aumentar la base de programacin o y aprender a desarrollar aplicaciones Web con la nueva tecnolog Ajax. a,

2.11.

Experiencia en la realizacin de un proyecto o

Es un objetivo aprender como realizar un proyecto. Un proyecto de estas dimensiones requiere mucho esfuerzo. No slo se desea implementar y resolver un problema que se ha o enunciado, sino tener que ajustarse a unas normas, saber qu es lo que se quiere y como se e debe hacer, siempre atendiendo a la linea que marca el tutor. Un proyecto de estas dimensiones supone tener que documentarse, analizar el problema planteado, buscar soluciones al problema, desarrollar la solucin y por ultimo, pero no menos importante, documentar todo el trabajo o realizado.

Cap tulo 3

Metodolog empleada a
3.1. Introduccin o

El desarrollo y mantenimiento del software es una tarea complicada, la cual conlleva mucho esfuerzo y dedicacin . Este proceso es mantenido por la ingenier del Software. o a Un producto software va evolucionando segn un proceso de desarrollo(requisitos, anlisis, u a diseo, implementacin y pruebas). Este proceso de desarrollo, ayuda a la realizacin del n o o proyecto dividindolo en subfases, cada una con un objetivo claro: e Requisitos. Especica los requerimientos que va a tener nuestro producto software una vez haya sido terminado satisfactoriamente. Anlisis. Analizar los distintos requisitos expuestos en la fase anterior. Se analizar la a a viabilidad, alcance, carga de trabajo, estimacin de tiempos de todos los requisitos. o Dise o. Consiste en determinar el funcionamiento general de nuestro producto software. n Implementacin. Implementacin y codicacin en un lenguaje de programacin el o o o o diseo elegido para la realizacin del Software. n o Pruebas. Una vez terminado, se comprueba que el software cumple los requerimientos por el cual ha sido creado. Mantenimiento. Mantener y mejorar el software para enfrentar errores descubiertos y nuevos requisitos Dentro del mbito de la ingenier del software existen multitud de paradigmas de desarrollo a a del software, para este proyecto se emplear un desarrollo en espiral y un desarrollo basado a en prototipos.

3.2.

Desarrollo en espiral

Desarrollado por B. Boehm, es un modelo de ciclo de vida, utilizado generalmente en la Ingenier del software. Las actividades de este modelo son una espiral, cada bucle es una a actividad. Las actividades no estn jadas a priori, sino que las siguientes se eligen en funcin a o del anlisis de riesgo, comenzando por el bucle interior. a Sus caracter sticas son las siguientes: 29

30

CAP ITULO 3. METODOLOG EMPLEADA IA Usa un Modelo de Cascada para cada etapa. Est orientado a evitar riesgos de trabajo. a No dene en detalle el sistema completo a la primera. Los desarrollares deber solamente denir las ms altas prioridades. an a

3.2.1.

Tareas

Para cada actividad o ciclo, habr cuatro tareas como se dene en la siguiente gura 4.1: a

Modelo en Espiral Fijar objetivos Fijar tambin los productos denidos a obtener: requerimientos, especicacin, manual e o de usuario. Fijar las restricciones. Identicacin de riesgos del proyecto y estrategias alternativas para evitarlos. o Hay una tarea que slo se hace una unica vez: planicacin inicial o previa. o o Se estudian todos los riesgos potenciales y se seleccionan una o varias alternativas propuestas para reducir o eliminar los riesgos.

3.2. DESARROLLO EN ESPIRAL Dise o e Implementacin n o Diseo de la arquitectura propuesta para la realizacin de los objetivos n o Desarrollo de los objetivos planteados como hitos para las actividades. Validacin y Pruebas o

31

Realizacin de las pruebas necesarias para comprobar que el diseo y la implementacin o n o cumplen los objetivos y requisitos expuestos anteriormente. En el caso que las pruebas no sean satisfactorias no se podr proseguir en este modelo y se a deber volver a jar los objetos, para posteriormente volver a disearlos e implementarlos. a n Planicar prximas fases o Una vez realizadas todas las pruebas satisfactoriamente, se deber planicar las fases a posteriores del modelo del software.

3.2.2.

Ventajas

El anlisis del riesgo se hace de forma expl a cita y clara. Une los mejores elementos de los restantes modelos.

3.2.3.

Inconvenientes

Genera mucho trabajo adicional. Exige una cierta habilidad en los analistas (es bastante dif cil).

3.2.4.

Aplicacin de este modelo al desarrollo de este proyecto o

El anlisis de requisitos para este proyecto ha sido en esencia la comunicacin entre mi a o tutor del proyecto y yo. Mi tutor ha sido el encargado de facilitarme los requisitos que deber an existir una vez nalizado el proyecto. Sobre el anlisis de riesgos existente en este proyecto, ha sido tambin el tutor del proyecto a e quien ha ido indicando los principales riesgos cr ticos que se pod dar en la realizacin del an o Software. La fase de diseo e implementacin se han propuestos distintas alternativas sobre la n o arquitectura del software y su implementacin. Sobre esta fase se hablar en el cap o a tulo siguiente. Una vez que se ha llevado a cabo la implementacin se realizarn una serie de pruebas al o a software para corroborar que se cumplen los requisitos. Por ultimo, y como marca el modelo en espiral, se han llevado a cabo un plan para la elaboracin de las siguientes fases. Respecto a este proyecto, la elaboracin de las fases o o posteriores se ha llevado a cabo basndose en las pruebas realizadas en las fases anteriores. a Si las pruebas han sido correctas, en las posteriores fases se realizarn un incremento en la a funcionalidad, en el caso que sean errneas se incrementar la robustez del software, tal como o a dicta el desarrollo en espiral.

32

CAP ITULO 3. METODOLOG EMPLEADA IA

3.3.

Desarrollo basado en prototipos

Un prototipo es una versin del producto software la cual satisface algunos de los requisitos o expuestos para el producto. Cada prototipo va a tener su propia autonom y va a ser a desarrollado siguiendo el modelo en Espiral. Cada prototipo del producto Software va a ser una evolucin, en trminos de funcionalidad y requisitos, del prototipo desarrollado anteriormente. o e El resultado nal del producto software corresponder al ultimo prototipo desarrollado de la a evolucin de los prototipos anteriores. o Para la realizacin de un prototipo se va a determinar en las siguientes fases de desarrollo: o Requisitos. Identicacin de los requisitos propuestos para dicho prototipo. o Anlisis. Anlisis de los requisitos propuestos en la fase anterior. a a Dise o e Implementacin. Diseo del modelo arquitectnico del prototipo e implementacin n o n o o del prototipo basndose en el diseo realizado. a n Pruebas. Fase de Pruebas para comprobar que el prototipo diseado e implementado n satisface los requisitos por el cual fue creado.

3.3.1.

Aplicacin de este modelo al desarrollo de este proyecto o

Para la realizacin de este proyecto se han construido 3 prototipos previos a la versin o o nal del producto Software.

Prototipos de NetWeb A continuacin se describirn los 4 prototipos. o a Prototipo 1. Este prototipo se centrar en la implementacin del interfaz de usuario. a o Prototipo 2. Este prototipo ser el encargado de la comunicacin entre el interfaz de a o usuario y la mquina donde se aloja el servidor. a Prototipo 3. Ampliando el prototipo anterior, nos encontramos que este prototipo implementar la funcin de ejecutar la topolog de red diseada por el usuario. a o a n

3.3. DESARROLLO BASADO EN PROTOTIPOS

33

Prototipo Final. Este prototipo corresponder al software nal del proyecto. En el se a centrar la implementacin de la ejecucin de los comandos GNU/Linux en las mquinas a o o a simuladas mediante Netkit. Tngase en cuenta que esta interaccin se har por medio e o a del interfaz de usuario, el navegador.

34

CAP ITULO 3. METODOLOG EMPLEADA IA

Cap tulo 4

Diseo e Implementacin n o
4.1. Introduccin o

El contenido de este cap tulo es fundamental para comprender el software desarrollado en este proyecto, siendo la parte ms importante, informaticamente hablando. a Primero se detallar la arquitectura que se seguir para la implementacin del software. a a o Posteriormente se detallarn las especicaciones, dise o e implementacin de cada prototipo, a n o en nuestro caso 4. Tngase en cuenta que cada prototipo debe cumplir los requisitos expuestos, e y que cada prototipo ser una evolucin del anterior. a o Una vez explicados los prototipos intermedios, el cap tulo terminar exponiendo el prototipo a nal que cumplir los requisitos iniciales expuestos para la realizacin de este proyecto. a o

4.2.

Arquitectura

Para el desarrollo del proyecto usaremos una arquitectura de cliente-servidor. A continuacin o detallaremos los distintos mdulos y partes que comprenden la arquitectura del sistema. A o grandes rasgos, el sistema est compuesto por tres grandes mdulos software, el interfaz de a o usuario, el servidor y el software para la gestin de los nodos virtuales de Netkit. o

35

36

CAP ITULO 4. DISENO E IMPLEMENTACION

Arquitectura General

4.2.1.

Interfaz de Usuario

El interfaz ser la parte de la arquitectura encargada de interactuar con el usuario. Por a medio de ella el usuario podr manipular y utilizar las distintas mquinas virtuales ejecutadas a a en el servidor. Tngase en cuenta que el interfaz de Usuario en esta arquitectura corresponder a un e a navegador Web, ya que uno de los requisitos primordiales de este proyecto es dotar a Netkit de un interfaz que se pueda ejecutar en cualquier navegador Web. El usuario deber poder usar el interfaz Web de Netkit, como si realmente estuviera a ejecutando una aplicacin de escritorio tradicional. Pero una de las ventajas que tiene poder o tener un interfaz Web es que cualquier usuario puede acceder a l sin la necesidad de instalar e un software externo. El HTML es un lenguaje estndar que cualquier navegador ejecutando en a cualquier sistema operativo puede utilizar. Para la realizacin de este proyecto se seguir estrictamente o a el estndar de HTML, para que cualquier navegador que cumpla dicho estndar pueda usar a a el interfaz sin ningn problema adicional. u El navegador usado para la realizacin de este proyecto ha sido Firefox. o

4.2.2.

Servidor Web

El servidor Web har de intermediario entre el cliente y el software que gestionar el a a control de los nodos Netkit que quiera ejecutar el usuario. El servidor ser el encargado de recibir las peticiones HTTP del cliente e interactuar con a el software que gestiona los nodos Netkit que el usuario ha creado por medio del interfaz web. Para ello, se ha tomado Apache como servidor Web. El Servidor Web podr recibir a distintos tipo de peticiones por parte del Interfaz Web, este tipo de peticiones siempre sern a recibidas por medio del protocolo HTTP. Ejecucin de los nodos. El Servidor Web recibir la informacin de ejecucin de los o a o o nodos que ha diseado en el interfaz web. n Interaccin con los nodos. El usuario podr ejecutar comandos GNU/Linux en o a cualquiera de los nodos que ha diseado. n Parada de los nodos. El usuario podr detener los nodos que anteriormente ha a ejecutado.

4.2. ARQUITECTURA

37

4.2.3.

Nodos Netkit

Netkit al disponer de un entorno completo de simulacin de redes de computadores o GNU/Linux, dispone de mecanismos para poder comunicarse con los distintos nodos. El modo de interaccin se hace por medio de un terminal con un interprete de comando (bash). o Cada nodo virtual tiene el suyo propio. Este mecanismo de comunicacin no es util para la interaccin entre un nodo y un o o programa que haga de intermediario entre el usuario y el nodo. Para ello Netkit dispone de mas mecanismos para poder interactuar con los distintos nodos. Uno de ellos es que cada nodo atienda peticiones telnet en un puerto TCP, el nodo puede recibir por dicha conexin o telnet comando de shell como si los recibiera directamente desde el terminal de bash que lanza por defecto. Para la ejecucin de un nodo virtual, es necesario la herramienta vstart, suministrada o mediante Netkit y se ejecuta de la siguiente forma:

vstart computer1 --port=7658

Vstart ejecutar una mquina virtual de nombre computer1 y que recibir peticiones de a a a comando de bash por medio de una conexin telnet que escucha en el puerto TCP 7658. o Uno de los principales inconvenientes que tiene que un nodo sea lanzado en un puerto TCP, es unicamente se puede hacer a l una unica conexin telnet para interactuar. En el e o momento que dicha conexin sea cerrada, ya no habr forma de comunicarse con el nodo. En o a este caso habr que usar el comando vcrash de Netkit. a

vcrach computer1

4.2.4.

Gestin de Nodos Netkit o

El servidor ser el encargado de alojar la ejecucin de los nodos virtuales y de hacer de a o intermediario entre el usuario y dichos nodos. Como cada nodo unicamente puede recibir una unica conexin TCP, el servidor debe poder o almacenar las conexiones abiertas con cada uno de los nodos ejecutados. Por cada conexin o que se ha realizado con cada uno de los nodos, el servidor puede mandar comandos y recibir la respuesta de la ejecucin de dichos comando en el nodo. o Tngase en cuenta que por cada nodo, se almacena una conexin distinta y que dos nodos e o no pueden estar escuchando en el mismo puerto TCP. El lenguaje elegido para la realizacin de este software de Gestin de los nodos virtuales ha o o sido Python. Python es un lenguaje muy sencillo de utilizar y se puede ejecutar directamente desde el Servidor Web Apache.

38

CAP ITULO 4. DISENO E IMPLEMENTACION

Comunicacin Servidor Nodos Netkit o

4.3.
4.3.1.

Prototipo 1: Construccin del Interfaz de Usuario o


Especicacin o

El objetivo de este prototipo es dotar a Netkit un interfaz Web de usuario. Dicho interfaz deber de cumplir las siguientes condiciones: a Multiplataforma. El principal objetivo por el cual se ha decidido optar por un interfaz Web, es la multiplataforma, ya que se desea que este interfaz funcione en la mayor de a sistemas operativos. Un requisito principal para la realizacin de este prototipo es que o el usuario no deba instalar ningn software para poder interactuar con el entorno de u creacin de redes de nodos virtuales. Para ello, se utilizarn los estndares apropiados o a a para que cualquier navegador pueda interpretar tanto el HTML como las hojas de estilo CSS. Creacin de un Nodo Virtual. Por medio del interfaz Web, el usuario podr aadir o a n nodos al diseo de red que desea realizar. n Tipos de Nodos. El interfaz deber permitir la creacin de al menos tres tipos de a o elementos en la red. Computador. Dicho nodo corresponder a un computador convencional. Este a tipo de computador unicamente deber poseer un interfaz de red. a Hub. Este nodo permitir la conexin entre distintos computadores y routers para a o poder formar una red local. Router. Es el elemento necesario para poder conectar distintas redes locales. Tngase en cuenta que un router puede disponer de mas de un interfaz de red. e Enlace entre Nodos. El interfaz deber permitir la conexin entre distintos nodo del a o entorno de red.

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO

39

Arranque de los nodos. El usuario podr arrancar los distintos nodos virtuales para a posteriormente interactuar con ellos. Los nodos se arrancarn con la conguracin de a o red que haya diseado el usuario por medio del interfaz. Una vez que estn arrancados n e los nodos no se podr modicar el entorno de red diseado por el usuario. a n Detencin de los nodos. El interfaz proporcionar un mecanismo por el cual se o a detendrn la ejecucin de los nodos que anteriormente han sido ejecutados. Una vez a o que se haya detenido la ejecucin de los nodos, se podr aadir a la red diseada mas o a n n elementos. Interaccin con el Usuario. La interaccin con el usuario ser realiza por medio del o o a ratn. El usuario debe encontrar un interfaz amigable y sencilla, igualmente que si se o encontrar con una aplicacin de escritorio normal. El usuario podr seleccionar las a o a opciones a realizar por medio de botones. Navegacin entre pginas. No se permitir la navegacin entre distintas pginas, o a a o a unicamente existir una unica pgina HTML que corresponder a todo el interfaz. a a a

4.3.2.

Diseo n

Interfaz de Usuario Para poder cumplir la especicacin denida anteriormente, se pretende disear un interfaz o n Web que sea intuitivo para el usuario. El interfaz de usuario contendr tres seccin muy bien a o denidas. Dicho interfaz tiene que ser sencillo y que cumpla los entandares de HTML para que pueda ser usado en la gran mayor de navegadores Web que existen en el mercado. a

Diseo Prototipo 1 n El Interfaz de Usuario se compondr de las siguientes partes. a Area de Dise o. En la cual el usuario podr disear su topolog de red. n a n a Barra de Estado. Esta barra mostrar e indicar al usuario el estado actual que tiene a a la aplicacin. La barra deber mostrar al usuario los siguientes mensajes. o a

40

CAP ITULO 4. DISENO E IMPLEMENTACION Creacin de enlaces. Cuando la barra de estado muestre este mensaje se podr conectar o a los distintos nodos de los que componen la red. Estos enlaces correspondern a los a enlaces f sicos realizados por medio de un cable de red. Ejecucin de la aplicacin. Cuando este mensaje est mostrado en la barra de o o e estado, signicar que los nodos estn ejecutndose y que ningn nodo se puede a a a u aadir a la red. n Men de Acciones. Es la parte del interfaz Web donde el usuario puede realizar las u distintas acciones que se detallan a continuacin. Esta interaccin se va a realizar por o o medio de botones. Aadir Computador. El usuario podr aadir un computador al rea de diseo. n a n a n Aadir Hub. El usuario podr aadir un hub al rea del diseo. n a n a n Aadir Router. El usuario podr aadir un router al rea de diseo. n a n a n Crear enlaces. El usuario podr crear los distintos enlaces entre los elementos que a compondrn la red que pretende disear. a n Arranque Nodos. Por medio de un botn, el usuario podr arrancar todo el entorno o a de red que ha diseado y dibujado en el rea de Diseo n a n Parada de los Nodos. El usuario podr parar la ejecucin de los nodos que anteriormente a o habr arrancado. a Mensajes Emergentes. La aplicacin podr interactuar con el usuario por medio de o a mensajes emergentes, por ejemplo para asignarle un nombre a un componente que se aada al rea de diseo. Los mensajes emergentes tambin se usan para noticar al n a n e usuario que ha realizado una accin incorrecta. o

4.3.3.

Implementacin o

Para la implementacin de este prototipo deber o amos escoger alguna librer que permita a poder tener en el navegador un interfaz el cual se asemejara a la interfaz que pudiera tener cualquier usuario en una aplicacin de escritorio, con la unica ventaja que para poder usarla o no se necesitar instalar ningn software adicional. a u Este problema se solvento usando la librer de Drag and Drop de Walterzon 1 . Esta a librer permite tener objetos en el HTML con el que el usuario puede interactuar, es decir a puede desplazar y deslizar objetos HTML dentro de la propia pgina HTML. a El lenguaje utilizado para realizar el interfaz Web ha sido Javascript, ya que javascript es un lenguaje que ejecuta en los navegadores Web actuales. Javascript permite a los navegadores aadir funcionalidad que no se podr expresar unicamente con HTML. n a Distribucin del Interfaz o El primer paso del desarrollo de este prototipo nos lleva a distribuir el interfaz para que el usuario se sienta cmodo. Este interfaz debe ser intuitivo y tener las partes bien diferenciadas, o como se explic anteriormente en la especicacin de este prototipo. o o
1

http://www.walterzorn.com/dragdrop/dragdrop e.htm

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO

41

En este momento nos encontramos con dos grandes reas en la que separaremos el interfaz, a el rea de acciones y el rea de diseo. Para ello hemos diseado dos HTML totalmente a a n n distintos que uniremos en una unica pagina HTML por medio de un frame. El rea de Acciones, corresponder a las distintas acciones que puede hacer el usuario en el a a sistema. Estas acciones sern activadas mediantes botones que ejecutarn cdigo HTML, que a a o explicaremos ms adelante. Para ello se han elegido botones que permitan al usuario saber a que acciones van a realizar con slo observarlos. El diseo de este rea esta denido en la o n a pagina left.htm. Para el rea de diseo se ha elegido una pgina totalmente en blanco en la cual se podrn a n a a aadir los distintos elementos que compondr la topolog de red que el usuario pretende n a a disear. Este rea estar denida en el chero right.htm. n a a
<script type="text/javascript" src="scripts/netweb.js"></script> <frameset name="index" id="index" cols="80%,20%"> <frame name="left" src="left.htm"> <frame name="right" src="right.htm"> </frameset>

Interfaz NetWeb Como se puede observarse en la imagen, cada seccin del interfaz del usuario esta dividida o perfectamente por medio de un frame. A la derecha se encontrar los botones necesarios a para interactuar con el sistema y la izquierda toda el rea donde el usuario disear su Red a n a Virtual. El men de Acciones comprender distintos botones. u a

42

CAP ITULO 4. DISENO E IMPLEMENTACION

Cuando este botn es pulsado, se aade un computador al rea de o n a Diseo. n Cuando este botn es pulsado, se aade un hub al rea de diseo. El o n a n hub ser usado para interconectar computadores en la misma red local. a

Cuando este botn es pulsado, se aade un router al rea de diseo.El o n a n router ser empleado para interconectar distintas redes locales. a

Cuando este botn es pulsado, el usuario podr realizar y crear enlaces o a entre distintos elementos del diseo. n

Cuando este botn es pulsado por el usuario, se ejecutar la aplicacin o a o con la red creada en el rea de diseo. a n

Este botn representa la opcin de parada de la aplicacin. o o o Cuadro 4.1: Botones Tngase en cuenta que para la ejecucin de las distintas acciones detalladas, el usuario e o deber presionar en los distintos botones para realizar las acciones pertinentes. a Se ha elegido una divisin vertical de las dos partes del interfaz, porque creemos que el o a rea de diseo se aprovechar ms el espacio para dibujar los elementos que dispondr las n a a a red diseadas. n Toda la funcionalidad aadida en la parte del cliente y la interaccin con el servidor n o ser desarrollada e implementada en javascript e incluida en el chero netweb.js. a Objetos Dinmicos a Una vez diseado la distribucin del interfaz, el siguiente paso es poder representar la n o adicin de elementos al rea de diseo por medio de las acciones que realiza el usuario mediante o a n el men de acciones. u Para ello nos encontramos con un problema grave, ya que el estndar de HTML no a contempla el uso de HTML dinmico. Para ello hemos usado una librer de dibujo de objetos a a dinmicos HTML llamada Walterzon. a

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO

43

Esta librer escrita en javascript y usando hojas de estilo CSS, permite poder realizar a sitios Web interactivos. Lo primero de todo, para poder usar esta librer en el HTML que estamos diseando, a n es incluirla en toda pgina HTML de nuestro interfaz. Para ello el HTML que representa el a interfaz deber incluirla con esta sentencia. a <script type="text/javascript" src="scripts/wz_dragdrop.js"></script> Area de Dise o n El rea de diseo es la parte encarga del interfaz, donde el usuario aade los distintos a n n elementos para crear la topolog de red. En el rea de diseo se van a encontrar los distintos a a n objetos dinmicos que se van a poder mover y colocar el usuario para disear su topolog a n a. El rea de diseo corresponde al chero left.htm. a n Los objetos dinmicos que existirn en el rea de diseo sern las imgenes de los computadores, a a a n a a hubs y router. Estas imgenes sern similares, en aspecto, a las disponibles en el cuadro 5.1. a a Lo primero que hacemos es aadir en el html las imgenes correspondientes a un computador, n a hub y router. <img name="computer" src="images/computer.png" title="computer"> <img name="hub" src="images/hub.png" title="hub"> <img name="router" src="images/router.png" title="router"> Una vez aadidas al HTML del rea de diseo procederemos a denirlas como un HTML n a n dinmico, para ello vamos a usar la funcionalidad de wz dragdrop que hemos descrito anteriormente. a Para denir las imagines como HTML dinmico usamos la funcin SET HTML, indicando el a o nombre de las imgenes que queramos que sean dinamicas de la siguiente manera. a <script type="text/javascript"> SET_DHTML(CURSOR_MOVE, TRANSPARENT, "computer","hub", "router","status","comment"); </script> A parte de crear las imgenes como HTML dinmico, tambin le hemos aadido algunas a a e n caracter sticas como que cada vez que se muevan sean transparentes. El efecto de transparencia no aporta nada en trminos de funcionalidad, pero queda bastante vistoso a ojos del usuario. e Tambin se ha denido en el rea de diseo la barra de estado de la aplicacin, que tambin e a n o e ser un elemento HTML dinmico, pero con la diferencia que no se permitir que se mueva a a a por medio del ratn. o La barra de estado ser denida en la parte superior derecha del rea de diseo, y tendr el a a n a nombre de status en el HTML. Esta barra de estado mostrar el estado que tendr la aplicacin a a o en cada momento. Normalmente cuando el usuario procede a utilizar la aplicacin, le interesa que el rea de o a diseo este totalmente limpia y vac de elementos, para que l puede aadirlo y disear su n a e n n propia topolog Para ello cada vez que se cargue el interfaz se ocultarn todos los elementos a. a antes creados. Para este cometido se usar la funcin init(), creada en javascript, y ejecutada solamente a o cuando se carga por primera vez la aplicacin. Esta funcin ser la encargada de ocultar todos o o a los elementos existentes en el rea de diseo. a n

44 function init(){

CAP ITULO 4. DISENO E IMPLEMENTACION

for (var i = 0; i < dd.elements.length; i++) { dd.elements[i].hide(); } } Como se puede observar existe una variable en javascript llamada dd, la cual posee todos los elementos dinmicos creados anteriormente. Por medio de dd.elements.length, se puede saber a exactamente cuantos elementos dinmicos han sido creados. a Cada elemento dinmico ocupa una posicin del array dd.elements, y posee distintos a o mtodos que afectan a su estado. En concreto el mtodo que estamos usando es hide(), este e e mtodo oculta a la vista del usuario el elemento en cuestin. e o A adir Computador n Como bien se ha descrito es la especicacin de este prototipo, se debe permitir aadir o n elementos a la topolog de red que el usuario pretende disear. a n Para ello cada vez que se presione al botn que representa un computador, botn que se o o encuentra a la parte derecha del interfaz, se debe aadir una instancia del computador en el n a rea de diseo. n Para ello la imagen que representa el computador se dene de la siguiente forma <img name="computer" src="images/computer.png" onClick="create_copy(computer)" title="A&ntilde;adir Computador"> Cada vez que se presione en la imagen, se ejecuta la funcin de javascript llamada create copy. o o a La funcin create copy, se encuentra en el chero netweb.js, dicha funcin recibe como parmetro o la cadena computer, que distigir que elemento se quiere aadir al rea de diseo. a n a n Se aadir un elemento siempre y cuando la aplicacin no se este ejecutando, para ello n a o antes de crear la instancia en el rea de diseo se comprueba sino se esta ejecutando la a n aplicacin, en caso contrario se mostrar un mensaje al usuario indicndoselo que no puede o a a realizar la accin por medio de una ventana emergente. Esta comprobacin se hace por medio o o de la variable RUN. if (parent.RUN){ alert("No se puede agregar elementos mientras esta en ejecucion la aplicacion"); return; } Una vez que se haya comprobado que se puede aadir un computador al diseo que se desea n n realizar, se crear una copia de la imagen que se encuentra en el rea de diseo. a a n Para ello se accede a por medio del nombre del objeto dinmico, en nuestro caso la e a variable obj tendr el valor de computer. a parent.left.dd.elements[obj].copy(); var copieslength = parent.left.dd.elements[obj].copies.length; var newobject=parent.left.dd.elements[obj].copies[copieslength-1]; newobject.show();

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO

45

Con parent.left.dd.elements[obj].copy(), se accede al mtodo del objeto creado en el rea de e a diseo. Para acceder espec n camente al objeto computer del rea de diseo se utiliza la variable a n obj, que ha sido pasada como parmetro cuando se ha realizado la llamada a la funcin. a o Una vez obtenido el objeto, se procede a llamar al mtodo copy(), este mtodo crea una e e copia del objeto padre. Es decir crea una nueva imagen del objeto computer y se asigna a la variable newobject. Posteriormente se mostrar el objeto para que el usuario pudiera verlo a en el rea de diseo y poder posicionarlo donde l desea. a n e Cuando el objeto ha sido creado, se proceder a pedir al usuario el nombre que desea a asignarle. Para ello se denir una propiedad al nuevo objeto newobjet, denominada name. a var newname=prompt("Introduzca el nombre",newobject.name); newname=newname.replace(" ","_"); if (newname==null) newname=newobject.name; newobject.name=newname Para pedir el nombre de usuario, se usar la funcin de javascript prompt. Esta funcin a o o mostrar una ventana emergente en la cual el usuario podr introducir el nombre de la nueva a a computadora. En el caso que el nombre tuviera espacios en blanco, se sustituirn por el a carcter . a A continuacin, como todos los objetos que se crear ser iguales, se ha denido una o an an propiedad en el objeto que le dene el tipo al que pertenece. La propiedad ser type. En este a caso tendr el valor de computer. a newobject.div.type=obj; Con estos pasos descritos, el nuevo computador ha sido aadido al rea de diseo. Como n a n puede haber multitud de computadores, se debe llevar un control de ellos. Para ello se ha creado una variable de tipo array llamada computers. Dicha variable contendr el nombre de a las computadoras aadidas al rea de diseo. n a n MAXCOMPUTER=200 var computers=new Array(MAXCOMPUTER) var ncomputers=0; La variable ncomputers, llevar la cuenta de los computadores creados. a Cada vez que se aada un computador al rea de diseo se aadir su nombre a la n a n n a estructura computers. function add_computer(name){ computers[ncomputers]=name; ncomputers++; } A continuacin se mostrar los pasos a seguir para aadir un computador al rea de diseo. o a n a n

46

CAP ITULO 4. DISENO E IMPLEMENTACION

Paso1: Presionar el botn del computador o

Paso2: Asignar nombre al computador

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO

47

Paso3: Computador Aadido al area de diseo n n

Paso4: Repetir el proceso tantas veces como computadores se quieran aadir n A adir Hub n El proceso para aadir un hub al area de diseo es muy similar al de aadir un computador. n n n El primer paso es dotar al botn del hub de una accin: o o

<img name="hub" src="images/hub.png" onClick="create_copy(hub)" title="A&ntilde;adir Hub

48

CAP ITULO 4. DISENO E IMPLEMENTACION

Como se puede observar, el cdigo es muy similar al que se ha explicado en la accin de aadir o o n un computador, la unica diferencia es que la llamada se hace pasando como argumento la palabra hub, que ser utilizada en la funcin para crear las instancias de los hubs. a o Por tanto el cdigo es igual que al explicado en el apartado anterior, cabe descartar que o cuando se crea la nueva instancia del hub, la propiedad del objeto type toma el valor de hub. Lo unico que var son las estructuras de datos en las cuales se lleva la informacin de los a o hubs aadidos al rea de diseo. Para este caso se usarn las siguientes estructuras. n a n a

var hubs=new Array(MAXCOMPUTER); var nhubs=0; function add_hub(name){ hubs[nhubs]=name; nhubs++; } Cada vez que se aada un hub al rea de diseo, se almacenar su nombre usando la n a n a o a funcin add hub. Dicha funcin ser la encargada de almacenar el nombre en el array de o hubs existentes, igualmente que se hac con los computadores. a A continuacin se muestran los pasos para aadir un hub al area de diseo: o n n

Paso1: Presionar el botn del hub o

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO

49

Paso2: Asignar nombre al hub

Paso3: Repetir el proceso tantas veces como hubs se quieran aadir n Como se puede observar en la imagen anterior, el usuario puede disponer de hub y routers para disear su topolog n a. A adir Router n El ultimo elemento que queda por aadir al rea de diseo es el router. La mecnica para n a n a aadir un router al rea de diseo es similar a la vista anteriormente con un computador y n a n con un hub.

50

CAP ITULO 4. DISENO E IMPLEMENTACION

Lo primero que debe hacer el usuario es pulsar sobre la imagen del router en el men de u acciones. El cdigo HTML ser: o a

<img name="router" src="images/router.png" onClick="create_copy(router)" title="A&ntilde Lo unico que cambia con respecto a aadir un computer o un hub que el parmetro de la n a funcin create copy. o La unica diferencia existente con la adicciones explicadas anteriormente es como se almacena el nombre de los routers que el usuario ha ido aadiendo en su topolog para ello se usar un n a, a array en el que cada posicin se introducir los nombres de los routers. o a var routers=new Array(MAXCOMPUTER); function add_router(name){ routers[nrouters]=name; nrouters++; } Cada vez que se aada un router al rea de diseo, se almacenar su nombre usando la funcin n a n a o o a add router. Dicha funcin ser la encargada de almacenar el nombre del router en el array. Los pasos para aadir un router al rea de diseo son los siguientes: n a n

Paso1: Presionar el botn del Router o

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO

51

Paso2: Asignar nombre al Router

Paso3: Repetir el proceso tantas veces como hubs se quieran aadir n El router es el ultimo elemento que se puede aadir a una topolog de red, con ello queda n a concluido la funcin de aadir elementos al rea de diseo. o n a n Crear Enlaces Una vez aadidos todos los elementos que compondrn nuestra topolog de red, se n a a proceder a realizar los enlaces de las computadoras, hubs y router para disear las redes a n que se desean simular. Para crear un enlace lo primero que hay que hacer es seleccionar el icono en el men de u acciones <img name="cable" src="images/cable.png" title="Conectar" onClick="create_link() "> Una vez que se presiona el icono de creacin de enlace, se ejecutar la funcin en javascript o a o create link.

52

CAP ITULO 4. DISENO E IMPLEMENTACION

function create_link(){ if (parent.RUN){ alert("Aplicacin ejecutandose, no se puede crear el link"); o return; } if (!LINK){ LINK=Boolean(1); show_message("Crea enlaces entre elementos"); } else{ LINK=Boolean(0); parent.left.dd.elements.status.hide(); clicks=0; } } Como se puede observar, la funcin create link unicamente comprueba la variable LINK. o Dicha variable, indica si esta presionado el botn de crear enlace. Por defecto el valor de la o variable LINK es FALSE, que quiere decir que no esta presionado el botn de crear enlace. o En el momento que se presiona se le asignar el valor de TRUE y se proceder a crear los a a enlaces de los elementos aadidos al rea de diseo. Dicha funcin tambin comprueba si se n a n o e esta ejecutando la aplicacin, en ese caso no se podr aadir ningn enlace entre elementos. o a n u La accin que debe realizar el usuario para poder crear un enlace, es la habitual que se o encontrar en cualquier aplicacin de escritorio. Se pincha en los elementos que se quiera a o enlazar y el enlace quedar creado. Para ello cada vez que se crea un objeto en el rea de a a n diseo, por medio de la funcin create copy, se le aade a cada objeto un evento llamado n o onclick. newobject.div.onclick=link; Este evento hace un llamada a la funcin link cada vez que se hace un click en un objeto. o function link(){ if (parent.LINK){ //se crea el link } Lo primero que har funcin es comprobar si esta presionado el botn de crear el enlace, es a o o caso contrario la funcin no realizar ninguna tarea. o a Como el procedimiento para crear el enlace entre dos elementos es presionar primero en el primer objeto y luego en el segundo, se proceder a determinar si el objeto pulsado ha sido a el primero o el segundo. Para ello existe un variable llamada clicks que nos dice si ha sido el primer click o el segundo. if (clicks==0){ //ha hecho el primer click x1=parent.left.dd.elements[this.name].x; y1=parent.left.dd.elements[this.name].y; type1=this.type;

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO name1=this.name; clicks++; }

53

Si ha sido el primer click, se almacena en las variables x1,y1 las coordenadas del primer elemento que compondr el enlace. Tambin se almacena el nombre y el tipo (computer,router,hubs) a e del elemento en el cual se ha realizado el click. Una vez almacenado los valores apropiados se incrementa la variable clicks, para que el siguiente elemento que se pinche sea el segundo elemento que compondr el enlace. a if (clicks==1){ x2=parent.left.dd.elements[this.name].x; y2=parent.left.dd.elements[this.name].y; type2=this.type; name2=this.name; } Una vez que el usuario presiona sobre el segundo elemento que compone el enlace, se proceder a a almacenar las coordenadas, el nombre y el tipo del elemento. Una vez que se posean los dos elementos que compondrn el enlace, as como la informacin a o relativa de cada elemento, se proceder a realizar el propio enlace. a Al empezar, se comprobar que el usuario no ha realizado un enlace incorrecto. Determinamos a como enlaces incorrecto a los siguientes tipos de enlaces: Enlaces entre el mismo elemento. No se podr realizar enlaces entre el mismo computador, a hub o router. Enlaces entre computadoras. No se permitir enlaces entre dos computadoras, para unir a dos computadoras se utilizar un hub. a Enlaces entre un router y una computadora. No se permitir realizar enlaces entre a routers y computadores. En el caso que se quiera realizar este tipo de enlaces se usar un a hub para llevarlo a cabo. Un computador no puede tener mas de un enlace. Tngase en cuenta que en el momento que se intente realizar un enlace errneo, se le noticar al e o a usuario que el enlace no se puede realizar y se anular la informacin relativa al enlace que se a o ha querido crear. La noticacin del error, se le mostrar al usuario por medio de una ventana o a emergente. if (name1==name2){ alert("No se puede realizar el enlace"); LINK=Boolean(0); clicks=0; parent.left.dd.elements.status.hide(); return ; } if ((type1=="computer") && (type2=="computer")){ alert("Este enlace no se puede realizar");

54

CAP ITULO 4. DISENO E IMPLEMENTACION LINK=Boolean(0); clicks=0; parent.left.dd.elements.status.hide(); return ; } ((type1=="computer") && (type2=="router")){ alert("Este enlace no se puede realizar"); LINK=Boolean(0); clicks=0; parent.left.dd.elements.status.hide(); return ; } ((type1=="router") && (type2=="computer")){ alert("Este enlace no se puede realizar"); LINK=Boolean(0); clicks=0; parent.left.dd.elements.status.hide(); return ; } ((type1=="computer")){ if (existsLink(name1)){ alert("Un computador no puede tener mas de un enlace"); LINK=Boolean(0); clicks=0; parent.left.dd.elements.status.hide(); return; } } ((type2=="computer")){ if (existsLink(name2)){ alert("Un computador no puede tener mas de un enlace"); LINK=Boolean(0); clicks=0; parent.left.dd.elements.status.hide(); return; } }

if

if

if

if

La funcin existsLink comprueba que un computador no tiene mas de un enlace. o Una vez que se ha comprobado que el enlace se puede realizar, se proceder a realizar el a enlace en s Para ello se ha creado una clase, llamada ClassLink. La denicin de la clase se . o hace de la siguiente manera. function ClassLink(source1,source2,type1,type2){ this.source1=source1; this.source2=source2; this.type1=type1;

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO this.type2=type2; } var linkscomputer=new Array(MAXCOMPUTER);

55

La clase contendr las propiedad de los nombres de los elementos que compondrn el enlace a a as como el tipo de dicho elementos. Tambin se crear una variable llamada linkscomputer. e a Dicha variable almacenar todos los links que ha realizado el usuario para disear la topolog a n a de red. Para crear y almacenar la informacin relativa a un link, se usar la funcin addLink. o a o Dicha funcin recibe los nombres y el tipo de los elementos que comprendren el link, crear la o a clase link y lo aadir a variable linkscomputer. n a function addLink(source1,source2,type1,type2){ var linkaux=new ClassLink(source1,source2,type1,type2); linkscomputer[nlinkscomputer]=linkaux; nlinkscomputer++; } Una vez almacenado el enlace en las estructuras de datos necesarias, se proceder a dibujar a grcamente el enlace en el rea de diseo. Para ello se ha usado la librer de javascript a a n a wz jsgraphics.js. Lo primero que se ha realizado es crear el rea de dibujo para poder pintar los enlaces, a ese rea de dibujo corresponder al mismo HTML del rea de diseo. Para dibujar un enlace a a a n visual en el HTML se usar la funcin draw link, la cual recibir las coordenadas de la linea a o a que representar el enlace que se pretende dibujar. a

jg_doc=new jsGraphics(); function draw_link(x1,y1,x2,y2){ jg_doc.setColor("#000000"); jg_doc.setStroke(2); jg_doc.drawLine(x1,y1,x2,y2); jg_doc.paint();

Cuando el enlace ya esta dibujado en el rea de diseo, ya estar completado el proceso de a n a creacin de un enlace. o Los pasos para realizar un enlace son los siguientes:

56

CAP ITULO 4. DISENO E IMPLEMENTACION

Paso1: Presionar el botn de creacin de enlace o o

Paso2: Presionar sobre el primer elemento que compondr el enlace a

Paso3: Presionar sobre el segundo elemento que compondr el enlace. Enlace Creado a

4.3. PROTOTIPO 1: CONSTRUCCION DEL INTERFAZ DE USUARIO

57

Paso4: Repetir el proceso tantas veces como enlaces se quieran aadir n Barra de Estado Como bien se ha comentado anteriormente nuestro sistema contendr una barra de estado a que indicar al usuario el estado actual de la aplicacin. a o La barra de estado en Javascript esta denida por la variable status y para cambiar la informacin se har con la funcin show message de la siguiente forma. o a o show_message("Aplicacin Ejecutandose} o a La denicin de la funcin show message se har de la siguiente forma: o o function show_message(msg){ parent.left.document.getElementById("status").innerHTML=msg; parent.left.dd.elements.status.show(); } Para ocultar la barra de estado se usar el siguiente cdigo. a o parent.left.dd.elements.status.hide(); Con esta funcionalidad quedarn implementados todos los objetivos propuestos para este a prototipo. Arranque de los nodos y parada de los nodos Esta funcionalidad ser implementada en prototipos posteriores. a

58

CAP ITULO 4. DISENO E IMPLEMENTACION

4.4.
4.4.1.

Prototipo 2: Interaccin entre Usuario y Servidor Web o


Especicacin o

Una vez construido el interfaz Web de usuario, se proceder a realizar un prototipo a que aadir funcionalidad al prototipo realizado anteriormente. Este nuevo prototipo debe n a permitir la comunicacin entre el interfaz de Usuario y la mquina donde se aloja el software o a para la gestin de nodos Netkit. o Uno de los objetivos prioritarios de este proyecto fue la separacin en distintas mquinas o a del interfaz de usuario con el software de gestin de nodos, para ello se ha querido ubicar los o dos mdulos en mquinas distintas. Para la comunicacin de las mquinas se ha decidido usar o a o a el protocolo HTTP, ya que es el protocolo usado en el Web. Este prototipo pretende la comunicacin entre el interfaz de usuario con la mquina que o a alberga el software de la gestin de los nodos Netkit. Para ello, cuando el usuario quiera o ejecutar los nodos remotamente, el interfaz debe comunicar al software de gestin de nodos o la topolog elegida mediante este interfaz. En este prototipo unicamente nos centraremos en a la comunicacin realizada entre el interfaz Web y como el servidor recibe esa informacin. o o Los pasos que se harn en este prototipo sern los siguientes a a 1. Una vez que el usuario haya realizado el diseo de la red que desea simular, pulsar el n a botn de ejecucin. o o 2. El interfaz generar la informacin de la topolog creada por el usuario. a o a 3. La informacin de las redes creadas ser enviada por medio del protocolo HTTP al o a servidor Web que est disponible en la mquina que lleva la gestin de los nodos a a o virtuales. 4. El servidor Web recibir la informacin y la almacenar para posteriormente simular la a o a red mediante Netkit.

4.4.2.

Diseo n

Arquitectura A continuacin se denir la arquitectura elegida para el diseo del prototipo 2. En esta o a n arquitectura entran en juego el navegador Web (interfaz de usuario) y un servidor web.

Arquitectura prototipo 2 Tngase en cuenta que este prototipo se ejecuta unicamente cuando el usuario pretende e simular el diseo que anteriormente ha realizado mediante el interfaz de usuario. Los pasos n que este prototipo realizar sern los siguientes: a a 1. El usuario presiona el botn de simulacin. o o

4.4. PROTOTIPO 2: INTERACCION ENTRE USUARIO Y SERVIDOR WEB 2. El interfaz de usuario genera la topolog de red que el usuario ha diseado. a n 3. Env por medio del protocolo HTTP dicha topolog a a.

59

4. El servidor Web ser el encargado de recibir la topolog y almacenarla para posteriormente a a poder simularla mediante Netkit.

Comunicacin por medio de HTTPRequest y HTTP o Para la comunicacin entre el interfaz de usuario y el servidor, usaremos el objeto de o javascript HTTPRequest. Este objeto permite la comunicacin as o ncrona entre un cliente (Interfaz Web) y un Servidor (Software de Gestin de Nodos). o Para el env de informacin se usar el protocolo HTTP, protocolo usado en el Web. El o o a Interfaz Web enviar, cada vez que el usuario quiera ejecutar un diseo, una peticin HTTP al a n o servidor. En la mquina que har de servidor se estar ejecutando un software que realizar la a a a a tarea de servidor web, dicho software recibir la peticin realizada del usuario, dicha peticin a o o contendr la topolog que el usuario pretende simular mediante Netkit. a a Se ha elegido HTTP ya que es un estndar de protocolo usado en el Web y porque ningn a u navegador va a tener problema al interactuar con el servidor por medio de este protocolo.

Servidor Web Apache Para la recepcin de la topolog de red por medio del protocolo HTTP, se necesita o a instalar un software que haga de servidor web. Este software unicamente se encargar de a recibir la red diseada por el usuario. En prototipos posteriores veremos como el servidor n Web se encargar de gestionar la informacin recibida, pero no es cometido del prototipo que a o pretendemos disear. n Hemos elegido Apache como servidor Web, ya que Apache es un servidor muy extendido en la comunidad de internet y porque nos permite una facilidad de programacin que otros o servidores web carecen. Apache permite ejecutar cdigo en distintos lenguaje, en concreto o Python ser el lenguaje elegido para gestionar la informacin recibida por el navegador en el a o servidor Web.

Topolog de Red en XML a Una vez que el usuario ha creado la topolog de red que desea simular, esta topolog a a debe ser enviada al servidor para que la pueda simularse mediante Netkit. Para ello se ha decidido crear un XML que contendr la informacin de la topolog de Red que el usuario a o a ha diseado. n Imaginemos la siguiente red creada por el usuario:

60

CAP ITULO 4. DISENO E IMPLEMENTACION

Topologa de Red Como se puede observar existen dos redes distintas. La Red A formada por el computer1, computer2 y router1, y la Red B formada por el computer3, computer4 y router2. Una vez creado el diseo, se debe disear un XML que indique la topolog de red creada. n n a En el caso concreto de la red anterior, el XML generado ser el siguiente: a <netweb> <elements> <name>router1</name> <name>computer1</name> <name>computer2</name> <name>computer3</name> <name>computer4</name> </elements> <nets> <net> <name> A </name> <elements> <name>computer1</name> <name>computer2</name> <name>router1</name> </elements>

4.4. PROTOTIPO 2: INTERACCION ENTRE USUARIO Y SERVIDOR WEB </net> <net> <name> B </name> <elements> <name>computer3</name> <name>computer4</name> <name>router1</name> </elements> </net> </nets> </netweb>

61

La etiqueta elements, contendr todos los elementos de la red. La etiqueta nets contendr las a a redes locales, cada una englobada en una etiqueta net y que contendr los elementos que a componen esa red local. Una vez que el interfaz Web ha creado el XML que desea simular, ser enviado al servidor a para que inicie la simulacin de la Red por medio de Netkit. o

4.4.3.

Implementacin o

Construccin XML o Cuando el usuario presiona el botn de inicio de la simulacin, se ejecutar la funcin de o o a o javascript run(). <img name="arrancar" src="images/run.png" onClick="run()" title="Arrancar"> La funcin run() iniciar el proceso de construccin del XML que corresponde a la topolog o a o a de red que el usuario ha creado. Lo primero que har dicha funcin es comprobar si puede a o iniciar la ejecucin. o if (parent.left.dd.elements["computer"].copies.length==0){ alert("No hay maquinas para poder ejecutar la aplicacion"); return; } if (parent.RUN){ alert("La aplicacion ya esta ejecutandose"); return; } Primero se comprueba si hay alguna mquina en el diseo y si la aplicacin no esta ejecutndose. a n o a En caso armativo informar al usuario por medio de un mensaje emergente que no se puede a iniciar la ejecucin. o Una vez que se ha comprobado que se puede realizar la simulacin, se proceder a crear o a el XML. Para ello se ha usado el objeto Microsoft.XMLDOM que permite crear un parse de XML. </td>

62

CAP ITULO 4. DISENO E IMPLEMENTACION

function create_xml(){ if (document.implementation && document.implementation.createDocument) { xmldoc = document.implementation.createDocument("", "", null); } else if (window.ActiveXObject) { xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.onreadystatechange = function () { if (xmlDoc.readyState == 4) createTable() }; } else { alert(Your browser can\t handle this script); return; } } Una vez que se ha creado el xml llamado xmldoc se proceder a construir el XML. a Lo primero que realizar es aadir los elementos que componen el diseo al XML, bajo la a n n etiqueta elements. var netwebxml = xmldoc.createElement("netweb"); var elements=xmldoc.createElement("elements"); for (i=0;i<nrouters;i++){ routername=routers[i]; var namexml=xmldoc.createElement("name"); var textxml=xmldoc.createTextNode(routername); namexml.appendChild(textxml); elements.appendChild(namexml); } netwebxml.appendChild(elements); for (i=0;i<ncomputers;i++){ computername=computers[i]; var namexml=xmldoc.createElement("name"); var textxml=xmldoc.createTextNode(computername); namexml.appendChild(textxml); elements.appendChild(namexml); } Primero de todo se crea las etiquetas netweb y elements, bajo esta ultima etiqueta se introducirn a el nombre de los elementos que componen el diseo del usuario. Tngase en cuenta que los n e hubs no se representan como mquina, sino que unicamente se usan para simular la unin a o de varios elementos y por eso no se almacenarn en el XML. Como se puede observar en el a cdigo javascript anterior el nombre de los computadores y los routers estn contenidos en las o a variables computers y routers respectivamente. Una vez introducidos en el XML los nombre se proceder a introducir la informacin de las redes existentes en el diseo. a o n

4.4. PROTOTIPO 2: INTERACCION ENTRE USUARIO Y SERVIDOR WEB

63

Una vez creado el XML que contendr la topolog de la red, ya se estar dispuesto a a a a envirselo al servidor. a Objeto HTTPRequest Como bien se ha comentado anteriormente, para la comunicacin entre el cliente y el o servidor se va a usar el objeto HTTPRequest de Javascript. El objeto HTTPRequest ser el encargado de mantener la comunicacin entre el cliente y a o el servidor. La denicin del objeto se har de la siguiente forma o a function http_request() { try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!=undefined) { xmlhttp = new XMLHttpRequest(); } return xmlhttp } Una vez denido el objeto, la instanciacin se realizar cada vez que quiera hacer uso de l. o a e Env XML por medio de HTTPRequest y HTTP o Cuando se haya denido el XML y el objeto HTTPRequest, se ejecutar la funcin a o o a o send xml. Dicha funcin ser la encargada de enviar la informacin al servidor por medio de HTTP y utilizando el objeto HTTPRequest. function send_xml() { _objetus=http_request() _URL_="netweb.py?request=run"; _objetus.open("PUT",_URL_,true); _objetus.onreadystatechange=function() { if(_objetus.readyState==4) { if(_objetus.status==200) { null; } else { alert("ERROR");

64 } } } _objetus.send(xmldoc); return }

CAP ITULO 4. DISENO E IMPLEMENTACION

Como se puede observar, objetus es una instancia del objeto HTTPRequest. La variable URL contendr a quien va redirigida la peticin HTTP que se va a generar. En este caso a o ser el chero netweb.py que ser el script en python que se encontrar en el lado del servidor a a a y que ser el encargado de recoger la informacin enviada desde el interfaz. Como puede haber a o varios tipos de peticiones, cada peticin quedar denida por la variable request, en nuestro o a caso tendr el valor de run, ya que la accin que queremos realizar es la de arranque de los a o nodos en el servidor. Por ultimo se enviar el XML por medio del mtodo send del objeto a e objetus, este mtodo recibir un parmetro. Dicho parmetro ser la variable xmldoc, la cual e a a a a contendr el XML de la topolog diseada por el usuario. a a n Conguracin Apache y Mod Python o Una vez que se ha enviado el XML por medio del protocolo HTTP, el servidor Web ser el encargado de recoger esa informacin. Como bien se ha comentado anteriormente, el a o servidor que vamos a usar es el servidor Web Apache. El servidor Web Apache puede ejecutar varios lenguajes de programacin lanzados desde una peticin HTTP, entre ellos se encuentra o o python. Python ser el lenguaje encargado para tratar la informacin recibida del interfaz a o Web. Para ello se necesita instalar y congurar un mdulo existente para Apache, que permite o la ejecucin de cdigo escrito en Python. El mdulo recibe el nombre de mod python. o o o o Lo primero es instalar Apache con mod python. Una vez que la instalacin de mod python ha sido correcta se proceder a la conguracin. Como bien se ha visto cuando se invoca a o al mtodo HTTPRequest en la peticin de arranque de nodo, se hace un mtodo PUT a e o e netweb.py. Dicho chero ser el que se ejecute y recoja la informacin del XML recibido del a o interfaz Web. a n Para congurar mod python en Apache habr que aadir al chero /etc/apache2/modsavailable/mod python.load las siguientes lineas LoadModule python_module /usr/lib/apache2/modules/mod_python.so <Directory /var/www/netweb/> AddHandler mod_python .py PythonHandler netweb PythonDebug On </Directory> Estas lineas indican a Apache que cada vez que se reciba una peticin a netweb.py se debe o interpretar el cdigo como lenguaje en Python. o Recepcin del XML en Apache o Una vez congurado Apache para que ejecute cdigo en Python, se proceder a realizar el o a script que reciba el XML de la topolog que el usuario quiere simular. Tngase en cuenta que a e

4.5. PROTOTIPO 3: EJECUCION REMOTA DE LOS NODOS VIRTUAL

65

cada vez que se recibe una peticin al chero netweb.py este ejecuta el cdigo de su manejador o o handler recibiendo como argumento el objeto req. Dicho objeto contendr la informacin de a o la peticin recibida. o from mod_python import apache,util import parse_netweb telnetsopen={} def handler(req): form=util.FieldStorage(req) request=form["request"] if request=="run": s = req.read() telnetsopen={} xmldoc=s while s: s = req.read() xmldoc=xmldoc+s f=open("/tmp/netweb.xml","w") f.write(xmldoc) f.close() Lo primero que se realiza es sacar el tipo de la peticin y almacenarla en la variable request. o En nuestro caso la recepcin del XML que contiene la topolog de red que el usuario quiere o a simular, corresponde al valor run. Posteriormente se empieza a leer de la conexin que se ha o recibido y se almacena en la variable xmldoc el contenido del XML recibido por el usuario. Dicho XML ser almacenado en el chero XML /tmp/netweb.xml. a En este momento el servidor ya posee la informacin de la topolog de red que quiere o a simular el usuario. Dicha informacin ser utilizada por el prototipo posterior para simular o a la red diseada. n

4.5.
4.5.1.

Prototipo 3: Ejecucin Remota de los nodos virtual o


Especicacin o

Este prototipo va a llevar a cabo la implementacin de todo el software de la gestin de o o los nodos virtuales mediante Netkit. Dicho software pretende ejecutar la topolog de red a diseada. La red que se pretende disear se encuentra en el chero /tmp/netweb.xml, dicha n n informacin ha sido recibida mediante el software desarrollado en el prototipo anterior. o Las caracter sticas que debe tener este prototipo son las siguientes: Se debe permitir simular todos los nodos que el usuario ha diseado. n Los nodos simulados deben de estar conectados mediante la topolog diseada por el a n usuario. La simulacin se llevar a cabo mediante el software que posee el entorno de Netkit. o a

66

CAP ITULO 4. DISENO E IMPLEMENTACION Se debe poder tener un canal de comunicacin con los nodos ejecutados, dicho canal o ser el encargado de ejecutar los comando que el usuario desea ejecutar en cada uno de a los nodos simulados.

Una vez recibida la topolog de red realizada por el usuario, se pretende realizar un a software que gestione y ejecute la topolog diseada por el usuario. a n

4.5.2.

Diseo n

Arquitectura La arquitectura de este prototipo estar centrada en el software de gestin de los nodos a o virtuales de Netkit, as como los propios nodos Netkit que el usuario pretende simular.

Arquitectura prototipo 3 Los pasos a seguir para la ejecucin de este prototipo son los siguientes: o 1. Se lee el XML recibido del Navegador, dicho XML contendr la topolog que se desea a a simular. 2. Una vez que se tiene claro la topolog de red, se procede a simularla por medio de las a herramientas que Netkit nos facilita. 3. Una vez que se ha simulado la topolog se guarda la informacin relativa a cada nodo. a, o Esta informacin ser necesaria para posteriormente ejecutar comando en cada uno de o a los nodos simulados. Cabe recordar que una de las nalidades de este proyecto es la simulacin de un entorno de o red mediante Netkit. Una vez que el entorno este simulado, el usuario pretender acceder a y ejecutar comandos en los nodos. Para ello se pretende guarda la informacin que nos o permitir comunicarnos con cada uno de los nodos. a

4.5. PROTOTIPO 3: EJECUCION REMOTA DE LOS NODOS VIRTUAL Conexin Telnet con Nodo Virtual o

67

Como bien hemos visto anteriormente, cada nodo Netkit exporta una Shell para poder interactuar con l. A ese interprete de comandos se puede acceder de distintas maneras, e habitualmente se hace por medio de un terminal. Dicho terminal es simular al encontrado en cualquier mquina GNU/Linux. El problema que nos encontramos es que la interaccin con a o un terminal normal de GNU/Linux es mas propia de un humano y no de un software, que es nuestro caso. Para ello Netkit permite accesos al nodo por otros medios, uno de ellos es mediante Telnet. Cuando se ejecuta un nodo mediante Netkit, se le puede especicar que reciba comandos de GNU/Linux en un puerto TCP. Cuando el nodo es ejecutado, se lanzar un servidor Telnet a en el puerto TCP especicado. A partir de ese momento se puede interactuar con el nodo por medio de una conexin Telnet, igualmente como si se estuviera interactuando con un terminal o normal de GNU/Linux. Con esta solucin tenemos nuestro problema resuelto, ya que el software de gestin de o o nodos virtuales, tendr por cada uno de los nodos una conexin telnet. Dicha conexin a o o servir para enviar comandos al nodo y recibir la respuesta de la ejecucin de dichos comandos. a o Ejecucin de Nodos Virtuales o Como bien hemos visto anteriormente, cada nodo virtual debe estar escuchando en un puerto TCP, en dicho puerto recibir los comandos que el usuario quiera ejecutar sobre l. a e Para ello el software de gestin de nodos debe permitir ejecutar todos los nodos que o el usuario ha diseado mediante el interfaz web. Para ello Netkit dispone de un comando n llamado vstart. Dicho comando permite ejecutar un nodo virtual escuchando en un puerto TCP determinado y con la conguracin de red que el usuario ha diseado. o n

4.5.3.

Implementacin o

Instalacin de Netkit o En este prototipo se va a llevar a cabo la implementacin de el software que llevar la o a gestin de los nodos virtuales. Para ello la mquina donde esta alojada este software debe de o a tener congurado e instalado Netkit. Lo primero que hay que hacer es descargarse de la pgina ocial de Netkit2 todo el entorno. a http://netkit.org/download/netkit/netkit-2.4.tar.bz2. Conjunto de Aplicaciones para usar con Netkit http://netkit.org/download/netkit-lesystem/netkit-lesystem-F2.2.tar.bz2. Sistema de Ficheros usado por Netkit http://netkit.org/download/netkit-kernel/netkit-kernel-K2.2.tar.bz2. El Kernel del sistema GNU/Linux que usar Netkit. a Una vez descargado los chero se proceder a descomprimirlos, todos los cheros sern a a almacenados en un directorio llamado netkit2. Una vez que estos cheros estn descomprimidos e procederemos a la conguracin. o
2

http://netkit.org

68

CAP ITULO 4. DISENO E IMPLEMENTACION

a Dentro del directorio netkit2, existe un chero llamado check conguration.sh, que chequear nuestra conguracin del sistema y nos avisar de los cambios que hay que hacer para poder ejecutar o a Netkit. Nekit necesita crear o modicar ciertas variables de entorno, dependiendo siempre del Shell que se use, en nuestro caso bash. o 1. Asignar a la variable NETKIT HOME el path donde se encuentra la instalacin de Netkit. 2. Aadir a la variable PATH, el path donde se encuentran los binarios de Netkit. n 3. Aadir a la variable MANPATH, el path donde se encuentran las pginas de manual de n a Netkit. Una vez que hayamos realizado estos pasos, ya podremos usar Netkit en nuestra mquina. a Tngase en cuenta que Netkit unicamente funciona en una mquina GNU/Linux. e a Conguracin del Software de Gestin de Nodos o o Una vez que se tenga instalado Netkit, nuestro Software de Gestin de Nodos ser el o a encargado de usarlo. Como cada instalacin de Netkit es distinta, se ha creado un chero o de conguracin donde se le asigna los distintos valores de las variable de entorno para que o Netkit funcione correctamente. El chero de conguracin estar alojado en la mquina del o a a servidor en /etc/netweb/cong.cfg y tendr la siguiente forma. a [NETWEB] NETKITHOME=/home/michael/source/netkit/netkit2 NETKITBIN=/home/michael/source/netkit/netkit2/bin Como se puede observar el chero de conguracin es un simple chero de texto el cual tiene o los variable. NETKITHOME. Directorio donde se encuentra la instalacin de Netkit. o NETKITBIN. Directorio donde se encuentra los binarios de Netkit. Si se quiere portar el software de gestin de nodos a otra mquina, que tiene la instalacin de o a o Netkit en otro directorio, unicamente habr que editar el chero de conguracin y cambiar a o las variables de valor. Como el valor de estas variables tiene que ser utilizado por el programa de gestin de o nodos, escrito en Python, se ha usado una librer llamada CongParser. Dicha librer nos a a permitir leer las variables del chero de conguracin, para as poder usarlas en nuestro a o programa. CONFIG=/etc/netweb/config.cfg cfg=ConfigParser.ConfigParser() cfg.readfp(file(CONFIG)) try: netkit_home= cfg.get(NETWEB,NETKITHOME.lower()) except: print Incorrect value for NETKITHOME parameter

4.5. PROTOTIPO 3: EJECUCION REMOTA DE LOS NODOS VIRTUAL try: netkit_bin= cfg.get(NETWEB,NETKITBIN.lower()) except: print Incorrect value for NETKITBIN parameter

69

a A partir de este momento, las variables netkit home y netkit bin tendrn los valores introducidos en el chero. Estos valores sern utilizados posteriormente para la ejecucin de los nodos a o Netkit que pretenda simular el usuario. Tratamiento del XML recibido Una vez que el servidor ha recibido el XML con la topolog de la red que se desea simular, a este XML est almacenado en el chero /tmp/netweb.xml. Se proceder a parsear el XML. a a Para ello se va a usar la librer de parseo de XML en Python llamada minidom. a El chero XML recibido del interfaz Web tiene un etiqueta llamada elements, la cual contiene las mquinas y routers que se quieren simular. a <elements> <name>router1</name> <name>computer1</name> <name>computer2</name> <name>computer3</name> <name>computer4</name> </elements> Primero de todo se irn cogiendo los nombre de los elementos usando el parser de la siguiente a forma: for i in elementsxml.getElementsByTagName(name): name=i.childNodes[0].data Cada pasada al bucle, la variable name contendr el nombre de los elementos de la red a (router1,computer1, ....). Lo primero que se desea hacer es elegir un puerto TCP aleatorio donde escuchar el nodo mediante una conexin telnet. a o portd=randrange(1024,9999) La variable portd, contendr un valor entero aleatorio comprendido entre 1024 y 9999. Este a numero aleatorio servir para lanzar el nodo Netkit escuchando en ese puerto TCP. a Una vez que se tendr el puerto donde se va ejecutar el nodo Netkit, se proceder a saber a a a que redes pertenece dicho nodo. Para obtener dicha informacin contamos con el XML o recibido del usuario, que nos indica las redes existentes y que nodos pertenecen a dicha Red. Usando el ejemplo anterior tenemos: <nets> <net> <name> A </name> <elements>

70

CAP ITULO 4. DISENO E IMPLEMENTACION

<name>computer1</name> <name>computer2</name> <name>router1</name> </elements> </net> <net> <name> B </name> <elements> <name>computer3</name> <name>computer4</name> <name>router1</name> </elements> </net> </nets> Como se puede deducir anteriormente, para el ejemplo del elemento router1, se dice que dicho elemento pertenece a la red A y B. Todo esto se deduce parseando el XML de conguracin o que hemos recibido. La cadena resultante, ser la linea que tengamos que ejecutar mediante el comando vstart. a Vstart, es un comando existente en Netkit para ejecutar y simular nodos Netkit. Para el ejemplo anterior la cadena resultante ser: a vstart router1 --port=9876 --eth0=A --eth1=B Como se puede observar, la mquina que se quiere simular se llama router1 y tiene dos a interfaces de red (eth0 y eth1). Dicho interfaces pertenecen a la red A y B respectivamente. Este proceso se repetir para todas las mquinas que quiera simular el usuario. a a Ejecucin nodos virtuales o Una vez que se ha obtenido el puerto TCP donde el nodo va a recibir peticiones telnet y las redes a las que pertenece, se proceder a ejecutar dichos nodos en la mquina del servidor. a a a o Para ello se ejecutar la funcin execute node que recibir la linea de ejecucin necesaria a o para ejecutar un nodo Netkit, as como las variable netkit home y netkit bin. Estas variables contienen los directorios donde se encuentra instalado Netkit en la mquina. a def execute_node(ejec,netkit_home,netkit_bin): pid=os.fork() if (pid==0): os.environ[NETKIT_HOME]=netkit_home os.environ[PATH]=os.environ[PATH]+":"+netkit_bin args=ejec.split(" ") os.execvp("vstart",tuple(args)) os._exit(1) os.wait()

4.6. PROTOTIPO FINAL: ACCESO A LOS NODOS POR MEDIO DEL WEB

71

Como se puede observar en el cdigo anterior, por cada nodo Netkit se crear un proceso o a Hijo que ejecutar dicho nodo. Al nal del proceso la mquina del servidor tendr que tener a a a ejecutando todos los nodos Netkit que el usuario ha querido simular. Cada nodo a su vez, dispondr de una conexin TCP donde aceptar peticiones telnet. a o a

4.6.
4.6.1.

Prototipo Final: Acceso a los nodos por medio del Web


Especicacin o

En el prototipo anterior se vio como poder ejecutar los distintos nodos Netkit que el usuario hab diseado en el interfaz Web. En este prototipo se intentar interactuar con los a n a nodos que estn disponibles en la mquina del servidor. a a Para ello se pretender aadir al interfaz de usuario un Shell que permita al usuario poder a n interactuar con los distintos nodos, igualmente que si lo hiciera desde el propio terminal del nodo. Las caracter sticas que deber tener este prototipo sern las siguientes: a a El usuario podr abrir un terminal desde el interfaz web para interactuar con el nodo a que l haya elegido. e El usuario podr ejecutar cualquier comando GNU/Linux en el terminal de cada nodo a por medio del interfaz Web. El usuario podr visualizar el resultado de la ejecucin del comando realizado en el nodo a o simulado. El servidor deber poder guardar el estado de los nodos entre las interaccin del usuario. a o Todas estas caracter sticas se podrn llevar a cabo siempre que estn ejecutndose los a e a nodos en remoto.

4.6.2.

Diseo n

Arquitectura La arquitectura de este prototipo estar centrada en la ejecucin remota de comando a o GNU/Linux en las mquinas que el usuario ha simulado. La introduccin del comando a o que el usuario quiere realizar como el resultado del comando ejecutado en el nodo Netkit, ser realizada por el un Shell desde el navegador Web. a

Arquitectura prototipo 4

72 Los pasos ha seguir sern los siguientes: a

CAP ITULO 4. DISENO E IMPLEMENTACION

1. El usuario abre el Shell del nodo en el cual quiere ejecutar el comando, escribe el comando y pulsa un ENTER. 2. El comando que desea ejecutar viaja por la red en una peticin HTTP. o 3. El software de gestin de nodos recibe el comando y lo ejecuta en el nodo que ha o determinado el usuario. 4. El resultado de la ejecucin es recogido por el software de gestin de nodos. o o 5. Se muestra al usuario el resultado de la ejecucin en el Shell Web del nodo. o Estos pasos se pueden repetir tantas veces como el usuario quiera, ya sea para congurar los interfaces de red de cada nodo, como cualquier comando que el usuario quiere ejecutar. Interfaz de Usuario La interaccin entre el usuario con cada nodo se har por medio de un Shell Web. Este o a shell web debe de tener las mismas ventajas que pudiera tener el usuario si ejecutar comando a en un terminal normal de GNU/Linux. Para ello cada vez que el usuario quiera interactuar con un nodo Netkit remoto, se le mostrar el Shell de ese nodo para que el usuario pueda a ejecutar tantos como comandos como l quiera, as como visualizar la ejecucin del resultado e o de dichos comandos. Env de peticin o o Para el env de la peticin del comando que se desea ejecutar, se va a realizar mediante o o el objeto HTTPRequest de javascript y usando el protocolo HTTP. Ntese que ahora habr que distinguir el tipo de peticin que se va a realizar, ya que en o a o este instante tenemos dos tipos de peticiones. Una que arranca todos los nodos Netkit y otra que ejecuta comandos en cualquiera de los nodos que se han simulado. Conexin Telnet con Nodos o Como bien hemos visto en el prototipo anterior, por cada nodo virtual que se ha ejecutado se tiene abierta una conexin Telnet para interactuar con el nodo. As cada vez que reciba una o peticin de ejecucin de un comando en un nodo, se proceder a escribir en dicha conexin o o a o el comando y leer el resultado de la ejecucin. o Para ello el software de gestin de nodos virtuales debe poseer una conexin Telnet con o o cada uno de los nodos simulados.

4.6.3.

Implementacin o

Creacin XML para futuras conexiones o Al ser lanzados todos los nodos Netkit en un puerto TCP para futuras conexiones Telnet, se desea poder almacenar esa informacin para poder ser recuperada en un futuro. o Para ello se ha creado un chero XML llamado /tmp/netweb.conf, el cual contendr los a puertos de los distintos nodos que se han ejecutando con anterioridad. Un ejemplo del chero se muestra a continuacin: o

4.6. PROTOTIPO FINAL: ACCESO A LOS NODOS POR MEDIO DEL WEB <?xml version="1.0"?> <computers> <computer> <name>router1</name> <port>8772</port> </computer> <computer> <name>computer1</name> <port>4568</port> </computer> <computer> <name>computer2</name> <port>2135</port> </computer> <computer> <name>computer3</name> <port>9634</port> </computer> </computers>

73

Este chero de conguracin ser usado cada vez que se reciba la peticin de ejecucin de un o a o o comando en alguno de los nodos ejecutados en el servidor. Para ello con saber el nombre del nodo que se quiere interrogar, se podr saber el puerto TCP para poder hacer la conexin a o telnet a l. e Creacin de un Shell Web o Para la creacin del Shell Web para la interaccin con cada nodo, se ha buscado un interfaz o o muy similar al que pudiera tener un usuario cuando ejecuta Netkit en local. Para acceder al Shell de cada nodo, unicamente habr que realizar un doble Click en el a nodo correspondiente. Para poder realizar esta tarea, cada vez que se hace una instancia de un nuevo objeto en el rea de diseo, se le aade la funcin que se quiere ejecutar cuando se a n n o hace un doble click en el objeto. newobject.div.ondblclick=parent.left.show_configuration; function show_configuration(){ change_terminal(this.name,this.type); } Cada vez que se realice un doble click en el elemento, se ejecutar la funcin show conguration, a o que ser la encarga de mostrar el terminal. Dicha funcin, en su denicin har una llamada a a o o a la funcin de javascript que abrir la pantalla del Shell para el nodo dado. Esa funcin recibe o a o o a el nombre de open terminal y su denicin ser: function open_terminal(){ if (!parent.parent.RUN) { alert("No se puede abrir el terminal, primero deberias ejecutar la aplicacion"); return;

74 }

CAP ITULO 4. DISENO E IMPLEMENTACION

parent.right.location="shell.html"; } Como se muestra en el cdigo, el shell estar implementado en el chero shell.html. o a Esta funcin mostrar el terminal de Shell en la misma parte del interfaz donde se mostraba o a el men de acciones. u

Shell de NetWeb Como se puede observar en la imagen, el interfaz que se ofrece por medio del navegador es muy similar al encontrado en un terminal de GNU/Linux. Lectura de comando y Env de comando o Una vez que se ha mostrado el terminal, se podr introducir tantos comandos como el a usuario desee. La interaccin con cada nodo es similar a la encontrada en un terminal de o GNU/Linux. Cada vez que se escribe un comando, se pulsa INTRO para ejecutarlo. Para ello se captura la cadena introducida por el usuario en el Shell Web y es enviada al servidor por medio de una peticin HTTP. o Para el env de la peticin se volver a realizar por medio de objeto HTTPRequest. La o o a funcin que se encarga de enviar la informacin al servidor es la funcin send request computer. o o o Dicha funcin recibe dos parmetros, el primero el nombre de la mquina que se va a o a a interactuar y el segundo el comando que se quiere ejecutar. function send_request_computer(name,command){ _objetus=http_request() _URL_="netweb.py?request=command&computer="+name; _objetus.open("PUT",_URL_,true); _objetus.onreadystatechange=function() { if(_objetus.readyState==4) { if(_objetus.status==200) { result=_objetus.responseText; printResult(name+":"+result); }

4.6. PROTOTIPO FINAL: ACCESO A LOS NODOS POR MEDIO DEL WEB else { alert("ERROR"); } } } _objetus.send(command); return }

75

Como se puede observar, la URL a la cual se le hace la peticin es la misma que para la o ejecucin. La unica diferencia es que ahora la variable request toma el valor de command. o

NetWeb Shell Recepcin de peticin en el servidor o o Una vez que el interfaz Web ha enviado por HTTP la peticin del comando a ejecutar o en el nodo, se proceder a capturar esa informacin en el servidor. Esta captura la realiza el a o software de gestin de nodos virtuales. o if request=="command": computer=form["computer"] s=req.read() global telnetsopen result=parse_netweb.read_node_netweb(computer,s,telnetsopen) req.write(result) Como se puede observar, primero se comprueba el tipo de peticin, en nuestro caso la o peticin es de tipo command. Se almacena tambin el nombre del computador en el cual o e se quiere ejecutar el comando y el comando recibido (variable s). Una vez recibido todos los parmetros se hace una llamada a la funcin read node netweb, la cual devuelve el resultado a o de la ejecucin del comando en el nodo, variable result. Ese resultado es devuelto al interfaz o Web, que mostrar al usuario el resultado en el Shell del nodo donde ha ejecutado el comando. a

76 Acceso mediante TELNET

CAP ITULO 4. DISENO E IMPLEMENTACION

Para la interrogacin de los nodos vamos a usar el comando telnet de GNU/Linux. El o unico problema que conlleva es que unicamente se puede hacer una conexin con cada nodo, o en el momento que la conexin telnet se cierre no se podr acceder al nodo por medio de o a ninguna conexin Telnet. o Para la interaccin entre el usuario con el nodo, por medio de telnet, se va a usar pexpect. o Pexpect es una librer en Python del famoso expect de Unix. Expect permite la interaccin a o entre un programa y distintas aplicaciones de interaccin con humanos, como telnet, ssh, ftp o .... Por cada nodo ejecutado, se ejecutar un telnet y dicha conexin se almacenar indexando a o a por el nombre del nodo, para ello existe la funcin addtelnet. o def addtelnet(name,telnetsopen,port): child = pexpect.spawn("telnet "+HOST+" "+str(port)) child.expect(Welcome to Netkit) telnetsopen[name]=child La variable que almacenar todas las conexiones telnet con todos los nodos, ser la variable a a telnetsopen. Una vez que se tiene almacenadas todas las conexiones telnet con cada uno de los nodos ejecutados, se proceder a ejecutar comandos en cada uno de los nodos. a Para ejecutar un comando en un nodo, se hace uso de la funcin send command, la cual o es invocada con el nombre del nodo, el comando se que quiere ejecutar y la conexin telnet. o La funcin devolver el resultado de la ejecucin del comando en dicho nodo. Ese resultado o a o ser enviado al interfaz web para que muestre el resultado de la ejecucin en el Shell del nodo. a o result=send_command(computer,command,telnetsopen[computer]) [ ..... ] def send_command(computer,command,child): child.expect(computer+:) child.sendline(command+\n) child.expect(computer+:) result=child.before result=result.replace("\n","<br>") return result a a La funcin send command, haciendo uso de pexpect ejecutar el comando y recoger el o resultado. Ntese que se cambian los retornos de carro por la etiqueta html br . Esta o etiqueta representa el retorno de carro en HTML. Parada de los nodos Una vez que el usuario ha interactuado con los nodos y quiere terminar la simulacin, o proceder a pulsar el botn de parada en el interfaz Web. a o <img name="salir" src="images/exit.png" onClick="stop()" title="Parar">

4.6. PROTOTIPO FINAL: ACCESO A LOS NODOS POR MEDIO DEL WEB

77

Esta funcin en javascript, hace uso del objeto HTTPRequest el cual env una peticin a o a o netweb.py con la variable request tomando el valor de stop. La variable request, tngase en e cuenta que hace diferenciar al servidor que tipo de peticin esta recibiendo del usuario. o El servidor recoge la peticin o if request=="stop": result=parse_netweb.stop_netweb(telnetsopen) a La funcin stop netweb, lo unico que realiza es un vhalt de cada una de las mquinas virtuales o que ha ejecutado el usuario. A partir de este momento no habr ninguna mquina virtual a a ejecutndose en el servidor, y por tanto no se podr realizar interacciones con ellas. a a

78

CAP ITULO 4. DISENO E IMPLEMENTACION

Cap tulo 5

Validacin y Pruebas o
Una vez implementado el software nos disponemos a hacer una serie de pruebas para comprobar que el cdigo desarrollado cumple con los requisitos expuestos al inicio del proyecto. o Para comprobar que el software cumple dichos objetivos, se van a realizar cuatro pruebas sobre el sistema. Cada prueba comprender una topolog de red, dicha topolog se probar exa a a a haustivamente para certicar que el software desarrollado cumple los objetivos marcados. Los pasos seguidos en cada prueba son los siguientes: 1. Especicar el problema. 2. Disear la topolog de red mediante el interfaz. n a 3. Ejecutar el diseo en el sistema. n 4. Asignar direcciones IP y crear tablas de encaminamiento (si las hubiera). 5. Realizar la prueba. 6. Comprobar el resultado de las pruebas.

5.1.

Prueba1: Conguracin de una Red Local o

La primera prueba consiste en disear una topolog de red formada por dos computadores(pc1 n a y pc2) unidos por hub (hub1). Estos dos ordenadores estarn unidos formando una red local. a La prueba consistir en comprobar que los dos ordenadores estn conectados en una red a a local y por tanto que existe conectividad entre ellos. Lo primero de todo es disear la red en el interfaz Web del sistema y ejecutar el diseo n n realizado.

79

80

CAP ITULO 5. VALIDACION Y PRUEBAS

Diseo de la topologa n

Una vez diseada la topolog de red, se va a proceder a asignar direcciones IPa las mquinas. n a a pc1: eth0 : 10.0.0.2 pc2: eth0 : 10.0.0.3 La asignacin de las direcciones IPse har por medio del shell que cada mquina posee o a a mediante el interfaz. Para ello se usar el comando ifcong para asignar una direccin IP a o al interfaz que deseemos, en nuestro caso eth0.

Asignacin de IP a pc1 o

Asignacin de IP a pc2 o

Una vez que las dos mquinas poseen direccin ip, vamos a comprobar que existe conectividad a o entre ellas. Para ello se utilizar el comando ping entre pc1 y pc2. a

5.2. PRUEBA2: ENCAMINAMIENTO

81

ping pc1 ->pc2

ping pc2 ->pc1

Una vez comprobado que existe conectividad entre las dos mquinas se da por concluida a esta prueba con resultado satisfactorio.

5.2.

Prueba2: Encaminamiento

En esta prueba se va a realizar un diseo de dos redes unidas por un encaminador. El n resultado nal debe ser que mquinas que estn en distintas redes puedan comunicarse por a e medio de un router. Primero disearemos la red en el interfaz web y ejecutaremos el diseo. n n

Diseo de la topologa n A continuacin asignaremos las direcciones IPa las mquinas de la siguiente forma: o a

82 pc1: eth0 : 10.0.0.2 pc2: eth0 : 11.0.0.3 router1: eth0 : 10.0.0.1 eth1 : 11.0.0.1

CAP ITULO 5. VALIDACION Y PRUEBAS

Asignacin de IP a pc1 o

Asignacin de IP a pc2 o

Asignacin IP a router1 o

Una vez asignadas las direcciones IPs se va a proceder a congurar las puertas de enlace de pc1 y pc2, para ello se usar el comando route. Las puerta de enlace de pc1 ser el interfaz a a eth0 del router1 y la de pc2 ser el interfaz eth1 de router1. a

Crear puerta enlace pc1

Crear puerta enlace pc2

Una vez creadas las puertas de enlaces entre las dos redes, vamos a comprobar la conectividad por medio del comando ping.

ping pc1 ->pc2

ping pc2 ->pc1

Como se puede observar existe conectividad entre pc1 y pc2 por medio de router1, con lo que el resultado de la prueba ha sido satisfactorio.

5.3.

Prueba3: ARP

Para esta prueba, vamos a comprobar las tablas ARP de dos mquina. ARP es un a protocolo de nivel de red responsable de encontrar la direccin hardware (Ethernet MAC) o que corresponde a una determinada direccin IP. o Para ello vamos a congurar una pequea red formada por dos ordenadores y comprobar n si cada mquina despus de enviar un mensaje contiene la direccin Ethernet de la otra a e o mquina. a Primero disearemos la red en el interfaz y posteriormente simularemos dicho diseo. n n

5.3. PRUEBA3: ARP

83

Diseo de la topologa n Una vez diseada la topolog de red, se va a proceder a asignar direcciones IPa las mquinas. n a a pc1: eth0 : 10.0.0.2 pc2: eth0 : 10.0.0.3 Como bien hemos comentando en las pruebas anteriores, usaremos el comando ifcong para asignar las direcciones IP.

Asignacin de IP a pc1 o

Asignacin de IP a pc2 o

A continuacin comprobaremos la conexin entre pc1 y pc2, usando el comando ping entre o o pc1 y pc2.

84

CAP ITULO 5. VALIDACION Y PRUEBAS

ping pc1 ->pc2

Vemos que existe conectividad entre pc1 y pc2, ahora procederemos a comprobar las tablas ARP de las dos mquinas. Para ello usaremos el comando arp. a

Listado de Tabla ARP de pc1

Listado de Tabla ARP de pc2

Como se puede observar en las imgenes anteriores, pc1 al hacer un ping a pc2 y no tener a su direccin Ethernet realiza el protocolo ARP. Pc1 pregunta cual es la direccin Ethernet o o de la mquina con direccin IP de pc2. Responde pc2 con su direccin Ethernet y se apunta a o o la direccin Ethernet de pc1 al igual que pc1 se apunta la direccin Ethernet de pc2 al o o responderle mediante el protocolo ARP. Ejecutando el comando arp en ambas mquinas se a puede observar que poseen la direccin Ethernet de la otra mquina, con lo cual la prueba ha o a resultado satisfactoria.

5.4.

Prueba4: Encaminamiento Avanzado

En esta ultima prueba vamos a comprobar la conectividad entre varias redes. Para ello diseamos la topolog de red con varios router. El resultado de esta prueba se va a intentar n a conseguir que pc1 se comunique con pc3, usando como encaminadores intermedios router1 y router2. Primero diseamos la topolog de red. n a

5.4. PRUEBA4: ENCAMINAMIENTO AVANZADO

85

Diseo de la topologa n Ahora procedemos a asignar las direcciones IP segn la siguientes directrices: u pc1: eth0 : 10.0.0.2 pc2: eth0 : 11.0.0.2 pc3: eth0 : 12.0.0.2 router1: eth0 : 10.0.0.1 eth1 : 11.0.0.1 router2: eth0 : 11.0.0.10 eth1 : 12.0.0.1

Asignacin de IP a pc1 o

Asignacin de IPs a router1 o

Asignacin de IPs a router2 o

Asignacin de IP a pc3 o

Una vez asignadas las direcciones IP a las mquinas, procederemos a realizar las tablas de a encaminamiento. Todo mensaje que env pc1 fuera de su red local lo va a enviar a router1 e para que lo encamine, igualmente router1 lo enviar a router2. En el caso de un mensaje que a env pc3 hacia fuera de su red lo va encaminar router2 y este posteriormente se lo enviar a e a router1. A continuacin se muestra como se congura las tablas de encaminamiento de las distintas o mquinas que van a entrar en juego en nuestra simulacin. a o

86

CAP ITULO 5. VALIDACION Y PRUEBAS

Tabla de encaminamiento de pc1

Tabla de encaminamiento router1

Tabla de encaminamiento router2

Tabla de encaminamiento pc3

Una vez conguradas las tablas de encaminamiento, vamos a comprobar mediante el comando ping si existe conectividad entre pc1 y pc3 y viceversa.

pc1 ->router1 ->router2 ->pc3

pc3 ->router2 ->router1 ->pc1

Comprobada la conectividad por medio de dos routers intermedios, se da por concluida la prueba con resultado satisfactorio.

Cap tulo 6

Conclusiones
Una vez concluido este proyecto, hemos puesto de maniesto que se puede entender el Web como un nueva forma de realizar interfaces de usuario. El objetivo principal de dotar a Netkit de un interfaz de usuario web ha sido realizado con xito. Una vez concluido el proyecto tenemos que el principal objetivo ha sido realizado e con resultados satisfactorios, gracias a las pruebas realizadas en el cap tulo anterior. Para la implementacin de este proyecto, sobre todo en el lado del usuario (interfaz), ha o sido muy importante la comprensin de la tecnolog Ajax. Gracias a Ajax, hemos podido o a realizar un interfaz de usuario muy similar al que se encontrar un usuario con cualquier a aplicacin de escritorio. Aunque cabe recordar que el interfaz de usuario es una parte de todo o el sistema general que se ha desarrollado para este proyecto. Se han cumplido tambin el objetivo de realizar un sistema multiplataforma, ya que e cualquier usuario puede utilizar NetWeb sin tener que amoldarse a un Sistema Operativo o instalar algn software adicional. u Todos los cheros y conguraciones realizadas durante el desarrollo del proyecto se ha realizado mediante XML. Por tanto el objetivo marcado de usar XML como estndar de a conguracin ha sido realizado satisfactoriamente. o Respecto a la licencia del software, NetWeb ser liberado, una vez concluido este proyecto, a mediante licencia GPL. Dicha licencia permitir a cualquier usuario o programador aadir a n funcionalidad adicional a Netweb.

6.1.

Conocimientos Adquiridos

Una vez concluido todo el desarrollo y documentacin del proyecto se va a proceder a o enumerar los conocimientos que se han adquirido desde el primer d que se empez a trabajar a o en este proyecto. El principal conocimiento adquirido, ha sido la programacin mediante la tecnolog o a Ajax. Actualmente Ajax es una tecnolog que esta siendo muy usada por empresas a pioneras en informtica y telecomunicaciones, como es Google. Ajax tambin esta presente a e en la mayor de sitios webs importantes y hay que se este empezando a crear un modelo a de negocio alrededor de esta tecnolog Gracias a estos conocimientos adquiridos se han a. abierto nuevos mercados laborales. Se han adquirido tambin conocimiento de gestin y diseo de un gran proyecto software, e o n 87

88

CAP ITULO 6. CONCLUSIONES gracias al cual hemos aprendido a capturar los requisitos necesarios para la realizacin, o as como su anlisis y posteriormente su diseo e implementacin de los objetivos a n o denidos al inicio del proyecto. Tambin se han adquirido conocimientos a la hora de realizar software mediante el e lenguaje de programacin Python. o Se ha mejorado el conocimiento sobre el protocolo HTTP. Se han adquirido conocimientos avanzados en diseo y conguracin de redes bajo n o entornos GNU/Linux. La documentacin es un tema muy importante en la realizacin de un proyecto, gracias o o al cual se han adquirido conocimiento de como enfocar, distribuir y redactar la memoria de un proyecto de estas caracter sticas. Pero el principal conocimiento adquirido ha sido una maduracin en trminos informticos o e a que se me ha brindado a la hora de realizar este proyecto.

6.2.

Posibles usos de NetWeb

NetWeb ha sido creada como herramienta docente para servir de apoyo a estudiantes de Ingenier informtica y/o telecomunicaciones. a a En titulaciones como Ingenier Informtica e Ingenier en Telecomunicaciones existen a a a diferentes asignaturas en las cuales se estudian los conceptos de las arquitecturas de redes de computadores. NetWeb, puede permitir a los alumnos el diseo de topolog de red y comprobar como n as funcionan algunos conceptos de las redes de computadores, por ejemplo como funciona el encaminamiento IP, como se congura un router o cualquier prueba que se pueda hacer con un conjunto de ordenadores conectados en red. Todas estas prcticas guiadas mediante a NetWeb puede permitir al alumnos asentar los conocimientos tericos vistos en clase. o Bien es sabido que a los alumnos les incomoda ir a hacer las prcticas a los laboratorios, a pero gracias a NetWeb pueden tener un entorno de simulacin en el que el alumno no o necesitar ninguna premisa previa para usar el sistema. Lo unico que necesita es un ordenador a conectado a internet y una navegador Web, con eso ya estar dispuesto a usar NetWeb desde a su propia casa y con cualquier Sistema Operativo.

6.3.

Trabajos Futuros

Este proyecto ha sido el inicio de un camino hacia un sistema docente que en el futuro puede avanzar y convertirse en una herramienta de apoyo del alumno. Siguiendo esta linea se van a exponer los posible trabajos futuros que se pueden derivar de este proyecto: Hacer que el sistema pueda ser usado por mltiples usuarios desde sus casas. La idea u que se pretende realizar en un futuro con este proyecto, es que los alumnos puedan hacer simulaciones de red desde sus propias casas.

6.3. TRABAJOS FUTUROS

89

Permitir guardar las distintas topolog de red diseadas. Imaginemos que hacemos una as n topolog de red, la cual queremos guardar para poder retomarla otro d Para ello se a a. necesitar guardar en algn chero la conguracin de red realizada para posteriormente a u o ser recuperada. Para ello se podr usar XML como tecnolog usada para almacenar a a las distintas topolog de red. Este trabajo no llevar mucho tiempo, ya que toda la as a conguracin existente en NetWeb esta realizada mediante XML. Unicamente habr o a que aadir una nueva opcin de importar topolog de red desde un chero externo. n o as Permitir que distintos usuarios puedan acceder y manipular un entorno de red. La idea principal es que varias personas puedan estar trabajando sobre una misma conguracin o de red. Esto se podr solventar aadiendo cuentas de usuario en el lado del servidor, y a n que cada usuario pudiera interactuar con las simulaciones de red de otros usuarios. Mejorar la interfaz de usuario. Actualmente el interfaz de usuario es bastante minimalista, aunque cumple con las necesidades impuestas para la realizacin de este proyecto. Se o podr mejorar el interfaz web de usuario aadiendo hojas de estilo CSS que ayudar a n a al usuario poder encontrar un sistema mucho mas amigable. Todos estos trabajos futuros son posible gracias a que el software desarrollado posee una licencia de Software Libre GPL (GNU Public Licence).

90

CAP ITULO 6. CONCLUSIONES

Bibliograf a
[1] BRIAN W. KERNIGHAN, ROB PIKE :The Practice of Programming, AddisonWesley Professional, 1999. [2] TANENBAUM, A. S.: Redes de computadoras, Prentice Hall, 1997. [3] DIVE INTO PYTHON: http://diveintopython.org/. [4] BRUCE W. PERRY: Ajax Hacks. [5] BEN LAURIE, PETER LAURIE Apache: The Denitive Guide, Third Edition. [6] MOD PYTHON http://modpython.org. [7] SALINAS, B. C., SAOR P. L., MIRA, J. M., RUIZ, A. P. Ruiz, GUILLEN, S. S.: IN, Latex una imprenta en sus manos, AD, 1997. [8] KERNIGHAN, B. W., PIKE, R.: The Practice of Programming, Addison-Wesley, 1999. [9] WORLD WIDE WEB CONSORTIUM: http://www.w3.org. [10] .GRUPO DE INVESTIGACION MOBIQUO: http://mobiquo.dat.escet.urjc.es [11] .GRUPO DE SISTEMAS http://gsyc.escet.urjc.es Y COMUNICACIONES (GSyC) DE LA URJC:

91

You might also like