[chord] Chord queries relating to Initialisation and Join
Aisling O' Driscoll
odriscoll.aisling at gmail.com
Tue May 25 05:25:50 EDT 2010
Hi Emil,
Thanks for your replies os far and apologies for coming back to you again
but I am still a bit unclear between what is default Chord behaviour
according to their published SIGCOMM paper and what is specific to the MIT
Chord implementation.
1. Question relating to MIT Chord Implementation: When you say that
successor, predecessors and fingers are calculated dynamically based on a
current set of known live nodes are you saying some type of global table is
available to every node making them aware of what nodes are in the system
i.e. this will ensure the ring is always consistent?
1. Question relating to default SIGCOMM Chord behaviour (for construction
of the ring). I describe a scenario below.
- Node n wishes to join a Chord ring. There are no other nodes in the
ring.
- It sets its successor = n and its predecessor = NIL. It builds its
finger table so that all finger successor entries are set to itself.
- Subsequently node m wishes to join the network. Node m queries node n
for its successor.
- Node n replies that m’s successor is itself, n.
- Node m sets its successor = n and its predecessor = NIL.
- As per the Chord node joining procedure, node m then triggers the
notify function informing node n of its existence so that it can update its
predecessor pointer to m. At this point, Ns = n, Np = m, Ms = n, Mp = NIL.
- Now this is where I am confused: Ordinarily, in a fully formed Chord
ring, node n would at some point send a periodic stabilize function to its
successor querying its predecessor. In this way it would learn about a new
node that has joined in between node n and its successor, update it
successor and notify the new node to update its predecessor pointer. Clearly
node n’s successor should now be node m and node m’s predecessor should be
node n. But node N is not going to send a stabilize packet to itself so I
don’t know how the pointers will be correctly updated.
- I also don’t understand how node m’s finger tables will be correctly
constructed. Node m will construct its finger table by making node n do a
lookup for each entry. But this will always return node n (as that is all
that’s currently located in node n’s finger table) so node m will never be
referenced either node’s finger table (which is incorrect).
Many thanks in advance.
On Mon, May 24, 2010 at 7:29 PM, Emil Sit <sit at mit.edu> wrote:
> On Thu, May 20, 2010 at 5:55 PM, Aisling O' Driscoll
> <odriscoll.aisling at gmail.com> wrote:
> > in the finger table entries? Thus if this is the case, every time a node
> > determines that it has a new successor or predecessor it dynamically
> updates
> > its finger tables?
>
> In the MIT Chord implementation, successors, predecessors and fingers
> are all calculated dynamically based on the current set of known live
> nodes.
>
> > I had come across the attached paper that made use of an
> update_finger_table
> > function (pg 5). It made it sound like it was part of the default
>
> That looks like someone's final paper for a class; I would stick with
> papers that appear on the main Chord web site as primary references.
>
> --
> Emil Sit / http://www.emilsit.net/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://amsterdam.lcs.mit.edu/pipermail/chord/attachments/20100525/c9f97479/attachment.htm
More information about the chord
mailing list