Sooner or later enterprises will reach a point where EIGRP is no longer appropriate as the routing protocol of choice for the IGP. This is sometime due to the buggy nature of EIGRP (stuck in active issues), the lack of traffic engineering capabilities, or that the protocol is proprietary to cisco, and the enterprise is looking for more flexibility in vendor choices. So if not EIGRP then what? Well there are pretty much just another two choices available when choosing an IGP: OSPF or ISIS.
I was trying out Dynamips to see how well it performs on the MBP, so I scrapped together a little example on how to migrate a very small EIGRP network to OSPF. The basic premise is to first gather details about the topology, and understand how or if OSPF will fulfill the functionality of the existing EIGRP network. EIGRP and OSPF are very different in nature, therefore some concepts in EIGRP will not carry over to OSPF directly. The same is true in the reverse direction. While OSPF has the concept of areas which create a method of hierarchy, EIGRP doesn’t exactly have this concept although it can be configured in a way that creates similarity. In other words, a Toyota is not exactly a Lexus even if they have a lot of the same functionality and parts.
The topology for this lab looks like this:
The relevant routing configurations with only EIGRP enabled (ie. status-quo) looks like this:
R1:
router eigrp 1
redistribute connected
redistribute static
network 20.20.20.0 0.0.0.255
auto-summary
!
no ip http server
!
ip route 10.10.10.1 255.255.255.255 Null0
ip route 10.10.10.2 255.255.255.255 Null0
ip route 10.10.10.3 255.255.255.255 Null0
R2:
router eigrp 1
redistribute connected
redistribute static
network 20.20.20.0 0.0.0.255
auto-summary
!
no ip http server
!
ip route 10.10.20.1 255.255.255.255 Null0
ip route 10.10.20.2 255.255.255.255 Null0
ip route 10.10.20.3 255.255.255.255 Null0
R3:
router eigrp 1
redistribute connected
redistribute static
network 20.20.20.0 0.0.0.255
network 30.30.30.0 0.0.0.255
no auto-summary
!
no ip http server
!
ip route 10.10.30.1 255.255.255.255 Null0
ip route 10.10.30.2 255.255.255.255 Null0
ip route 10.10.30.3 255.255.255.255 Null0
The connected and static routes are redistributed into EIGRP; these show up as External EIGRP routes. Here is an example:
R3#show ip route
Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static routeGateway of last resort is not set
100.0.0.0/32 is subnetted, 3 subnets
D EX 100.100.100.1 [170/2297856] via 20.20.20.5, 05:15:50, Serial2/0
D EX 100.100.100.2 [170/2297856] via 20.20.20.9, 05:15:59, Serial1/1
C 100.100.100.3 is directly connected, Loopback0
20.0.0.0/30 is subnetted, 3 subnets
C 20.20.20.4 is directly connected, Serial2/0
D 20.20.20.0 [90/2681856] via 20.20.20.9, 05:16:37, Serial1/1
[90/2681856] via 20.20.20.5, 05:16:37, Serial2/0
C 20.20.20.8 is directly connected, Serial1/1
10.0.0.0/32 is subnetted, 9 subnets
D EX 10.10.10.2 [170/2169856] via 20.20.20.5, 05:13:56, Serial2/0
D EX 10.10.10.3 [170/2169856] via 20.20.20.5, 05:13:53, Serial2/0
D EX 10.10.10.1 [170/2169856] via 20.20.20.5, 05:13:59, Serial2/0
D EX 10.10.20.1 [170/2169856] via 20.20.20.9, 05:14:24, Serial1/1
D EX 10.10.20.2 [170/2169856] via 20.20.20.9, 05:14:22, Serial1/1
D EX 10.10.20.3 [170/2169856] via 20.20.20.9, 05:14:19, Serial1/1
S 10.10.30.2 is directly connected, Null0
S 10.10.30.3 is directly connected, Null0
S 10.10.30.1 is directly connected, Null0
If we just turned on OSPF right now on R1, R2, and R3, the routers would choose some routes using OSPF and some routes using EIGRP. Why would this happen? This happens because internal EIGRP routes have an admin preference of 90, External EIGRP routes have a preference of 170, and OSPF has a preference of 110. What we want to do is turn on OSPF without disturbing the actual forwarding or routing tables, then once we are ready, we can flick the switch to move over to OSPF.
Let’s first setup OSPF in a very simple single area configuration on all interfaces.
router ospf 1
log-adjacency-changes
redistribute connected subnets
redistribute static subnets
network 20.20.20.0 0.0.0.255 area 0
distance 255
Note that we set the distance to ‘255′, which is the highest admin distance you can set in IOS. Let’s take a look at the OSPF database to make sure it has the information we need to populate the routing table:
R3#show ip ospf database
OSPF Router with ID (100.100.100.3) (Process ID 1)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
100.100.100.1 100.100.100.1 87 0×80000003 0×0071DF 4
100.100.100.2 100.100.100.2 106 0×80000002 0×00F750 4
100.100.100.3 100.100.100.3 168 0×80000004 0×00122A 4Type-5 AS External Link States
Link ID ADV Router Age Seq# Checksum Tag
10.10.10.1 100.100.100.1 76 0×80000001 0×00054E 0
10.10.10.2 100.100.100.1 76 0×80000001 0×00FA57 0
10.10.10.3 100.100.100.1 76 0×80000001 0×00F060 0
10.10.20.1 100.100.100.2 96 0×80000001 0×0090B7 0
10.10.20.2 100.100.100.2 96 0×80000001 0×0086C0 0
10.10.20.3 100.100.100.2 96 0×80000001 0×007CC9 0
10.10.30.1 100.100.100.3 134 0×80000001 0×001C21 0
10.10.30.2 100.100.100.3 134 0×80000001 0×00122A 0
10.10.30.3 100.100.100.3 134 0×80000001 0×000833 0
100.100.100.1 100.100.100.1 86 0×80000001 0×0050F3 0
100.100.100.2 100.100.100.2 106 0×80000001 0×004002 0
100.100.100.3 100.100.100.3 152 0×80000001 0×003010 0
Great! As you can see we have all external LSAs and router LSAs that we need. Now let’s make the switch to OSPF on each router, starting with R3. We will keep EIGRP running just in case something goes wrong, but we will prefer OSPF routes by lowering the admin distance to ‘85′ which is less than the internal and external EIGRP routes.
router ospf 1
log-adjacency-changes
redistribute connected subnets
redistribute static subnets
network 20.20.20.0 0.0.0.255 area 0
distance 85
Then we check the routing table:
R3#show ip route
Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static routeGateway of last resort is not set
100.0.0.0/32 is subnetted, 3 subnets
O E2 100.100.100.1 [85/20] via 20.20.20.5, 00:00:38, Serial2/0
O E2 100.100.100.2 [85/20] via 20.20.20.9, 00:00:38, Serial1/1
C 100.100.100.3 is directly connected, Loopback0
20.0.0.0/30 is subnetted, 3 subnets
C 20.20.20.4 is directly connected, Serial2/0
O 20.20.20.0 [85/128] via 20.20.20.9, 00:00:38, Serial1/1
[85/128] via 20.20.20.5, 00:00:38, Serial2/0
C 20.20.20.8 is directly connected, Serial1/1
10.0.0.0/32 is subnetted, 9 subnets
O E2 10.10.10.2 [85/20] via 20.20.20.5, 00:00:38, Serial2/0
O E2 10.10.10.3 [85/20] via 20.20.20.5, 00:00:38, Serial2/0
O E2 10.10.10.1 [85/20] via 20.20.20.5, 00:00:38, Serial2/0
O E2 10.10.20.1 [85/20] via 20.20.20.9, 00:00:38, Serial1/1
O E2 10.10.20.2 [85/20] via 20.20.20.9, 00:00:38, Serial1/1
O E2 10.10.20.3 [85/20] via 20.20.20.9, 00:00:38, Serial1/1
S 10.10.30.2 is directly connected, Null0
S 10.10.30.3 is directly connected, Null0
S 10.10.30.1 is directly connected, Null0
Awesome! Now we just go to each router perform the same change and then remove EIGRP once everything is working fine with OSPF. With the entire network running OSPF, you can then delete the admin distance for OSPF, thus letting is go back to it’s default value of ‘90′.

