Network Architecture
and Topology
Overview
The main goal of the network design is to assure that work gets done. Work that's put into the system needs to be completed quickly and efficiently and the results need to return to the servers. Expired work has to be purged from the system, and new work always needs to be available to any client that wants it.
All nodes should be able to communicate the information they need to at any time. The design is highly redundant at all levels so that if a node fails, no other node should be affected. Proxies and servers act in rings, where any node in the ring can serve the same functions as any other.
Security is also a critical factor in a large distributed system. No node will act on a command or use data until it has verified that that command or data has come from a trusted source. Anything that is not from a trusted source is discarded, and measures are taken to ignore further commands from that source.
Network Architecture
There are three layers in the Cosm network:
Servers
Servers are at the top level and serve in clusters of one or more. Servers
function to hand out tasks, receive completed work, and serve any data files
related to their project. Servers will communicate with any proxy in the
layer closest to them, or other peered servers, but will not talk to
clients.
Proxies
Proxies are the middlemen of the network and do most of the communications
tasks. The proxies buffer work, cores, project data, and generally anything
from upstream of itself. A proxy will also at times talk to other proxies
in its layer to distribute messages, load balance, or route around network
problems.
Clients
Clients are the workers of the network. They are given tasks by proxies and
return the results to them. Once they have work, they run the proper core
and then report the results back when the work is finished. Clients also
serve as DFS nodes if that is desired. The clients are designed to be
installed and forgotten, not needing the user to visit them unless security
settings need to be changed. The client will never interfere with local
users or processes, but will Email its owner for help when there is a
problem that cannot be solved without intervention.
Additionally to the servers, proxies, and clients, there are three other components:
Command Consoles
Command consoles are the way the user interfaces with other elements of
the network. They allow the user to command some or all of the nodes
that they have the authority to control. Command consoles are the source
of all user commands throughout the system, and are the only way to
interact with the system. They will support most human languages, and the
interface will be standardized so that any command console can be used if
you have the right keys with you.
Cores
Cores are what do the "real work" in the system. They will only handle
performing the actual work involved in the project. This makes porting
the cores to all available processors and operating systems simple and
easy. This also allows the cores to be run offline and separate from
the client for hosts that have no network connectivity. All cores must be
verified before a client will run them, as to prevent using a bad core.
Server Modules
A server module is the element of the server that handles tasks for a
specific project. It will register with a standard set of server
libraries and then be called by the server to perform the needed tasks.
A module will generate new work, as well as process and verify the
results. This allows for a standard programming model and rapid
scalability if more servers are needed to handle the load of a project.
v0.1 by Adam L. Beberg
© Mithral Inc.
1995-2024.
All Rights Reserved.
Mithral® and Cosm® are trademarks of
Mithral Inc.