A link cache was being used in place of a simple path cache. This leads to the computation of a route to the destination (using Dijkstra's Algorithm, which runs in O() time, where V is the number of vertices in the graph) every time a data packet is being sent, which is computationally expensive. This calls for a second level path cache, which stores the entire path from source to destination and has a much smaller timeout compared to a link in the link graph.
If a route is required in the presence of a two-level cache, a route is first searched for in the path cache and then in the link cache. If it is not present in any of them, a route request is sent to the IN.