NovaGenesis: Base Objects

CommandLine
It is a container for the actions to be performed at receiving Block.

Message
It is a container that has a list of CommandLine objects, plus a Payload file handler. A Message object can be converted to a file and vice-versa.

Block
It is a container for a specific set of functionalities inside a NG process.

Process
It is a container for all the functionalities inside a NG process.

Basic Objects

NovaGenesis: Blocks

In the release 0.1, each NG process has at least the following basic blocks inside. Specialized blocks are employed to differentiate the processes behavior.

Gateway (GW)
Responsible for intra and inter process communication.Intraprocess communication is achieved by direct Block (or derived classes) function calls that transfer Message objects. Interprocess communication (IPC) is achieved by means of operating system function calls (message buffer) to transfer ASCII message files. It has two Message object priority queues. It read the queues and calls a Block instance to process messages.

Hash Table (HT)
Stores local SCN-bindings using a < key, value(s) > data structure.

Command Line Interface (CLI)
Provides an interface for NG developer. Allows sending messages and logging.

(c) Antonio Alberti, 2012, Inatel.

NovaGenesis: Processes

The release 0.1 comprises four components:

PGS (Proxy and Gateway System)
It is a process that accumulates proxy, gateway, and initialization functionality. It is a proxy for TCP/IPv6 socket resources inside NovaGenesis. The PGS is also a gateway among NG components and the operating system where they reside as well as a gateway among NG and current Internet components. Therefore, it enables sending/receiving packets using HIDs (Host IDs). Finally, it performs some initialization operations, like mapping NGIDs (NovaGenesis Identifiers) to PIDs (Operating System Process Identifiers) and HIDs. It also publishes those bindings at the NG domain level.
The PGS has 4 internal blocks: CLI, GW, HT, and PG (Proxy-Gateway). The PG block implements inter host process communication.

HTS (Hash Table System)
It is a set of processes dedicated to store SCN-based bindings among entities. Every binding has a key and one or more values. The key is always an SCN, while the value could be a vector of SCNs, a vector of strings, or a local OS directory path.
Each instance of hash table is called HTS. NG allows human domain managers to customize the rules used to distribute the bindings for DHT instances. Bindings are distributed according to their binary keys. In this version, a very simple rule is going to be used. The binary key space will be divided by the number of DHTs instances in the domain. This is fixed during initial setup.
To improve scalability of design, the HTS implements a separated hash tables to each binding category. Note that the bindings do not have all the details of a certain relation, they just capture the fact that the relation exists. Therefore, it is up to the entities to recognize the meaning behind existent binding. They can use information objects, like descriptors for example, for this purpose.

GIRS (Generic Indirection Resolution System)
It is a process that is used to decide the most appropriate HTS to store some SCN-based binding.
The GIRS selects the appropriate hash table to store the bindings as well as it provides a mechanism retrieve some already published bindings and deliver to a subscriber. The GIRS collaborates with instances of hash table systems (HTSs) to store the key-value bindings.
The GIRS has 4 internal blocks: CLI, GW, HT, and IR (Indirection Resolution). The IR block forwards binding store and get messages to the right HTS instance.

PSS (Publish/Subscribe System)
It does the rendezvous between publishers and subscribers. The PSS allows entities to announce bindings they are publishing to other entities. Also, it allows entities to be aware of bindings that are being subscribed by other entities. In this version, the secure and private rendezvous is not being implemented. The PSS will only forward messages. However, in future versions publication and subscription is going to be secured by secrecy, authentication, authorization, and integrity procedures. The framework already contains the structure necessary to accommodate such security mechanisms.
The PSS has 4 internal blocks: CLI, GW, HT, and PS (Publish/Subscribe). The PS block provides a narrow waist to publish/subscribe SCN-bindings. It contains the specialized functionality of the process.

(c) Antonio Alberti, 2012, Inatel.
Release 0.1 - Proof-of-concept
posted Dec 4, 2012, 8:09 PM by Antonio Marcos Alberti [ updated Dec 4, 2012, 8:23 PM ]