Sergio Ilarri
<silarri@unizar.es>
University of Zaragoza
Spain
Raquel Trillo
<raqueltl@unizar.es>
University of Zaragoza
Spain
Eduardo Mena
<emena@unizar.es>
University of Zaragoza
Spain
Abstract
In the recent years, mobile agents (MAs) have arised as a promising paradigm
to build distributed applications. They provide a range of advantages,
specially in pervasive and mobile environments. Thus, autonomy, load
balancing, performance and flexibility are some of the benefits inherently
associated to the use of mobile agents. However, we have found that most of
these platforms do not perform efficiently nor reliably in environments with
highly mobile and cooperative agents, specially when the number of agents
increases. Thus, the development of a new MA platform is strongly motivated by
needs detected in our research projects, where we frequently use mobile agent
technology to build distributed applications.
Thus, we propose SPRINGS (Scalable PlatfoRm for movINg Software), a novel MA platform featuring location
transparency, automatic update of proxies, and scalability. Besides, livelock problems are minimized. The API of this platform is available here (updated on January 13, 2006). Our
experimental study has proven the interest and usefulness of SPRINGS.
History
This project started with a Master Thesis
number 42 by Alejandro Espín (448386@unizar.es), who developed a
platform of mobile agents called Sping (finished on August 30, 2004). Although
we have used some of the ideas of this initial project, we have re-implemented
and re-design it completely from scratch. As a reference, we keep the API of Sping here, and more
details about this seminal project can be obtained from the author. Among many
other important changes, our new architecture and implementation simplifies the
process of launching a new context, adds a mechanism for the remote loading of
classes, deals with livelock problems, implement an efficient proxy update
mechanism, and removes the use of LDAP (which was proved to be a bottleneck)
and hash functions to assign trackers to agents. Also, we provide true location
transparency: the programmer can survive without URLs and port numbers! Some
features of Sping (such as persistency) are missing
in the current project and will be the subject of future work. On the contrary,
the new architecture is much more reliable.
Milestones:
April, 2008: SPRINGS tested in wireless environments, paper published at DS2ME@ICDE'08.
June, 2007: We publish a survey on mobile agent platforms (ICAS'07).
February-May, 2007: SPRINGS used in the lab for the course "Semantic Web", within the
"Master of Web Services and Electronic Commerce" at the University of Zaragoza (Spain).
October 10, 2006: We finished a first manual about how to use the platform.
February 28, 2006: SPRINGS paper accepted at the 4th International Workshop on
Mobile Distributed Computing (MDC'06), held in conjunction with the 7th IEEE International Symposium on
A World of Wireless, Mobile and Multimedia Networks (WoWMoM 2006)
January 19-20, 2006: SPRINGS has been presented in a crash course on
Artificial Intelligence, Semantic Web and Intelligent Agents (20 hours) at the
R+D Center of the Vodafone Group at the Technological Park Walqa
in Huesca. The students played with
SPRINGS during two 2-hour sessions, realizing their benefits.
December 2, 2005: We have finished our implementation of LOQOMOTION
on top of SPRINGS. There is a promising big leap in performance and
scalability!
August 18, 2005: First stable version of SPRINGS (after quite a lot of
debugging and optimizing code). This is nice... and we outperform Voyager,
Grasshopper, Tryllian, and Aglets in our hard "move-and-call" crazy test.
May 19, 2005: We changed the architecture of SPRINGS: hash functions are
removed and we aim at a more fault-tolerant system (e.g., now there are k
contexts tracking a given agent instead of only one, where k is the tracking
factor). Introduction of the idea of Region Name Server. Place names are stored
to provide more location transparency. The use of agent references is made
transparently: the programmer cannot access them directly
May 3, 2005: First beta version of SPRINGS
April 29, 2005: The implementation is changed because we realise that
sending agents as Object parameters through RMI is slightly more efficient than
sending them as streams of bytes (i.e. performing the serialization by
ourselves). As a consequence, the mechanism for remote loading of classes
becomes somewhat obsolete: we now rely on the capabilities of RMI but we keep
some of the old code for historic purposes.
April 28, 2005: We get our logo character (developed by
José Ilarri)
March 10, 2005: SPRINGS takes off
November 25, 2004: Motivated by the limitations of existing platforms in
environments with large numbers of highly mobile agents,
Eduardo Mena and Sergio Ilarri decide to undertake the project again
Some Features
Real location transparency! You don't need to specify the classical
URL/port to contact an agent: our naming service does it for you! Besides,
references to agents are automatically updated by the system: the reference
will continue to be valid even if the holder or the target agent move.
An automatic mechanism to deal with errors (retrying
automatically according to a specified policy). This mechanism is implemented
for: searching of agents, movements of agents, and remote
communications
Management of agent's schedules
Message passing, support for synchronous and asynchronous operations
A rich API aimed at easing the programmer's task (e.g. it includes a
wide variety of methods for agents to travel (e.g. using a callback method or
not). The API takes the best of many existing mobile agent platforms and add
new of our own
Under Work (Private Documents, Password Protected)
The constructor of a SpringsAgent_RMIImpl must capture RemoteException
(because a SPRINGS agent is a remote RMI object and, therefore, its constructor
can throw that exception).
Class AgentReference refers to the classical concept of proxy used
in some MA platforms.
The programmer is responsible for terminating the agent's thread after
a moveTo, as it is the case in other MA platforms.