SONlib logo SONlib text SONlib logo


Self Organizing Net Library
Home Page

Contents

Goal

Goal is to provide a library for

The library should be

What is SONlib?

What is the status of the SONlib project?

Currently SONlib is just in the conceptual phase: there isn't any software so far.

Tasks

Note: priorities are 'soft'; working on tasks may be done in parallel (even if they have different priorities).

Task Description Priority
(1: highest,
9: lowest)
thinking about concepts 1
web pages
  • more writing about concepts
  • writing about ideas for a possible mail infrastructure
  • incorporating some of my thoughts and ideas from the konspire[2b] wiki; see Be aware: the concepts here go beyond the concepts described there, and the definitions of terms in the glossary here don't necessarily fit to the terms there.
2
software engineering
  • organizing the API: choosing
    • implementation language
    • code documentation method
  • choosing libs to be used
5
API implementation 6
test suite implementation 7
sample app implementation 8
documentation 9
setting milestones See Milestones. 9

Milestones

Since currently I'm very busy, there aren't any timelines so far.

Questions and Answers

I don't understand a term, what can I do?
Send me a mail: then I know, what's missing in the glossary....
Why another lib instead of using the lib from the konspire[2b] project?
The konspire[2b] library has problems:
  1. it doesn't scale well to a high number of channels: all channels are using the same net, so the admin traffic increases with the number of channels;
  2. a mechanism for sending feedback to senders is missing.
SONlib should solve these problems by
  1. splitting the admin traffic by having multiple nets (one for each channel);
  2. providing a feedback to senders mechanism.

Concepts

Concept map

The following image visualizes some concepts and their relations. Concept map image

Identifications

name description related message types
libVersion Version of SONlib binary.
envVersion Version of SONlib environment. The environment contains configuration data which is not node specific and has to be compatible with libVersion. All nodes in a SON net must use compatible environments. enterNet?
installationVersion Version of SONlib installation: libVersion, envVersion together. enterNet
nodeId Identification of a node environment: it remains the same over different SONlib runs.
Note: it has to be cleared if it may be the same as nodeAddress.
peerToPeer
nodeAddress SON node address for fast routing of peer to peer messages.
Note: may change for each run of SONlib (unlike nodeID).
peerToPeer
sessionId Identification of the current session of a node: it identifies one SONlib run of a specific node (with some nodeID). all (possible param)

Messages

name description

Protocols

enterNetRequest 1
node outside net
--> enterNetRequest(name, nodeID, envVersion, nodePolicy, IP) -->
<-- accepted(msgId(enterNetRequest), netPolicy) <--
net node

If the node outside net suits to the net, the net node accepts it. The returned netPolicy has to be compatible with the given nodePolicy. Thereafter:

enterNetRequest 2
node outside net
--> enterNetRequest(name, nodeID, envVersion, policy, IP) -->
<-- denied(msgId(enterNetRequest), reason)
reason: envIncompatible, policyIncompatible, hidden
<--
net node

The node outside net does not suit to the net, the net node rejects it with reason.

propagateEnterNetRequest
net node
--> broadcast(enterNetRequest) -->
<-- <--
neighbor nodes

Net node broadcasts enterNetRequest to its neighbors.

acceptNodeAsNeighborFor 1
net node
--> acceptAsNeighborFor(msgId(enterNetRequest)) -->
<-- becomeNeighbor(msgId(acceptAsNeighborFor), neighborPort) <--
--> becomeNeighbor(msgId(becomeNeighbor), neighborPort) -->
node sending enterNetRequest

Net node accepts node outside net as new neighbor. Both nodes send a port number to the other one for establishing the neighbor connection.

acceptNodeAsNeighborFor 2
net node
--> acceptAsNeighborFor(msgId(enterNetRequest)) -->
<-- doNotWantBecomeNeighbor(msgId(acceptAsNeighborFor), reason)
reason: alreadyAccepted, hidden
<--
node sending enterNetRequest

Net node accepts node outside net as new neighbor. Node entering net does not want to become neighbor with reason (normally since it already has been accepted by another node).

EnterNetListener

Internal node listening for an external node trying to enter net. enterNetListener state chart

EnterNetRequester

External node trying to enter net by requesting internal node. enterNetRequester state chart

Glossary

This glossary contains definitions of important terms used here.

admin net
An admin net is for
channel net
A channel net is for
content
Content is the transmitted data of interest, which hopefully deserves these efforts around it...
leaf net
A leaf in the SON net tree without any subnets.
long term connection
A long term connection is a connection between neighbor nodes building a net.
net
net path
A net path identifies a certain net: a node may become member of some net by recursively becoming member of all its super nets, starting from the root net and ending with the identified one.
node
A node is a member of one or more nets. It is realized by a process running at a host, beeing addressed at transport level by an IP:port combo. A node usually has one or more neighbor nodes.
root net
The (one and only) top level net without a super net.
Self Organizing Net
The root net with all subnets. It has a tree structure.
short term connection
A short term connection is established for a content transmission between two nodes (normally not immediate neighbors).
SNI rule
Super net inclusion rule.
SON
Self Organizing Net.
SONlib
The library for building and using Self Organizing Nets.
subnet
A net one level down related to another net (there are zero or more subnets).
super net
The net one level up related to another net (there is exactly one super net for each net, except for the root net, which has none).
super net inclusion rule
The super net inclusion rule (SNI rule) says, that a node being member of a particular net also has to be member of its super net.
Consequences:
  1. Each node member of a particular net is member of all super nets in a chain up to the root net.
  2. All SON nodes are members of the root net.

History

version date author comment
1.4 .04.04 sr added
  • state charts: "EnterNetListener", "EnterNetRequester"
1.3 16.04.04 sr added
  • "Concepts"
  • "Concepts - Concept map"
  • "Concepts - Identifications": table of 6
  • "Concepts - Messages"
  • "Concepts - Protocols": first 5
  • "Functionality": different kind of messages, addressing scheme for fast routing of peer to peer messages
changed
  • general: all nets may be both admin and channel nets now (this also applies to root and leaf nets)
  • "Functionality"
1.2.1 28.02.04 sr changed
  • "History": HTML syntax
1.2 28.02.04 sr changed
  • "gloss:root net": added that it's only an admin net
  • "gloss:leaf net"
  • "History": better formatting
1.1 28.02.04 sr changed
  • "Tasks - web pages": "Be aware:..." added
1.0 28.02.04 sr initial version

SourceForge.net Logo Valid HTML 4.01!

Author: sr
Last modified: Sat May 1 19:58:23 CEST 2004