Table of Contents

Network Topology

FIXME Update this from drc-server.git

Goals

Design

The intention is to construct a uniform adaptive partial mesh overlay network. This approach has been chosen instead of a full mesh network because:

Each node in the adaptive partial mesh will have (almost) the same number of links into the network, based on the natural log of the number of nodes (this information is available since every server will know about every other server on the network). This counteracts the exponential link count that would be present in a full mesh.

Deciding on the number of persistent links to have to every node is a difficult problem. Using a fixed number of links means that some nodes cannot satisfy this requirement in some configurations or node counts.

Possible link count algorithm

The number of links scales at roughly n*log(n)

This all introduces a new problem - how do we get the hop counts?

Possible connection protocol

  1. Attempt connection to most distant node, traversing priority queue until a connection is achieved
  2. n1 asks n2 for route table
  3. n2 sends route table to n1
  4. n1 merges the route table with its own
    1. The hop count for every node is incremented in the received data (to account for the hop the data has just made)
    2. Any route entries with a hop count lower than the local hop count to the same node causes an update in the local table
      1. Hop count → new hop count
      2. Gateway → n2
    3. Merged route table is sent to all adjacent nodes (those connected to n1) except n2

When a route table is received by a node:

  1. Merge with local route table as described above
  2. If the local table was modified, rebroadcast as above

This shouldn't result in an infinite update cycle because eventually all nodes will have a full route table that needs no more updates.

Useful links:

Related links