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.
- 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
-->packet_id ("BEACON_LIST"),personal_n/w_id, list of nodes
- 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")