What are Mobile Agents?
Mobile agents are currently a hot topic in the domain of distributed systems. Reasons are the problems more traditionally designed distributed systems, especially client/server systems, might have to handle work-load, the trend to open large numbers of customers direct access to services and goods, and user mobility. Mobile agent technology can help to design innovative solutions in this domain by complementing other approaches, simply by adding mobility of code, machine based intelligence, and improved network- and data-management possibilities.
A mobile agent is a program that can migrate from host to host in a network of heterogeneous computer systems and fulfill a task specified by its owner. It works autonomously and communicates with other agents and host systems. During the self-initiated migration, the agent carries its code and some kind of execution state with it. What comprises the execution state depends on the underlying programming language and is, in the case of Java for example, the serialized agent (which is an object of a specific class) and does not contain information about the state of the Java virtual machine. On each host they visit, mobile agents need a special software that we name agency, which is responsible to execute agents, provides a safe execution environment, and offers several services for agents residing on this host. A mobile agent system is the set of all agencies of the same type together with the agents running on these agencies as part of an agent-based application. To refer to a specific project or product, for example Aglets or Grasshopper we use the notion agent toolkit.
Migration of agents is based on an infrastructure that has to provide the necessary services in the network. The infrastructure is a set of agent servers - we call them agencies - that run on platforms (nodes) within a possibly heterogeneous network. Each agency hides the vendor specific aspects of its host platform and offers standardized services to an agent that is docking on to such a agency. Services include access to local resources and applications, for example Web servers or Web services, the local exchange of information between agents via message passing, basic security services, creation of new agents, etc.
Are these Software Agents?
A software agent is a software entity which continuously performs tasks given by a user within a particular restricted environment. Research on software agents was started in the area of Artificial Intelligence, already in the 1970s. It must be emphasized that the term agent is used in very different ways. Actually, several papers just deal with the problem to define the word agent at all. The enumeration of all characteristics that a program should fulfill to become an agent is not in our intention. However, the most important properties seem to be autonomy, i.e. the capability to act proactive and goal directed, and adaptation, i.e. being able to learn and improve its behavior.
Since about 1994, there is a separate research branch working on mobile agents. The first mobile agent toolkit was Telescript developed by General Magic in 1996. In this domain of mobile software agents, i.e. software agents that are able to move somehow, many aspects related to code mobility are analyzed. Mobile agents are seen from the viewpoint of software engineering and distributed systems. They can be considered to be a new design paradigm in the area of distributed programming and a useful supplement to traditional techniques like the client/server architecture. As almost all other mobile agent research groups, we also have a rather pragmatic notion of the term mobile agent. To our understanding, it is any kind of software entity that is able to initiate a migration on its own within a network of heterogeneous computer systems.
A (Very) Short History of Mobile Agents
Some of the mobile agent toolkits developed in the last years are Aglets by IBM, Voyager by ObjectSpace, Grasshopper by IKV, and Concordia by Mitsubishi. Toolkits developed for university-based research are for example D'Agents and Semoa. Research in the area of mobile agents looked at languages that are suitable for mobile agent programming, and languages for agent communication. Very much effort was put into security issues, control issues, and design issues. Several prototypes of real-world applications in the area of information retrieval, management of distributed systems, and mobile computing are in development. Each of the above mentioned toolkits focus on different aspects of mobile agents, e.g. Semoa on security, D'Agents on multi-language support, Grasshopper on the implementation of the FIPA and MASIF standard. Oddly enough, none of the above mentioned mobile agent toolkits and no research group has focused on the inherent topic of mobile agents, that is migration. Today, each mobile agent system has developed its own understanding and notion of terms like code mobility and state migration. Almost no work has been done to define these terms and classify concepts concerning mobile agent migration.
Research on Mobile Agents
In the last years, research and development of mobile agents are very fast growing research areas. However, many research problems are still not solved completely. Many projects conducted so far had the goal to prove the possibility to implement mobile code, which is the basis of mobile agents, in different programming languages and showed that it is worth using mobile agents for particular application domains. Most research was done in the area of mobile code security.
We see as main research areas:
- the migration process of mobile agents,
- communication techniques for mobile agents,
- and security of mobile agents.