java mobile agents with aglets wolfgang schreiner [email protected]
TRANSCRIPT
Java Mobile AgentsJava Mobile Agentswith Agletswith Aglets
Wolfgang [email protected]
Chapter 1 – Chapter 1 –
Introduction to Mobile AgentsIntroduction to Mobile Agents
What is a Software Agent?What is a Software Agent?
End-User Perspective– An agent is a program that assists people and acts
on their behalf– Agents function by allowing people delegate
work to them
System Perspective– An agent is a software object that is situated
within an execution environment– possesses mandatory and orthogonal properties
What is a Mobile Agent?What is a Mobile Agent?
Stationary Agent– executes only on the system where it begins execution– interacts with an agent using communication mechanisms
Mobile Agent– not bound to the system where it begins
execution– has the ability to transport itself from one system
in a network to another
Reasons for Mobile AgentsReasons for Mobile Agents
Reduce network load Reduce network latency Encapsulate protocols Execute asynchronously and
autonomously Adapt dynamically Are naturally heterogeneous Are robust and fault-tolerant
Network ComputingNetwork Computing
Client-Server Paradigm– A server locally hosts services that provide
access to resources and code that implements these services.
Code-on-Demand Paradigm– no preinstalled code on the client side
Mobile Agent Paradigm– hosts are allowed a high degree of flexibility
Mobile Agent ApplicationsMobile Agent Applications
Electronic Commerce Personal assistance Distributed information retrieval Telecommunication network services Workflow applications and groupware Monitoring and notification Parallel processing
Mobile Agent SystemsMobile Agent Systems
Java– Aglets
– Odyssey– Concordia– Voyager
Others– Agent Tcl– Ara– TACOMA
Mobile Agent StandardizationMobile Agent StandardizationMASIFMASIF
Agent managementAgent transferAgent and agent system namesAgent system type and location
syntax
Chapter 2 – Chapter 2 –
Elements of aElements of aMobile Agent SystemMobile Agent System
Agent ...Agent ...
... and Place... and Place
Agent Behaviour (1)Agent Behaviour (1)
Creation– Instantiation and identifier assignment
– Initialization
– Autonomous execution
Disposal– Preparing for disposal
– Suspension of execution
Agent Behaviour (2)Agent Behaviour (2)
Dispatching– Suspend, serialize, encode, transfer
Receiving– Receive, decode, de-serialize, resume execution
Agent Class Transfer– Class at destination– Class at origin– Code-on-demand
CommunicationCommunication
MASIFMASIF
MAFAgentSystem Interface– agent management tasks
MAFFinder Interface– agent naming service
Chapter 3 –Chapter 3 –
Mobile Agents with JavaMobile Agents with Java
Java Agents - BenefitsJava Agents - Benefits
Platform IndependenceSecure ExecutionDynamic Class LoadingMultithread ProgrammingObject SerializationReflection
Java Agents - DrawbacksJava Agents - Drawbacks
Inadequate Support for Resource Control
No Protection of ReferencesNo Object Ownership of ReferencesNo Support for Preservation and
Resumption of the Execution State
The Aglet ModelThe Aglet Model
Basic Elements– aglet, proxy, context, identifier
– creation, cloning, dispatching, retraction, disposal, activation/deactivation
Aglet Event Model– clone, mobility and persistence listener
Aglet Communication Model– Message, FutureReply, ReplySet
Aglet PackageAglet Package
class Agletinterface AgletProxyinterface AgletContextclass Messageclass FutureReplyclass AgletID
Chapter 4 –Chapter 4 –
Anatomy of an AgletAnatomy of an Aglet
Aglet DisposalAglet Disposal
public final void Aglet.dispose(); public void Aglet.onDisposing();
Example:
public class DisposalExample
extends Aglet {
public void onDisposing() { ... }
public void run() {
dispose();
}
}
Delegation-Based Event Delegation-Based Event ModelModel
CloneEvent, MobilityEvent, PersistencyEvent
CloneListener, MobilityListener, PersistencyListener
CloneAdapter, MobilityAdapter, PersistencyAdapter
CloningCloning
public final Object Aglet.onClone();
public final void Aglet.addCloneListener(CloneListener);
public final void Aglet.removeCloneListener(CloneListener);
public void CloneAdapter.onCloning(CloneEvent);
public void CloneAdapter.onClone(CloneEvent); public void CloneAdapter.onCloned(CloneEvent);
Aglet MobilityAglet Mobility
public final void Aglet.dispatch(URL); public final void
Aglet.addMobilityListener(MobilityListener); public final void
Aglet.removeMobilityListener(MobilityListener); public void
MobilityAdapter.onDispatching(MobilityEvent); public void
MobilityAdapter.onArrival(MobilityEvent); public void
MobilityAdapter.onReverting(MobilityEvent);
PersistencePersistence
public final void deactivate(long); public final void Aglet.addPersistencyListener
(PersistencyListener); public final void
Aglet.removePersistencyListener (PersistencyListener);
public void PersistencyAdapter.onDeactivating (PersistencyEvent);
public void PersistencyAdapter.onActivation (PersistencyEvent);
EventsEvents
CloneEventMobilityEvent
– public URL MobilityEvent.getLocation();
PersistencyEvent– public long
PersistencyAdapter.getDuration();
Chapter 5 –Chapter 5 –
Aglet ContextAglet Context
Aglet CreationAglet Creation
Code and Code Base
Code Base and Class Mobility
Initialization Argument
Proxy RetrievalProxy Retrieval
Proxy Iterator– public abstract Enumeration
AgletContext.getAgletProxies();
Getting a Local Proxy– public abstract AgletProxy
AgletContext.getAgletProxy(AgletID);
Getting a Remote Proxy– URL as additional parameter
Aglet RetractionAglet Retraction
public abstract AgletProxy AgletContext.retractAglet(URL,AgletID);
Example:
AgletID aid=proxy.getAgletID();
Proxy.dispatch(dest);
getAgletContext().retractAglet(dest,aid);
Context PropertiesContext Properties
public abstract Object AgletContext.getProperty(String);
public abstract Object AgletContext.getProperty(String,Object);
public abstract void AgletContext.setProperty(String,Object);
Chapter 6 –Chapter 6 –
Aglet MessagingAglet Messaging
Simple MessagingSimple Messaging
public Object AgletProxy.sendMessage(Message); public boolean Aglet.handleMessage(Message);
The The MessageMessage Class Class
Message Creation– public Message(String [,…] );
Receiving Messages– getArg, setArg, getKind, sameKind
Replying to Messages– public void Message.sendReply();– public void
Message.sendException(Exception);
Getting the ReplyGetting the Reply
Message ManagementMessage Management
Serialized Message HandlingMessage PrioritiesParallel Message HandlingSynchronized Message Handling
MulticastingMulticasting
public final void Aglet.subscribeMessage(String);
public final void Aglet.unsubscribeMessage(String);
public final void Aglet.unsubscribeAllMessages();
public ReplySet AgletContext.multicastMessage(Message);
Receiving Multiple RepliesReceiving Multiple Replies
public boolean ReplySet.hasMoreReplies();
public FutureReply ReplySet.getNextFutureReply();
public boolean ReplySet.addFutureReply(FutureReply);
Chapter 7 –Chapter 7 –
Aglet CollaborationAglet Collaboration
Aglet ProxyAglet Proxy
CloningDisposalDispatchingDeactivation and ActivationAglet Information
Controlling an AgletControlling an Aglet
Finding an AgletFinding an Aglet
SearchLoggingRegistrationAgletFinder
– Lookup: NAME
– Register: NAME & PROXY
– Unregister: NAME
Aglets in Parallel ExecutionAglets in Parallel Execution
Chapter 8 –Chapter 8 –
Agent Design PatternsAgent Design Patterns
Design Pattern ClassificationDesign Pattern Classification
Traveling Patterns– Itinerary, Forward, Ticket
Task Patterns– Master-Slave
Interaction Patterns– Meeting, Locker, Messenger, Finder, Organized Group
Chapter 9 –Chapter 9 –
Inside AgletsInside Aglets
Architectural OverviewArchitectural Overview
Core Framework– Initialization and (de-)serialization– Class loading and transfer– Aglet references and garbage collection
Management Components– PersistencyManager– CacheManager– SecurityManager
Communication Layer
Aglet Object StructureAglet Object Structure
Initialization and SerializationInitialization and Serialization
Initialization of Aglets– Locate aglet class, load class data, define class
– Instantiate new object
– Create reference AgletRef, establish connection
– Start execution
Serialization and Object Mobility
Class Loading and TransferClass Loading and Transfer
Class LoadingClass Transfer
– Archived classes
– Code base classes– System classes– Others
Class Resumption and EvolutionOther Considerations of Class
Mobility
Communication LayerCommunication Layer
Communication API– MASIF
Agent Transfer Protocol– Dispatch
– Retract
– Fetch
– Message
Chapter 10 –Chapter 10 –
Aglet SecurityAglet Security
What Can Go Wrong?What Can Go Wrong?
Agent Protection– Remote host threatens agent– Agent threatens another agent– Unauthorized third parties threaten agent
Host Protection– Incoming agent threatens host
– Unauthorized third parties threaten host
Network protection– Incoming agent threatens the network
Taxonomy of AttacksTaxonomy of Attacks
Passive Attacks– Eavesdropping
– Traffic Analysis
Active Attacks– Illegal Access – Replay
– Masquerade – Resource Exhaustion
– Trojan Horse – Repudiation
– Alteration
Security ServicesSecurity Services
Authentication– user, host, code, agent
IntegrityConfidentialityAuthorizationNonrepudiationAuditing
Security ModelSecurity Model
Principals– Aglet, Context and Server, Network Domain
Permissions– File, Network, Window, Context, Aglet
ProtectionsPolicy and Authority
– Aglet owner, Context owner, Network owner