Computational Resources Distributed around the Internet

The growth of the Internet has made having real-time access to computers all over the world commonplace. A considerable amount of research has been put into making it possible to use the resources of computers on networks, but the actual deployment of these research ideas is lagging. Computer resources come in many forms, from the raw material of CPU time, memory, disk storage and bandwidth to value-added capabilities like specialized databases and services. For the purposes of this paper, ``distributed computation'' will mean the use of any of these resources on other machines on the Internet.

File servers and batch job scheduling systems allow some distributed computation. These technologies are typically limited to local domains of machines that entirely trust each other. With the advent of the World Wide Web access to resources on a global scale has finally become convenient, in particular access to data and the occasional specialized service. But these capabilities are limited to a small set of pre-considered applications; open ended access is largely unavailable. There is a vast potential out there for greater use of underutilized computer resources, especially CPU time, but this potential is being stymied by the difficulty of performing operations with remote computers.

What is needed is a new computational medium, a network-based environment in which processing requirements can effectively be expressed and applied across networks of computers. Mobile agents are a compelling paradigm for global distributed computing. Mobile agents allow a large degree of flexibility in creating computations; they also are natural for doing distributed processing. An important aspect of the Internet-wide computational medium is that it will have no central designer, no benevolent monarch who controls and ordains the action of every aspect of the system. The computer network will be full of agents with conflicting goals, servers that cannot trust agents, agents that cannot trust servers. In the absence of central control the networked computer environment will need to be carefully designed to be robust in the face of adversity.

Economic Control

Economic incentives can be a means to motivate and control distributed computations. The motivational aspect is simple: if people can make money by selling access to their resources, then they will have an incentive to make those resources available. The Internet today is largely based on a gift economy; whether that economy is stable and whether it is a good idea to perturb it by introducing resources-for-sale are questions outside the scope of this paper.

Without a central coordinator how can a computer network be made to function effectively? There is a growing literature that suggests that economic incentive can be useful in controlling and optimizing complex distributed systems [DM88] [Cle96]. In the particular realm of efficient allocation of CPU time, the Enterprise [MFGH88] and Challenger [CMM97] systems make compelling cases for using a market based approach to distribute batch-level computations. Agoric computation [MD88] suggests a more radical vision of distributed computation, one in which individual parts of one task can be distributed across multiple machines with the exchange of money controlling and optimizing the computation.

Economic exchange should be considered as a basis for the design of a system to support mobile agent based distributed computation. If agents (or their human owners) are charged for their resource consumption then the resulting economy could provide compensation for the service providers and encourage agents to remain efficient in their use of resources.

Existing Distributed Computation

There are several existing examples of global use of distributed computer resources. CPU time from around the net has successfully been used to perform large computations, particularly in the specific domain of number theory and cryptosystems. The factoring of RSA-129 was carried out almost entirely by volunteers on the Internet who processed parts of the work and emailed back results [AGLL94]. RSA-130 was also factored in part by contributions that came in via Web submissions [RSA96]. The largest currently known prime number was found via a Web-based Mersenne prime checker [Mer96], and an effort is underway to use CPU time from all over the Internet to finally demonstrate the insecurity of the small key size of the DES cryptosystem [Tre96]. All of these computations are simple in that the tasks are easily distributable and only data needs to be transmitted during the computation, not code. Furthermore, deployment is relatively easy as the software is special-purpose and installed by volunteers personally motivated to see the computation succeed.

Web search engines provide other examples of distributed resource usage on the Internet. Anyone can make use of AltaVista's service by sending their server a query; a search uses AltaVista's CPU time, memory, and specialized database. Second-level search engines such as the Metacrawler [SLE96] are closer to a mobile agent paradigm. When Metacrawler receives a search query it takes that request, sends it off to other servers, collects the replies and returns them. Metacrawler essentially parasitizes the resources of other search engines to provide its services.

The current uses of resources over the net are limited. Distributed efforts such as the RSA factoring do not transport programs; volunteers set up specialized compute servers and then data is shipped to perform the computation. The computations allowed by Web search engines are restricted to search expressions. While these examples fall short of full mobile agent systems, they point to the potential of access to the resources of the entire Internet.

Mobile Agents as Distributed Computation

Mobile software agents are programs that live in computer networks, carrying on their computation and moving from host to host as necessary to fulfill their goals. Software agents in general have gained acceptance as a way to perform computations. Mobility for software agents is more controversial, in large part because of the complexity and security risks mobility implies. But there are many different reasons mobile software agents can be useful, enough that the approach has merit [HCK95].

Mobile agents provide a fresh, compelling way to organize the use of distributed resources on the Internet [CL95]. Software agents are a sort of ``super-object-oriented'' paradigm. Traditional object-oriented programming collect data and code in one (typically small) object. Software agents wrap up a large amount of data and code into one package; in this sense, a software agent is like a large object. Agents not only encapsulate state and rules; they also have purpose and autonomy. An agent is a way to encapsulate a computational task. A mobile agent can be sent over the network to use needed resources on a remote host. The agent metaphor makes it easier to understand the organization of distributed computations.

As an example of a distributed computation performed by agents, consider the construction of a computer animation where several different resources distributed across the Internet are needed. An agent could be programmed to first visit the character store at Disney to purchase model data. The agent then takes the data to a render farm where it would spawn many agents on the rendering machines to create the frames. Finally, the agent collects all the frames and takes them over to a host with specialized MPEG creation capability to package the final movie. By describing this computation in terms of mobile agent intentionality it is easy to understand how the various resources are coordinated to perform the task.


next up previous
Next: Requirements for Mobile Agent Up: Computational Media for Mobile Previous: Computational Media for Mobile

Formatted: Wed Jun 11 16:51:02 EDT 1997
Nelson Minar