## 3 Region-Based Collision Avoidance Beaconless Geographic Routing
### Overview of the Proposed Protocol  
This section shows an overview of the proposed protocol in order to support understanding. We provide the policy of the protocol, flowcharts of both the sender and receiver side and figures for each routing mode: greedy routing mode and perimeter routing mode.  
As shown in Figure 2, a sender broadcasts its data to its neighbors, so all nodes in the greedy forwarding area can receive the sender's data. The data packet contains the original message, the position of the sender and the destination, the maximum waiting time, the region information for the hidden-less area and routing mode information. If the routing mode of a packet is the perimeter mode, the position of a \"stuck node\" is additionally included in the packet header in order to prevent routing loop problems. This is described in detail in the recovery scheme Section. Each neighbor in the greedy forwarding area could realize whether it is in the hidden-less area or not. In this case, only the Nodes \(A\), \(B\), \(C\), \(D\), \(E\) and \(F\) have been receiving the data successfully among neighbors in the greedy forwarding area. These nodes start to keep the received data in their memories. Among these nodes, only \(A\) and \(C\) are in a high prioritized hidden-less area (fan-shaped dashed region). After receiving the data, nodes in the hidden-less area get higher priority than the hidden area, and they immediately begin to find a next-hop forwarder. These nodes have their own timer related only to the distance from the destination by using a predefined maximum time of \(T_{max}\) seconds. Therefore, in the hidden-less area, the closest Node \(A\) from the destination wakes up first, becomes a next-hop forwarder by itself and broadcasts the received data to its neighbors. Among all neighbors in the greedy forwarding area, nodes that overhear this broadcast data release their timer and received data. However, if the node density is extremely high, this forwarding message might be generated simultaneously among neighbors, because timers expire almost concurrently. This might lead to many collisions, so the proposed protocol exploits the distance- and angle-based collision avoiding scheme (DACAS). This scheme is described in detail in the next section.  
Figure 2: Data forwarding in the proposed protocol.  
Figure 3: The flowchart of the sender side.  
Figure 4: The flowchart of the receiver side.  
On the other hand, nodes in the hidden area set their own timer as a sum of the distance-based value and the \(T_{max}\). Namely, every node in the hidden area has to wait during \(T_{max}\) seconds first, then begins its distance-based timer. If the timer is expired, the node in the hidden area sends a _FORWARDING_QUERY_ message to the sender. If there are no nodes that successfully rebroadcast the data in the hidden-less area, the sender replies the _FORWARDING_PERMIT_ message to the node immediately. After that, the node becomes a next-hop forwarding node and broadcasts the received data to its neighbors. Except this node, other neighbors release their timers and receive data when they overhear the _FORWARDING_PERMIT_ message. In this figure, Node \(A\) in the hidden-less area becomes a next-hop forwarding node by itself. The other nodes, \(B\), \(C\) and \(F\), that can overhear a broadcast data from \(A\) give up their contention process for becoming the next-hop forwarder. Since Nodes \(D\) and \(E\) are out of the transmission range from \(A\), they cannot overhear the broadcast data message. When the timer of Node \(D\) is expired, it sends _FORWARDING_QUERY_ messages to the sender \(S\). However, the sender \(S\) already overheard the broadcast data from \(A\), so \(S\) ignores the message from Node \(D\). Furthermore, Node \(E\) can release its timer when it overhears a _FORWARDING_QUERY_ message from Node \(D\). Both Figures 3 and 4 show the flow of the routing decision of both the sender side and the receiver side.