| // Node i broadcasts P_beacon packet to immediate neighbors |
| Ni P_beacon (NId, NRSSI, NSNR, NTS, SOfdprediction_index); |
| // Neighbor Node j receives P_beacon packet of Ni node i |
| Nj P_beacon (NId, NRSSI, NSNR, NTS, SOfdprediction_index); |
| //extract the beacon of Node i and store in LAT of Node j |
| LATj extract_data(); |
| Nj send P_beacon (NId, NRSSI, NSNR, NTS, SOfdprediction_index); |
| Ni P_beacon (NId, NRSSI, NSNR, NTS, SOfdprediction_index); |
| LATi extract_data(); |
| /∗ entry in LAT contains the following field. 𢅺/ |
| LATfields = [NHid, NHAvRSSI, NHAvSNR, NHTS, SOfdprediction_index] |
| // if source node has data and does not know path to destination |
| if (Sn (data) = = “T” && path_to_destination( ) = = “F”) then |
| SCNi = Sn_lookup (LATsn); |
| end if; |
| if (is exist(SCNi)) then // strongly connected neighbor node exists |
| // send DPReq packet to SCN found |
| Sn send DPReq (Saddr, Daddr, Seqid, Servicepath, SReqprediction_index) |
| // SCN receivesDPReq packet |
| SCNi DPReq (Saddr, Daddr, Seqid, Servicepath, SReqprediction_index) |
| Check_QHtable(); //SCN checks QH table |
| if (Seqid = = exists()) then |
| Discard DPReq(); |
| else |
| if (SOfdprediction_index ≥ SReqprediction_index) then |
| append (Servicepath); |
| extract_signal_data(); |
| store_into_LAT(); |
| forward DPReq() packet to SCN; |
| send DRAck() to source //send Ack to source |
| end if; |
| end if; |
| end if; |