Table Of Contents

Previous topic

2.8. Support Software

This Page

2.9. Messaging

The messaging network is composed of two halves.

The first half is the messaging between controllers, user interfaces, routers, active scripts, etc. This half was created as multiple controllers may exist as well as multiple graphical interfaces. This communication is performed via SSL sockets and a simple link state routing process occurs to create an overlay network to connect potentially remote nodes.

The second half is the messaging between a single controller and a set of experiment nodes. The controller uses multicast to broadcast messages to all of the experiment nodes. Each experiment node also creates a single SSL socket back to the controller to pass back data reports. The clients identity is verified via the SSL negotiation. Currently, the experiment node needs to know what multicast address to listen to but the controller does not need to know who is a potential client.

Each multicast message is given a unique incrementing ID to maintain ordering and the returning TCP stream messages contain information on the last ordered ID received to provide reliability.

The control node is responsible for collecting, aggregating and storing data from the experiment nodes and is the interface for that information to any graphical interfaces or scriptings on the main messaging network.

All messages use the same HTTP styled header.

SEER/1.0
Id:
Src:
Dst/DAttrib:
Type:
Content-Length:

Message ID and src are used to verify uniqueness.

Message routing is performed based on Dst or Dattrib. Dst specifies a node while Dattrib specifies a group of 0 to N nodes that have all broadcast info with a string attribute matching Dattrib.

GUI will connect to this controller for a very simple network. If multiple controllers are part of an experiment due to experiment size or split across a WAN, a router process is started (wherever) and is instructed to connect to each controller, creating a single network. The GUI can see the other controllers after getting an INFO message.

Controller will store all the data received from the experiment node. It can collect and push new data or respond to requests for data.

2.10. Message Types

INFO - broadcast info on who my neighbors are and what pieces I am responsible for, what attribute I have, etc, everybody broadcasts

SEER/1.0 INFO
Id: ID
Src: VVWWXXYYZZ
Direct: 1/0
Attrib: [sink, script, controller, etc.]
Neighbors: AABBCC, DDEEFF, GGHHII
Content-Length: 12345
Nodes: NodeX,NodeY,NodeZ
Ips: 1.2.3.4,5.6.7.8,9.0.1.2

COMMAND - control command sent to all experiment nodes, serial header is added by the controller multicasting the packet to its own group so it can detect missing packets when experiment nodes send data updates, each controller sets up its own serial counter as commands could be injected by different applications (GUI, script, etc) at different points in the network. Everybody broadcasts.

SEER/1.0 COMMAND Id: N
Src: VVWWXXYYZZ
Content-Length: 1234
Serial: S

REPORT - experiment node to controlling node, communicated over a SSL connection, not routed past the receiving controller node

SEER/1.0 REPORT
Src: Node
Serial: X
Type: Counters, StateChange, LogEntries, FileOutput, etc.
Content-Length: 2345

GET - used for requesting data for a particular object (node, ip). Potentially let the user request more detailed information about a node from the controller (future). Dst is optional, if it is present, only route to dest, otherwise route based on attributes

SEER/1.0 GET
Id: ID
Src: VVWWXXYYZZ
Dst: ZZYYXXWWVV or Dattrib: A
Type: Rates, StateVars, LogEntries, FileList, EventState, etc.

DATA - used for replying to GETS or just for pushing data to the user application. Dst is optional, if it is present, only route to dest, otherwise route based on attributes

SEER/1.0
DATA Id: ID
Src: ZZYYXXWWVV
Dst: VVWWXXYYZZ or Dattrib: A
Type: Graph,File,Rates,StateVars,LogEntries,FileList,EventState, etc.
Content-Length: 2345

EXECUTE request to run a script on one of the control nodes in the experiment, always routed to a specific destination

SEER/1.0 EXECUTE
Id: ID
Src: VVWWXXYYZZ
Dst: ZZYYXXWWVV
Name: scriptname
Content-Length: 2345