Introduction

This documents presents 'NeL Net', the NeL network library.

The NeL Net comprises code libraries for inter-server communication and server-client communication. It also provides implementations of the service executables required by the higher level layers of the code libraries.

Mission Statement

The first objective of NeL Net is to provide a complete data transfer system that abstracts system specific code and provides mechanisms for complete control of bandwidth usage by the application code.

NeL Net has a further objective of providing a complete toolkit, comprising further layers of library code and core service implementations, for the development of performance critical distributed program systems for massively multi user universe servers.

The current feature requirement list for NeL Net corresponds to the application architecture for Nevrax' first product. This notably includes the requirement for a centralised login validation system at a separate geographical location from the universe servers.

Nevrax is currently developing a TCP/IP implementation of the low level network layers. A UDP implementation may be developed at a later date.

Statement of requirements

The Network library addresses the following problems:

Client -> Server communication

Server -> Client communication

Inter-Process communication across servers

On the fly backup management

General requirements

Login/ logout management

Account management

Technical design details

Design outline

The NeL network library provides a single solution which caters for all of the Server -> Client, Client -> Server and Inter-Process communication requirements.

This solution is structured as a number of layers that are stacked on top of each other. The API gives the app programmers direct access to all of the layers.

There is a program skeleton for the programs within a shard who are capable of communicating with each other via layer 5 messages. Programs of this form are referred to as 'Services'.

The backup system is a standalone service (a service being a process which exposes a standard message interface) which will encapsulate a 3rd party database.

The login manager and account manager are standalone programs at an isolated site.

In a nutshell the network support layers include:

Layer 4 (Top Layer) Inter-Service message addressing layer. Handles routing of messages to services, encapsulating connection to naming service and handling of lost connections.
Layer 3 Message management layer. (Handling of asynchronous message passing, and callbacks)
Layer 2 Serialised data management layer. Supports the standard serial() mechanism provided by NeL for handling data streams.
Layer 1 Data block management layer. (buffering and structuring of data with generic serialization system). Also provides multi-threading listening system for services.
Layer 0 (Bottom Layer) Data transfer layer. Abstraction of the network API and links (PC may be across a network, or local messaging)

Layer 0

Layer 0 includes the following classes:

Layer 1

Layer 1 includes the following classes:

Layer 2

Layer 2 includes the following classes:

Layer 3

Layer 3 includes the following classes:

Layer 4

Document under construction

System Services

The following system services are provided as part of NeL. For each of these services there exists an API class that may be instantiated in any app-specific service in order to encapsulate the system service's functionality.

The Naming Service

A standalone program used by all services to reference each other.

API class: CNamingClient

The Service Skeleton

The network library presents a generic service skeleton, which includes the base functions of a distributed service. At initialisation time it performs the following:

The skeleton also handles exceptions and housekeeping when the program exits (whether cleanly or not)