There are two types of dynamic routing protocols: Interior Gateway Protocols (IGP) and External Gateway Protocols (EGP). IGPs are used to exchange routing information within an autonomous system (AS), which is a collection of routing domains under the same administrative control the same routing domain. An EGP, on the other hand, is used to exchange routing information between different ASs. IGPs can be broken into two classes: distance-vector and link-state, and can also be broken into two categories: classful routing protocols and classless routing protocols.
Distance-vector routing is consists of two parts: distance and vector. Distance is the measure of how far it is to reach the destination and vector is the direction the packet must travel to reach that destination. The latter is determined by the next hop of the path. Distance-vector routing protocols will learn routes from its neighbors. This is called routing by rumor. Examples of distance-vector routing protocols are: Routing Information Protocol (RIP), Interior Gateway Routing Protocol (IGRP), and Enhanced Interior Gateway Routing Protocol (EIGRP).
Route poisoning is a feature that distance vector protocols use to reduce the chance of routing loops. Route poisoning begins when a router notices that a connected route is no longer valid. The router then advertises that route out all its interfaces and with a very large metric so that other routers consider the metric infinite and the route invalid. However, route poisoning does not solve the counting-to-infinity problem.
As mentioned earlier, route poisoning does not solve the counting-to-infinity problem. Counting-to-infinity can occur when one router has a valid metric that points to an address that is reachable through an intermediate router while the intermediate router has an infinite-distance route to the same address (see Figure ). If routing table updates are sent by both routers at the same in time, the intermediate router will advertise that the route to the destination address is an infinite-distance route while the other router will advertise that the route has a valid metric. Because the two routers use the same update interval between updates, this process repeats itself with the next routing update, with the difference that the valid metric will be incremented by 1 each time until an infinite metric is reached, hence this phenomenon is called counting to infinity.
FIGURE: Count To Infinity
Split horizon solves the counting-to-infinity problem by preventing a router from sending routing updates out the same interface on which it learnt the route. Thus, in Figure 4.1, the router would have learnt the route to the destination address across the link from the intermediate router. With split horizon, that router cannot then send advertisements about the route to the destination address out across the same link. Therefore the intermediate router will not receive the valid metric from the route to the destination address from the other router ad the count to infinity problem will not occur, solving the count-to-infinity problem on a single link.
Split Horizon with Poison Reverse
Split horizon with poison reverse, or simply poison reverse combines the two features. When a route fails the router uses route poisoning, i.e., the router advertises an infinite-metric route about that subnet out all interfaces, including interfaces previously prevented by split horizon. This ensures that all routers know for sure that the route has failed, while split horizon prevents counting to infinity.
Split horizon solves the counting-to-infinity problem over a single link but the counting to infinity problem can also occur in networks with multiple or redundant paths because there are more than one path to a router. In such networks, the hold-down timer feature prevents the counting-to-infinity problem. With the Hold-down timer feature, a router ignores any information about an alternative route to a destination address for a time equal to the hold-down timer once it has learnt that a route to the destination address has failed.