[chord] Correctness of finger table in simulator

Verdi March verdimar at comp.nus.edu.sg
Mon Jun 7 17:39:22 EDT 2004


Hi,

I need to check the correctness of node->fingerList. The reason is I
need to simulate events (lookup, fail, etc.) in a stable Chord. Stable
means a number of joins followed by a 'wait' period until all fingers in
n->fingerList point to their proper finger. As defined in stabilize.c, a
proper finger is the successor of n+2^{i-1}.

My current approach is to periodically observe fingerList of every node:
a. ensure that fingerList = num_fingers + num_successors
b. for each finger, they must point to the proper successor

Unfortunately, this approach does not work as I haven't fully understand
how Chord simulator fills node->fingerList. 

According to the paper, fingerList->size is fixed (with some duplicate
entries). But in the simulator, fingerList->size varies depending on the
total number of nodes.
For instance, with num_finger = 16 and num_successor = 1, I expected 
each node to have fingerList->size = 17.
However, the simulation results are:
1. With 5 nodes, nodes eventually have fingerList->size = 4.
2. With 10 nodes, nodes eventually have fingerList->size = 9.

Because it is possible that [fingerList->size < (num_fingers +
num_successors)], my approach will fail (step a).

I'm thinking whether I can assume that (after skipping num_successors 
entries), the remaining fingers (say 3 more fingers) should points to
n+1, n+2, and n+4 nodes?
Which brings me another question: how do I know that 3 more fingers
is the correct number? If I can't guarantee that 3 is the correct
number, then my approach would only provides an approximation of stable
condition.

Any comments? TIA.


Regards,
Verdi



More information about the chord mailing list