[net2-wg] Link table management

Rodrigo Fonseca rfonseca at cs.berkeley.edu
Mon May 15 20:11:42 PDT 2006


Hi Om,

I came across an issue that needs some interaction between the link
table management in the LinkEstimator and the TreeRouting code. This
has been seen in the SP work.

some nodes are important in the TreeRouting because they are .. er...
the roots of the tree.
If a node is a neighbor to the root of a tree, it is very important
that this root be a part of the LinkEstimator table, otherwise you
can't form the tree.

The algorithm is the following:
  1. node A receives a message from a root R (hopcount = 0, metric = 0)
  2. A queries link estimator for quality from R to A (q).
  3. A sets: hopcount = 1, metric = 0 + q, parent = R
  4. A broacasts this info

However, if R is not in the LinkEstimator table, A can't guess q, and
the tree doesn't form. (Well, if no one has R in the link table, that
is...)

So, the TreeRouting module has to basically tell the LinkEstimator 'if
this neighbor is not in your table, make sure you put it there'.

Right now the interface LinkEstimator is

interface LinkEstimator {
    command uint8_t getLinkQuality(uint16_t neighbor);
    command uint8_t getReverseQuality(uint16_t neighbor);
    command uint8_t getForwardQuality(uint16_t neighbor);
    event void evicted(am_addr_t neighbor);
}

One option is to use the same approach as SP, by adding:
1.  command result_t insert(am_addr_t neighbor, message_t* msg)
or
2. command result_t insert(am_addr_t neighbor)

1 uses message information to (start) having information on the link quality
2 just inserts a zeroed entry for the node, which will be filled out later

This command would most likely cause the eviction of some other node.

Does anyone have a preference or see a better solution? Joe, Arsalan?

Thanks,
Rodrigo




More information about the net2-wg mailing list