# Void Avoiding Opportunistic Routing Protocols for Underwater Wireless Sensor Networks: A Survey
## 2 Routing Protocols
### Opportunistic Routing
#### 2.3.1 OR Construction Blocks  
The first building block in OR protocol design is the candidate forwarding set selection process. Selecting a subset of nodes from the source's neighboring nodes to be the qualified set to carry on the packet and continue the forwarding procedure is the responsibility of this process. More generally, based on the next-hop forwarder node-selecting technique, the candidate forwarding set selection procedures can be classified into the three following categories [1; 25]:  
1. Sender-side-based candidate set selection: in this category, beacon messages between the nodes in the networks are used to exchange the information of the sensor nodes and make it available within their neighborhood. The current forwarder node, which has a data packet to transmit, will use this information to facilitate its mission to determine its next-hop forwarder candidate set.
2. Receiver-side-based candidate set selection: in contrast to the first category, this one requires the neighbors to check the data packet's header when they receive a data packet from the sender in order to identify which received nodes are eligible to be candidate nodes and which ones are not. In this category, each neighboring node is responsible for determining whether it will be included in the list of the potential next-hop forwarder candidate set or not.
3. Hybrid candidate set selection: In this category, the next-hop forwarder candidate set is determined cooperatively by the current forwarder node, which has the data packet to transmit, and its neighbor nodes by exchanging their information.  
The coordination phase is the second and most significant building block in constructing an OR protocol. In order to continue forwarding the data packet until it reaches its destination, the nodes in the next-hop forwarder candidate set must cooperate in a coordinated manner. According to the protocol's regulations, the node with the highest priority (i.e., the most suitable node) will transmit the packet in this case, deferring transmission to other candidates with lesser priorities. If the node with the higher priority cannot finish its transmission, the node with the next higher priority will begin its transmission, and so on, until the packet reaches its destination.  
By functioning in a coordinated manner, this building process supports enhancing the network's throughput and the routing protocol's accuracy by preventing packet duplication.  
Figure 3: Opportunistic routing building blocks.  
Packet duplication causes unnecessary and redundant transmissions, wasting the node's energy. Additionally, the overall collision rate can be decreased.  
The coordination procedures between the candidate nodes can be divided into the two following categories [1; 25]:  
1. [label=0.]
2. Timer-based candidate set coordination: Each candidate node in this process has a holding time based on its priority. As a result, the candidate keeps the source's received data packet in their possession for a while (the holding period). The remaining candidates will suppress their transmission if the highest-priority node successfully transmits the packet and if they get an indication during the waiting period. If not, the packet will begin to be forwarded by the node with the next highest priority when its holding time expires, and so on.
3. Control packet-based candidate set coordination: The candidate nodes in this approach communicate with one another by exchanging control packets. Therefore, a candidate node responds to a packet with a brief control message. This control packet transmission is used to notify the currently active forwarder node that the packet has been successfully received. It also notifies the other low priority candidate nodes to pause their transmissions.