1-Each node now has a separate queue (apart from the queue which AODV has for maintaining routing
information) which acts as a cache for the routes. For this purpose, we have used the same queue
structure which AODV uses for maintaining its routes.
2. To reduce the problem of stale caching, a cache timer is introduced in the caches and an appropriate
cache timeout value is found to get the maximum efficiency from the cache even in the case of high
mobility (low pause time). So any route that does not get updated within the cache timeout period
from the time of its addition to the cache, is discarded as stale.
3. Route request packets (RREQ) should be able to carry the node addresses and latest sequence numbers
(It is the same sequence number as used by AODV to check the freshness of a route) of the
intermediate nodes they have passed before reaching the destination node. For this purpose, we have
implemented a special data structure in the AODV RREQ packet header which forms a link list of
node addresses and sequence numbers of the nodes through which the packet has crossed.
4. All the nodes on receiving a route request packet should, apart from doing their already specified
tasks, read the node addresses and sequence numbers in the packet and add them to their caches as
the nodes reachable from the last node through which the packet is coming. Then before broadcasting
the packet to the neighbouring nodes, the nodes should append their own address and a latest unused
sequence number into the packet.
5. As AODV is not a source routing protocol like DSR, so caching of routes can cause the problem
of looping of data packets because of deletion of routes due to cache timeout. In order to avoid
the looping of packets, a packet sequence number is generated by the source node before sending
the packet by incrementing by one the last sequence number used by that node. This sequence
number is attached with each packet so that the packet sequence number along with the source
id uniquely determines a packet and so nodes can detect the packets forwarded by them self. On
encountering a packet which has looped, the node drops the packet and deletes the path on which it
was last forwarded which resulted in the loop and informs the source of the packet that the path to
the destination does not exist any more.
6. Caching of routes enables intermediate nodes to salvage data packets as alternate routes may be
available with every node. So if the older route breaks, the intermediate node which detects the route
failure first looks for an alternate route in its cache and if it finds any route, it sends the packet on
that route. But it informs the source that the old route has expired so that the source can initiate
route discovery to find a new route. This prevents over lengthening of routes after many routes have