There are a couple of gotcha’s when running EIGRP over a WAN technology such as Frame Relay, as opposed to a LAN technology like Ethernet. To demonstrate one of them let’s consider a typical Frame Relay network operating in a hub and spoke configuration, with our HQ router being the hub and our East and West branch office routers the spokes:
In such a design each router has a single interface (Serial0/0) connected to the frame relay cloud, and there are PVC’s (permanent virtual circuits) linking HQ to each branch. This means for example, that when router East sends a packet to router West, the packet traverses East’s PVC to HQ and then back out the other PVC to router West. So, even though the are two PVC’s configured on the HQ router, they both connect through the same interface.
Here’s all three router’s Frame Relay configurations:
HQ# ! interface Serial0/0 ip address 192.168.1.1 255.255.255.248 encapsulation frame-relay serial restart-delay 0 frame-relay map ip 192.168.1.2 102 broadcast frame-relay map ip 192.168.1.3 103 broadcast no frame-relay inverse-arp end
WEST# ! interface Serial0/0 ip address 192.168.1.2 255.255.255.248 encapsulation frame-relay serial restart-delay 0 frame-relay map ip 192.168.1.1 201 broadcast frame-relay map ip 192.168.1.3 201 no frame-relay inverse-arp end
EAST# ! interface Serial0/0 ip address 192.168.1.3 255.255.255.248 encapsulation frame-relay serial restart-delay 0 frame-relay map ip 192.168.1.1 301 broadcast frame-relay map ip 192.168.1.2 301 no frame-relay inverse-arp end
We have full IP connectivity between all three routers, which is all well and good, but what happens when we implement a Distance Vector routing protocol (in this case EIGRP) to route between the LAN’s attached to each of our branch routers? In our lab the local networks are represented by Loopback interface Lo0.
Let’s check the routing tables on each branch router:
WEST#sh ip route 10.0.0.0/24 is subnetted, 1 subnets C 10.1.1.0 is directly connected, Loopback0 192.168.1.0/29 is subnetted, 1 subnets C 192.168.1.0 is directly connected, Serial0/0
EAST#sh ip route 10.0.0.0/24 is subnetted, 1 subnets C 10.1.2.0 is directly connected, Loopback0 192.168.1.0/29 is subnetted, 1 subnets C 192.168.1.0 is directly connected, Serial0/0
In the case of router East, it is directly connected to the 192.168.1.0/29 network, however it cannot see West’s LAN (10.1.1.0/24). The same is true for router West in that it does not know about East’s LAN (10.1.2.0/24). The reason for this is Split Horizon.
From Wikipedia:
In computer networking, split-horizon route advertisement is a method of preventing routing loops in distance-vector routing protocols by prohibiting a router from advertising a route back onto the interface from which it was learned.
What this means in our example network is that when the HQ router receives a network advertisement from either the West or East routers telling it about the 10.1.1.0/24 or 10.1.2.0/24 networks respectively, it DOES NOT advertise these routes back out of the same interface on which it learnt them (remember it only has S0/0 connected to the Frame Relay cloud).
Fixing this is easy – we simply disable Split Horizon on the HQ router’s S0/0 interface:
HQ#conf t Enter configuration commands, one per line. End with CNTL/Z. HQ(config)#int s0/0 HQ(config-if)#no ip split-horizon eigrp 1
Note that as soon as we do this the HQ router resets the neighbour relationships and sends EIGRP Update packets to the branch routers. We can see this with some debugging enabled:
*Mar 1 00:38:43.671: %DUAL-5-NBRCHANGE: IP-EIGRP(0) 1: Neighbor 192.168.1.2 (Serial0/0) is resync: split horizon changed *Mar 1 00:44:16.659: EIGRP: Sending UPDATE on Serial0/0 nbr 192.168.1.2 *Mar 1 00:44:16.663: AS 1, Flags 0xD, Seq 10/0 idbQ 0/0 iidbQ un/rely 0/0 peerQ un/rely 0/1 serno 1-3
Now, if we check the branch routing tables again we will see that they’ve both learned about the other branches LAN’s:
WEST#sh ip route 10.0.0.0/24 is subnetted, 2 subnets D 10.1.2.0 [90/2809856] via 192.168.1.1, 00:00:08, Serial0/0 C 10.1.1.0 is directly connected, Loopback0 192.168.1.0/29 is subnetted, 1 subnets C 192.168.1.0 is directly connected, Serial0/0
EAST#sh ip route 10.0.0.0/24 is subnetted, 2 subnets C 10.1.2.0 is directly connected, Loopback0 D 10.1.1.0 [90/2809856] via 192.168.1.1, 00:02:16, Serial0/0 192.168.1.0/29 is subnetted, 1 subnets C 192.168.1.0 is directly connected, Serial0/0
Let’s prove we have full connectivity from branch to branch:
WEST#ping 10.1.2.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.2.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5)
EAST#ping 10.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5)
I hope this has been a useful explanation. Thanks for reading, and good luck with your CCNP studies!
Rich
Follow Rich on Twitter