Split Horizon

According to the distance vector algorithm as it has been described so far, at every update period each
router broadcasts its entire route table to every neighbor. But is this really necessary? Every network
known by router A in Figure 4.3, with a hop count higher than 0, has been learned from router B.
Common sense suggests that for router A to broadcast the networks it has learned from router B back to
router B is a waste of resources. Obviously, B already knows about those networks.
A route pointing back to the router from which packets were received is called a reverse route. Split
horizon is a technique for preventing reverse routes between two routers.
Besides not wasting resources, there is a more important reason for not sending reachability information
back to the router from which the information was learned. The most important function of a dynamic
routing protocol is to detect and compensate for topology changes—if the best path to a network becomes
unreachable, the protocol must look for a next-best path.
Look yet again at the converged internetwork of Figure 4.3 and suppose that network 10.1.5.0 goes down.
Router D will detect the failure, flag the network as unreachable, and pass the information along to router
C at the next update interval. However, before D's update timer triggers an update, something unexpected
happens. C's update arrives, claiming that it can reach 10.1.5.0, one hop away! Remember the road sign
analogy? Router D has no way of knowing that C is not advertising a legitimate next-best path. It will
increment the hop count and make an entry into its route table indicating that 10.1.5.0 is reachable via
router C's interface 10.1.4.1, just 2 hops away.
Now a packet with a destination address of 10.1.5.3 arrives at router C. C consults its route table and
forwards the packet to D. D consults its route table and forwards the packet to C, C forwards it back to D,
ad infinitum. A routing loop has occurred.
Implementing split horizon prevents the possibility of such a routing loop. There are two categories of
split horizon: simple split horizon and split horizon with poisoned reverse.
The rule for simple split horizon is, When sending updates out a particular interface, do not include
networks that were learned from updates received on that interface.
The routers in Figure 4.4 implement simple split horizon. Router C sends an update to router D for
networks 10.1.1.0, 10.1.2.0, and 10.1.3.0. Networks 10.1.4.0 and 10.1.5.0 are not included because they
were learned from router D. Likewise, updates to router B include 10.1.4.0 and 10.1.5.0 with no mention
of 10.1.1.0, 10.1.2.0, and 10.1.3.0.Simple split horizon works by suppressing information. Split horizon with poisoned reverse is a
modification that provides more positive information.
The rule for split horizon with poisoned reverse is, When sending updates out a particular interface,
designate any networks that were learned from updates received on that interface as unreachable.
NOTE
Split horizon with poisoned reverse
In the scenario of Figure 4.4, router C would in fact advertise 10.1.4.0 and 10.1.5.0 to router D, but the
network would be marked as unreachable. Figure 4.5 shows what the route tables from C to B and D
would look like. Notice that a route is marked as unreachable by setting the metric to infinity; in other
words, the network is an infinite distance away. Coverage of a routing protocol's concept of infinity
continues in the next section.

Split horizon with poisoned reverse is considered safer and stronger than simple split horizon—a sort of
"bad news is better than no news at all" approach. For example, suppose that router B in Figure 4.5
receives corrupted information causing it to believe that subnet 10.1.1.0 is reachable via router C. Simple
split horizon would do nothing to correct this misperception, whereas a poisoned reverse update from
router C would immediately stop the potential loop. For this reason, most modern distance vector
implementations use split horizon with poisoned reverse. The trade-off is that routing update packets are
larger, which may exacerbate any congestion problems on a link.