# A Multi-Technology Communication Platform for Urban Mobile Sensing
## 3 Architecture Overview
### DTN Forwarding Strategies
With this information a classification table is computed as follows  
\[Rank=W_{Last}\cdot P_{lastRSU}+W_{C}\cdot P_{Contact}, \tag{1}\]  
where \(W_{Last}\) represents the weight given to \(P_{lastRSU}\), and \(W_{C}\) represents the weight given to \(P_{Contact}\), which are 1/2 unless otherwise specified. \(P_{lastRSU}\) represents the probability of reestablishing contact with a road side unit (RSU), which is given by  
\[P_{lastRSU}=1-\frac{time_{actual}-time_{lastRSU}}{time_{actual}}, \tag{2}\]and \(P_{Contact}\) relates to the mobility of the node and the number of contacts with RSUs or other mobile nodes in a previous time window, and is given by  
\[P_{Contact}(N_{Contact})= \begin{cases}0,&N_{Contact}=0\\ \frac{N_{Contact}}{\tau_{Contact}},&0\leq N_{Contact}\leq\tau_{Contact}\\ 1,&\tau_{Contact}<N_{Contact}\end{cases}  \tag{3}\]  
where \(\tau_{Contact}\) defines an acceptable number of contacts per time window that a mobile node should contact to be considered a _good_ neighbor. **Mobility-Based Neighborhood Classification:**: This evaluation process classifies a mobile node according to the following information: (1) the node mean velocity, and (2) the node heading angle. With this information a classification table is computed as follows:  
\[Rank=W_{Head}\cdot P_{Heading}+W_{Vel}\cdot P_{MeanVel}, \tag{4}\]  
where \(W_{Head}\) represents the weight given to \(P_{Heading}\), and \(W_{Vel}\) represents the weight given to \(P_{MeanVel}\). \(P_{Heading}\) relates to the difference on the heading angle between the node and its neighbors which is given by  
\[P_{Heading}=\frac{\left|heading_{model}-heading_{node2}\right|}{180}, \tag{5}\]  
and \(P_{MeanVel}\) relates to the mobility of the neighboring nodes, and is given by  
\[P_{MeanVel}(meanVel)= \begin{cases}0,&meanVel=0\\ \frac{meanVel}{\tau_{Vel}},&0\leq meanVel\leq\tau_{Vel}\\ 1,&\tau_{Vel}<meanVel\end{cases}  \tag{6}\]  
where \(\tau_{Vel}\) defines an acceptable value of mean velocity that a mobile node should perform to be considered a _good_ neighbor. The usage of the heading angle is employed with the aim to identify nodes traveling in opposite directions. Both forwarding strategies employ two network control mechanisms: loop avoidance and the congestion minimization. Scenarios where a data packet is continually routed through the same nodes are undesirable, mainly because a significant amount of the network resources are consumed while performing redundant actions. To solve this issue, the proposed forwarding scheme resorts to the data packet tracking information, i.e., to the list of previous hops (previous nodes). Limiting the number of hops that a packet can travel grants the possibility of controlling the impact of having the list of traveled hops information within the packet header, allowing the application of the loop avoidance mechanism without compromising the network scalability. High congestion has a direct impact on the network performance and on the data dissemination process. In order to prevent and overcome this problem, a congestion minimization technique is employed. As previously described, the information on the packet's number of hops gives feedback about the data packet depth within the network. Therefore, an estimation of the overall packet distribution in the network can be made using the number of hops information. When the number of hops is high, it means that the packet is stored in several nodes, which means that the packet is spread over the network. On the other hand, when the number of hops is low, it means that the packet reaches only a few number of nodes and does not have a significant distribution over the network. Therefore, the proposed technique enables the sending decision on the packets with a minor presence over the network. Algorithm 1 summarizes the forwarding procedure.