\section{Introduction}
\label{sec:Introduction}

The Internet has been growing exponentially in recent years. It is
estimated that by the end of 1997, more than 30 million hosts will be
connected to the Internet, compared to the 10 million hosts in January
1996.  Although the primary reason for connecting a machine to the
Internet is to gain access to information, information is not the only
resource available. 
%  For instance, most of the computers connected to
% the Internet are idle a significant amount of time, and they usually
% have some amount of unused memory or disk storage as
% well.
Ideally, the combined resources of millions
of hosts on the Internet could be harnessed to form a powerful global
computing infrastructure. Recent advances made in Internet
connectivity, and the implementation of safe distributed computing
embodied in languages such as Java \cite{CosMcG95}
%show that this is not just a vision, but rather 
make this a promising and realizable goal.  

{\bf Architecture.}  We propose a design of a
global computing infrastructure called {\em SuperWeb}.
In our model there are three
kinds of participants: brokers, clients and hosts.  \emph{Brokers}
coordinate the supply and demand for computing resources. \emph{Hosts}
offer their resources (CPU time, memory, permanent storage) as a
commodity by registering with a broker. For example, a host can register
50\% of its CPU time from 5pm to 8am Monday through Friday, and 100\%
 during the weekend. Another host may register 10 hours of
30-megaflops-per-second CPU time, while a third host is willing to
offer 100\% of its CPU time only while being completely idle.
\emph{Clients} are users or computers that need extra computational
resources.  For example, a client that wants to run a task requiring
500 billion floating point operations may register a request for CPU
resources with a broker. It is the broker's responsibility to find host[s] capable of executing the client's task.  In our model
the role of a host or a client is not fixed.  A machine may register
as a host when being idle, and act as a SuperWeb client when its owner
needs additional computing power.
While we target the SuperWeb infrastructure to work across the whole
Internet, it is also usable on a smaller scale. In fact we anticipate
that its initial implementations will be inside large organizations
with intranets consisting of a large number of heterogeneous
computers.



{\bf Design.} Our main goal is to allow everyone
connected to the Internet to participate in SuperWeb.  To this end,
our design is based on widely used components such as WWW
browsers like Netscape and Microsoft Internet Explorer and portable languages
like Java. Although we use only Netscape and Java in this
paper, the SuperWeb architecture is not dependent on them.  It can be
implemented using a different portable language or even using plain
binary executables.  The underlying key technology in SuperWeb is the
safe execution of an untrusted piece of code sent over the Internet by
an untrusted third party.  For example, the Netscape Web browser can
safely run arbitrary Java code\footnote{Assuming all bugs have been
found and fixed.} while software fault isolation~\cite{omniware95}
allows for safe execution of untrusted binaries.

{\bf Economic model.} The SuperWeb design makes computing resources
freely exchangeable commodities which can be captured by a
microeconomic model based on supply and demand.  In this model, the
brokers implement an accounting mechanism for billing and crediting
users.  Depending on the quality of its services, the host receives
some kind of credits.  These credits may be exchanged for free CPU
time (e.g. if the user needs to run her own supercomputing
application), information access, free backups, cheap access to the
Internet, access to software licenses, or cyber money.

{\bf Applications.} SuperWeb is useful for casual users,
users that want to run parallel supercomputing applications, and users
of network computers or web stations.
Individual users that occasionally need extra
computing power can rent CPU hours from a host when needed.  Users
with diskless web stations are able to rent disk storage from remote
hosts or software and CPU time for temporary use.  Corporations and
researchers can use the SuperWeb brokers to obtain thousands of hosts
at a time on which they can run large parallel and distributed
applications.  We expect this approach to work well for
non-communication intensive applications such as prime number
factorization, Monte-Carlo and coarse-grained simulations, and others.
For these applications, we expect to obtain performance far superior
to today's supercomputers, at a fraction of the cost.

{\bf Security and correctness.} The fact that we allow interaction
between unknown hosts and clients that do not necessarily trust one
another raises many security concerns. For example,
a host wants the anonymous jobs to run without crashing the machine
or using up more resources than claimed.  
On the other hand, a client
requesting a remote computation needs to be sure that the
participating machines really perform the correct computation and do
not fake results in order to overcommit themselves and get lots of
credits.
Moreover, the client wants to make other
computers execute some algorithm on its data, but does not necessarily
want to expose the data to an untrusted host or send them over
insecure Internet channels. In order to preserve trust in the results
and confidentiality of data, we propose features such as duplicated
execution of code to detect cheating and encrypted computing to
preserve confidentiality of the data passed and processed.

This project can be distinguished from other network based computing
approaches in that it is based on standard components such as Netscape
browsers and Java.
Because of the simplicity of use, we expect
thousands of users registering their computer resources with SuperWeb
brokers, giving us the ability to harness an extraordinary amount of
computational power.  Alternative approaches either require the user
to have login access at all machines used for the computation, or
require operating system modifications.  As a consequence, these
approaches are limited in size, as few individual users have access to
more than a thousand workstations.


% \subsection{Contributions}
% 
% In this paper, we make the following contributions:
% 
% \begin{enumerate}
% \item We propose a global computing architecture based on
%   the World-Wide-Web. This architecture allows every user of a
%   machine connected to the Internet to make a fraction of their
%   computing resources available and also utilize resources dedicated
%   by other users. This architecture can be used to run massively parallel 
%   applications involving a large number of computing sites.
%   We also provide a rudimentary broker architecture
%   using the machine independent Java language found in Netscape.
% \item We discuss economics aspects of our proposal and give some
%   suggestions for establishing a trading system based on micro-currency or
%   a barter system based on
%   computing resources like CPU cycles, communication capabilities or
%   disk storage.
% \item We discuss a broad variety of technical difficulties and how to
%   overcome them. These include interpretation overhead, security, and
%   correctness issues. In particular, we discuss methods that
%   ensure even the (anonymous) remote site executing a program
%   can do so without gaining any knowledge about it or its data.
% \end{enumerate}
% 
% Although we can not claim to have solved all of the existing problems
% that arise in creating a global computing infrastructure, we 
% have identified most of them, and have shown that for all of these
% problems at least rudimentary solutions already exist. We therefore
% conclude that the SuperWeb infrastructure is clearly feasible and will
% continue to build a more advanced and complete prototype.
% 

The rest of this paper is structured as follows: In Section
\ref{sec-broker}, we propose a prototype resource broker architecture
based on Netscape and Java.  Section~\ref{sec:Economy} discusses
economic issues involved in a global computing scenario.  In Section
\ref{sec:enabling}, we reflect on challenging technical problems, and
sketch available solutions.  Section \ref{sec:Crypto} discusses
encrypted computing and Section \ref{sec:Measurements} discusses some
preliminary performance results.  We make a brief recapitulation of
previous research and related work in Section \ref{sec:related}, and
conclude the paper in Section~\ref{sec:conclusion}.


