Overview of Mansion

Mansion is a new system that supports mobile agents. It provides a framework consisting of hyperlinked rooms, in which agents can meet and interact with each other and with objects in the rooms. Main page.

Description

Mansion is a new paradigm for designing and buiding large-scale and secure distributed multiagent applications. Each application consists of a number of hyperlinked rooms which contain objects (passive elements) and agents (active elements). Agents migrate from room to room and can communicate with each other or interact with objects. Mansion provides a strong structuring mechanism for designing virtual worlds. A particular world may have an application-specific hyperlink topology which makes sure that an agent moves from room to room only through a predefined path. In a way, Mansion replaces the World Wide Web paradigm of a web of hyperlinked pages containing passive information with that of a web of hyperlinked rooms in which agents can meet and interact to do business or obtain information.

A Mansion world can physically distributed over a number of hosts on the Internet. A room is a logical structure, which can be replicated over a subset of the hosts that are part of a world. This means that multiple agents can access a room from multiple physical locations simultaneously. Objects are strictly passive entities which can physically be distributed over multiple hosts. Each object has an interface using which agents can invoke methods on the object. We use an object system based on the Globe object architecture to implement distributed (replicated) objects using an efficient RPC-based implementation. Agents are autonomous, active entities which run on one host at a time. Agents are essentially (multithreaded) processes that can communicate with each other using message passing and interact with objects by invoking methods on their interfaces. An agent may be written in any programming language; the middleware takes care of migrating the agent to another host in a secure way if this is required. Agents are confined using a novel jailing system built by the Mansion developers, which allows execution of arbitrary (binary) programs in a safe way. The jailing system is currently only implemented on Linux, but in principle portable to any (UNIX) system. We seek developers which are willing to port the jailer to other platforms, such as Solaris or OS-X. Systems which do not have a jailer implementation can make use of programming languages such as Java to implement agents, where Java takes care of 'sandboxing' the agent. The Mansion jailing system is, however, simpler to use and more general than a language-based security policy enforcement mechanism.

The Mansion model imposes constraints on the logical operations which may be done in a world. Interagent communication can be done world-wide (i.e., any agent in a world can communicate with any other agent in the world, irrespective of what rooms the agents are in). Method invocations on an object can only be done if the agent is in the same room as the object. To be able to interact with objects, an agent has to migrate to the object's room. Hyperlinks contain the information necessary for the middleware to migrate the agent logically to another room. In some cases (when the room is not replicated on the agent's current host), the agent has to migrate to a different host than the current one; this is done transparently by the middleware.

Examples in which the Mansion paradigm can be used is to structure electronic shopping malls, information retrieval (e.g., digital library) applications or auctions in which auctions on different topics can occur at the same time (i.e., in different rooms). Some examples are discussed in the papers listed on the Mansion publications page.

Important issues in the design of Mansion are security, physical agent migration and distribution and location transparency of all logical entities (agents, objects, rooms) in a world. Another important aspect is that we want to support heterogenous agents on multiple platforms. We do not limit ourself to supporting Java agents.