Problems with Distance Vector

Distance Vector Protocol Summary.
For distance vector routing protocols, there really are only two choices: RIP or EIGRP. The decision about which routing protocol to use in a given situation is influenced by a number of factors including;

■ Size of the network
■ Compatibility between models of routers
■ Administrative knowledge required

Routing Loops
Routing loops can cause a severe impact on network performance. The following sections discuss the causes and solutions of routing loops with distance vector routing protocols.

A routing loop is a condition in which a packet is continuously transmitted within a series of routers without ever reaching its intended destination network. A routing loop can occur when two or more routers have inaccurate routing information to a destination network.

The loop can be a result of

■ Incorrectly configured static routes

■ Inconsistent routing tables not being updated because of slow convergence in a changing network
Distance vector routing protocols are simple in their operations. Their simplicity results in protocol drawbacks like routing loops. Routing loops are less of a problem with link-state routing protocols.

Implications of Routing Loops
A routing loop can have a devastating effect on a network, resulting in degraded network performance or even network downtime.

A routing loop can create the following conditions:

■ Link bandwidth will be used for traffic looping back and forth between the routers in a loop.
■ A router’s CPU will be burdened with useless packet forwarding that will negatively impact the convergence of the network.
■ Routing updates might get lost or not be processed in a timely manner. These conditions would introduce additional routing loops, making the situation even worse.
■ Packets might get lost in “black holes,” never reaching their intended destinations.

The diagram below shows a possible routing loop scenario in which mechanisms to prevent such loops do not exist.

routingloop

In this scenario, router E has lost connectivity to Host 1

Router E sends an update to Router D informing it that the link is down. Router D in turn sends this update to Routers B and C, however due to the delay in getting the message to all routers, Router A hasn’t received this update yet and unwittingly sends an update to Router B telling it that it has a route to Host 1.

Router B then tells Router D that it knows how to get to Host 1 (the route being via Router A)

When a packet is sent that is intended for Host 1, Router D incorrectly thinks that it can get to host 1 via Router B.  Router B sends the packet to Router A.   Router A thinks it can reach Host 1 via Router B and sends the packet that way, Router B sends it back to Router A and a Routing loops occurs.

The routing loop will keep going back and forward until one of the routers drops the packet (ie the TTL on the packet expires). Routing loops consume bandwidth and router resources, resulting in a slow or even unresponsive network.

There are a number of mechanisms available to eliminate routing loops which we will look at that are used primarily with distance vector routing protocols. These mechanisms include

■ Defining a maximum metric to prevent count to infinity
■ Hold-down timers
■ Split horizon
■ Route poisoning or poison reverse

Count-to-Infinity Condition
Count to infinity is a condition that exists when inaccurate routing updates increase the metric value to “infinity” for a network that is no longer reachable.

Remember that in Distance Vector RIP routing, the metric is hop count. When a router sends an update to a neighbour, it increments the hop count of each current route it knows about by 1.

Looking at the diagram above, lets say router E has a directly connected network to Host 1

Then when Router E sends an update to Router D, Router E increments the hop count by 1. So the directly connected route on Router E has a hop count of 0, but when it sends the update to Router D, Router E increments it so that Router D knows that the route to Host 1 is 1 hop away.

When  Router D sends an update to Router C, then Router C will know that Host 1 is 2 hops away.

When a loop occurs as outlined above, the packet just keeps getting sent back and forth continually because a router is advertising an invalid route which it thinks is valid (but really isn’t.)
This is the problem with Distance Vector Protocols method of “routing by rumour” because rumours are not always true. Each time the update gets sent it’s hop count is incremented by 1. So it will go back and forth until infinity.

RIP overcomes this by having a maximum hop count of 15, any networks with a hop count of 16 is classed as unreachable.

So rather than an update going back and forth indefinitely, a RIP routing update will only go back and forth 15 times because it has a max hop count of 15.

Preventing Routing Loops by Setting a Maximum Metric Value
As outlined above, in order to prevent the metric counting to infinity, “infinity” is defined by setting a maximum metric value. RIP defines infinity as 16 hops—an “unreachable” metric. When the routers “count to infinity,” they mark the route as unreachable.

Preventing Routing Loops with Hold-Down Timers
Earlier you learned that distance vector protocols employ triggered updates to speed the convergence process. Remember that in addition to triggered updates, routers using distance vector routing protocols also send periodic updates. Imagine that a particular network is unstable. The interface resets as up, then down, and then up again in rapid succession. The route is in a state known as flapping.
Using triggered updates, the routers might react too quickly and unknowingly create a routing loop. A routing loop could also be created by a periodic update that is sent by the routers during the instability. Hold-down timers prevent routing loops from being created by these conditions. Hold-down timers also help prevent the count-to-infinity condition.

Hold-down timers are used to prevent regular update messages from inappropriately reinstating a route that might have gone bad. Hold-down timers instruct routers to hold any changes that might affect routes for a specified period of time. If a route is identified as down or possibly down, any other information for that route containing the same status, or worse, is ignored for a predetermined amount of time (the hold-down period). This means that routers will leave a route marked as unreachable in that state for a period of time that is long enough for updates to propagate the routing tables with the most current information.

Preventing Routing Loops with the Split Horizon Rule
Another method used to prevent routing loops caused by slow convergence of a distance vector routing protocol is split horizon. The split horizon rule says that a router should not advertise a network through the interface from which the update came.

Split horizon can be combined with route poisoning or poison reverse to specifically mark a route as unreachable.

Route Poisoning
Route poisoning is used to mark the route as unreachable in a routing update that is sent to other routers. Unreachable is interpreted as a metric that is set to the maximum. For RIP, a poisoned route has a metric of 16.

Split Horizon with Poison Reverse
Poison reverse can be combined with the split horizon technique. The method is called split horizon with poison reverse. The rule for split horizon with poison reverse states that when sending updates out a specific interface, you should designate any networks that were learned on that interface as unreachable.

The concept of split horizon with poison reverse is that explicitly telling a router to ignore a route is better than not telling it about the route in the first place.

Next – Link State Routing