# Vortex: Network-Driven Opportunistic Routing for Ad Hoc Networks
## 3 VORTEX: Variable Opportunistic Routing Transferring Endpoint Expense
### Network Initialization  
As we explained in Section 3.1, the proposed method, VORTEX, takes into account the hierarchical structure to form networks. Although VORTEX uses a similar strategy to CHOR, VORTEX omits the clustering procedure and only adopts the concept of CHOR. This is because even though clustering is an effective strategy for ad hoc networks, cluster-based route discovery is still required to create a forwarding guide and it degrades the routing adaptability to a certain degree. Moreover, the costs for cluster maintenance and participation/leave handling increase according to the number of terminals. The detailed initialization procedure will be described in the following with Figure 1.  
VORTEX invokes the initialization procedure when it begins to form a network for the first time. There are several events that can be a trigger for the initialization procedure such as the receipt of a HELLO message, communication request, and so forth. If the initial network size is small and terminals participate after the initialization procedure, the initialization procedure is firstly called afterward the participation procedure explained in Section 3.3 is called. In this subsection, we will explain the initialization procedure by plain descriptions with a relatively large network to make it easy to understand. The initialization procedure in VORTEX first assigns tiers (in this paper, we defined tier 0 to be the lowest tier for the further extension of tier levels) to the component terminals of the network. In this paper, we assume that each terminal periodically broadcasts a HELLO message among its neighbors to notify its existence. Thus, each terminal can perceive how many terminals exist in the neighborhood by counting the number of unique terminal IDs contained in the messages, namely the degree. VORTEX continuously performs this operation to determine the neighbor relationship for further network management. The components of the HELLO message are shown in Table 2 and all the values except for Terminal ID are initialized to a negative value at the beginning. \begin{table}
\begin{tabular}{c c} \hline \(n\) & Terminal ID \\ \hline \(d\) & Degree of terminal \\ \hline \(t\) & Generated time \\ \hline \(T\) & Tier level of the terminal \\ \hline \end{tabular}
\end{table} 
Table 2: HELLO message components. Figure 1: Tier assignment in VORTEX. After a certain number of HELLO messages have been exchanged, VORTEX shifts to the tier assignment phase similar to the clustering procedure of CHOR. The threshold value for the shift is basically set to three exchanges since at least two exchanges are required to observe their own information and another exchange is required to suppress timing-related issues that generally occur in unsynchronized systems. In this phase, each terminal checks the degree of the terminal and its neighboring terminals as shown in Figure 1a. The terminal then sends UTR (upper tier request) to the neighbor terminal that has the largest degree among the neighbor terminals, if the largest one is not itself. In the case of the largest one is the terminal itself, the terminal autonomously set its tier level to 1. Otherwise, the receiver terminal of UTR sets the tier level to 1 as shown in Figure 1b. Once the tier 1 terminals are set, the terminals subsequently send UTR in the same manner as tier 1 selection to find tier 2 terminals. The receiver of the second UTR then sets its tier lever 2 as shown in Figure 1c. Tier 0 terminals, which are the lowest tier terminals, can simultaneously overhear the UTR during the UTR sending for the selection of tier 2 terminals, and then the terminals can regard the tier level as 0. Through this procedure, VORTEX assigns tiers to terminals as shown in Figure 1d. Note that, the terminals in tier 1 or 2 collect the information from the terminals in the lower tiers using this procedure.