# Concurrent Transmission Based on Distributed Scheduling for Underwater Acoustic Networks
## 3 Concurrent Transmission Based on Distributed Scheduling
### Joint Optimization of Sending Sequence and Time
#### 3.3.1 Sending Time Optimization  
Assume that the sending sequence of the source nodes is given. Let \(s_{i}\) and \(s_{j}\) denote two arbitrary source nodes in a transmission cycle, \(d_{i}\) and \(d_{j}\) are their corresponding destinations. Assume that \(s_{i}\) sends out its data packet before \(s_{j}\) and the data packet from \(s_{i}\) arrives at \(d_{i}\) and \(d_{j}\) earlier than the data packet from \(s_{j}\). Although this assumption might lead to sub-optimal solutions, it simplifies the discussion. To avoid collisions at \(d_{i}\) and \(d_{j}\), the sending time of \(s_{i}\) and \(s_{j}\) should satisfied the following constraints:  
* The data packets sent by \(s_{i}\) and \(s_{j}\) should not overlap at \(d_{i}\), which leads to: \[T_{i}^{data}+L_{i}^{data}+D_{sd_{i}}\leq T_{j}^{data}+D_{sd_{i}},\] (1)  
Figure 2: Concurrent transmissions with different sending sequences. (**a**) S\({}_{1}\) sends first; (**b**) S\({}_{2}\) sends first.  
where \(T_{i}^{data}\) and \(T_{j}^{data}\) denote the sending time of the data packets from \(s_{i}\) and \(s_{j}\), respectively. \(L_{i}^{data}\) is the length of the data packet from \(s_{i}\); and \(D_{s_{i}d_{i}}\) and \(D_{s_{j}d_{j}}\) denote the propagation delays from \(s_{i}\) to \(d_{i}\) and \(s_{j}\) to \(d_{i}\), respectively.
* The data packets sent by \(s_{i}\) and \(s_{j}\) should not overlap at \(d_{j}\), which leads to: \[T_{i}^{data}+L_{i}^{data}+D_{s_{i}d_{j}}\leq T_{j}^{data}+D_{s_{j}d_{j}},\] (2) where \(D_{s_{i}d_{j}}\) and \(D_{s_{j}d_{j}}\) denote the propagation delay from \(s_{i}\) to \(d_{j}\) and \(s_{j}\) to \(d_{j}\), respectively.  
Let \(s_{1}\) and \(s_{j}\) denote the first and the \(i\)-th source nodes to send data packets in the current transmission cycle, respectively. At the beginning of the data stage, all source nodes reset their data stage clocks to the time stamp of the last CTS packet. \(s_{1}\) starts its transmission at time \(D\), where \(D\) is a constant that is larger than the maximum propagation delay in the cluster. Based on equations (1) and (2), the minimal collision-free sending times of all source nodes can be calculated by:  
\[\left\{\begin{array}{l}T_{1}^{data}=D\\ T_{j}^{data}=\max\{T_{i}^{data}+L_{i}^{data}+\max\{D_{s_{i}d_{j}}-D_{s_{j}d_{j }},D_{s_{i}d_{i}}-D_{s_{j}d_{j}}\}|i=1\sim j-1\}+C\end{array}\right.. \tag{3}\]  
where \(C\) is the guard time required to accommodate the variations of the propagation delays. Note that each node can obtain the same sending time table for all source nodes using Equation (3) if they receive all the CTS packets in the CTS stage correctly. Therefore, each source node can calculate its sending time independently without central control.  
Similarly, all destination nodes reset their ACK stage clocks to the sending time of the last data packet which can be calculated using Equation (3). Then the sending time of the ACK/NACK packets can be calculated by:  
\[\left\{\begin{array}{l}T_{1}^{ack}=D\\ T_{j}^{ack}=\max\{T_{i}^{ack}+L_{i}^{ack}+\max\{D_{d_{s_{j}}}-D_{d_{s_{j}}},D_{d _{s_{i}}}-D_{d_{s_{j}}}\}|i=1\sim j-1\}+C\end{array}\right., \tag{4}\]  
where \(T_{1}^{ack}\) and \(T_{i}^{ack}\) denote the sending time of the ACK/NACK packets from \(d_{1}\) and \(d_{i}\), respectively; \(L_{i}^{ack}\) is the length of the ACK/NACK packet from \(d_{i}\); and \(D_{d_{s_{i}}}\), \(D_{d_{s_{j}}}\), \(D_{d_{s_{j}}}\) and \(D_{d_{s_{i}}}\) denote the delays from \(d_{i}\) to \(s_{i}\), \(d_{i}\) to \(s_{j}\), \(d_{j}\) to \(s_{j}\) and \(d_{j}\) to \(s_{i}\), respectively.