# Cross-Layer Protocol Based on Directional Reception in Underwater Acoustic Wireless Sensor Networks
## 4 Proposed CLIC Protocol
### Low-Complexity Routing Protocols for Interference and Congestion Avoidance  
Interference and congestion avoidance are critical for networks to achieve high throughput and long lifetime. In particular, it is important that routing protocols provide low interference and congestion paths in the context of achieving metrics, such as throughput,latency, and packet delivery rates. To avoid interference and congestion, routes need to bypass interference and congestion areas in order for packets to reach the sink reliably and quickly. In the CLIC, the routing protocol consists of three main phases: the initialization phase, the relay selection phase, and the packet forwarding phase. During the initialization phase, nodes obtain their remaining energy and location information from the physical layer. Then, the information, such as the current buffer state and the number of interfering nodes in the neighbourhood, is exchanged via broadcast packets. Each node generates a neighbor table during the initialization phase to store each neighbor's information for routing decisions. In the relay selection phase, the node selects a relay based on the information in the neighbor table, combining with metrics, such as throughput, delay, packet loss rate, and lifetime. The node first calculates the priority of the neighbor nodes and selects the node with the highest priority as the relay. The priority of neighbor node \(j\) of node \(i\) is given  
\[P_{j}=\alpha\times Energy(j)+\beta\times Hops(j)+\gamma\times Cong(j)+\lambda \times Interf(j), \tag{7}\]  
where \(\alpha\), \(\beta\), \(\gamma\), and \(\lambda\) are the coefficients for energy, delay, congestion, and interference, respectively. \[Energy(j)= \begin{cases}1,\,x>0\\ e^{x},\,x<0\end{cases}  \tag{8}\]  
\[x=E_{res}(j)-\overline{E}_{res}(j) \tag{9}\]  
\(Energy(j)\) represents the relationship between the residual energy of node \(j\) and the average residual energy of its neighbor nodes, \(E_{res}(j)\) is the residual energy of node \(j\), and \(\overline{E}_{res}(j)\) is the average residual energy of the neighbor nodes of \(j\). When the residual energy of node \(j\) is greater than the average residual energy of neighbor nodes, \(Energy(j)=1\); otherwise, it is a real number between 0 and 1. Extending network lifetime is a necessary goal to be considered for routing protocol developments. If a node is often selected as a relay, it becomes a hotspot and will die prematurely due to its frequent involvement in data transmission. The energy factor of the nodes is incorporated into priority evaluation, and the nodes with higher residual energy are preferred to be selected as relays, thus avoiding a hotspot problem. \(Hops(j)\) is the estimated number of hops from node \(i\) to sink when node \(j\) is selected as a relay; \(d_{i-sink}\) is the distance between node \(j\) and sink, and \(<d_{ij}>_{i-sink}\) is the projection of \(d_{ij}\) onto the line connecting node \(i\) with the sink. Closer to the sink has higher priority, which reduces the detour path and decreases the end-to-end delay. Although it is easy to estimate the number of distant links, this method does not incur any signaling overhead because it is computed locally and does not require end-to-end information exchange, which is suitable for the UASNs with unstable links to save energy. \[H_{ij}^{hops}=\max(\frac{d_{i-sink}}{<d_{ij}>_{i-sink}},1), \tag{10}\]  
\(Cong(j)\) is the congestion factor considered in relay selection. \(Buff_{now}\) is the current buffer length of the neighboring node, and \(Buff_{max}\) is the maximum buffer length of the node. \[Cong(j)=1-\frac{Buff_{now}}{Buff_{max}} \tag{11}\]  
Nodes with less data in the buffer have lower congestion. There is a preference to select nodes with lower congestion as relays to avoid high congestion areas. \(Interf(j)\) is the interference factor taken into consideration in relay selection. \(Nei_{j}\) is the set of neighbouring nodes at node \(j\).