lunes, 26 de mayo de 2014

Agentes de red

Lange y Oshima, en el libro citado en los párrafos precedentes, mencionan que los agentes de red se caracterizan por su capacidad para desplazarse entre los nodos de una red de aplicaciones distribuidas. En el caso de agentes que no son de red, todo el proceso que se desea o necesita realizar se completa en el propio nodo en el que se inició su ejecución, nodo en el que se mantendrá durante todo su tiempo de vida. La solicitud de información a otros nodos se realiza mediante los mecanismos habituales de comunicación como son las llamadas a procedimientos remotos. Los agentes de red, con su capacidad para desplazarse, permitirán aprovechar las capacidades de los distintos nodos por los que se pueden desplazar para mejorar el rendimiento en la obtención del objetivo perseguido. Según Huhns y Singh, en el libro escrito el año 1998 con el título “Lecturas en agentes”, diversos autores propugnan que los agentes de red son una de las últimas etapas en la evolución de los sistemas distribuidos que en un futuro, podrían estar formados únicamente por una red compleja de agentes inteligentes móviles, lo que se considera un multiagente.

Una interesante definición de agente de red es propuesta por Lange y Oshima, en el libro citado, como: Un objeto de software que es capaz de migrar entre los nodos o dominios de una red en un sistema distribuido. Creado en un entorno de ejecución, el agente puede transportar su estado, valores de sus atributos que le sirven para determinar qué hacer cuando se reanuda la ejecución del mismo en el entorno destino, y su código, instrucciones que forman lo que el agente debe ejecutar, a otro contexto en donde reanudará la ejecución. Estos agentes aprovechan los recursos del nodo destino en beneficio del nodo que los inició. También se considera por otros autores que un agente móvil puede entenderse como la unión del código del agente, los estados de ejecución, los datos y el itinerario. Todos estos elementos deben ser portables para migrar y ser ejecutados en distintos nodos.

En palabras de Gutiérrez, en la tesis doctoral escrita el año 2006 bajo el titulo “Definición de un agente inteligente para la intercomunicabilidad automática de sistemas de aprendizaje basados en Internet”, las características de un agente de red reseñadas en los distintos trabajos sobre estos, son las mismas para los agentes en general pero extendidas y con matices respecto a la movilidad de que disponen: (1) Autonomía de movimiento, ya que será un proceso autónomo o semiautónomo, capaz de decidir cuándo, cómo y en qué condiciones migrar desde el nodo de residencia actual a otro. (2) Persistencia en la movilidad, ya que el objeto agente se envía manteniendo su estado, código y datos al nodo destino. (3) Capaz de suspender su ejecución ante una migración y capaz de reanudarla tras la migración en el mismo punto donde se quedó. (4) Comunicativo con el medio, con otros agentes y con el usuario con el que trabaja, a pesar de los cambios. Es decir, es capaz de interactuar con los agentes de un nuevo nodo, con el propio nuevo nodo y con el usuario que ahora puede estar en otro nodo distinto, más alejado. (5) Enfocado a la realización de tareas, bien delegadas por su usuario o bien obtenidas a través del estado del entorno en el que se encuentra. (6) Independiente de la conexión, si esta cae por algún motivo, el agente podrá migrar a otro nodo con conexión si es necesario o esperar a que la conexión se reanude bien permaneciendo activo, bien desactivándose. (7) Ejecutable asíncronamente, mediante su propio hilo de ejecución, independiente del resto de procesos y agentes ejecutados en el mismo nodo. (8) Duplicable, o mejor autoduplicable mediante la creación de un clon de sí mismo, para que le ayude en la tarea ocupando así más recursos del nodo para completar una tarea que puede ser prioritaria.

Gutiérrez menciona en su tesis doctoral que los agentes de red deben: (1) Permitir el cómputo asíncrono y autónomo. Asíncrono por poseer su propio hilo de ejecución que les permite ejecutarse independientemente del resto de procesos del nodo y autónomo por su capacidad para decidir cuándo y cómo actuar según el estado de su entorno. (2) Ser heterogéneos. (3) Propiciar entornos robustos y a prueba de fallos, dada su habilidad para responder a los cambios en su entorno y realizar cambios en su forma de trabajar migrando, esperando o, permaneciendo activos, trabajando aún cuando no hay conexión. (4) Favorecer el procesamiento paralelo. Ya que una tarea compleja, podría ser descompuesta en varias por un agente y encargadas cada una de ellas a otro agente que la realiza, o bien utiliza su hijo para completarla o bien migra a otro nodo donde aprovecha la capacidad del mismo para realizar su tarea. Al final, todas las tareas parciales son reunidas por el agente principal para componer la solución al trabajo. (5) Reducir el tráfico de red. Ya que el uso de agentes permite la solicitud de un cierto servicio y la delegación en el agente de la solicitud que considere oportuna en el nodo de residencia. Sin el uso de agentes, cada servicio del nodo destino requiere una llamada a procedimiento remoto. (6) Mantener comunicación punto a punto. En el paradigma cliente-servidor, el más utilizado en Internet, los servidores no se caracterizan por la comunicación horizontal entre servidores del mismo tipo, que podría resultar muy beneficiosa. En cambio, los agentes son entidades que pueden servir como cliente servidor o bien comunicarse en su mismo nivel con otros agentes. Se menciona también que existen desventajas como son: (1) La falta de seguridad. Los agentes son tan flexibles y se les debe permitir tantas posibilidades que los sistemas sobre los que trabajan están a merced de usuarios mal intencionados. Para solventar este problema se requerirán certificaciones que autentifiquen los agentes para evitar los ataques a los nodos mediante agentes malignos que consuman recursos y se clonen sin más finalidad que la de ocupar recursos. También se requerirán cifrados de datos para los intercambios entre el usuario y sus agentes, entre agentes y entre nodos cuando se deba producir la transmisión de los agentes. (2) Limitaciones de los lenguajes de programación en los que se deberían programar.

No hay comentarios:

Publicar un comentario