Table Of Contents

Previous topic

6.7. Wire Formats

Next topic

7. To Be Organized

This Page

6.8. Auto-Configuration

We attempt to auto configure as much as possible to reduce the load on the user.

6.8.1. Responsibility Disovery

Question 1 -
Are there any configured experimental interfaces active on the machine.
Question 2 -
Can we detect any virtual hosts or threads running on the current machine

N, N - control node N, Y - virtual host Y, N - regular host Y, Y - regular host and virtual host

Control node opens a TCP server and is the root of a multicast domain

Regular host searches for a multicast (broadcast?) domain as a node

Virtual host is the root of a multicast (broadcast?) domain

6.8.2. Multicast Address Discovery

When a node first boots up, it may need to connect to a multicast network using an agreed upon address. Rather than attempt to assign this address at configuration time, we select it at runtime. We require a method for all nodes on a portion of the messaging network to agree upon the selected multicast address. As multiple experiment may be active at the same time, we also need to need to avoid address collision between experiments on the control plane.

To meet these needs, each daemon that wants to join one or more multicast groups starts with a discovery protocol on a known multicast address on a single interface and maintains the socket as long as they are active.

In each broadcast domain, there are two types of nodes:

  • Tree Root - picks the multicast address
  • Tree Node - finds a root (and group) to talk with

The messages sent are:

  • DISCOVER (no data)
  • CHOSING (address, experimentID)
  • USING (address, experimentID)

A tree root’s states are:

  • Starting
  • Choosing
  • Chosen

A tree node’s states are:

  • Searching
  • Chosen