Encuentro de Investigación en IE, 17—18 Marzo, 2005 Encuentro de Investigación en Ingeniería Eléctrica Zacatecas, Zac, Marzo 17 —18, 2005 Agente Aglet: Un nuevo paradigma para el acceso a bases de datos distribuidas Selene León Sol, Sistemas Computacionales, Facultad de Contaduría y Administración Campus I,Universidad Autónoma de Chiapas, Chiapas CP-29000. TEL: +(961)6154249, correo-e: [email protected] y Luis Ernesto Mancilla Espinosa, Instituto Tecnológico de León,Guanajuato CP-37290. TEL: +(477)7105200, correo-e: [email protected] Resumen — En este proyecto pretendemos difundir un nuevo paradigma para el acceso a base de datos distribuidas y probar las características que lo hacen ser una de las opciones mas prometedoras en el futuro de las ciencias computacionales. Nos referimos a los agentes móviles. El presente trabajo ejemplifica el uso de esta tecnología para el acceso a bases de datos distribuidas a través de Internet. Para la implementación se ha utilizado el sistema de agentes móviles Aglets, basado en Java. Se han querido comprobar principalmente dos aspectos de la tecnología: su transparencia para trabajar sobre redes heterogéneas y la prometedora disminución de ancho de banda en la red. Iniciaremos con una visión general de esta tecnología y sus ventajas. Mas adelante describiremos las características generales de nuestra aplicación y su funcionamiento. Finalizamos con el análisis de los resultados experimentales y las conclusiones. Abstract — In this paper, we try to make known a new paradigm for distributed database access and we test the properties that make it be a promising option in computer sciences future. These are mobile agents. This project presents a use of this technology accessing distributed databases over the internet. It has been implemented using aglets, a java based mobile agents system. We check two factors: transparency for traveling over heterogeneous networks and band wide decrease. First we will describe aglet’s concepts and advantages. For the next we will give details about design and implementation of our application. Finally we will present experimental results and conclusions. Palabras clave — Agente Móvil, Aglet, Base de Datos Distribuida, Sistema Distribuido. C I. INTRODUCCIÓN ON LA LLEGADA de la era de Internet y las facilidades que nos ofrece, cada vez es más común el acceso a recursos geográficamente muy distantes unos de otros. De estos recursos, la información almacenada en bases de datos distribuidas ocupa un lugar esencial. La red Internet ofrece la infraestructura adecuada para conectar estos recursos a través de una amalgama de máquinas, sistemas operativos y redes de computadoras de diferentes tipos. En este contexto, la saturación del ancho de banda de la red se convierte en el problema clave a 339 Encuentro de Investigación en IE, 17—18 Marzo, 2005 340 solucionar y aquí es donde aparece la tecnología de agentes móviles, al permitir interactuar localmente con esas bases de datos remotas. La tecnología de agentes móviles se ha convertido en una de las mas prometedoras y atractivas para las ciencias computacionales al inicio de este nuevo siglo. Los expertos aseguran que no es solamente una tecnología prometedora, sino que además está emergiendo como una nueva forma de pensar, un nuevo paradigma para el diseño de sistemas distribuidos. Esto implica que los agentes móviles jugarán un papel importante en la recuperación y búsqueda de información en Internet. Un agente es un programa de software que realiza alguna tarea de un usuario en nombre de este. La propiedad de movilidad le permite viajar a través de una red, puede parar su ejecución, moverse a otro nodo de la red mientras mantiene su estado y reiniciar su ejecución en el nodo destino. Dentro de las ventajas más importantes que los agentes móviles ofrecen y que llaman nuestra atención para este trabajo es la reducción del tráfico de una red y su habilidad para trabajar dentro de ambientes heterogéneos desde el punto de vista de software y hardware. En el Laboratorio de Investigación de IBM en Tokio, los investigadores Lange y Oshima han creado una Herramienta para el desarrollo de sistemas de agentes móviles, le han llamado Aglets Workbench, está basado 100% en Java (el lenguaje de Internet), lo que le permite heredar todas las ventajas de este lenguaje. Dentro de las que llama nuestro interés: su portabilidad. II. FUNDAMENTOS A. Agente de Software La definición de agente de software y su diferencia con un programa, han sido temas muy discutidos [1]. La mayoría de los autores lo definen como un programa que actúa en nombre del usuario, realizando las tareas de este bajo ciertas restricciones. Hay agentes de muchos tipos y operan de maneras diferentes, se pueden encontrar en sistemas operativos, redes, bases de datos, etc. Sin embargo, dentro de esta variedad, todos ellos comparten una característica: viven dentro de un ambiente [2]. Un agente requiere de un ambiente para su implementación y ejecución. B. Agente Móvil La movilidad es una propiedad opcional de los agentes. Un agente móvil tiene la capacidad de transportarse de una computadora a otra . Durante su recorrido por distintos sistemas tienen la posibilidad de obtener servicios ofertados localmente en los sistemas visitados y dialogar con otros agentes [3]. Un agente móvil es libre de viajar hacia todas las computadoras conectadas a una red. Comenzando su ejecución en una terminal, puede repentinamente parar, transportarse por si mismo a otra terminal y reanudar su ejecución ahí. Esto se debe a que lleva consigo código y estado. C. Ventajas que ofrece un Agente Móvil Brindan importantes beneficios en la creación de sistemas distribuidos. Entre las principales ventajas, Lange y Oshima [4] mencionan las siguientes: Encuentro de Investigación en IE, 17—18 Marzo, 2005 341 Reducen el tráfico en la red. Los agentes móviles permiten empaquetar un mensaje y despacharlo a un nodo destino, donde los procesos se llevan a cabo localmente (Figura 1). La idea es sencilla: es preferible mover los procesos hacia los datos, que los datos hacia los procesos. Oponiéndose al paradigma de “Llamados a Procedimientos Remotos RPC” Pueden operar sin conexión. Sistemas críticos de tiempo real, como los robots en procesos de manufactura, necesitan responder inmediatamente a los cambios del medio. Para los sistemas en Figura 1. Agentes móviles y reducción de carga en la red [2]. tiempo real, los estados de inactividad o de espera no son aceptables. Los agentes móviles ofrecen una solución ya que tienen la capacidad de seguir trabajando aún cuando no exista una conexión abierta a red. Encapsulan protocolos. Cuando los datos se intercambian en un sistema distribuido, cada computadora posee el código que implementa los protocolos necesarios para codificar correctamente datos de salida e interpretar datos de entrada. Sin embargo, los protocolos tienen que evolucionar para controlar nuevos requerimientos de eficiencia o seguridad, pero mejorar el código del protocolo es una tarea difícil o casi imposible. Los agentes móviles se pueden mover a computadoras remotas con la capacidad de establecer canales basados en protocolos propietarios. Se ejecutan de manera asíncrona y autónoma. Frecuentemente los dispositivos móviles deben confiar en conexiones de red frágiles. Para resolver este problema, las tareas pueden ser incrustadas en agentes móviles. Después de ser despachados, los agentes móviles se vuelven independientes del proceso de creación y pueden operar de manera asíncrona y autónoma. Son dinámicos. Los agentes móviles tienen la capacidad de percibir su ambiente de ejecución y reaccionar automáticamente a cambios. Poseen la habilidad única de trasladarse ellos mismos a través de las computadoras en la red y establecer la configuración óptima para resolver un problema en particular. Son naturalmente heterogéneos. Desde ambas perspectivas, de hardware y de software. Son robustos y tolerantes a fallas. La capacidad que poseen los agentes móviles de reaccionar dinámicamente ante eventos no favorables de su ambiente facilita el desarrollo de sistemas distribuidos robustos y tolerantes a fallas. Si una computadora es apagada, todos los agentes ejecutándose en ella serán alertados y tendrán un tiempo determinado para moverse y continuar su operación en otra computadora de la red. Las desventajas más evidentes en el desarrollo de agentes móviles se refieren a cuestiones de Encuentro de Investigación en IE, 17—18 Marzo, 2005 342 seguridad y a algunas limitantes que presentan los lenguajes de programación para su diseño. D. Java Es un lenguaje orientado a objetos, interpretado, robusto, seguro, de arquitectura neutral, portable y multihilo [5]. Algunas personas lo definen como un mejor C++, otras personas lo llaman el lenguaje de Internet. La plataforma Java permite correr la misma aplicación Java en muchos tipos diferentes de computadoras [6]. Cualquier aplicación Java puede ser fácilmente distribuida sobre Internet, o cualquier red, sin problemas de compatibilidad de sistemas operativos o hardware. Por ejemplo, se podría correr una aplicación de Java en una PC, una Macintosh o incluso sobre nuevas tecnologías como teléfonos de pantalla para Internet. La idea es simple: el software basado en Java funciona bien en cualquier lugar. Las características de Java lo hacen el mejor lenguaje para la programación de agentes móviles. E. El modelo Aglet Cuando el lenguaje de programación Java estuvo disponible en 1995, el Laboratorio de Investigación de IBM en Tokio decidió crear un nuevo sistema para agentes móviles con un proyecto al que llamó Aglets, que operarían cómodamente en el sistema abierto de Java y la Internet. En 1996, apareció una versión de Aglets Alpha, que ahora se llama Aglets Software Development Kit [7]. A finales del año 2000 el proyecto paso a ser “open source” [8] y ahora es desarrollado y mantenido por la comunidad de Aglets. Los Aglets son una innovación desarrollada por IBM [9] y es el sistema de agentes que ha tenido mayor cobertura de la prensa [10]. Un aglet es un agente de Internet basado en Java. El aglet representa un paso adelante en la evolución del contenido ejecutable de Internet, ya que introduce código de programa que puede ser transportado junto con la información de estado. Los aglets son objetos de Java que pueden moverse de una terminal de Internet a otra. Esto quiere decir, que un aglet que se ejecuta en una terminal puede repentinamente parar su ejecución, transportarse por si mismo a otra terminal remota, y reanudar su ejecución ahí [11]. También se puede pensar en un aglet como una extensión de los applets y servlets de Java. Los aglets son hospedados por un servidor de aglets de manera similar a como los applets son hospedados por un navegador. El servidor de aglets proporciona un ambiente apropiado para que los aglets se ejecuten en él. III. DESCRIPCIÓN DE LA APLICACIÓN La aplicación seleccionada es sencilla, pero completa, ya que con ella podemos representar de manera eficiente todo el mecanismo o funcionamiento de los agentes móviles aglets. El objetivo es realizar consultas y recuperar información de una base de datos distribuida haciendo uso de la tecnología de aglets. La arquitectura final de nuestro sistema se ilustra en la figura 2. Los principales componentes del sistema se implementaron de la siguiente manera: 1. Sistemas Operativos. Para conseguir la heterogeneidad de software se han seleccionado dos sistemas operativos diferentes. El primer servidor ubicado en la parte superior de la figura, Encuentro de Investigación en IE, 17—18 Marzo, 2005 343 corresponde al sistema operativo Windows NT 4.0. Los dos servidores restantes cuentan con el sistema operativo Linux RedHat 7.2. El sistema operativo de las estaciones cliente, representadas por el nodo a la izquierda de la figura, debe ser indiferente. 2. Base de Datos Distribuida. Para esta base de datos se requiere de al menos dos DBMS diferentes. Por sus características, ventajas y compatibilidad con los sistemas operativos anteriormente mencionados se ha seleccionado Microsoft SQL-Server 2000 corriendo sobre plataforma Windows NT y MySQL Server implementada sobre plataforma Linux RedHat. 3. Controladores JDBC. La tecnología JDBC nos permite una fácil conexión a las bases de datos, Figura 2. Arquitectura Final del Sistema. debemos seleccionar el controlador adecuado para cada manejador de base de datos y sistema operativo. 4. Servidores de Agentes Aglets. Como podemos ver en la figura 2, todos los equipos, tanto servidores como la estación cliente deben tener un servidor de agentes o Tahití ejecutándose. Esto es absolutamente necesario, ya que de esta aplicación depende una ejecución segura de los aglets. 5. Agente Aglet Maestro. Lo hemos nombrado SecpiMasterAglet. Es un agente estacionario. Debe mantenerse ejecutando en ambos lados de la aplicación, en los servidores y en las estaciones cliente. Así, permite a los servidores hacer al mismo tiempo el papel de clientes y viceversa. En el lado del cliente realiza la función más importante, funciona como web server, de manera que puede ser visible en un navegador web. Presenta al usuario una interfaz amigable para realizar las consultas a las bases de datos. En el momento en que el usuario lo solicita se encarga de enviar o despachar los aglets esclavos con la información necesaria para realizar la consulta. Detecta los mensajes entrantes con los resultados de la consulta. Estos resultados son desplegados en la misma Encuentro de Investigación en IE, 17—18 Marzo, 2005 344 interfaz. En el lado del servidor se encarga de detectar, recibir y administrar a los aglets esclavos. 6. Agentes Aglets Esclavos. Los hemos nombrado SecpiSlaveAglets. Son agentes móviles. Estos agentes viajan a través de la red, son creados por el Aglet Maestro y en el nodo destino realizan la conexión con la base de datos a través de controladores JDBC. 7. Navegador web. El usuario requiere de un navegador web que le permita tener acceso a la interfaz del Servidor Web de Aglets generada por SecpiMasterAglet. IV. RESULTADOS EXPERIMENTALES Demostramos exitosamente que es posible resolver los problemas de heterogeneidad de redes. Jugaron el papel de clientes y servidores equipos con diferentes características de hardware y software. Este conjunto de equipos bien pueden representar el escenario de una red común de computadoras. Por lo tanto percibimos que nuestro sistema es adaptable a cualquier red heterogénea. El demostrar que el ancho de banda de la red que ocupa una aplicación basada en agentes móviles es reducida nos llevó a la necesidad de monitorear el tráfico en la red. Se seleccionó una herramienta para monitorear el tráfico actual de la red, ésta nos proporciona datos interesantes como el promedio de tráfico observado durante el tiempo de captura y el porcentaje de utilización de la red. Se tomaron diferentes muestras evaluando las consultas para los casos de un cliente y dos clientes simultáneamente. También se desarrolló una aplicación similar con la ayuda de un lenguaje visual y se tomaron muestras de utilización de la red con el fin de comparar nuestra aplicación con una sistema tradicional. Los resultados obtenidos demuestran que el tiempo de respuesta de la consulta es mayor en Figura 3. Comparación con un sistema tradicional. nuestro sistema basado en agentes, sin embargo el ancho de banda (bytes o paquetes por segundo) es mucho menor. Los datos que nos arroja el análisis de consultas con diferentes densidades demuestran que el aprovechamiento del ancho de banda por parte de los agentes es mejor entre más densa sea la Encuentro de Investigación en IE, 17—18 Marzo, 2005 345 consulta. Para nuestra consulta más densa el sistema basado en aglets ocupó el 18.64% del ancho de banda que ocupó el sistema tradicional (figura 3). V. CONCLUSIONES La tecnología de agentes móviles proporciona una solución al derroche de ancho de banda que se produce en la red. Una transacción realizada entre un cliente y el servidor puede requerir varios viajes por la red para completarse, cada uno de los cuales provoca cierto tráfico de datos. Aplicando a este problema la tecnología de agentes móviles se puede crear un agente que, dada la transacción a realizar, se traslade desde el cliente al servidor, complete en él la operación y regrese con los resultados, necesitando de esta manera sólo dos viajes, eliminando todo el tráfico intermedio de datos y resultados. En los sistemas basados en agentes móviles tanto los datos como el código son móviles, es decir: es la computación misma la que se traslada hasta el sistema remoto a través de la red, mientras que en los modelos anteriores de objetos distribuidos lo que realmente se transmite son las llamadas a métodos remotos. Estamos convencidos de que los agentes móviles representan un nuevo paradigma para la computación distribuida sobre Internet. En el desarrollo de esta aplicación creemos conseguir un patrón de diseño para futuras aplicaciones que requieran esta misma funcionalidad, esto es, la recuperación de información de bases de datos distribuidas. Quizá debamos considerar que la mayor parte de las ventajas de este sistema sobre otros sistemas de agentes son gracias a los beneficios que obtiene de su plataforma, ya que Java les proporciona: portabilidad, seguridad y robustez. El aspecto de seguridad en los aglets, así como en cualquier sistema de agentes móviles es el mas difícil de resolver, aunque existe la propuesta de un modelo de seguridad se visualiza aún mucho trabajo futuro en este aspecto. Proponemos como trabajo futuro la investigación e implementación de un modelo de seguridad en el presente trabajo o en alguna aplicación propia para agentes móviles. Se exige al programador muchos conocimientos para aplicaciones demasiado simples. Para una sola aplicación se requieren de muchas horas de programación usando esta tecnología mientras que al realizarla con otro sistema se requeriría de un tiempo mínimo. Un reto para esta tecnología es crear un entorno de programación mucho más fácil y rápido de entender. La lista de correos de aglets creada por Sourceforge nos fue de gran utilidad para el desarrollo de este proyecto. Por último, aunque esta tecnología emergente es muy joven aún y no ha logrado consolidarse, creemos oportuna contemplarla como una brillante opción a tener en cuenta en el área de ingeniería de sistemas. REFERENCIAS [1] Franklin, Stan y Graesser, Art. 1996. Is it an Agent, or just a Program?: A Taxonomy for Autonomous Agents. Proceedings of the Third International Workshop on Agent Theories, Architectures, and Languages. Institute for Intelligent Systems, University of Memphis. Berlin, Springer-Verlag. Encuentro de Investigación en IE, 17—18 Marzo, 2005 [2] 346 Lange, Danny B. y Oshima, Mitsuru. 1998. Programming and Deploying Java Mobile Agents with Aglets. Editorial AddisonWesley. United States of America. [3] Pavón Mestras, Juan. 1999. Tutorial: Agentes Móviles. Simposio Español de Informática Distribuida. Departamento de Sistemas Informáticos y Programación, Universidad Complutense de Madrid. [4] Lange, Danny B. y Oshima, Mitsuru. 1999. “Seven Good Reasons for Mobile Agents”. Communications of the ACM. Marzo. Vol. 42, No. 3. [5] “The Java Language: an Overview”. (Documento web). http://java.sun.com/docs/overviews/java/java-overview-1.html [6] “What is Java Technology?”. (Documento web). http://java.sun.com/java2/whatis/ [7] Tai, Hideki y Kosaka, Kazuya. 1999. “The Aglets Project”. Communications of the ACM. Marzo. Vol. 42, No. 3. New York. [8] “Open Source”. (Sitio web). http://www.opensource.org [9] Venners, Bill. 1997. “Solve real problems with aglets, a type of mobile agent”. Java World - Under the Hood Magazine. Mayo. [10] Kiniry, Joseph y Zimmerman, Daniel. 1997. “A Hands-on Look at Java Mobile Agents”. IEEE Internet Computing. Julio-Agosto. [11] “IBM Japan Research Group Aglets Workbench”. (Sitio web). Marzo del 2002. http://www.trl.ibm.co.jp/aglets/index.html