Distance vector protocols are susceptible to routing loops. Split horizon is one of the features of distance vector routing protocols that prevents them. This feature prevents a router from advertising a route back onto the interface from which it was learned.
For example, consider the following network topology.
Router R2 has a route to the subnet 10.0.1.0/24 that is advertised to router R1 by using RIP. Router R1 receives the update and stores the route in its routing table. Router R1 knows that the routing update for that route has come from R2, so it won’t advertise the route back to router R2. Otherwise, if the network 10.0.1.0/24 goes down, router R1 could receive a route to the subnet 10.0.1.0/24 from R2. Router R1 now thinks that R2 has the route to reach the subnet, and uses that route. R2 receives the packets from R1 and sends them back to R2, because R2 thinks that R1 has a route to reach the subnet, thereby creating a routing loop.
Route poisoning is another method for preventing routing loops employed by distance vector routing protocols. When a router detects that one of its directly connected routes has failed, it sends the advertisment for that route with an infinite metric (“poisoning the route”). A router that receives the update knows that the route has failed and doesn’t use it anymore.
Consider the following example.
Router R1 is directly connected to the 10.0.1.0/24 subnet. Router R1 runs RIP and the subnet is advertised to R2. When the R1’s Fa0/1 interface fails, an route adverisment is sent by R1 to R2, indicating that the route has failed. The route has a metric of 16, which is more than the RIP’s maximum hop count of 15, so R1 considers the route to be unreachable.
Holddown is a loop-prevention mechanism employed by distance vector routing protocol. This feature prevents a router from learning new information about a failed route. When a router receives an information about an unreachable route, a holddown timer is started. The router ignores all routing updates for that route until the timer expires (by default, 180 seconds in RIP). Only updates allowed during that period are updates sent from the router that originally advertised the route. If that router advertise the update, the holddown timer is stopped and the routing information is processed.
An example will help you understand the concept better. Consider the following network topology.
Router R1 has advertised its directly connected subnet 10.0.1.0/24 through RIP. After some period of time, the interface Fa0/1 on R1 fails and router R1 sends the poisoned route to R2. R2 receives the routing update, marks the route as unreachable and starts the holddown timer. During that time all updates from any other routers about that route are ignored to prevent routing loops. If interface Fa0/1 on R1 comes back up, R1 again advertises the route. R2 process that update even if the holddown timer is still running, because the update is sent by the same router that originally advertised the route.