# An Efficient Void Aware Framework for Enabling Internet of Underwater Things
## 3 The Proposed Efficient Void Aware Routing Protocol for Enabling Internet of Underwater Things
### An Efficient Void Aware Routing Protocol: Design Approach
#### 3.4.3 Void Detection Phase
Here, the number of void nodes is equal to the number of the ordinary nodes and there is at least one node with high link quality (i.e., node \(n_{8}\) in the RT of node \(n_{5}\) and node \(n_{3}\) in the RT of node \(n_{4}\)), node \(n_{5}\) and \(n_{4}\) become an ordinary node. Therefore, they simply discard the packet. On the other hand, node \(n_{1}\), \(n_{4}\), and \(n_{6}\) gets the packet from node \(n_{3}\). Node \(n_{1}\) simply drop the packet because node \(n_{3}\) is not in the RT of \(n_{1}\). Additionally, node \(n_{4}\) and \(n_{6}\) extract the packet because node \(n_{3}\) is inside the RT of node \(n_{4}\) and \(n_{6}\). Thus, node \(n_{4}\) and \(n_{6}\) change the status of isVoid equal to 1 for node \(n_{3}\) in their RT. Here, all neighbors in the RT of the node \(n_{4}\) are void nodes, node \(n_{4}\) become an intuitive void node. Node \(n_{4}\) then change the ID of the void probe packet and the status of is isVoid equal to 1 and rebroadcast it to its one-hop neighbors. Moreover, node \(n_{6}\) is an intuitive void node because it does not have an ordinary node with high link quality. Therefore, node \(n_{6}\) change the ID and the isVoid in the probe packet and rebroadcast it. This method is repeated continuously until all sensors become aware of its void status whether void or ordinary nodes. \begin{table}
\begin{tabular}{c c c c} \hline \hline
**Symbol** & **Description** & **Symbol** & **Description** \\ \hline \(n_{i}\) & \(i\)-th sensor Nodes & \(VC\) & Void Count Sensors in RT \\ \(id\) & Sensor node ID & \(OC\) & Ordinary count sensors in RT \\ RT & Routing Table & \(dis\) & The reliable value in RT \\ \(C\) & Candidate set in RT & \(RS\) & Reliable status = ”Very good link” \\ \(vpp\) & void probe packet & \(RSCount\) & The number of ”Very good link” in RT \\ \(isVoid\) & Boolean Value (True or False) & _sender1D_ & Sender node ID \\ loc & The location of the sensor in the RT & _reTime_ & Retransmission time \\ \(iv\) & Void status in the RT & & \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Notations in the void detection algorithm. Figure 5: Underwater void node detection execution, (**a**) Empty RT, and (**b**) Full RT scenario. ```
1.procedureGenerateVoidProbe. (\(n_{i}\))
2.ifTimeout\(\geq\)maxTimethen
3.if\(n_{i}\).RT==\(\varnothing\)then
4.GenerateHelloPacket(\(vpp\))
5.\(vpp\_id\gets n_{i}\).id
6.\(vpp\_isVoid\gets 1\)
7.Broadcast\(vpp\)
8.endif
9.endif
10.endprocedure
11.procedureReceiveVoidProbe(\(n_{i}\), \(vpp\))
12.if\((vpp\_id\
eq n_{i}\).RTthen
13.return
14.else
15.\(loc\gets FindLoc(vpp\_id,\ n_{i}\).RT)
16.\(n_{i}\).RT[\(loc\)].\(iv\gets vpp\_isVoid\)
17.endif
18.\(VC\gets 0\)
19.\(OC\gets 0\)
20.for\(j=1\)to\(\mathbf{c}\)do
21.if(\(n_{i}\).RT.\(iv==1\))then
22.\(VC\gets VC+1\)
23. Else
24.\(OC\gets OC+1\)
25.endif
26.endfor
27.if(\(VC==C\))then
28.\(vpp\_id\gets n_{i}\).id
29.\(vpp\_isVoid\gets 1\)
30.Broadcast\(vpp\)
31.elseif(\(VC\geq\ OC\))then
32.\(\mathbf{Let}\ RS\leftarrow\)\(\mathbf{c}^{\prime}\ VGLink^{\prime}\)
33.\(\mathbf{Let}\ RSCount\gets 0\)
34.for\(j=1\)to\(\mathbf{c}\)do
35.if(\(n_{i}\).RT[\(j\_dis==RS\)) & (\(n_{i}\).RT[\(j\_iv==0\)) then
36.\(RSCount\gets RSCCount+1\)
37.endif
38.endfor
39.if(\(RSCount<1\))then
40.\(vpp\_id\gets n_{i}\).id
41.\(vpp\_isVoid\gets 1\). 42.Broadcast\(vpp\)
43.endif
44.else
45. free(\(vpp\))
46.endif
47.endprocedure
```  
**Algorithm 1**VA: Void Detection Algorithm.