# Cross-Layer-Aided Opportunistic Routing for Sparse Underwater Wireless Sensor Networks
## 4 CLOR Protocol
### Process of CLOR
#### 4.2.2 Negotiation Process  
The negotiation process executes as follows: Before the transmission phase, the sender broadcasts a Request to Forward (RTF) packet to indicate following transmission [3]. Then, each potential forwarder that has received this RTF packet sends back a Clear to Forward (CTF) packet, which contains the progress of the node to act as a next-hop forwarder. Finally, the sender chooses the optimal next-hop forwarder from these nodes. We use five distinct states in CLOR: IDLE, WFCTE, WFDATA, WFACK, and BACKGROUND. After initialization, each node goes to IDLE state to wait to send data or to receive data. If a node sends an RTF packet, it will go into WFCTF state to wait for the CTF packets for this RTF packet. Similarly, each node goes into WFACK state after sending data packets. When a node has returned back a CTF packet to the sender, it goes into WFDATA state to wait for the following transmission. There is still a situation in which a node does not require any data packets from the sender, since these packets have been received before. For this situation, the node may go into IDLE state after sending a CTF packet. In addition, any node in IDLE state that has received a control packet not for itself may go to BACKGROUND state. In addition to the case that a node receives an invalid RTF packet, there are many cases that a node executes a back-off strategy. For instance, a node that is waiting for a CTF receives a RTF packet whose source has higher competition priority than this node. Any time a node has overheard a CTF for another node, it will execute the back-off strategy. There is an exception in which the node is in the time interval of waiting transmission. The time interval of the back-off strategy is related to the type of the packet and is calculated as below. \[\tau_{BO}=\left\{ \begin{array}{l}2\cdot\tau_{maxProp}+\tau_{PONG},RTF\\ 2\cdot\tau_{maxProp}+k\cdot\tau_{D},CTF\end{array} \right. \tag{9}\]  
However, there is an exception in which the CTF indicates that none of the data packets is required for transmission. Then, the node should merely ignore the CTF packet. To alleviate the exposed problem, the carrier sensing is applied before each handshake. If the received power is higher than the preset threshold, the node will cancel the current negotiation. Otherwise, it will execute the handshake immediately. If a node receivesan RTF packet from another node while waiting for the CTF packet, it will compete transmission by comparing with the competition information in the RTF packet. If the node fails in the competition, it will back off according to the information in the RTF packet. Otherwise, it will continually execute the negotiation. The detail process of negotiation is as follows. Upon receiving a service request, the node senses the channel. If the channel is not busy, the node acts as a sender and broadcasts an RTF. This packet contains the topological information of the current sender and the information of data packets in burst transmission. Then, the sender sets a timer to wait for the response of potential next-hop nodes. Once it has received an RTF packet, the node executes Algorithm 1: First, the node updates its neighbor table and its own topological information according to the RTF packet (line 1). Then, it executes the corresponding process according to the state. If the node is in WFCTF state, it will execute the competition by using the degree information and queue size in the RTF. The node with a lower node degree and small queue size cancels the negotiation and executes the back-off strategy (line 4). Otherwise, if the node is in another state rather than in IDLE state, the node will ignore this negotiation (line 8). When the node is in IDLE state, it participates in negotiation. If the RTF comes from a node with smaller hop count than that of itself, the node discards the RTF packet and executes the back-off strategy (lines 10). Otherwise, the node checks the receiving status of the pending data packets in the sender side.