Mobile Software Agents
April 18, 2001
Introduction: History
• research on agents was
originated by J. McCarthy in
the mid-1970’s
• the term agent was coined
by O.G. Selfridge
Introduction: According to some...
is an intelligent robot, or
“humanoid”, that has
emotions, feelings and
perceptions, and therefore is
concerned with cognitive
science, speech acts, etc.
Introduction: contents of this talk
What are they? What can they do?
Main characteristics
Basic definitions
Agents and DOOP
Mobile agent languages
Reasoning and learning techniques
Agents - what are they?
Agents - what are they?
a tool (program) to perform client-server
computing by transmitting running
programs between clients and servers;
(White 1994)
Client-Server vs. Mobile Agents
Mobile Agent-Based
Agents - what can they do?
 find and filter information
 customize views of information (e.g. email)
 automate work (respond to events, such as a
new version)
Agents - what can they do?
 make recommendations and perform
corporate tasks; e.g. scheduling of meetings
• execute diagnostics, e.g. in networks
• rapid (re)deployment of applications
• active network load balancing
Agents - where are they used?
distributed OO
adaptive learning systems
AI, expert systems, genetic algorithms
electronic commerce
collaborative environment
mobile (nomadic) computing
Agents - main characteristics
Agents - main characteristics
 autonomous execution (life); have control
