UbiquityProject.com
Ubiquitous Computing
Fluidic Networking (7)
Global Supercomputing
Fine-Grained Ownership
Micropayment Economy
Agent Infrastructure
Smart Environments (3)
Intrinsic Security (3)
Technologies (14)
Research (44)
Products (11)
/ UbiquityProject.com / Ubiquitous Computing / Global Supercomputing
Global Supercomputing
As the Internet grows in reach and capability, traditional boundaries between computers begin to blur. Rather than people owning and using an individual device, such as a PC or cell phone, every device will merely provide access to a global computer created from the combined resources of all digital devices. This global supercomputing environment can be broken down into the following systems:

>

Fine-Grained Ownership: Old-world concepts of physical ownership are becoming obsolete in the face of hosted applications, software subscriptions, co-located hardware, and publically shared resources. In its place is growing a more fine-grained concept of ownership, where digital resources will be bought and sold in tiny amounts, as needed, anywhere around the globe.

>

Micropayment Economy: This new concept of fine-grained ownership will a robust financial system designed to handle enormous volumes of individually minute transactions.

>

Agent Infrastructure: Atop this "micropayment economy" will be built an infrastructure to support self-propelled, mobile agent objects that dynamically purchase resources and assemble themselves wherever necessary. This agent infrastructure will allow for massively distributed applications to be created for such features as extremely-high-bandwidth multiplexing, network-edge hosting, and bulk supercomputing.
Fine-Grained Ownership
Old-world concepts of physical ownership are becoming obsolete in the face of hosted applications, software subscriptions, co-located hardware, and publically shared resources. In its place is growing a more fine-grained concept of ownership, where digital resources will be bought and sold in tiny amounts, as needed, anywhere around the globe.
Until recently, computing capacity was purchased in large blocks. If you wanted more computational ability, you buy, install, administer, maintain, and upgrade a new computer. If you want more bandwidth, you buy DSL, a T1, or a T3. If you want more software, you buy a CD or license a copy for use on your computer. It was all very simple.
However, it was also very wasteful. When buying hardware, it was necessary to purchase more than was typically needed in order to accomdate any "spikes" that may occur. When buying software, it was typically necessary to pay "per CPU" or "per seat", even if the software was used infrequently. This same tendency to over-purchase applies equally to bandwidth, storage capacity, printing equipment, and so on. Except for particulary large organizations with specially negotiated licenses, many customers were pushed into disadvantageous purchasing situations.
To combat this problem, many industries are moving to more fine-grained billing techniques. For example:

>

Web-based applications charge per-user, but allow that user to log on from anywhere.

>

Print shops allow people to purchase a single color printout, instead of purchasing an entire color printer.

>

Internet hosting services charge per-megabyte used of storage and bandwidth.

>

Sun and Microsoft have staked their futures upon Web services and subscription-based software.
This process of eroding away the granularity of purchases has only started. By extrapolating this trend forward, it seems possible that this could lead to an environment where every digital resource is traded on an open market. Device owners would specify the price at which that device's storage, communication, and computation resources could be purchased. Then, anybody on the Internet that wants to pay that price could purchase extra bandwith, CPU cycles, or storage bytes. Consider the following scenarios:

>

Edge-of-the-Network Hosting: Although all computers can communicate via the Internet, they can't all communicate equally well. As demonstrated by a variety of edge-caching web-content networks (Akamai, Digital Island, etc.), web experiences can be greatly accelerated and improved by moving the content as close on the Internet to the user as possible. However, existing solutions are limited to exclusively static content. With Ubiquity, a similar system could be created for fully dynamic content by sending database, business logic, and web-presentation agents to the server located nearest to the end user. The client's web-browser would then be directed to the new agent-based hosting location for close access. Not only would this make a website quickly available to all locations in the world, it would create a web infrastructure that can instantly scale to almost limitless traffic volumes. Also, assuming the client were able to host the Web server components locally, it could even offer access to that website when the user is not connected to the Internet. The Web MetaServer exemplifies this type of application.

>

