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) 
          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". 
          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

-->packet_id ("AMALIVE"),mac_add,personal_n/w_id,create_n/w

  • 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")