# Path Diversity Improved Opportunistic Routing for Underwater Sensor Networks
## 3 Path Diversity Improved Opportunistic Routing
### Candidate Coordination  
The time-based candidate coordination is applied in this paper. The candidate nodes with a higher priority will forward the packet earlier after its holding time expired. The others in the candidate set will only store the packet, and listen to the channel. Once they realize the packet has been forwarded, they will drop the packet; otherwise, another forwarder will be selected based on the priority until no node is left in the candidate set. The above process will be repeated at each hop until the packets arrive at the sink nodes. A linear holding time function as \(f(\lambda_{i})=\lambda_{i}\alpha\) is applied both in PICS and PRCS, where \(\lambda_{i}\) is the priority and \(\alpha\) is dynamic parameters at each hop.  
**A. Candidates coordination for PICS**: In PICS, since each candidate node can hear each other directly, as shown in Figure 4, node \(a\) has a higher priority than others, thus it forwards the packets earlier than others, e.g., node \(d\). Then, node \(d\) cannot broadcast the packet before the signal from node \(a\) arriving. Thus, we have  
\[t_{s}+\tau_{sa}+\Delta+f(\lambda_{a})+\tau_{ad}<t_{s}+\tau_{sd}+\Delta+f( \lambda_{d}) \tag{8}\]  
where \(t_{s}\) is the transmission start time of the last forwarder \(s\) and \(\Delta\) is the packet transmission time. From Equation (8), we can get \(\alpha\) should satisfy  
\[\alpha>\frac{\tau_{sa}+\tau_{ad}-\tau_{sd}}{\lambda_{d}-\lambda_{a}} \tag{9}\]  
**B. Candidates coordination for PRCS**: The candidates selected in PRCS are allowed to be located outside the communication range of each other. We apply a skillful coordination method to handle the hidden terminal problem. As we know, all members of the candidate set are the neighbors of forwarder \(s\), \(\mathcal{C}_{s}\subset V_{s}\). Forwarder \(s\) can be used to relay the ACK messages for suppressing redundant transmissions.  
As shown in Figure 4, suppose \(\mathcal{C}_{s}=\{a,b,c\}\), node \(a\) has a higher priority than node \(b\) and \(c\), while node \(b\) is beyond the communication range of node \(a\). Suppose node \(a\) can successfully receive the  
Figure 4: Candidate coordination diagram.  
Figure 3: An example of one-hop candidates selection.  
packets from node \(s\) and its NADV value is more than the forwarding progress threshold, then node \(a\) is allowed to forward the packet immediately. When node \(a\) forwards the packets to its next-hop candidates, the packets will also arrive at node \(s\). If node \(s\) hears the packets, it will broadcast an ACK message to inform the other candidates to not forward the same packets again. Once the candidate nodes receive the ACK message, they will give up the current forwarding, Otherwise, they will turn to forward the packets after the holding time expired. Since node moving or the bad communication channel quality, the worst case is that the previous forwarder \(s\) fails to receive the packets transmitted by the current forwarder. It will lead to redundant transmission. Similar to the traditional approach, the candidates will also give up forwarding when they hear the packets transmitted by the forwarders in the current candidate set.  
The packet receiving time at node \(a\) is \(t_{s}+\tau_{sa}+\Delta\). Then, node \(a\) will forward the packet at time \(t_{a}=t_{s}+\tau_{sa}+\Delta+f(\lambda_{a})\). Suppose node \(s\) will broadcast the ACK message once it receives the packet from node \(a\) with no delay; to suppress redundant transmissions, node \(b\) cannot broadcast the packet before receiving the ACK message, thus we can get  
\[t_{a}+\tau_{as}+\Delta+\tau_{sb}+\Delta_{ack}\leq t_{s}+\tau_{sb}+\Delta+f( \lambda_{b}) \tag{10}\]  
From Equation (10), \(\alpha\) should satisfy  
\[\alpha>\frac{2\tau_{sa}+\Delta+\Delta_{ack}}{\lambda_{b}-\lambda_{a}} \tag{11}\]  
For a given candidate set, the \(\alpha\) can be determined by examining every candidate nodes pair using two-hop neighbor information for PICS and \(\alpha\) can also be determined by one-hop neighbor information for PRCS.