# Swarm-Intelligence-Centric Routing Algorithm for Wireless Sensor Networks
## 3 Proposed SICROA
### Collision Avoidance through Interrupts (CATI)  
The ad hoc on-demand distance vector (AODV)--a representative WSN protocol--defines a \"Hello\" message to alleviate frequent link-disconnection problems, and to allow mobile nodes on a path to exchange beacons with one another. However, link disconnections still frequently occur, and the transmission of periodic \"Hello\" messages can cause network congestion along with several other problems [34; 35]. In ant colonies, individual ants passing through a path closer to the shortest one accumulate more pheromones. This accumulation of a large amount of pheromones along a path causes the ants to recognize it as the shortest path, thereby resulting in their movement along this recognized path. Therefore, the aforementioned method results in collisions in the routing process, as well as a higher congestion density between adjacent nodes. Additionally, in the event of a traffic congestion, the establishment of a new path cannot be considered. This causes deterioration of the node-congestion state, increased end-to-end latency, and network-performance degradation. To solve the aforementioned problems, collision avoidance through interrupts (CATI), wherein data relay is rejected by a node, which is considered to face increased traffic, by sending an interrupt message to the source node. Subsequently, the node that receives the message can establish a new bypass path. In addition, the node sending the interrupt message prevents a new path from being established through itself by not relaying the route request (RREQ) message to its neighboring nodes. CATI replaces the \"Hello\" message with an interrupt to avoid collisions caused by periodic message transmissions, and it adopts the message formats of <Battery Check> and <Mobility Check> [36]. The <Battery Check> message checks the residual energy level. If the battery capacity is insufficient, or if the residual energy level of the node is less than or equal to the threshold value, <Battery Check> confirms the occurrence of the interrupt message by checking the threshold value. If the corresponding interrupt occurs, the status is transmitted to the neighboring node using the event process module. Because the neighboring nodes that receive this status can predict the disconnection of a link, the service life of the concerned node is set to zero in its corresponding route table, and the same is removed from the set of neighbor nodes after a certain time has elapsed. Figure 2 depicts an example of the <Battery Check> interrupt. Node A denotes a relay node that exists on the data paths of the [S1, D1], [S2, D2], and [S3, D3] pairs. If node A predicts a link disconnection due to a low battery level caused by excessive traffic, the neighboring nodes receiving the message reduce the frequency of the link disconnections by modifying the received messages to bypass the path using alternate nodes prior to the occurrence of link disconnections. Node S2, which receives the <Battery Check> message, initiates a new routing mechanism by broadcasting an RREQ message to establish a new route to node D2 [37]. If node S2 successfully completes the establishment of a new bypass route and initiates data transfer through the new route via node B, the route maintained by node A is no longer used. Therefore, the time for that entry expires, and it is naturally deleted from the routing table. The <Mobility Check> message specifies the occurrence of a movement owing to changes in the position value of a node (A\(\rightarrow\)A'). Consequently, the module that checks the movement status of the concerned node is called, and the corresponding module checks the coordinate values of the node at each period by setting a timer for transmitting the next <Mobility Check> message. Finally, when a change occurs, the event process module is used to send the status to neighboring nodes. Figure 2: Collision avoidance through interrupts (CATI): <Battery Check> interrupt message.