MMDISCOVER(8)

NAME
mmdiscover - Mobile Mesh Link Discovery

SYNOPSIS
mmdiscover [-d file] [-f file] [-h] -i ifname [-vz]

DESCRIPTION
mmdiscover speaks the Mobile Mesh Link Discovery Protocol on an individual IP interface and reports neighbor interface addresses and associated costs for any discovered links. Links that go down are also detected and reported.

Client programs may receive link reports by connecting to a well-known Unix socket created by mmdiscover whose name is based upon the name of the IP interface prepended with "ln-". For example, if mmdiscover is bound to interface "eth0", the well-known Unix socket name will be "ln-eth0".

mmdiscover does not have prior knowledge of potential clients. Clients simply send a message asking for the current list of links. This allows mmdiscover to dynamically learn who its clients are. Then, when a link goes up or down, it sends the event to all clients who have previously requested a list of links. A failure when sending an event to a client implies that the client has stopped listening and thus mmdiscover removes the client from its dynamically managed set of clients.

mmdiscover is responsible for determining when links go up and down. Periodically, it broadcasts a Hello message on a Udp socket bound to the IP interface. mmdiscover can be configured to report either uni-directional or only bi-directional links. The Hello message includes a list of the interface addresses of the senders of Hello messages that have been heard by the interface in the last DeadInterval .

If mmdiscover reports uni-directional links, then whenever it receives a Hello from another node's interface that it does not have a link from, it reports the new link. If mmdiscover only reports bi-directional links, then it checks a neighbor list within the received Hello message for the address of the interface that heard the Hello. Note, if mmdiscover is configured to report bi-directional links, then it must report that a link went down if it changes from bi-directional to uni-directional; similarly, it reports that a link came up if it changes from uni-directional to bi-directional. If a Hello message for a link which is declared to be up is not received within a DeadInterval , mmdiscover reports that the link is down.

OPTIONS
mmdiscover recognizes the following command line switches:

-d file
    Use flags 'file' to enable debug output.

-f file
    Use config 'file' instead of /etc/mobilemesh/mmdiscover.conf. See below for a description of the config file format.

-h  Display a help message.

-i ifname
    The name of the IP interface whose neighbors will be discovered.

-v  Display version information.

-z  Run in the foreground instead of running as a daemon.

Config File Format
By default, mmdiscover reads the file /etc/mobilemesh/mmdiscover.conf for configuration parameters. The format of the config file requires each configuration parameter to be on its own line. Comments may be placed in the file by beginning a line with a #. The following configuration parameters are recognized:

metric       <unsigned int value>
    The cost associated with the interface.

allowUni     <bool>
    Set to 1 to allow uni-directional links to be reported. Set to 0 to only allow bi-directional links to be reported.

port         <Udp Port Number>
    The well known UDP port number that all similar nodes are using for link discovery.

helloPeriod  <unsigned int value>
    The number of seconds between sending "Hello" messages.

deadInterval <unsigned int value>
    The number of seconds after hearing the last "Hello" message from a neighbor to declare the link from the neighbor down.

SEE ALSO
mmrp(8), mmborder(8), mmrpviz(8)

AUTHOR
This program and documentation was written by Kevin H. Grace of The MITRE Corporation <kgrace@mitre.org>. Credit is also given to Mike Butler who developed some of the support classes and lent his keen insight.