GIMnetAP

GIMnetAP is the "network layer" of the GIMnet architecture. The network layer is responsible for transferring packets from node to node over the GIMnet.

Nodes are connected to the GIMnet by connecting to one of the hubs in the system. New nodes can be connected and disconnected from the system at any time. Each time a new node connects to the system it is assigned a unique identifier which consists of the Hub Identifier and Node identifier inside the given hub. Multiple hubs can be connected together to form a single larger GIMnet. Hubs will attempt to maintain the routing topology by auto-reconnecting as existing connections fail. If a hub is completely disconnected from the GIMnet, it will continue to operate with its local nodes normally, and only transmissions to non-local nodes will fail.

Each node connected to a hub can directly communicate with any other node in the whole GIMnet, therefore GIMnet offers virtual peer-to-peer communication between nodes. The hub uses TCP/IP for all node and hub connections, and nodes create a TCP connection towards the hub. Since most firewalls permit outgoing traffic, we can have a interconnected system without any extra firewall configuration.

A single hub in the system can have any number of local nodes, and transfers between nodes are handled independently of each other. If the hub is located on the same machine as the nodes, the transfer rates can be considered to be near IPC (Inter Process Communication) rates.

For GIMnet, GIMnetAP has three different protocols:

  • The HubNS protocol provides system wide unique naming which can be used to reach nodes without knowing their physical location on the system (directly comparable to DNS on the Internet). Each name corresponds to a number which is a unique identifier for a node and is used for routing packets between nodes. HubNS also provides facilities for a node to reconnect using the same identifier number each time (bypassing the dynamic identifier assignment). This helps to keep node to node connections intact and minimizes the need for name cache updates on nodes.
  • FastProtocol is the real payload carrier protocol. Data is transferred in frames, providing a variable size packet format over a reliable stream protocol (TCP). FastProtocol's routing is implemented using mostly look-up tables. FastProtocol also implements multicast efficiently reducing the sender's bandwidth usage. If multiple recipients reside on another hub, the packet is sent only once over a hub-to-hub connection. The FastProtocol header is kept to a minimum (16 bytes) allowing small packets (like direct teleoperation data) to be transferred without excessive overhead.
  • The HubCtrl protocol provides some special features for configuring and managing the GIMnetAP. This includes for example routing, node identifier assignment/reassignment, and instrumentation. This protocol is intended mostly for configuring the hub itself and has little use on the application layer.