over their own actions and may operate
without the direct intervention of humans
 intelligent (perform domain oriented
Agents - main characteristics
 perceive their environment
 adaptive (they learn)
 mobile (they move)
 persistent (they have their own idea as to
how to accomplish a task)
Agents - main characteristics
 goal oriented (they realize a set of goals)
 reactive (or reflexive); they perceive
environment and timely and accurately
respond to changes that occur in it
• active, or proactive: act to accomplish goals
(take initiative not only respond to the
Intelligent Agents
• An intelligent agent has some artificial
intelligence; for example based on a set of
facts and inference rules (ES)
• learning agents are adaptive; they can learn
themselves about a subject in question by
statistically matching subjects of interest
with particular people
Basic Definitions
Basic Definitions
• An agent system can create, interpret,
execute, transfer and terminate agents
• A host can contain several agent systems;
each is uniquely identified by its name and
Basic Definitions
• Both, an agent and an agent system have an
authority; a person or organization for
whom they act
• An agent executes in a context, called the
place; there may be one or more places
within an agent system
Basic Definitions
• agents have locations (names of their
current places)
• agents have names (the agent’s authority
and identity; a unique value)
Basic Definitions
There are two kinds of agents:
• stationary agent is permanently
attached to a place; often resource
managers, server programs or
search engines
• mobile agent can move from one
place to another
Agents and DOOP: DOOP
•distribute applications use a number of
network nodes, rather than a single node
•communicate; for example by
•messaging (asynchronous)  MPI (Message
Passing Interface)
•remote procedure call (RPC), Remote Method
Invocation (RMI) (synchronous)
Agents and DOOP: Efficiency
Which one is better,
•to send data to the program
• to send a program to the source of data
(move the code closer to data)
Client-Server vs. Mobile Agents
Mobile Agent-Based
Agents and DOOP: Robustness
Agents are better in their ability to recover
from server breakdowns or unavailability
(disconnected operations)
Agents and DOOP: Flexibility
•Mobile agents are particularly useful for
rapid deployment of applications and
dynamic updates of software;
a code server can provide required code
(this is also called code on demand).
•Agents can be used for dynamic
extensions of server services.
Agents and DOOP: Design
Designing a client/server architecture
requires making all decisions about the
communication between the server(s) and
the client(s). These decisions are tightly
coupled with the underlying problem of
specific design and are very difficult or
even impossible to change.
Mobile Agent Languages
Mobile Agent Languages:
• An executing unit, EU is a single process
(or thread) image of execution.
• EU is always considered in the context of a
place, which contains components; either
EUs, or resources, such as files.
• A MAL is a language designed for
distributed systems, which supports EUs
migrating between various places.
Mobile Agent Languages:
• An EU consists of
– a static code segment
– a program state:
• data space containing accessible resources
• execution state containing system information such
as program counter and return address.
• The EU has a distributed state if its data
space exists in more than one place.
Mobile Agent Languages:
• For an agent to be moved, first it has to be
suspended. An entry point is a point where
execution of a suspended agent is resumed
• Two kinds of resumption:
– standard resumption (after “go”)
– itinerary; one or more entry points may be
explicitly specified.
Mobile Agent Languages:
• Strong mobility means that the entire code
and execution state of EUs can be moved
• Strong mobility combined with standard
resumption == strong MAL (implies that it
must be possible to save the state of the
execution, and later, to restore this state)
Mobile Agent Languages:
• Strong MALs:
– Java with a modified JVM
• Weak MALs:
– Aglets
Mobile Agent Languages:
Dynamic Linking
Mobile Agent Languages:
Dynamic Linking
• Name resolution must be able to bind names
to both local and remote entities
• remote code dynamic linking: the code
downloaded from a remote site and linked
with an EU
• local resource dynamic linking: arriving EU
links with resources available in this place;
e.g. link with libraries.
Mobile Agent Languages:
Dynamic Linking in Java
• the standard class loader provides local
resource linking and the user defined class
loader can support remote code linking
• The programmer has a choice of
– fully resolving the class, i.e. load the code
– partially resolving the class, i.e. postpone
resolving dependent classes until later time.
Mobile Agent Languages:
Dynamic Linking in MALs
• library site provides precompiled code
that can be picked up by an agent to use
at other sites
• we consider three kinds of dynamic
1. Local only dynamic linking: All the bindings are
voided when a program moves.
Mobile Agent Languages:
Dynamic Linking in MALs
three kinds of dynamic linking:
2. Code with a reference (sticky): A binding is
retained as long as there is at least one reference;
otherwise it is garbage-collected.
3. User-specified dynamic links: Gives the
programmer complete control over linking.
Mobile Agent Languages:
Mobile Agent Languages:
Types of Communication
• agent to server (host); this is typically a client/
server type of interaction (e.g. based on RPC)
• agent to agent; this a peer-to-peer type of
interaction and could be supported by messaging
• agent to group; this is a group communication
• user to agent interaction; this a standard humancomputer interaction, HCI.
Mobile Agent Languages:
So what are these languages!
Agent Languages:
• Java
• Knowledge Query and Manipulation
Language (KQML):
– is designed to support interaction among
intelligent software agents.
– agent’s messages, composed in a language of
its own choice, wrapped inside a KQML
Agent Languages:(cont.)
• Agent Process Interaction Language
(April): is used for building agent applications that
network transparent message passing,
symbolic processing, and
interface to other programming languages such as "C".
April is an object based language.
Agent Languages:(cont.)
• Mobile Agent System Interoperability
Facility (MASIF)  Object Management Group
– a milestone on the road toward enabling
location transparent interactions between static
and mobile objects/agents.
– to achieve interoperability between different
mobile agent platforms without enforcing
radical platform modifications.
Agent Languages:(cont.)
• Langage d'Agents Logiciel Objet (LALO):
– is used for developing intelligent multi-agent systems
using Agent Oriented Programming (AOP).
– communities of agents interact by exchanging
• sending specific requests, offering services, accepting or
refusing tasks, competing with each other for a task to be
accomplished or co-operating with each other.
Reasoning and Learning
Rule-Based Reasoning
Knowledge-Based Reasoning
Simple Statistical Analysis
Fuzzy Agents
Neural Networks
Evolutionary Computing
In general, we need to:
• protect agent hosts from agents
• agents from agent hosts
• one agent from another
• one agent host from another
• a group of hosts
• the communication between agent hosts.
• “There is a growing danger that agents will be
a deception and an empty promise.”
• “… machines are not people, nor can they
ever become so ...”
• “… For me, computers have no more
intelligence that a wooden pencil ...”
Rule-Based Reasoning
• Rule-base reasoning is the base for inference
• usually in form of IF...THEN statements
(production rules).
• LHSCondition; RHSAction
• Users can specify the rules or the agent systems
can supply the rules, after training.
• Agents use the set of rules to decide which action
or actions they should take.
Rule-Based Reasoning: (cont.)
• Multiple conditions and actions can occupy
the LHS or RHS, respectively.
• With multiple rules, one rule’s action may
cause the satisfaction of another rule’s
• This kind of chained effect is called forward
chaining, which is widely used in expert
Rule-Based Reasoning: (cont.)
• Here the agent is opportunistic.
• The user initiate the rules (and knowledge) and
maintain the rules over time, as habits or events
• IBM’s RAISE (Reusable Agent Intelligence
Software Environment) is an example of rulebased reasoning system.
• RAISE is the inference engine of IBM’s Agent
Building Environment (ABE) developer’s toolkit.
Rule-Based Reasoning: (cont.)
• Applications for RAISE include e-commerce
shopping, customer service, support, workflow on
the Web and e-mail.
– users must keep them up to date manually. (can not
change by themselves)
– complex sets of rules may develop conflicting rules that
the agent can’t resolve.
Knowledge-Based Reasoning:
• One can build knowledge bases based on a
specific subject area or domain.
• KB serves as the basis for some inference
mechanisms, including the rule-based
reasoning techniques.
• Programs are endowed with information
about the task in a specific domain.
Knowledge-Based Reasoning:
• requires a large amount of work from the
knowledge engineers.
• The knowledge of the agent is fixed and cannot be
customized to the habits of individual users.
• In highly personalized applications the knowledge
engineer cannot possibly anticipate the best aid for
each user in each situation.
Knowledge-Based Reasoning:
• The best known example in this area is Cyc
knowledge base, from Cycorp, Inc., based in
Austin, Texas.
• Cyc is used to build Cyc agents, each with a
common core of knowledge.
• Cyc agents communicate with each other and
perform inferencing in a collaborative fashion.
• The inter-agent communication may use KQML
(Knowledge Query and Manipulation Language).
“University of Maryland”
Simple Statistical Analysis:
• Statistical Analysis is the simplest
reasoning/learning technique that an intelligent
agent can use.
• It can determine the temporal or non-temporal
correlation among events of interest.
• Charles River Analytics’ Open Sesame and
General Magic’s Magic Cap are two such
Simple Statistical Analysis:
• Open Sesame periodically scans and analyzes the
logs of user actions to find repeated sequences of
• Magic Cap recognizes frequently contacted people
by their first names.
• EVA (evolving agent) technology uses statistical
analysis to find terms that co-occur and should be
added to a query.
Fuzzy Agents:
• When an agent needs to reason with:
– imprecise information
– incomplete information
– the domain variables consist of linguistic
variables (fuzzy)
fuzzy logic is a useful tool.
Fuzzy Agents: (cont.)
• Fuzzy logic => expert systems.
• Variables can have degrees of truthfulness or
falsehood represented by a range of values
between 1 (true) and 0 (false).
• FuzzyExpert from Indigo Software can embed
fuzzy logic directly into agents.
• FA helps to design decision support or crisis
management systems that offer a range of
alternative actions to solve a problem.
Neural Networks:
• Neural networks handle unstructured data or noisy
data effectively.
• consist of a set of interconnected nodes.
• Each node has a weight assigned to it.
• Like brains, neural nets need training by
• Training sets of data consist of two parts: the set
of training data and the “right” answers extracted
from that data.
Neural Networks: (cont.)
• They need training with large amounts of
data in order to develop the right patterns.
• They can perform non-linear mappings
between their input and output patterns.
• The most popular type is three-layer, feedforward neural networks (input layer, output
layer, and a hidden layer).
Neural Networks: (cont.)
• Each unit in a given layer connects with all
the units in the neighboring layers, but not
with those in the same layer.
• Each connection has a weight, which
represents the strength of the connection.
• Given a set of weights, the entire network
can be thought of as a mapping from a set
of input vectors to a set of output vectors.
Neural Networks: (cont.)
• Inserted in an information agent:
– the input vector represents a set of query terms,
– the output vector indicates the “relevance” of the input
vector to a certain information need.
• Agent systems can identify sequences of user
actions, and train agents to automatically assign
documents or Web pages to pre-defined categories.
• Autonomy’s Concept Agents or TextWise’s EVA
Neural Networks: (cont.)
Intelligent agents based on neural networks
can only learn locally (their learning
experiences are restricted to the documents
they have scanned or the Web sites they
have traveled through.).
Evolutionary Computing:
• To Expand the learning, a genetic algorithm for
operating in a higher level and view things from
an inter-agent perspective need to be employed.
• The local level of individual agents and the global
level of inter-agent operations:
– ensure the optimization of each agent from local
– expend agents learning based on global knowledge.
Evolutionary Computing: (cont.)
• The goal is to “breed” a new generation of
agents that benefit from the learning
experiences of individual “parent”.
• uses biologically based evolutionary
processes as a model for implementation.
• The most popular examples of evolutionary
computing are genetic algorithms.
Evolutionary Computing: (cont.)
• They work by maintaining a population of possible
solutions (chromosomes, or agents in our case).
• Continues evaluations of the performance of the
agents determine:
– unfit set of agents to be terminated,
– fittest set of agents to be recombined to produce
possibly better agents.
• TextWise is developing such a technology under a
contract from the National Imagery and Mapping
Agency (NIMA).
• a security policy is a set of guidelines describing
whether various actions are allowed or not
(may also include royalties)
• a security policy is static if its guidelines do not
depend on external conditions; otherwise it is
• a security policy may include credentials, or
level of trust.
Java Security Manager implements a static
security policy, which controls access to
resources such as file I/O, network access, and
There is no provision to limit access to other
resources such as CPU cycles.
In general, we need to:
• protect agent hosts from agents
• agents from agent hosts
• one agent from another
• one agent host from another
• a group of hosts
• the communication between agent hosts.
Protecting one agent from another
• Doable, but two agents operating on the same host
share the same interpreter and they share memory
(no hardware faults)
• Software Fault Isolation inserts a checking code
before each unsafe instruction
• Sandboxing before each unsafe instruction inserts
a code which sets the high order bits of the target
address to the correct segment identifier
Protecting agent hosts from agents
• cryptography can be used to authenticate
• a credential means that the receiver will trust
the sender
• access-level monitoring and control uses a
security manager which maintains a list of
allowed activities (perhaps associated with fees)
- can be misleading
Protecting agent hosts from agents
• code verification by the host may try to examine
the code of the agent (does not help if the agent is
• the host can apply various limitation
techniques, e.g. limit the time, or record all
agent activities.
Protecting agent hosts from agents
• A static byte code verifier checks for the right
magic number in the class file, and performs
data flow analysis on each method to test for
things such as branches must be within the
bounds of the code, or there is no attempt to
access variables which are not in the scope
• JVM performs various run-time checks.
Protecting agent hosts from agents
• Trail obscuring means that the agent
constantly modifies its image so it can avoid
tracing by hosts
• Code obfuscation means that the agent is
sent together with a kind of interpreter, so the
host doesn’t really see the code of this agent.
Protecting agent from agents hosts
• a host can steal information (normal routing)
• a host can mutate an agent (e.g. rerouting)
• since the host agent has access to an agent, it is
not possible to protect an agent from the agent
host (unless a specialized hardware is used)
Protecting agent from agents hosts
• visit only trusted sites and from there use
safer mechanisms, such as RPC or stateless
• maintain reliable data that can be used (after the
fact) to determine whether the agent has been
tampered with
• divide an agent into components, encrypted
each component (when traveling through
untrusted sites); update only while on trusted
Protecting agent from agents hosts
• maintain a safe migration history and use it
against rerouting attacks; or keep audit logs
• there is new research on encrypting
programs which are equivalent to the original
programs, are directly executable and
produce encrypted output.
Network Awareness
Network Awareness:
• awareness - an ability to monitor resources
• agility - an ability to react to changes in
• authority - an ability to control the way
resources are used on their behalf by support
Network Awareness:
Resource awareness can be represented by:
• on-demand monitoring
• continuous monitoring (specific filters should
be used to avoid jitters).
Network Awareness:
Authority can
• give a complete control over resources, with
explicit authorization for every use (like in
• consider a resource violation as an
asynchronous event and associate a handler
with every restriction on resource.
“...asking the question of what an
agent is to a DAI researcher is as
embarrassing as the question of
what intelligence is for an AI
Carl Hewitt

Mobile Software Agents - Southern Illinois University