O. C. E. A. N.
The Open Computation Exchange & Arbitration Network
A Problem, and an Opportunity
Computers are expensive. For people and businesses who need heavy-duty
computing power, even if only occasionally, there is currently little alternative
to buying a supercomputer or a network of dedicated servers. Either choice
is costly to purchase, and expensive to admisister and maintain.
Meanwhile, the Internet is sitting out there with literally millions
of computers connected to it at any given time. Except for a scattering
of busy servers, most of these computers are sitting idle most of the time,
actively doing nothing except perhaps running a screen-saver. Valuable
computational power is wasted, lost, gone forever.
Might it be possible to use each of these problems to solve the other?
The Vision
Imagine if, whenever you wanted, you could easily and automatically harness
the parallel power of as many computers as you needed across the Internet
to solve your computational tasks. Processing jobs that previously ran
for hours would now take minutes. Imagine that you could use this ability
on demand, paying only for the computer time you actually use. No more
expensive up-front investments. No waiting for new equipment to arrive.
Instead, instant, unlimited growth potential to handle whatever sudden
jumps in computing needs you might encounter in your business or research.
Alternatively, suppose you already own some computers connected to the
net, or else you know how to set some up cheaply. Rather than letting these
computers just sit idle when you're not using them, and hoping to eventually
resell them at some heavily depreciated post-obsolescence price, instead
imagine that you could run some simple and free software on your computers
that would let them safely and silently run programs submitted by users
all over the net, all the time, earning income for you.
Imagine that the collective computational power of millions of computers
all over the world becomes a vast, liquid commodity, flowing like an ocean
between continents, fluctuating up and down in price according to global
needs and the laws of supply and demand, and allocating itself to maximize
economic benefit with fluid, automatic capitalist efficiency.
The type of system we envision would also include a number of servers
called arbitrators which would assist in tasks such as disseminating
market price information, helping clients find the type and quantity of
computational resources that they need, rating the reliability and trustworthiness
of particular servers, and serving as trusted middlemen to assist in secure
transaction protocols.
We refer to the system envisioned above as OCEAN: the Open Computation
Exchange & Arbitration Network.
The OCEAN Project
The OCEAN Project, started by a group of past and present students
from MIT and Stanford,
aims to develop design concepts, open standards and free software to facilitate
the creation of an OCEAN, as envisioned above. Once the initial OCEAN system
is fully functional, we also aim to encourage its rapid widespread adoption,
since the larger the market of clients and providers, the more effective
the system will be.
Practical Issues
There are a number of practical and technical questions an OCEAN system
will need to address.
Security
There are two main goals of security in an OCEAN system: protecting clients
from servers, and protecting servers from clients. Some clients or servers
may be unreliable, dishonest, or malicious. There need to be mechanisms
for preventing, deterring, and coping with abuses.
See the last section of my talk notes for a
detailed summary of the OCEAN project's current plans for addressing various
security issues.
The recent addition of digital
signature support to Java will make it much easier to implement a number
of security mechanisms.
Portability
To facilitate the early growth of the OCEAN network, it would be desirable
if OCEAN clients could run on a variety of different server platforms.
To this end, we are currently envisioning Java
as the initially supported format for distributing OCEAN client programs.
Down the road, we would like the OCEAN to also support more platform-specific
client programs which could take advantage of special-purpose server features,
such as, for example, fast math or graphics hardware. Also, legacy code
that might already exist in a variety of languages, such as C and Fortran,
may be easier to modify to run in the OCEAN if the client programs can
be distributed in platform-specific formats. It seems that even native-code
clients can be run securely on certain server platforms such as SunOS and
Linux systems, by trapping system calls using ptrace(2) with the PTRACE_SYSCALL
request, thereby enabling the runtime environment to enforce security at
the system-call level.
Payment Mechanisms
A successful OCEAN system will likely need to support a variety of payment
mechanisms, as it seems that it may take a while for a single dominant
standard for automatic electronic payments to emerge. We will initially
support whichever fully automatic and reasonably secure payment mechanism
seems easiest to support. The job of transacting secure payments may be
made easier by depending on a network of arbitrator servers to act as trusted
middlemen. The project will operate some initial arbitrators.
Project Status and History
We have started development of OCEAN standards, together with a suite of
server, client, and arbitrator software in Java. Once a minimal level of
functionality has been achieved, the standards will be announced and the
software released for Beta testing. The early experimental Beta versions
of OCEAN may conduct transactions using "play money" until security concerns
about payments have been thoroughly addressed.
Once this early experimental stage has been concluded sucessfully, a
company may be spun off to make any legal and licensing arrangements that
may be needed to ensure that OCEAN transactions are as secure as possible,
and to develop OCEAN-releated software and services on a commercial basis.
From mid-1997 through 1999 the OCEAN project was on hold while Michael
worked on an (unrelated) Ph.D. thesis.
As of April 13, 2001, the project has been actively pursued by (now
Dr.) Mike Frank and a group of several undergraduate and graduate students
at the University of Florida for approximately the last year. Several
prototype versions of the OCEAN system now exist in various stages of completion.
It presently looks likely that a usable version of OCEAN software may be
released (binaries and open source) by 4th quarter 2001. We are developing
a business plan (Word)
to present to potential investors who may wish to help develop OCEAN into
a commercial venture.
Original Project Team Members (bios may be out of
date)
-
Ron Bodkin
-
Ron was a grad student at the MIT Lab for Computer Science and inspired
Mike to develop OCEAN in personal discussions.
-
Michael Frank (project lead)
-
Michael was a grad student in the MITAI
Lab and is presently a faculty member at the University
of Florida CISE Department.
-
Mark Torrance
-
Mark, an alumnus of the AI Lab, founded StockMaster,
a successful commercial web service.
-
Randy Sargent
-
Carl Witty
-
Randy and Carl, also AI Lab alums, are co-owners of Newton
Research Labs, which develops mobile robot systems and helped develop
Microsoft's
satellite web broadcasting service.
-
Barney
Pell
-
Barney was a fellow Stanford student
who led an
autonomous agent software team at NASA
which developed software for Deep Space One, the first AI spacecraft.
Later he worked at StockMaster.
-
Nelson Minar
-
Nelson was a graduate student in the Software
Agents Group at the MIT Media
Lab. Nelson worked on mobile agent concepts for distributed computing.
Now he has started PopularPower, a company
providing an OCEAN-like service.
Others are welcome to join the project and help out! To join, just send
email to Michael Frank at <mpf@ai.mit.edu>.
Things to Do (out of date)
Here is a list of some things that need doing, if volunteers wish to help
out. I will help anyone get started.
-
Recruit a faculty sponsor and submit grant proposals to fund students to
work on this.
-
Assist in prototype implementation of server, client, and arbitrator software
in Java.
-
Find or create a good, standard digital cash or other electronic payment
system for use from Java.
-
Figure out how to create an automated rating system that is as immume from
spoofing as is feasible.
-
Develop mechanism for doing secure native-code execution on SunOS and Linux
by trapping system calls with ptrace(2). (Also figure out how to do similar
on other Unixes, e.g., NetBSD, Solaris.)
-
Create some nice logos and otherwise improve web pages, post messages about
this page on newsgroups, inform search engines of this page, and generally
recruit interest in the project.
Resources (out of date)
Send Us Your Comments and Suggestions!
At this early stage in OCEAN development, we are very open to new comments
and suggestions as to what form the system ought to take, how to resolve
particular technical or security problems, etc. Please send your suggestions
to Michael Frank at <mpf@ai.mit.edu>.
Michael Frank
As we approach the next millennium, try to remember: "Ask not what
the world can do for your computer...ask what your computer can do for
the world." --Ashley Dunn