## 4 Next Forwarding Node Selection in UWSNs
### Void-Aware
This process is continuously repeated until all nodes identify and update their next hop direction and their direction towards the sink based on hop count to sink and depth information. In the second part, the next forwarding nodes have been selected using both directions identified in the previous part, i.e., the nodes have been sorted based on hop distance to the sink. On the other hand, to deal with the communication void problem, the nodes have been assigned the direction DOWN, and the next forwarding nodes have been selected among deeper neighbors in void-handling nodes (i.e., node e). Nodes that have been assigned the direction UP (i.e., a) and the next forwarding nodes have been selected from among shallower neighbors in the greedy mode, as shown in Figure 15. In the second part, a directional opportunistic data forwarding algorithm is designed to forward the data packet. To this end, the data packet has been forwarded using the assigned direction that was identified in the first step for handling the communication void. The void-handling algorithm designed with a heuristic method in VAPR can be considered the main advantage of this protocol. Moreover, the employment of a multi-sink structure has a direct impact on the overall performance. The main weaknesses of VAPR can be highlighted as follows. First, in the enhanced beacon part, the direction of nodes should be updated within a short interval of time due to the dynamic topology in the UWSNs, which increases the energy consumption and network overhead; second, similar to HydroCast, the use of a two-hop clustering technique requires localization information for finding the two-hop neighboring nodes that have a direct impact on increasing the network overhead; finally, VAPR does not utilize link quality in discovering the void nodes that help in ensuring the data delivery. Figure 15: Greedy mode and void-handling mode in VAPR. Adaptive Mobility of Courier nodes in Threshold-optimized DBR Protocol (AMCTD) has been conducted to improve the energy efficiency by adding some courier nodes into the network architecture [57]. AMCTD is divided into three phases. The first two phases involve selecting the next forwarding nodes, whereas the third phase is for addressing the communication void problem. In the first phase (initialization), each node uses its depth and residual energy for computing its weight based on the following equation:  
\[W_{i}=\frac{Priority\;Value\;\times\;R_{i}}{Depth\;of\;Water\;-\;D_{i}}, \tag{4}\]  
where priority is a constant value and \(\;D_{i}\;\) and \(\;R_{i}\;\)are the depth and residual energy of the node, respectively. Then, a hello packet is generated and shared between neighbors. Therefore, each node has information about its neighbors and saves this information in a table of next selection nodes. Moreover, courier nodes start moving in the vertical direction. In the second phase (data forwarding), each node checks its table of next selection nodes. If the courier node has been listed in the table, it directly forwards the data packet to the courier node and then sends an acknowledgment to avoid duplicate packet forwarding. Otherwise, the nodes in the table will be sorted based on their weight value and will broadcast the packet to these nodes. The nodes then calculate the holding time; the highest priority nodes have the lowest holding time. Upon overhearing the data packets, the nodes drop the packet. Otherwise, they wait for the data holding period to end before sending the data packets. This process is repeated until the data packets reach either the courier node or the sink node. In the last phase, if the number of dead nodes exceeds 2%, the communication void will have been increased. Therefore, the weight has been updated based on the depth rather than the residual energy using the equation \(W_{i}=\frac{Priority\;Value\times D_{i}}{R_{i}}\). Moreover, if the number of dead nodes increases and the density further decreases, the courier movement and depth threshold will change in order to improve the network stability.