Beacon List Algorithm

1. Node, say A, comes up.

2. Broadcasts AMALIVE packet.

3. If (personal_n/w_id of any node in network == personal_n/w_id in AMALIVE packet)

   THEN last node in network adds node A in BEACON_LIST.

    Last node forwards the list to A. 

4. If (personal_n/w_id in AMALIVE packet == NULL)

   THEN node A wants to create its own n/w.

   Perform process of step 3. 5. If (BEACON_LIST packet not received before TIMEOUT) A is the only node. Selects a Network Name. Creates a new network.

ELSE If (one or more BEACON_LIST packet received before TIMEOUT) If(create_n/w==1) THEN If(personal_n/w_id in any BEACON_LIST packet) THEN A stops operation THEN A creates ERROR_LOG and writes "Network name already exists". Stop. ELSE if(create_n/w!=1)          THEN follow step 7 onwards. 6. Repeat STEP 1. to STEP 5. for every new node.

7. (a) Node keeps a copy of BEACON_LIST that it sent, and knows SUCCESSOR _NODE (next node in list)

(b) '''Every node receives BEACON_LIST from its predecessor. '''

'''        Sends BEACON_LIST_ACK packet to sender (predecessor).  (c) Compares new BEACON_LIST with old BEACON_LIST for updation.''' If any mirrors being tracked are removed THEN follow Fault Tolerance Protocol If in new BEACON_LIST there are one or more nodes between self and SUCCESSOR_NODE (these are those nodes that were formerly successors to self, but they are no more existent).     THEN remove these nodes from new BEACON_LIST       Copy new BEACON_LIST into OLD_BEACON list.   (d) Forwards the list to the SUCCESSOR_NODE after updation.

8. If SUCCESSOR_NODE fails to acknowledge with BEACON_LIST_ACK  (a) prior node in the BEACON_LIST removes the node from the list. (b) finds the new next node. (c) sends the BEACON_LIST to the new next node.

--&gt;packet_id ("AMALIVE"),mac_add,personal_n/w_id,create_n/w --&gt;packet_id ("BEACON_LIST"),personal_n/w_id, list of nodes
 * Only the last node in the BEACON_LIST adds a new node in the list.
 * AMALIVE packet contains following fields
 * BEACON_LIST packet contains following fields
 * TIMEOUT period to be decided.
 * SUCCESSOR_NODE: the id (mac_id) of the next node in the BEACON_LIST
 * BEACON_LIST_ACK packet contains packet_id ("BEACON_LIST_ACK")