What is a split horizon?
Split horizon is a method used by distance vector protocols to prevent network routing loops. The basic principle is simple: Never send routing information back in the direction from which it was received.
Why do we need split horizon? Because distance vector protocols, such as Routing Information Protocol (RIP), are susceptible to routing loops, which occur when a data packet is caught in an endless circle and continuously routed through the same routers. To avoid these loops, the protocols often rely on split horizon. Other types of protocols, such as Open Shortest Path First, use different mechanisms to deter packet looping.
When enabled, split horizon prevents a router from advertising a route back to the router from which it learned a route. In other words, if a router receives routing information from another router, the first router will not broadcast that information back to the second router, thus preventing routing loops from occurring.
Example of how split horizon works
The following figure shows an example of three routers used to forward packets between networks. In this simple design, the R3 router broadcasts routing information about the 10.0.0.0/16 network to the R2 router. The R2 router receives this information, updates its routing table and broadcasts the information to the R1 router. When the R1 router receives this information, it updates its own routing table.
The R1 router can use the updated routing information to send packets to the 10.0.0.0/16 network via the R2 and R3 routers. If split horizon is enabled, the R1 router will not be able to advertise this network route back to the R2 router. If no split horizon is configured on the router, the R1 router will broadcast the route back to the R2 router, which will update its routing table to include the network route available through the R1 router.
Under normal operations, the inclusion of the R1 route in the R2 routing table is not an issue because it's clearly a much costlier route than a direct R2-to-R3 connection. However, if the R2-to-R3 link fails and the R2 router receives a packet from R1 that's destined for the 10.0.0.0/16 network, the R2 router will send the packet back to R1 because the router advertised a viable network path. But the R1 router will simply return the packet to the R2 router based on its own routing information, resulting in a routing loop that continues until the packet expires.
With split horizon in place, the R1 router will not advertise the network route to the R2 router, preventing the routing loop from occurring.
Split horizon with poison reverse
Split horizon is often used in conjunction with a technique called poison reverse. This is the equivalent of route poisoning all possible reverse paths -- that is, informing all routers that the path back to the originating node for a particular packet has an infinite metric.
For example, in the figure above, the R1 router will not advertise the 10.0.0.0/16 network route back to the R2 router if split horizon is enabled. However, if split horizon with poison reverse is used, the route will be advertised to R2 but with the distance marked as infinite, indicating that the network is unreachable via this route.
For RIP, the metric value is set to 16, which is equivalent to infinity because the maximum RIP network hop count is 15.
Split horizon with poison reverse is more effective than simple split horizon in networks with multiple routing paths, although it results in greater network traffic. However, split horizon with poison reverse affords no improvement over simple split horizon in networks with only one routing path.