# Vortex: Network-Driven Opportunistic Routing for Ad Hoc Networks
## 3 VORTEX: Variable Opportunistic Routing Transferring Endpoint Expense
### Opportunistic Forwarding  
The forwarding of VORTEX is based on OR and employs the self-guided forwarding principle for network-driven forwarding. Unlike CHOR which requires the conventional route discovery procedure to collect valid routing information, VORTEX uses the information stored in each terminal that is obtained during the initialization and employs a novel forwarding procedure to opportunistically find destination terminals. The forwarding procedure of VORTEX has two states: Destination location unknown and Destination location fixed. The detailed procedure is described in the following.  
**Destination unknown state:** In the destination unknown state, VORTEX forwards packets according to the following rules.  
* A source terminal broadcasts a packet to its neighboring terminals.
* The neighboring terminals rebroadcast the received packet if the terminals know the destination direction or if there is the same tier-level terminal that is larger than tier 1.
* The terminals in tier 2 rebroadcast the packet until TTL (time to live) expires.
* Tier 1 terminals that received the packet once rebroadcast the packet to search for the destination terminal in a 2-hop neighbor.  
By repeating the forwarding procedure with the rules, the packet is finally delivered to the desired destination terminal as shown in Figure 1(a). However, there is a lot of excess forwarding in this state due to the flooding-like propagation. Then, VORTEX restricts forwarding by using eligible terminals as candidates for opportunistic forwarding. The candidate selection is initiated by the destination terminal using candidate notification messages, and the message is propagated to 2-hop neighbors. Then, the receiver terminal of the message set itself as a candidate forwarder to the destination, if the terminal belongsto tier 1 or tier 2, or is a neighbor of tier 2 terminals. Afterward, the candidate terminals shift to the Destination fixed state.  
**Destination fixed state:** In the destination fixed state, VORTEX controls the forwarding as follows.  
1. A source terminal broadcasts a packet to its neighboring terminals and VORTEX performs the procedure of destination unknown state.
2. Once the forwarded packets encounter the candidate terminal, the packets are forwarded only among the terminals until they reach the terminals that know the destination terminal as a 2-hop or 1-hop neighbor.
3. 2-hop or 1-hop neighbor terminals set the flag in the packet that represents no more broadcast is necessary for the packet. Then, the receiver terminals of the flagged packet abort further broadcast if they are not a 1-hop neighbor of the destination terminal.
4. The neighboring terminals broadcast the flagged packet to the destination terminals.
5. All the terminals that overhear forwarded packets probabilistically rebroadcast them with the predefined probability \(p\) to improve route diversity.  
By performing the above procedure, VORTEX can opportunistically deliver packets from a source terminal to the destination terminal. That is, VORTEX provides a network as a black box that terminals just forward packets into the network, and it autonomously delivers the packets to the desired destination terminal without any effort on the source terminal. Moreover, the OR-based forwarding of VORTEX can use networks as if terminals composing the networks establish backbone-like topologies since there are simultaneous routes for forwarding and multiple routes for diversion.  
In addition to the above procedure, VORTEX uses the candidate information for further forwarding by other terminals. As described previously, the candidate assignment of VORTEX is driven by destination terminals. In other words, the neighboring terminals of the destination terminals become the candidate terminals. Thus, packets destined for the same terminal can be forwarded using the candidate terminals once the packets are delivered to the same destination terminal.