## 3 Proposed Opportunistic Routing Algorithm
### Expected Energy Consumption of MSR Data Forwarding  
Considering the worst case (that is, all candidate forwarding nodes are activated in priority order), the energy consumption for transmitting and receiving beacon packets is calculated as follows:  
\[\begin{array}{ll}E_{bacon}(i,j,k_{b})&=E_{TX}(i,j,k_{b})+\sum\limits_{\forall n _{a}\in A_{i}^{t}}E_{RX}(u,k_{b})\\ &=k_{b}\left\{\begin{array}{l}E_{elc}+\varepsilon_{mp}\times d_{i,j}^{4}+E_{ elec}\times\overline{\rho}A_{i}^{t},d_{ij}>d_{0}\\ E_{elec}+\varepsilon_{fs}\times d_{i,j}^{2}+E_{elec}\times\overline{\rho}A_{i}^ {t},d_{ij}\leq d_{0}\end{array}\right.\end{array} \tag{17}\]  
where: \(k_{b}\) is the size of the beacon packet in bits.  
Similarly, the energy consumption of sending back an _ack_ message packet to the \(i\)th node is formulated as:  
\[\begin{array}{ll}E_{ack}(i,k_{a})&=\sum\limits_{\forall n_{a}\in A_{i}^{t}}E _{RX}(i,k_{a})+\sum\limits_{\forall n_{a}\in A_{i}^{t}}E_{TX}(u,i,k_{a})\\ &=k_{a}\left\{\begin{array}{l}E_{elc}\times\overline{\rho}A_{i}^{t}+\sum \limits_{\forall n_{a}\in A_{i}^{t}}\left(E_{elec}+\varepsilon_{mp}\times d_{ u,i}^{4}\right),d_{u,i}>d_{0}\\ E_{elec}\times\overline{\rho}A_{i}^{t}+\sum\limits_{\forall n_{a}\in A_{i}^{t}} \left(E_{elec}+\varepsilon_{fs}\times d_{u,i}^{2}\right),d_{u,i}\leq d_{0} \end{array}\right.\end{array} \tag{18}\]  
where: \(k_{a}\) is the size of the _ack_ message packet in bits.  
Based on Equations (17) and (18), the energy consumption of each transmission stage is:  
\[\overline{E}_{X}(i,j,k,k_{b},k_{a})=E_{TX}(i,j,k)+E_{RX}(j,k)+E_{ beacon}(i,j,k_{b})+E_{ack}(i,k_{a}) \tag{19}\]  
where: \(k\) is the size of the MSR data packet in bits.  
In addition, in the process of MSR data forwarding, assuming that the activation number of candidate nodes are \(\zeta(\zeta\geq 1)\), the energy consumption of transmitting and receiving beacon packets is calculated as follows:  
\[\begin{array}{ll}E_{bacon}(i,j,k_{b},\zeta)&=E_{TX}(i,j,k_{b})+\sum_{u=0}^{ \zeta}E_{RX}(u,k_{b})\\ &=k_{b}\left\{\begin{array}{l}E_{elec}+\varepsilon_{mp}\times d_{i,j}^{4}+ \zeta\times E_{elec},d_{ij}>d_{0}\\ E_{elec}+\varepsilon_{fs}\times d_{i,j}^{2}+\zeta\times E_{elec},d_{i,j}\leq d_{ 0}\end{array}\right.\end{array} \tag{20}\]  
Likewise, in the process of MSR data forwarding, the energy consumption of sending back an _ack_ message packet to the \(i\)th node is formulated as:  
\[\begin{array}{ll}E_{ack}(i,k_{a})&=\sum_{u=0}^{\zeta}E_{RX}(i,k_{a})+\sum_{u =0}^{\zeta}E_{TX}(u,i,k_{a})\\ &=k_{a}\left\{\begin{array}{l}\zeta\times E_{elec}+\sum\limits_{\forall n_{a }\in A_{i}^{t}}\left(E_{elec}+\varepsilon_{mp}\times d_{u,i}^{4}\right),d_{u,i} >d_{0}\\ \zeta\times E_{elec}+\sum\limits_{\forall n_{a}\in A_{i}^{t}}\left(E_{elec}+ \varepsilon_{fs}\times d_{u,i}^{2}\right),d_{u,i}\leq d_{0}\end{array}\right.\end{array} \tag{21}\]  
Correspondingly, for a given source node \(i\) (the activation number of candidate nodes during the successful completion of MSR data forwarding is \(\zeta\)), the energy consumption of each transmission stage is calculated as follows:  
\[E_{X}(i,j,k,k_{b},k_{a},\zeta)=E_{TX}(i,j,k)+E_{RX}(j,k)+E_{ beacon}(i,j,k_{b},\zeta)+E_{ack}(i,k_{a},\zeta) \tag{22}\]Finally, based on Equation (22), the expected energy consumption during each transmission is:  
\[\begin{array}{ll}E_{hop}(i,j)&=\frac{1}{\zeta}\times\sum_{u=1}^{\zeta}P(\zeta=u )\times E_{X}(i,j,k,k_{b},k_{a},u)\\ \\ &=\frac{1}{\zeta}\times\sum_{u=1}^{\zeta}\frac{u}{N_{i}}\times E_{X}(i,j,k,k_{ b},k_{a},u)\end{array} \tag{23}\]  
In summary, the expected energy consumption of sending MSR packets from the source node to the sink through the routing path \(\aleph=\{n_{1},n_{2},\ldots,n_{\kappa-1},\text{Sink}\}\) is:  
\[\begin{array}{ll}E_{\aleph}&=\sum_{q}^{\kappa}E_{hop}(q,q+1)\\ \\ &=\left(\frac{1}{\zeta}\right)^{\kappa-1}\times\sum_{q}^{\kappa-1}\sum_{u=1} ^{\zeta}\frac{u}{N_{i}}\times E_{X}(q,q+1,k,k_{b},k_{a},u)\end{array} \tag{24}\]  
where: \(\kappa\) denotes the number of marine nodes on the routing path \(\aleph\).