1 Agentes Móviles Andrés Marín López Gestión de la Información Multimedia en Internet
2 Indice l Introducción: movilidad de datos y código: – RPCs, HTTP, NFS –Computación distribuida y migración de procesos l Agentes Móviles: –Introducción –IBM Aglets –MASIF –IKV++ GrassHopper
3 Introducción l Las redes nos permiten distribuir cálculos, datos, compartir recursos, etc. l Alternativas: –Modelo cliente/servidor: RPCs, HTTP –Movilidad de datos: NFS –Movilidad de código: Migración de procesos –Programación remota: agentes móviles
4 RPCs l Sun Microsystems, Inc. (RFC 1057) l Protocolo de mensajes para acceso a procedimientos remotos l Uso de representaciones de datos independientes de la arquitectura (XDR) l Utilización de stubs (rpcgen) para adecuar las llamadas y las respuestas.
5 Distintas versiones Servicio de portmaper (rpcinfo) Poco flexible o personalizable Trasiego elevado de datos Optimización de servidores Cliente Servidor Cl_stubSrv_stub RPCs
6 HTTP l Servicio de información basado en el modelo cliente servidor (RFC 1945) l Utilización de MIME para contenidos multimedia l Protocolo sin estado (encima de TCP): TCP connect Request (method, URL, ver.) Header + Data Response (ver., code) Header + Data TCP disconnect
7 HTTP: personalización l El servidor es genérico y el protocolo sin estado –La personalización requiere procesamiento adicional en el servidor –Utilización de cookies y campos ocultos para mantener un estado –Alternativa: HTTP/1.1(RFC 2616) l Unión “transparente” de conexiones
8 NFS l Sun Network File System (RFC 1094 y RFC 1813) l Acceso remoto transparente a ficheros a través de redes l Portable mediante el uso de Sun RPC l Sistema de ficheros en red (granularidad) l Requiere red de buenas prestaciones (LAN) l Otras alternativas: NBD
9 Movilidad de código l Computación distribuida: –DIPC –PVM –Clusters –Hurds l Migración de procesos: Worms, MOSIX, Sprite
10 Computación distribuida l Dificultad de distribuir el algoritmo l Ayudas del compilador y entorno l Equilibrio entre procesamiento en los nodos y comunicaciones entre nodos l Balance dinámico de carga l Modelos: SIMD, MISD, MIMD l http://wallybox.cei.net/dipc l http://www.epm.ornl.gov/pvm/intro.html
11 Migración de procesos l Soportada por el kernel: –MOSIX –Sprite –Charlotte, Mach, Locus, V Kernel l En espacio de usuario: –Emerald –Tui
12 Beneficios La migración de procesos: l permite el balance de carga l mejora la tolerancia a fallos l mejora el acceso a datos locales (disminuye el coste de comunicaciones
13 Worms l Shoch & Hupp (Xerox PARC) l Programas que se mueven en distintas máquinas y se replican en máquinas poco cargadas l Un gusano está formado por múltiples segmentos cada uno corriendo en una máquina l Búsqueda de máquinas libres a las que enviar los segmentos l Cada segmento conoce la ubicación de los demás y se comunican via multicast
14 MOSIX l Barak & Wheeler (Hebrew Univ Jerusalem) l http://www.mosix.cs.huji.ca.il l Todos los nodos de un cluster se presentan como una única imagen del sistema: Un proceso corriendo en un nodo accede a los otros de forma transparente l Migración automática (cambios de contexto) entre nodos débilmente acoplados l Kernels interactúan al nivel de llamada al sistema l Máquinas con varios procesadores: master/slave
15 MOSIX: arquitectura l Lower-kernel: rutinas de acceso a recursos locales (discos locales, etc.) l Upper-kernel: nivel independiente de la máquina, referencias a todos los recursos l Utilización de RPCs para la ejecución de las llamadas al sistema en la máquina concreta l Linker-level: descompone las llamadas a RPCs en llamadas a procedimientos y lista de parámetros l Hilo Embajador: invoca el procedimiento del lower-kernel
16 upper-level Linker-level Lower level Lower level Lower level embajador Proceso de usuario system-call (abstract) Rproc_name (machine_id, param_list) RPC system call
17 MOSIX: características –Kernel replicado en cada nodo –Transparencia de acceso a bus y red –Control descentralizado (decisiones indep.) –Autonomía de cada nodo –Sistema de ficheros unificado –Escalado (heurísticos de gestión y migración) –Balance de carga adaptativo –Configuración dinámica (añadir/quitar nodos) –Compatibilidad con AT&T UNIX (Linux)
18 Sprite l Douglis & Ousterhout (UCB) l Evacuación y ejecución remota de procesos l Localización de máquinas ociosas l Gestión del estado: memoria virtual ficheros abiertos canales de mensajes estado de ejecución otros estados del kernel (pid, uid, cwd, etc.)
19 Transferencia de Memoria Locus, Charlotte V System Accent Sprite S S S S D D D D NFS exec mem transfer & exec mem transfer
20 Nuevos enfoques: Agentes Móviles
21 Agentes móviles l Grandes esperanzas depositadas en grandes plataformas l Metodologías, APIs, librerías l Los lenguajes interpretados son más sencillos de incorporar y controlar – agentes controlados por la VM (o intérprete) – VM controlada por la plataforma
22 Ventajas de agentes móviles l Disminución del volumen de comunicaciones l Autonomía, toma de decisiones l Representación del usuario: perfil, interés, referencias a UI/GUI l Extensibilidad: cooperación entre agentes l Capacidad de adaptación
23 Places Una red de ordenadores engloba un conjunto de sitios que ofrecen servicios a los agentes móviles que entren: Personal communicatorSitio: proveedor de servicios Plataforma de agentes móviles
24 Movimiento l Los agentes se mueven de una plataforma a otra de forma autónoma l Plan de viajes l Serialización de los agentes (estado) l Envío de código necesario l Creación, arranque, interrupción, parada y rearranques (eventos?)
25 Comunicaciones l Encuentros: –Varios agentes se reunen en una misma plataforma l Conexiones: –Intercambio asíncrono de información entre agentes en distintas plataformas –Mensajes, pizarras, etc.
26 Seguridad l La autoridad de un agente es el usuario o entidad física (o jurídica) a que representa. l Una región es un conjunto de redes operados por una misma autoridad l Una plataforma destino comprueba la autoridad de un agente que quiere entrar en ella l La plataforma comprueba certificados y administra las listas de acceso a recursos
27 Telescript l General Magic: http://www.genmagic.com l Lenguaje: completo, OO, dinámico, persistente, portable, seguro, centrado en comunicaciones l Secciones críticas (resources) l Permits (permisos basados en autoridad) l go l Eventos de señalización
28 Ejemplo Shopper: class (Agent, EventProcess) = ( public see initialize see live see meeting see getReport private see goShopping see goHome property client: Telename; desiredProduct: String; desiredPrice, actualPrice: Integer; exception: Exception|Nil; );
29 Ejemplo: live live: sponsored op (cause Exception|Nil)= {homeName:= here.name; homeAddres:= here.address; permit:= Permit( (if *.permit.age==nil{nil} else{(*.permit.age*90).quotient(100)}), (if *.permit.ch==nil{nil} else{(*.permit.ch*90).quotient(100)}) ); {try{*.goShopping(Warehouse.name)} catch e: Exception{exception=e}} catch e: PermitViolated{exception=e}; {try{*.goHome(homeName, homeAddress)} catch Exception {} ); live: sponsored op (cause Exception|Nil)= {homeName:= here.name; homeAddres:= here.address; permit:= Permit( (if *.permit.age==nil{nil} else{(*.permit.age*90).quotient(100)}), (if *.permit.ch==nil{nil} else{(*.permit.ch*90).quotient(100)}) ); {try{*.goShopping(Warehouse.name)} catch e: Exception{exception=e}} catch e: PermitViolated{exception=e}; {try{*.goHome(homeName, homeAddress)} catch Exception {} );
30 Ejemplo: goShopping goShopping: op (warehouse: ClassName) throws ProductUnavailable= { *.go(Tiket(nil,nil,warehouse); *.enableEvents(PriceReduction(*.name)); *.signalEvent(PriceReduction(),’responder); *.enableEvents(PriceReduction(here.name)); actualPrice= desiredPrice+1; while (actualPrice>desiredPrice) { *.getEvent(nil,PriceReduction()); try{actualPrice=here@Warehouse. getCatalog()[desiredProduct].price; } catch KeyInvalid {throw ProductUnavailable} } }; desiredPrice) { *.getEvent(nil,PriceReduction()); try{actualPrice=here@Warehouse.", "description": "getCatalog()[desiredProduct].price; } catch KeyInvalid {throw ProductUnavailable} } };.", "width": "800" } 31 Ejemplo: goHome goHome: op (homeName:Telename, homeAddress: TeleAddress)= { *.disableEvents(); *.clearEvents(); *.go(Ticket(homeName, homeAddress); *.enableEvents(PartEvent(client)); [email protected](Petition(client)); *.getEvent(nil,PartEvent(client)) }; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_31.jpg", "name": "Ejemplo: goHome goHome: op (homeName:Telename, homeAddress: TeleAddress)= { *.disableEvents(); *.clearEvents(); *.go(Ticket(homeName, homeAddress); *.enableEvents(PartEvent(client)); [email protected](Petition(client)); *.getEvent(nil,PartEvent(client)) };", "description": "Ejemplo: goHome goHome: op (homeName:Telename, homeAddress: TeleAddress)= { *.disableEvents(); *.clearEvents(); *.go(Ticket(homeName, homeAddress); *.enableEvents(PartEvent(client)); [email protected](Petition(client)); *.getEvent(nil,PartEvent(client)) };", "width": "800" } 32 Bibliografía l Mobility: processes, computers, and agents ed. D. Milojicic, F. Douglis, and R. Wheeler ACM Press, 1999 l Mobile Agents, by W. R. Cockayne and M. Zyda, Manning Publications, 1998 l Mobile Agents, ed. by K. Rothermel and R. Popescu-Zeletin, LNCS, April 1997 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_32.jpg", "name": "Bibliografía l Mobility: processes, computers, and agents ed.", "description": "D. Milojicic, F. Douglis, and R. Wheeler ACM Press, 1999 l Mobile Agents, by W. R. Cockayne and M. Zyda, Manning Publications, 1998 l Mobile Agents, ed. by K. Rothermel and R. Popescu-Zeletin, LNCS, April 1997.", "width": "800" } 33 Agentes Móviles IBM Aglets { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_33.jpg", "name": "Agentes Móviles IBM Aglets", "description": "Agentes Móviles IBM Aglets", "width": "800" } 34 Introducción l Desarrollado por IBM (alphaworks) l Plataforma neutra (basada en Java) l El entorno de Aglets ofrece: –Esquema global de nombres únicos de agentes –Itinerarios de viaje (con patrones complejos y gestión automática de fallos) –Comunicación asíncrona: pizarras y mensajes –Envío de estado y carga de clases por la red –Contexto de ejecución independiente de la máquina { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_34.jpg", "name": "Introducción l Desarrollado por IBM (alphaworks) l Plataforma neutra (basada en Java) l El entorno de Aglets ofrece: –Esquema global de nombres únicos de agentes –Itinerarios de viaje (con patrones complejos y gestión automática de fallos) –Comunicación asíncrona: pizarras y mensajes –Envío de estado y carga de clases por la red –Contexto de ejecución independiente de la máquina", "description": "Introducción l Desarrollado por IBM (alphaworks) l Plataforma neutra (basada en Java) l El entorno de Aglets ofrece: –Esquema global de nombres únicos de agentes –Itinerarios de viaje (con patrones complejos y gestión automática de fallos) –Comunicación asíncrona: pizarras y mensajes –Envío de estado y carga de clases por la red –Contexto de ejecución independiente de la máquina", "width": "800" } 35 Interfaces gráficos l Visual builder (Tazza) l Gestor de agentes visual (Tahiti) l Applet lanzador de aglets via web (Fiji) l Acceso a BD (JDBC/DB2 y JoDax) l http://www.trl.ibm.co.jp/aglets/index.html { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_35.jpg", "name": "Interfaces gráficos l Visual builder (Tazza) l Gestor de agentes visual (Tahiti) l Applet lanzador de aglets via web (Fiji) l Acceso a BD (JDBC/DB2 y JoDax) l http://www.trl.ibm.co.jp/aglets/index.html", "description": "Interfaces gráficos l Visual builder (Tazza) l Gestor de agentes visual (Tahiti) l Applet lanzador de aglets via web (Fiji) l Acceso a BD (JDBC/DB2 y JoDax) l http://www.trl.ibm.co.jp/aglets/index.html", "width": "800" } 36 Agent Transfer Protocol { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_36.jpg", "name": "Agent Transfer Protocol", "description": "Agent Transfer Protocol", "width": "800" } 37 ATP ( HTTP) l Protocolo de envío y recepción de agentes l Independiente de la plataforma l No ligado a Aglets l Modelo petición/respuesta Dispatch (Envío de agentes) Retract (Retirada de agentes) Fetch (Envío de código) Message (Envío de mensajes) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_37.jpg", "name": "ATP ( HTTP) l Protocolo de envío y recepción de agentes l Independiente de la plataforma l No ligado a Aglets l Modelo petición/respuesta Dispatch (Envío de agentes) Retract (Retirada de agentes) Fetch (Envío de código) Message (Envío de mensajes)", "description": "ATP ( HTTP) l Protocolo de envío y recepción de agentes l Independiente de la plataforma l No ligado a Aglets l Modelo petición/respuesta Dispatch (Envío de agentes) Retract (Retirada de agentes) Fetch (Envío de código) Message (Envío de mensajes)", "width": "800" } 38 Aglets: Características l com.ibm.aglet.Aglet l Movilidad y ciclo de vida de los aglets: Aglet.dispatch(URL) envía el aglet a la URL especificada Aglet.deactivate(long time) guarda el aglet en memoria secundaria Aglet.clone() crea una nueva instancia Aglet.dispose() termina el aglet { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_38.jpg", "name": "Aglets: Características l com.ibm.aglet.Aglet l Movilidad y ciclo de vida de los aglets: Aglet.dispatch(URL) envía el aglet a la URL especificada Aglet.deactivate(long time) guarda el aglet en memoria secundaria Aglet.clone() crea una nueva instancia Aglet.dispose() termina el aglet", "description": "Aglets: Características l com.ibm.aglet.Aglet l Movilidad y ciclo de vida de los aglets: Aglet.dispatch(URL) envía el aglet a la URL especificada Aglet.deactivate(long time) guarda el aglet en memoria secundaria Aglet.clone() crea una nueva instancia Aglet.dispose() termina el aglet", "width": "800" } 39 Acceso a los Aglets AgletsProxy : implementa la seguridad de acceso y la transparencia de acceso El proxy se obtiene a partir del contexto ( AgletContext ) o por paso de mensajes l Ambas se implementan por las librerías de ejecución (runtime) Message y FutureReply son las otras dos clases que nos permiten contactar con los aglets { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_39.jpg", "name": "Acceso a los Aglets AgletsProxy : implementa la seguridad de acceso y la transparencia de acceso El proxy se obtiene a partir del contexto ( AgletContext ) o por paso de mensajes l Ambas se implementan por las librerías de ejecución (runtime) Message y FutureReply son las otras dos clases que nos permiten contactar con los aglets", "description": "Acceso a los Aglets AgletsProxy : implementa la seguridad de acceso y la transparencia de acceso El proxy se obtiene a partir del contexto ( AgletContext ) o por paso de mensajes l Ambas se implementan por las librerías de ejecución (runtime) Message y FutureReply son las otras dos clases que nos permiten contactar con los aglets", "width": "800" } 40 Aglet API Aglet Proxy message Aglet Proxy Aglet Aglet context { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_40.jpg", "name": "Aglet API Aglet Proxy message Aglet Proxy Aglet Aglet context", "description": "Aglet API Aglet Proxy message Aglet Proxy Aglet Aglet context", "width": "800" } 41 Ciclo del aglet l Creación l Desactivación (a memoria secundaria) l Activación l Envio a otra máquina (dispatch) l Envio de vuelta (retract) l Clonación l Destrucción (dispose) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_41.jpg", "name": "Ciclo del aglet l Creación l Desactivación (a memoria secundaria) l Activación l Envio a otra máquina (dispatch) l Envio de vuelta (retract) l Clonación l Destrucción (dispose)", "description": "Ciclo del aglet l Creación l Desactivación (a memoria secundaria) l Activación l Envio a otra máquina (dispatch) l Envio de vuelta (retract) l Clonación l Destrucción (dispose)", "width": "800" } 42 Eventos l Debido a las limitaciones de la especificación de la JVM, No se puede acceder a la pila de llamadas de los hilos de ejecución de la JVM l Solución: máquina de estados con eventos onClone, onDispatching, onArrival, onActivation, onReverting, onDeactivating, etc. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/10/2746210/slides/slide_42.jpg", "name": "Eventos l Debido a las limitaciones de la especificación de la JVM, No se puede acceder a la pila de llamadas de los hilos de ejecución de la JVM l Solución: máquina de estados con eventos onClone, onDispatching, onArrival, onActivation, onReverting, onDeactivating, etc.", "description": "Eventos l Debido a las limitaciones de la especificación de la JVM, No se puede acceder a la pila de llamadas de los hilos de ejecución de la JVM l Solución: máquina de estados con eventos onClone, onDispatching, onArrival, onActivation, onReverting, onDeactivating, etc.", "width": "800" } 43 Prácticas http://www.it.uc3m.es/~amarin/ doctorado/gimi.html
31 Ejemplo: goHome goHome: op (homeName:Telename, homeAddress: TeleAddress)= { *.disableEvents(); *.clearEvents(); *.go(Ticket(homeName, homeAddress); *.enableEvents(PartEvent(client)); [email protected](Petition(client)); *.getEvent(nil,PartEvent(client)) };
32 Bibliografía l Mobility: processes, computers, and agents ed. D. Milojicic, F. Douglis, and R. Wheeler ACM Press, 1999 l Mobile Agents, by W. R. Cockayne and M. Zyda, Manning Publications, 1998 l Mobile Agents, ed. by K. Rothermel and R. Popescu-Zeletin, LNCS, April 1997
33 Agentes Móviles IBM Aglets
34 Introducción l Desarrollado por IBM (alphaworks) l Plataforma neutra (basada en Java) l El entorno de Aglets ofrece: –Esquema global de nombres únicos de agentes –Itinerarios de viaje (con patrones complejos y gestión automática de fallos) –Comunicación asíncrona: pizarras y mensajes –Envío de estado y carga de clases por la red –Contexto de ejecución independiente de la máquina
35 Interfaces gráficos l Visual builder (Tazza) l Gestor de agentes visual (Tahiti) l Applet lanzador de aglets via web (Fiji) l Acceso a BD (JDBC/DB2 y JoDax) l http://www.trl.ibm.co.jp/aglets/index.html
36 Agent Transfer Protocol
37 ATP ( HTTP) l Protocolo de envío y recepción de agentes l Independiente de la plataforma l No ligado a Aglets l Modelo petición/respuesta Dispatch (Envío de agentes) Retract (Retirada de agentes) Fetch (Envío de código) Message (Envío de mensajes)
38 Aglets: Características l com.ibm.aglet.Aglet l Movilidad y ciclo de vida de los aglets: Aglet.dispatch(URL) envía el aglet a la URL especificada Aglet.deactivate(long time) guarda el aglet en memoria secundaria Aglet.clone() crea una nueva instancia Aglet.dispose() termina el aglet
39 Acceso a los Aglets AgletsProxy : implementa la seguridad de acceso y la transparencia de acceso El proxy se obtiene a partir del contexto ( AgletContext ) o por paso de mensajes l Ambas se implementan por las librerías de ejecución (runtime) Message y FutureReply son las otras dos clases que nos permiten contactar con los aglets
40 Aglet API Aglet Proxy message Aglet Proxy Aglet Aglet context
41 Ciclo del aglet l Creación l Desactivación (a memoria secundaria) l Activación l Envio a otra máquina (dispatch) l Envio de vuelta (retract) l Clonación l Destrucción (dispose)
42 Eventos l Debido a las limitaciones de la especificación de la JVM, No se puede acceder a la pila de llamadas de los hilos de ejecución de la JVM l Solución: máquina de estados con eventos onClone, onDispatching, onArrival, onActivation, onReverting, onDeactivating, etc.
43 Prácticas http://www.it.uc3m.es/~amarin/ doctorado/gimi.html