# DCO-MAC: A Hybrid MAC Protocol for Data Collection in Underwater Acoustic Sensor Networks
## 4 Proposed DCO-MAC Protocol
### RSV-MAC Protocol  
The RSV-MAC is a receiver-initiated MAC protocol. In the transmission phase of the level-1 sub-network, the sink broadcasts a RTR (ready to receive) packet to initiate the transmission, and waits to receive the ATS (available to send) packets transmitted by the level-1 nodes. In order to avoid the collision of the ATS packets, the sink calculates the time period between the RTR packet sending and the ATS packet receiving, \(T_{\text{wt\_ATS,i}}\), based on the propagation delay between the sink and the level-1 node, \(i\), and specifies the pre-scheduling time in the RTR packet. When receiving the RTR packet, the level-1 node, \(i\), send an ATS packet after waiting for a period, \(T_{\text{w\_ATS,i}}\), to guarantee its ATS packet reaching the sink at the pre-scheduled time. After receiving all of the ATS packets from the level-1 nodes, the sink calculates the time period the between the ORDER packet sending and the DATA packets receiving from level-1 node, \(i\), \(T_{\text{wt\_DATA,i}}\), and broadcasts the waiting time by an ORDER packet. After receiving the ORDER packet, the level-1 node, \(i\), sends the DATA packet(s) after waiting a period, \(T_{\text{w\_DATA,i}}\), in order to guarantee its DATA packet(s) being received by the sink at the pre-scheduled time. Finally, after receiving all of the data packets, the sink broadcasts an ACK packet to notify the completion of the transmission phase in the level-1 sub-network. Figure 2 shows the process of data transmission in RSV-MAC protocol. The sink pre-schedules the transmission of the ATS packets from the level-1 nodes. To minimize the receiving period of the ATS packets, the sink pre-schedules to receive them in an increasing order of the propagation delay between the sink and the level-1 nodes. However, as the position of the mobile node is not fixed, the propagation delay between the sink and a mobile node is unknown. In order to support the access of the mobile node, the propagation delay between the sink and a mobile node is assumed to be the maximum propagation delay in the UASN, \(\tau_{\text{max}}\). The ATS packet of a mobile node is scheduled to be first received by the sink. As shown in Figure 2, the receiving order of the ATS  
Figure 2: The process of data transmission in ReSerVation-based medium access control (RSV-MAC) protocol. packets is D\(\rightarrow\)B\(\rightarrow\)C\(\rightarrow\)A. To mitigate the impact of the node movement with the ocean current on the transmission, a guard time, \(T_{\text{guard}}\), is added between the two consecutive ATS packets. Let \(\tau_{ij}\) denote the propagation delay between node \(i\) and node \(j\). According to Figure 2, the time period between the RTR packet sending and the ATS packet receiving from node \(i\), \(T_{\text{wtr\_ATS,i}}\), is given as follows:  
\[T_{\text{wtr\_ATS,i}}=T_{\text{wtr\_ATS,D}}+(O_{\text{ATS,i}}-1)(\theta+T_{ \text{guard}}),\,i\in\{\text{A, B,C}\}, \tag{1}\]  
where \(\theta\) is the transmission delay of control packet, and \(O_{\text{ATS,i}}\) denotes the transmission order of the ATS packet from node \(i\). The time period between the RTR packet sending and the ATS packet receiving from mobile node D is \(T_{\text{wtr\_ATS,D}}=2\tau_{\text{max}}+\theta\). Meanwhile, the receiving period of the ATS packets at the sink can be calculated as \(T_{\text{r\_ATS,sink}}=T_{\text{wtr\_ATS,A}}+\theta+T_{\text{guard}}\). The sink broadcasts the RTR packet containing the time period between the RTR packet sending and the ATS packet receiving. When receiving the RTR packet, the level-1 nodes without the data packet to be transmitted keep silent. Otherwise, the level-1 nodes with data packets to be transmitted extract the time period between the RTR packet sending and the ATS packet receiving from the RTR packet, and transmit the ATS packet to the sink after waiting a period. The ATS packet contains the number of data packets to be transmitted, \(\varphi_{i}\), at the level-1 node, \(i\).