## 3 FLARoute: Fair Locality Aware Routing
### FLARoute Design
#### 3.2.2 Phase 2: Determining Relative Burden  
As discussed in Section 2.4.3, focusing on the buffer alone may not achieve the desired level of fairness, because buffer occupancy is not a good indicator of how much burden a node has been subjected to. Inferring the burden on nodes from energy consumption may also come to mind--recall that in order to improve throughput, energy-aware routing solutions consider energy level when selecting suitable relay nodes (i.e., they infer the reliability of relay nodes from available energy), rather than (achieving fairness by) making routing decisions according to the burden routing itself has impacted on the nodes (cf., Section 2.1.3). However, unless there is a means of monitoring the portion of energy expended in routing, energy alone (in terms of overall energy consumption or residual energy) is not a good indicator of node burden as well. In real-world implementation, the chances that a device is low on battery due to other applications besides routing cannot be ruled out. Therefore, inferring burden from buffer information or energy level is only suitable in controlled environments such as experimental simulations. To prevent bias in performance evaluation, simulation environments can be controlled to assume that device resources are consumed through participation in the network alone. Likewise, each node could be assigned equal buffer size. This is, however, not true in real-life, hence should not be used as a basis of designing routing solutions intended for real-world implementation. Therefore, determining the burden on nodes through buffer information limits existing solutions from guaranteeing fairness in realistic scenarios, especially when other resource constraints (e.g., energy and computation) are considered.  
The mechanism proposed here, namely Relative Burden Detection (ReBurD), allows a node to locally determine its relative burden (i.e., the burden on the node as compared with those on neighbouring nodes) from transmitted (i.e., received or sent) messages--Global ReBurD (GReBurD), a global version of ReBurD was earlier proposed in [70] for simulation and performance evaluation purposes. ReBurD maintains a counter for \(N_{r}\), received messages (excluding messages for which the receiver is the destination), and \(N_{s}\), sent messages (excluding messages for which the transmitting node is the source). \(B_{i}\), the burden at the end of every time slot \(\Delta Tb_{i}\) (\(i\in[1,\infty]\)), is computed by Equation (2), where \(B_{i-1}\) represents the burden in \(\Delta Tb_{i-1}\), the previous slot (if there was one, i.e., if \(i>1\)). After computing the burden, the counters are reset to 0 for the next time slot, \(\Delta Tb_{i+1}\). Note that without resetting the transmission counters, the burden on nodes do not change even after a long period of inactivity.  
\[B_{i}=\left\{\begin{array}{c}N_{r}+N_{s},i=1\\ (N_{r}+N_{s}+B_{i-1})/2,i>1\end{array}\right. \tag{2}\]  
The relative burden at a given instant is used to make forwarding decisions. In that case, the instantaneous relative burden is also computed with Equation (2) (note that the counters are not reset until the current time slot is elapsed). Based on the proposed approach, the instantaneous relative burden on nodes increase as they continue to participate in forwarding. At the beginning of a new time slot, the instantaneous relative burden on nodes is reduced since the transmission counters are reset to 0. Hence, the choice of \(\Delta Tb_{i}\) reflects the restoration experienced during rest periods, such as when a device is being recharged, as opposed to periods of high data traffic such as rush hours.