## 3 Proposed Scheme
### Distributed and Reliable Data Transmission: DRDT
#### Helper Node Selection Phase  
DRDT causes low overhead because every node can decide to be a helper node in a distributed manner. A _waiting time_ (\(W\)) is used to determine whether or not a node performs retransmission as a helper node. Each node that overhears the data packet transmitted to the receiver node first checks the packet header to determine if the destination is one of its neighbor nodes. If it is, the node waits for the waiting time with respect to its helper value. The waiting time is calculated as follows [23].  
\[W=(1-H)\times\delta, \tag{5}\]  
where \(\delta\) is the predefined maximum waiting time. According to Equation (5), the waiting time is obtained shorter, as the helper value increases higher. That is, the closer the helper value is to 1, the higher the probability the node will be selected as a helper node. Once the waiting time expires, a node selects itself as a helper node and broadcasts a request to send (RTS) packet to retransmit the data packet to the receiver node. If the other nodes receive the RTS packet from another node or overhear the data packet being transmitted to the receiver node while the waiting time has not expired, the nodes stop waiting (because they believe that another helper node with a better condition has been selected) and are removed from the helper node selection phase, and the data packets are dropped.  
Figure 4 depicts the helper node selection phase based on a helper value. The nodes \(a\), \(b\), \(c\), \(d\), \(e\), and \(f\) that overhear the data packet transmitted to the receiver node first calculate the helper values. They set the waiting time with respect to their helper values. In Figure 4a, the helper value of node \(a\) is 1 since it is located in the connected region where both the sender and receiver nodes overlap. While other nodes \(b\), \(c\), \(d\), \(e\), and \(f\) can all have helper values of 1 or lower, it is assumed for now that they all have helper values below 1. Therefore, node \(a\) sets the shortest waiting time by using Equation (5). Having set up the waiting time, node \(a\) selects itself as a helper node and makes other nodes know this by broadcasting an RTS packet. Here, the nodes that receive the RTS packet before their waiting time to be expired completely discard the data packet, as in nodes \(c\), \(d\), and \(e\) of Figure 4b.  
If more than one helper nodes are selected in the helper node selection phase, duplicated retransmission is performed. There are two possible scenarios. First, nodes may not receive the RTS packet from selected helper node due to low link quality, as in nodes \(b\) and \(f\) of Figure 3(b). In this case, they keep listening to the channel and still wait for their waiting time. Eventually, several helper nodes can be selected. This problem is easily solved by the transmission phase in the next subsection. The second scenario is that if a current node overhears the data packet transmitted from the helper node, it possibly starts the helper node selection phase again for the same data packet. This causes selecting unnecessary helper nodes over and over. To solve this, the helper node adds a \(flag\) bit set to 1 in the data packet before retransmission to differentiate the data packet from the sender node. By doing so, nodes do not start the helper node selection phase for the data packet from the helper node. Table 1 shows the pseudo-code of the helper node selection phase.  
Figure 4: Helper node selection.