## 3 Routing Protocol: RFAODV
### Overview of RFAODV
#### 3.2.1 Route Discovery  
1. Forwarding Area of RFAODV  
Figure 3 shows the basic idea of the RFAODV forwarding area, which is called route-focusing. The basic principle of the forwarding region selection algorithm proposed in this paper is to keep the forwarding path around the vector between the source node and the destination node. The nodes marked in black in the figure will not participate in the routing discovery. In addition, within the node transmission range, the longer distance from the previous forwarding node, the more additional coverage can be acquired. It results in more opportunities to reach more nodes, receives fewer hops and obtains less delay. Based on the above principles, it can be seen from Figure 3 that the optimal forwarding node should be node V. Node V is not only located on the boundary of the transmission distance of the forwarding node of the last hop, but also on the vector of node S and node D. But node V may not actually exist, so we can call it a virtual node. Therefore, setting only one location to participate in forwarding is likely to result in route discovery failure. So, we define the intersection area between the transmission range of node V and the transmission range of the latest forwarding node as the forwarding area. All the nodes in the forwarding area are qualified to forward packets. Before we give the forwarding area, we need to calculate the position of the virtual node V. We can utilize the location information of source node S, destination node D and last forwarding node F carried in the RREQ to calculate the position of node V. The positions of nodes S, D and F are: \((Sx,Sy,Sz)\), \((Dx,Dy,Dz)\), \((Fx,Fy,Fz)\). We assume that the position of node V is \((Vx,Vy,Vz)\), which can be obtained by the following Equation (3), where \(\overset{\rightarrow}{SD}\) is the vector between the source node and the destination node, \(\overset{\rightarrow}{SF}\) is the vector between the source node and the forwarding node, and \(F^{\prime}\) is the projection point of node F on the routing vector \(\overset{\rightarrow}{SD}\), as shown in Figure 4.  
Figure 4: The diagram of virtual node V.  
Figure 3: Forwarding area of RFAODV (last forwarding node is F, S-F-V-C-D is the ideal route). \[\left\{ \begin{array}{l}\left|\stackrel{{\rightarrow}}{{\textbf{F}}{ \textbf{F}^{\prime}}}\right|=\left|\stackrel{{\rightarrow}}{{ \textbf{S}}{\textbf{F}}}\right|\sin\theta=\frac{\left|\stackrel{{ \rightarrow}}{{\textbf{S}}{\textbf{D}}\times\stackrel{{ \rightarrow}}{{\textbf{S}}}{\textbf{F}}}\right|}{\left|\stackrel{{ \rightarrow}}{{\textbf{S}}{\textbf{D}}}\right|}\\ \left|\stackrel{{\rightarrow}}{{\textbf{F}}{\textbf{V}}}\right|= \sqrt{\left|\stackrel{{\rightarrow}}{{\textbf{F}}}\right|^{2}- \left|\stackrel{{\rightarrow}}{{\textbf{F}}}^{\prime}\right|^{2}} \\ \left|\stackrel{{\rightarrow}}{{\textbf{S}}{\textbf{F}}}\right|= \sqrt{\left|\stackrel{{\rightarrow}}{{\textbf{S}}}{\textbf{F}} \right|^{2}-\left|\stackrel{{\rightarrow}}{{\textbf{F}}}^{\prime} \right|^{2}}\\ \left|\stackrel{{\rightarrow}}{{\textbf{S}}{\textbf{V}}}\right|= \left|\stackrel{{\rightarrow}}{{\textbf{F}}}\right|+\left| \stackrel{{\rightarrow}}{{\textbf{S}}}{\textbf{F}}^{\prime} \right|\\ \left|\stackrel{{\rightarrow}}{{\textbf{S}}}{\textbf{V}}=\frac{ \left|\stackrel{{\rightarrow}}{{\textbf{S}}}\right|}{\left| \stackrel{{\rightarrow}}{{\textbf{S}}}\right|}\stackrel{{ \rightarrow}}{{\textbf{S}}}{\textbf{D}}\\ \left|\stackrel{{\rightarrow}}{{\textbf{F}}}\right|=R\end{array} \right.\right. \tag{3}\]  
Forwarding area is defined as:  
\[\left\{ \begin{array}{l}\left(X-Vx\right)^{2}+\left(Y-Vy\right)^{2}+\left(Z-Vz \right)^{2}\leq R^{2}\\ \left(X-Fx\right)^{2}+\left(Y-Fy\right)^{2}+\left(Z-Fz\right)^{2}\leq R^{2} \end{array} \right.\right. \tag{4}\]  
2. Forwarding delay of RFAODV  
In the RFAODV protocol, all the nodes in the forwarding area are qualified to forward RREQ. When a RREQ is received by a candidate node, the node will first judge whether the number of the RREQ attempts (\(Nq\)) is less than two.