Routing Loop Mitigation
To avoid routing loops, distance vector routing protocols have implemented several countermeasures within the routing protocol operations. The following sections describe the preventative measures that have been put in place to mitigate routing loops. For obvious reasons, the majority of these are integrated within the routing protocol and cannot be disabled.
Make sure you remember and comprehend the ways distance vector routing protocols mitigate routing loops.
Counting to Infinity
As demonstrated earlier, when routers are continuously passing updates to unreachable networks between each other, the metric continues to increase forever, which is known as counting to infinity. The easiest way to mitigate this routing protocol side effect is to incorporate a ceiling on the maximum hop count in the design of the routing protocol. Using this tactic, routers can determine a network to be unreachable after it reaches the maximum hop count allowed for that protocol. Table 11.1 lists the routing protocols and their maximum hop count values.
Notice that RIP version 1 and 2 both have a maximum hop count of 15, which drastically limits the size of the allowed RIP network. EIGRP, because it is has some distance vector routing protocol features, has a maximum hop count value of 224. OSPF is a link-state routing protocol that does not use or require a maximum hop count, so it can have an infinite number of hops.
Be sure to remember the maximum hop counts for each protocol.
Split horizon is similar to that old saying, “Don’t ride out on the horse you rode in on.” After hearing this little tidbit, if you were to turn around and say back to me that split horizon is similar to that old saying, “Don’t ride out on the horse you rode in on,” it would get redundant, confusing, and annoying pretty quickly. Such is the case with routing updates.
As you saw earlier, you can get into trouble when routers advertise networks back to the router from which they learned them. Split horizon fixes this dilemma by suppressing those networks in the routing updates being sent back to the source. In other words, split horizon does not advertise networks out the same interface as that from which it learned them. Take the example shown in Figure 11.6. Because Router D learned about the 192.168.1.4, 192.168.1.8, 172.16.0.0, and 172.17.0.0 subnets from Router B, it does not advertise those networks back to Router B out Serial 0/0. In addition, because it heard Router B advertising the 192.168.1.12 network as well, it does not advertise that back out that interface either.
Thus, the only network that Router D will still advertise to Router B is the 172.18.0.0 network because that subnet was not learned via serial 0/0. Now when the link fails on Router A, Router B will not receive a misleading update about the 192.168.1.4 and the 172.16.0.0 networks because Router D and Router C do not advertise those networks back to Router B.
Contrary to what you might think, when a router advertises a network in a routing update to its neighbors, it adds the metric automatically, as shown in Figure 11.6.
Be sure you understand the operations involved in split horizon.
Route Poison, Poison Reverse, and Hold-Down Timers
To avoid count-to-infinity routing loops, a maximum hop count is defined for a routing protocol so the metrics do not increment indefinitely in the event of a routing loop. With route poisoning, the router that recognizes the link failure poisons the affected networks by setting them to an infinite metric for that routing protocol. When that router sends this update to its neighbors, they are notified of the link failure and can update their routing table accordingly.
To illustrate the route poisoning concept, refer to Figure 11.7. Notice in this topology that a redundant route has been added between Router D and Router A. The resultant routing table for Router D now has a route to the 172.16.0.0 network through Router A because it is only one hop count as opposed to two hops through Router B. In addition, notice that Router D has equidistant hops to reach network 192.168.1.4. In this case, Router D keeps both routes in the routing table and load balances between both links for packets destined for that network. When the link fails between Router A and Router B, Router A and Router B set the affected networks to an infinite metric. In this example, because I am using RIP, the maximum hop count is 15, so 16 is an infinite metric.
When Routers C and D receive these updates from their neighbors, they can advertise the poisoned network out all their interfaces. With poison reverse, the routers override the split horizon rule and even send the update back to the source, which proves useful as an acknowledgment that
those devices are aware of the topology change. At the same time, when Routers C and D receive the poisoned update, they put that network in a “possible down” state in their routing table, as illustrated in Figure 11.8. This is the work of the hold-down timer. Hold-down timers are activated when a router receives a poisoned update from a neighbor indicating that a known network is now inaccessible.
To ensure that the router does not hastily listen to alternate routes causing yet another routing loop, the router ignores updates with a poorer metric than the original until the hold-down timer expires. This gives the rest of the topology ample time to react to the link change. However, if an update is received with a better metric than the original route entry, the router discontinues the hold-down timer and uses that entry in its routing table.
In Figure 11.8, when Routers A and B poison their route entries and pass them to Routers C and D, those poisoned networks are put in a possible down state and the hold-down timer is activated. In that time, Router B may receive updates from Router D about the 172.16.0.0 network because Router D has an alternate route. However, Router B must wait for the holddown timer to expire before using the alternate path. For this reason, distance vector routing protocols are considered the slowest routing protocols to converge.
One way distance vector routing protocols speed up their convergence while helping avoid routing loops at the same time is something called flash or triggered updates. Because one of the contributing causes of routing loops is the lack of update information reaching all devices quickly enough, triggered updates enable the router to send the update immediately after a link fails, as opposed to waiting for its periodic update time.
In place of a link failure, what do you suppose would happen if Router A had some operational failures or you removed or changed the routing protocol configuration or networks? Other routers in the domain would not be aware of this change because it isn’t a link failure that they can detect and react to. To ensure that these networks are not circulating indefinitely in a routing system, routing protocols have invalid, or dead, timers. If a router stops receiving updates from a router after a set amount of time, that router is considered to be dead and the networks that learned from that router are invalid. Likewise, if a particular network stops advertising with a routing protocol, that entry becomes invalid after the dead timer ages out. This timer is reset every time an update is received from a neighbor for each network in the routing table. When the timer expires, the router poisons the route and advertises that topology change to its neighbors.
You can clear out aged entries in the routing table quickly by using the clear ip route command fol lowed by the network you want to remove, or use the wildcard, *, to remove all entries.