Project Title: Chord

Team members:

   Roll number   Name
1. 2019201016    Shivani Hanji
2. 2019201046    Akash Kumar
3. 2019201074    Pratikkumar Bulani
4. 2019202004    Pranshi Yadav

An implementation of the Chord protocol, which efficiently finds the node in a distributed system that has a particular data value.

Instructions to run code:

1. Download or clone this repository

git clone https://github.com/ShivaniH/Chord-Distributed-Lookup.git

2. To compile the code:

cd your-download-path/Chord-Distributed-Lookup
make 

3. To run

Each machine that will act as a Chord node needs to run

./ChordClient specify-some-port-number-here
eg.: ./ChordClient 12345

To create a new Chord ring:

create_chord

To join a Chord ring created by another node (NOTE: Can specify the IP and port of ANY node which is a part of that Chord ring, not necessarily the creator):

join_chord node-ip-address node-port-number

To check who is(are) the current node's successor(s):

display_successor_list

To check who is the current node's predecessor:

display_predecessor

To check the current node's identifier:

display_node_identifier

To view the current node's finger table:

display_finger_table

To insert a new key value pair into the chord ring:

insert_key put-some-string-key put-some-string-value

To display the entries in the current node's hash table:

display_hash_table

To search for a key in the chord ring (and retrieve its value, from whichever node has it):

search_key put-key-string-here

To leave the chord ring and exit the program:

leave_chord