Frame Relay is a topic that is widely discussed inside the Cisco certifications, as you encounter it in both the CCNA and CCNP topics. Outside of that, however, I still have to see the first real-world Frame Relay circuit still in use, as MPLS is a more commonly used WAN technology these days.

As a full mesh, Frame Relay works quite similar to a normal Ethernet broadcast domain at layer 2 and layer 3. The complexity arises when Frame Relay is deployed in a partial mesh. I struggled a long time with the concepts of Frame Relay, so to help understand others the oddities of a partial mesh, I will explain things by the following topology:

Frame Relay Partial Mesh

In this topology  router R1 is the main site that has a Frame Relay PVC to all other sites. The branch sites, R2, R3, R4 and R5, each have one PVC back to R1. They don’t have PVCs to each other. This is a hub and spoke setup: R1 is the hub, the others are spokes. The routers use the subnet, which each router an IP equal to it’s number, e.g. R1 has, R2 has After configuring the Frame Relay switch, the initial setup for the routers is fairly simple:

Router(config)#interface Serial0/0
Router(config-if)#encapsulation frame-relay
Router(config-if)#ip address 10.0.0.x
Router(config-if)#no shutdown

Since Cisco routers have the command ‘frame-relay reverse-arp’ activated by default, all routers find out the layer 3 address (IP) on each PVC (layer 2). R1 can ping every router, the others can ping R1 but not each other.

So far so good, now we configure EIGRP on all routers. We also configure a loopback interface that will be advertised: on R1, on R2, and so on.

Router(config)#interface Loopback 0
Router(config-if)#ip address 10.0.x.1
Router(config)#router eigrp 1

Adjacencies from quickly, and R1 can see all routes now. But the four spoke routers can’t see each others routes. No problem, just disable the split-horizon rule of EIGRP on the hub router, so that received updates will be send out of the serial interface again to the others.

Router(config)#interface Serial0/0
Router(config-if)#no ip split-horizon eigrp 1

After a graceful EIGRP restart, all spoke routers can see all routes. But despite this, a spoke router still can’t reach another spoke router’s loopback. Why not? Well, because the spoke routers have no idea how to get there. The frame-relay reverse-arp mentioned earlier finds out what’s at the other side of a PVC link, but it does not go further than that. Unable to gather the correct ARP information, packets will be dropped. To make it possible, you will need to add static mappings to the spoke routers. The PVC used is of course the only PVC possible on a spoke router.

Router(config)#interface Serial0/0
Router(config-if)#frame-relay map ip 10.0.0.x <pvc>

Since the next hop defined in the routering protocol is now reachable, the spoke routers can ping each other’s loopbacks. Packets will be send to the hub router first, who will then relay these packets back out of the serial interface to another PVC. The single point of failure is the central hub, since everything depends on it.

In OSPF it’s the same: you will need to add these static mappings to make the actual forwarding work. The configuration of OSPF itself is different, as OSPF has no concept of split-horizon (that’s for distance vector protocols, not link-state). I personally prefer configuring the serial interface as broadcast, allowing for automatic neighbor discovery, and set the hub router as DR (router-id, and configured as first).

Router(config)#interface Serial0/0
Router(config-if)#ip ospf network broadcast

The layer 2 topology now reflects the DR situation: a spoke router will send a link-state advertisement to the hub router (the only PVC), and the hub router send out a multicast to all spoke with the necessary information.

I hope that this is an informative post to those who want to better understand Frame Relay partial mesh.