Skip to content
Nils Schneider edited this page May 11, 2016 · 2 revisions

Mesh Information Daemon

The Mesh Information Daemon helps with distributing information within a layer 3 mesh. It provides a socket where local clients can connect to emit and retrieve information.

This software is built to work in tandem with babeld. It'll connect to babeld's front-end where it'll listen for mesh neighbours discovered by babeld.

Operation

Discovering neighbors

mid connects to babeld's front-end port and listens for "add neighbour", "change neighbour" and "flush neighbour" events. It'll update its internal list of neighbours accordingly. When a new neighbor appears, mid will perform a handshake to determine whether it is running mid, too.

Paths

Paths are UTF-8 strings with / as separator. A valid path may look like this: l3roamd/seek/2001:db8::1

Actions

  • PUT (timeout, path, payload)
  • GET (path) → [(valid_until, path, payload)]
  • SUBSCRIBE (path) → [(valid_until, path, payload)]
  • UNSUBSCRIBE (path)

For GET and SUBSCRIBE path is considered to be a prefix. Any entry matching this prefix will be returned. Payload may be empty.

SUBSCRIBE

SUBSCRIBE will initiate a stream of entries. Any entry present in the local database will be returned immediately after subscription.

Todo

  • connect to babeld
  • listen for neighbours
  • automatically create sockets as needed
  • decrement TTL in packet itself
  • identify seen packets by
Clone this wiki locally