SISTEMAS DISTRIBUIDOS DE REDES 5. MODELOS DE CLIENTE Y SERVIDOR ORIENTADOS A AGENTES MÓVILES Programación remota: Introducción y generalidades INTRODUCCIÓN Debido a la dificultad de la arquitectura actual de Internet para satisfacer el ritmo de crecimiento exponencial de sus usuarios, era necesario una nueva aproximación que satisfaciera dos necesidades aparentemente contradictorias: incrementar la sofisticación de los tipos posibles de comunicación sin restringir el ancho de banda disponible de los componentes de Internet. Una sola solución que satisface ambas necesidades son los Agentes móviles. GENERALIDADES Los agentes móviles tienen la capacidad de moverse por diferentes nodos de la red una o más veces, son autónomos con la función de ejecutar tareas, se envían como objetos a través de plataformas conservando su código, datos y estado de ejecución. Los agentes móviles, son capaces de ejecutarse en varias máquinas sin necesidad de que en ellas se encuentre su código. Como su nombre lo indica su código es móvil. También operan sin conexión, pueden trabajar sin una red funcionando. Si los agentes necesitan buscar información en la red el mismo puede esperar a que esta se reanude. Si los agentes necesitan buscar información en la red el mismo puede esperar a que esta se reanude. Se entiende por agente móvil a aquél que no está limitado al sistema donde se ejecutó, el mismo será capaz de moverse de una máquina a otra a través de la red. De esta forma podrá interactuar con el objeto deseado de forma directa sobre el sistema donde se encuentre dicho objeto. Un agente móvil no sólo realiza sus funciones en el ordenador que se encuentre, sino en otras que se encuentren en red, con el fin de buscar la información que se haya ordenado. Los mismos tienen la capacidad de decidir a qué servidor moverse. Estos agentes tienen la capacidad para su ejecución y cambiar hacia otro nodo sin cambiar su estado y seguir con su ejecución. VENTAJAS DE LA PROGRAMCIÓN REMOTA La ventaja táctica inmediata de la programación remota es el desempeño. Ya que será más rápido enviar un agente al servidor y directamente trabajar localmente en vez que remotamente. Por otra parte la ventaja estratégica de la programación remota es la personalización. La programación remota cambia no sólo la división de tareas entre los fabricantes de software, sino también facilita la instalación de ese software. Los componentes del servidor de una aplicación basada en programación remota, son dinámicamente instalados por la misma aplicación que ese está ejecutando desde el ordenador del usuario, desde que cada componente es un agente.
Características de los agentes móviles CARACTERISTICAS DE LOS AGENTES Movilidad: Tienen la capacidad de moverse de una máquina a otra. Pro-acción: Toman la iniciativa para alcanzar sus propios objetivos. Sociabilidad: Tienen la capacidad de comunicarse con otros agentes, personas, programas. Adaptación: Se comportan según sus experiencias. LOS AGENTES EN CUANTO A SU CARACTERISTICA FUNDAMENTAL Como se menciono anteriormente las características fundamentales que hacen valer más o menos a un agente son: autonomía, inteligencia y movilidad. Estas tres características dan origen a otra clasificación que se ha hecho sobre los agentes que es: * Agentes inteligentes: estos están diseñados para razonar interactivamente la información que se les va proveyendo para seleccionar la mejor opción. Son capaces de realizar tareas complicadas y de aprender de su entorno. LOS AGENTES EN CUANTO A SU CARACTERISTICA FUNDAMENTAL * Agentes autónomos: aquellos que son capaces de actuar sin intervención humana y que son capaces de tomar decisiones importantes por sí solos. Desde el punto de vista programación éstos agentes poseen un hilo (thread) propio. * Agentes móviles: aquellos que son capaces de trasladarse de un servidor a otro para reanudar su ejecución en un nuevo sitio destino. Como se puede apreciar las clasificaciones tienen una gran relación, es decir, los agentes autónomos normalmente para lograr un buen grado de autonomía tienen que ser inteligentes. A su vez los agentes inteligentes la mayoría de las veces son autónomos aunque habrá ocasiones en que su inteligencia sólo la denoten al procesar la información que reciben de un usuario interactivamente. Por último los agentes móviles (son parte fundamental de este sub-tema) suelen ser autónomos y en función de su grado de inteligencia esta la complejidad de las tareas que comunicación entre agentes Los agentes que forman un sistema pueden comunicarse entre ellos. Los agentes móviles pueden rechazar peticiones de otros agentes. Cómo se mueve un agente los agentes se transfieren de un sistema a otro en las siguientes fases: Inicio de la transferencia: El agente identifica el destino deseado, realiza una petición de viaje al sistema, si es aceptada recibe el permiso para realizar la transferencia. El sistema suspende la ejecución del agente e identifica el estado y las partes que serán enviadas. Se realiza la conversión del código y estado del agente (seriación) y se codifica según el protocolo seleccionado. El sistema realiza la autentificación del agente y se realiza la transferencia
Recepción del agente: El sistema destinatario acredita al cliente. Se realiza la descodificación del agente y la conversión del código y estado del agente (diseriación), el sistema crea la instancia del agente, restaura su estado y continúa su ejecución. Transferencia de otras clases (sistemas orientados a objetos): Este proceso se realiza cuando el agente se mueve de un sistema a otro, cuando se crea remotamente o necesita de otros objetos. Estas transferencias de las clases pueden realizarse durante la transferencia del agente o realizar peticiones cuando sea necesario. Llamamos seriación al proceso en el que se representa el estado de un agente mediante una serie. El proceso de descodificación de esta serie en el agente se le llama: diseriación. Ventajas de los agentes móviles y sus aplicaciones El interés en agentes móviles es motivado por los beneficios que proveen para la creación de sistemas distribuidos. Podemos considerar que los beneficios fundamentales que ofrece la tecnología de agentes móviles son: la reducción del tráfico en la red, la capacidad de desarrollar aplicaciones autónomas y la facilidad que ofrecen para crear aplicaciones que se ejecuten en paralelo y sean más rápidas. Sin embargo, los agentes móviles no sólo pueden ofrecernos dichas ventajas, en ellos esconden más beneficios que se pueden descubrir al llevar a cabo implementaciones. Así que se pueden mencionar siete muy buenas razones para comenzar a usar esta tecnología. 1. Ellos reducen el tráfico de la red: los sistemas distribuidos con frecuencia se basan en los protocolos de comunicación que involucran múltiples interacciones para lograr una tarea dada. Esto es especialmente verdad cuando las medidas para lograr una tarea dada. Esto es especialmente verdad cuando las medidas de seguridad son habilitadas. El resultado es una gran cantidad de tráfico en la red. Los agentes móviles nos permiten empacar una conversación y enviarla a un servidor destino donde las interacciones pueden tomar lugar localmente. 2. Ellos superan el estado latente de las redes: los sistemas críticos de tiempo real tales como robots en procesos de manufactura necesitan responder a cambios en su entorno en tiempo real. Controlando tales sistemas a través de una fabrica en red de un tamaño sustancial implica estados latentes significantes. Para sistemas de tiempo real críticos, tales estados latentes no son aceptados. Los agentes móviles ofrecen una solución, desde que ellos pueden ser despachados de un controlador central para actual localmente y ejecutar directamente las direcciones del controlador. 3. Ellos encapsulan protocolos: cuando los datos son intercambiados en sistemas distribuidos, cada servidor posee el código que implementa los protocolos requeridos para codificar propiamente los datos de salida e interpretar los datos de entrada respectivamente. Sin embargo, como los protocolos evolucionan para acondicionar nuevas eficiencias o requerimientos de seguridad, es muy difícil sino es que imposible tarea la de actualizar el código del protocolo apropiadamente. El resultado es frecuentemente que los protocolos llegan a ser un problema de herencia. Los agentes móviles, por otro lado, son capaces de moverse a servidores remotos con el fin de establecer canales basados en protocolos propietarios. 4. Ellos se ejecutan de forma asíncrona y autónoma: frecuentemente los dispositivos móviles tienen que depender de conexiones de red cara o frágiles. Esto es, tareas que requieren una conexión abierta continuamente entre un dispositivo móvil y una red no serán en la mayoría de los casos económica o técnicamente factibles. Las tareas pueden ser incrustadas en agentes móviles, los cuales pueden ser despachados hacia la red. Después de ser enviados los agentes móviles llegan a ser independientes de la creación de procesos y pueden operar de forma asíncrona y autónoma. El dispositivo móvil puede conectarse nuevamente más tarde para colectar al agente. 5. Ellos se adaptan dinámicamente: los agentes móviles tienen la habilidad de percibir su entorno y reaccionar de forma autónoma a cambio. Un conjunto de agentes móviles posee la habilidad única de distribuirse a sí mismos entre los servidores en una red de tal forma que mantiene la configuración óptima para la solución de un problema particular.
6. Ellos son heterogéneos por naturaleza: la computación en redes es fundamentalmente heterogénea,con frecuencia desde las perspectivas de hardware y software. Como los agentes móviles son generalmente independientes del ordenador y de la capa de transporte, y dependiente sólo de su entorno de ejecución, ellos proporcionan condiciones óptimas para una integración del sistema transparente. 7. Ellos son robustos y tolerables a fallas: la habilidad de los agentes móviles para reaccionar dinámicamente a situaciones desfavorables y eventos hace más fácil el construir sistemas distribuidos robustos y tolerables a fallas. Si un servidor está siendo apagado, todo los agentes que se ejecutan en ese servidor serán avisados y se les dará tiempo suficiente para que se envíen a sí mismos y continúen sus operaciones en otro servidor de la red. Aplicaciones Los agentes móviles proveen una nueva forma de generar aplicaciones que se adaptan mejor a problemas o tareas que tiene que ver con: Redes de cómputo Cómputo distribuido Diferentes plataformas y arquitecturas Redes de baja confiabilidad y desconexión parcial Sistemas de cómputo móviles inalámbricos Lenguajes de programación para el desarrollo y comunicación de los agentes móviles Lenguajes El lenguaje de programación de los creadores de aplicaciones de comunicación con agentes debe definir los algoritmos que siguen los agentes y la información que llevan conforme viajan por Internet. Para facilitar el desarrollo de las aplicaciones de comunicación, y la interacción entre lugares y agentes la programación debe ser: * Completo: para que cualquier algoritmo pueda ser expresado en el lenguaje. * Orientado a objetos: para obtener los beneficios de esta tecnología. * Dinámico: para que pueda transportar las clases que se requieran para crear instancias de agentes en máquinas remotas. * Persistente: para que el agente y su información sean respaldados en un medio no volátil. * Portable y seguro: para que se pueda ejecutar sobre cualquier plataforma de una forma segura. * Versátil: que permita tareas complejas de transportación, autentificación y control de acceso.
Lenguajes para agentes Pueden ser lenguajes de propósito general como: Java C++ Lisp Prolog O lenguajes específicos como: April Prolog/C CLOS/C Lenguaje de comunicación de agente Podemos encontrar los procedimentales: Perl TCL Declarativos: ACL BIBLIOGRAFIA Seven Good Reasons for Mobile Agents Mobile Agent Technologies, developer of AgentOS agent based operating system. Inventor of Automatic Thread Migration (ATM). National Institute for Standards and Technology, hosts a center for investigating security of mobile agents. Secure Mobile Agents (SeMoA), an open source mobile agent system with extensive support for cryptographic protection of mobile agents. Así como también en: "http://en.wikipedia.org/wiki/mobile_agent"