Extremely High Bandwidth Stream Multiplexing: Consider a videoconferencing application where any user can choose to connect to any subset of the other users. This could be done by having every user broadcast an audio/video stream to a central server, with the server sending back streams for the subset of users specified. Assuming every user was connected to at least one other user, the central server would need to have enough bandwidth to accomodate two streams for every user (one to receive, one to send). Assuming 128 kilobit streams, a central server with a dedicated 100 megabit connection would only satisfy about 400 users. While possibly sufficient for a single enterprise on an internal Ethernet, this solution would be totally inadequate for global, Internet-wide traffic. With Ubiquity, however, this central server could be easily broken up to exploit local coherencies. For example, users would often videoconference with people in the same office, building, city, state, nation, etc. At every level, videoconferencing agents could choose well-located servers to coordinate nearby users, thereby minimizing round-trip latency and distributing bandwith over many geographically disparate servers.

>

Bulk Computation: As demonstrated by perhaps the most well known distributed application, Seti@Home, large computational tasks can be broken into smaller tasks to be performed in parallel on many computers. In general, most existing solutions to this problem require tasks to be broken into standalone "work packets" that can be completely solved in isolation. Ubiquity can, of course, solve this simple problem with its agent technology. However, Ubiquity can also solve problems that require realtime coordination between agents -- a much more rare and powerful technology.

>

Trade Secret Data Processing: In addition to the obvious efficiency benefits to performing a calculation wherever the data is located, there are powerful security implications to agent-based data processing. Consider a company that makes its business collecting data, such as web-queries, for analysis. Ensuring that the data remains a trade secret is critical to that company's success. However, the data by itself is useless if customers cannot access the data for analysis. A perfect solution to this problem is to allow customers to send an agent to the company's database to perform the processing locally, and only allow the agent to return a small amount of data in a pre-negotiated format. If the database is hundreds of megabytes or terabytes in size, there's no danger in allowing the agent to return several kilobytes of carefully scrutinized data. In this way, the customer has the ability to process the data in arbitrary fashions, while the company ensures confidential data is kept secret.
Micropayment Economy
As the transaction size of inter-enterprise cooperation shrinks, so too will fall the the resultant cost of that transaction. For example, enterprises today might buy bulk user information, an annual Nasdaq feed, or a subscription to an esoteric database for thousands or millions of dollars. With Ubiquity, enterprises could purchase user information, stock quotes, or database queries on an individual basis for pennies at a time. This ability to make millions of tiny, individually billed purchses will allow for new types of technology licensing and data marketing.
Agent Infrastructure
In the most general sense, an "agent" has the following characteristics:

>

Executing Code: Agents are application objects that perform some useful function, such as computing a value or making a business logic decision. "Active" agents own a unique thread of execution, while "passive" agents merely respond to requests from other agents.

>

Self Sufficient: Although by no means a quantifiable attribute, agents are highly independent. They adapt to a variety of execution environments, carry or are able to locate their own resources, and basically operate without supervision.

>

Mobile: Perhaps the most important characteristic, agents are able to physically copy and transport themselves between execution enviroments under their own control. This requires the ability to decide when transport would be useful, evaluate one or more remote execution environments, negotiate for execution resources, and then physically perform the move.
In general, any agent on any Ubiquity server should be able to communicate with any other agent on any other server, without knowledge of where that agent is physically located. As a result, agents can freely roam to the server that best suits their needs without affecting the operation of other dependent agents. Thus, agent-based applications (applications built using a set of cooperative agents) continuously re-evaluate their configurations for optimal speed, security, and reliability.
Although the distinction between "distributed" and "agent" applications is admittedly vague, the major advantages of using Ubiquity agents over a home-grown distributed system are:

>

Automated Installation: Agents can automatically relocate themselves to any server in the Ubiquity network, without manual administrator assistance. This eliminates the tremendous cost of globally coordinating manual efforts associated with installing and upgrading traditional distributed systems.

>

Decentralized Security: Highly distributed applications have the added burden of executing outside of the administator's tight control, meaning security needs go both inwards and outwards. From the inside looking out, the application must defend itself against potentially malicious users and compromised peers, as well as from potentially damaged or malicious execution environments. Likewise, from the outside looking in, the execution environment must be protected from damaged or potentially malicious agents, as well as untrusted local users. In general, a good security policy takes a "guilty until proven innocent" attitude toward all entities.

>

Decentralized Communication: Effectively coordinating thousands or millions of interacting agents is an exceedingly nontrivial task. Doing so without centralized directories or reliable communication channels while maintaining efficiency and security is even moreso.