# A Family of ACO Routing Protocols for Mobile Ad Hoc Networks
## 3 AntOR-Based Protocol
### Pheromone Diffusion  
Pheromone diffusion aims to expand the information available from the pheromone in the network by sending updating periodic messages and the bootstrapping technique to know reachable destinations in the network. This process is similar to pheromone diffusion in nature. The Hello messages play an important role: every certain interval of time \(t\), the nodes send messages of this type in broadcast mode. The experiments \(t\) was set equal to one second. These messages are also used to know the one-hop neighbors and to detect link failures. At the same time, these messages serve to spread the necessary pheromone in the bootstrapping process. This generated Hello message is as follows:  
A node \(i\) chooses a maximum number \(k\) of destinations by consulting the information in its routing table. When there are more available destinations, these are selected randomly. For each destination \(d\), the Hello message has information of the best pheromone value \(v_{i}^{d}\) that the node \(i\) has for the destination \(d\). This is calculated by taking into account all of the possible regular pheromone values \(\tau_{ij}^{d}\) and virtual pheromone values \(\omega_{ij}^{d}\) associated with the destination \(d\). In addition to including it, it is indicated with a flag if the chosen value corresponds to a regular or virtual pheromone value. Once created, the Hello message is sent, as described earlier, in broadcast mode. All of the neighbors of the node that sends this message Hello receive a copy. Thus, a neighboring node \(j\), upon receiving this message, estimated a new value that indicates how good the route from this node \(j\) to the sender \(i\) is, which has a reachable destination \(d\), shown in the destination list of the Hello message. This estimation is made by combining (bootstrapping) the pheromone value \(v_{i}^{d}\) from the Hello message with the local estimation or cost \(c_{j}^{i}\) of the hop \(j\) to \(i\), i.e., the link between the node \(j\) and the node \(i\). Equation (10) summarizes the bootstrapping process:  
\[k_{ji}^{d}=((v_{i}^{d})^{-1}+c_{j}^{i})^{-1} \tag{10}\]  
being \(k_{ji}^{d}\) the bootstrapped value obtained in this process. Thanks to the use of this technique, the overhead is low, because the needed uniqueness is to send the value \(v_{i}^{d}\) from node \(i\) to \(j\). This information is included in the Hello message, which is sent in broadcast, and when it is received by a node, it never is forwarded (it would increase overload then). This bootstrapping process is repeated constantly when the simulation starts with the sending of Hello messages in an asynchronous way by each node in the network. Although this process has low overhead, it may have reliability problems. The value obtained by bootstrapping only is correct when the value \(v_{i}^{d}\) is contained in the Hello message. This is especially problematic in highly dynamic environments where routing information is not updated quickly and, especially, if the included value in the Hello message corresponds to the virtual pheromone. To this problematic situation we should add the fact that the bootstrapping process is relatively slow, because the sending of Hello messages is carried out every certain interval time (in order to maintain its efficiency). For the above considerations, AntOR has the premise that the bootstrapped pheromone value \(k_{ji}^{d}\) obtained in Equation (10) is not very reliable. This feature affects directly the update of the routing table when we use this value \(k_{ji}^{d}\) and the separation of regular and virtual pheromone values. Generally, the virtual pheromone value is updated with the new bootstrapped pheromone value. On the other hand, the regular pheromone is only updated by this bootstrapped pheromone value \((k_{ji}^{d})\) when the following conditions occur simultaneously:  
1. The node \(j\), which receives the corresponding Hello message, has a non-zero regular pheromone value. 2.