Redistributing External Routes into OSPF

Problem

You want OSPF to distribute routes from another routing protocol.

Solution

The redistribute configuration command allows you to redistribute routes from another dynamic routing protocol into an OSPF process:

Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#router ospf 55 Router1(config-router)#redistribute eigrp 11 subnets Router1(config-router)#exit Router1(config)#end Router1#

One of the dangers when redistributing between routing protocols is that you will accidentally import more information than your routers can handle. In Version 12.3(2)T, Cisco added a feature to protect against this issue:

Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#router ospf 55 Router1(config-router)#redistribute eigrp 11 subnets Router1(config-router)#redistribute maximum-prefix 1000 80 Router1(config-router)#exit Router1(config)#end Router1#

 

Discussion

Redistributing external routes from another routing protocol is similar to redistributing static routes, as we did in Recipe 8.5. In the example above, all of the routes that this router learns through EIGRP process number 11 will be propagated into OSPF as Type 2 external routes. Also, as shown in the following output from the show ip protocols command, because we also included the subnets keyword, every route will be redistributed. If we had not included this keyword, OSPF would only redistribute classful summary routes from EIGRP:

Router1#show ip protocols Routing Protocol is "ospf 55" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Router ID 172.25.25.1 It is an area border and autonomous system boundary router Redistributing External Routes from, static with metric mapped to 40, includes subnets in redistribution eigrp 11, includes subnets in redistribution Number of areas in this router is 3. 3 normal 0 stub 0 nssa Maximum path: 4 Routing for Networks: 10.0.0.0 0.255.255.255 area 2 172.20.0.0 0.0.255.255 area 100 0.0.0.0 255.255.255.255 area 0 Routing Information Sources: Gateway Distance Last Update 172.25.1.7 110 00:06:24 172.25.1.1 110 1d15h 172.25.1.3 110 00:06:24 Distance: (default is 110) Router1#

If you prefer, you can redistribute routes from the foreign routing protocol as Type 1 external routes. To do this, you need to specify the metric-type keyword in the redistribute command:

Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#router ospf 55 Router1(config-router)#redistribute eigrp 11 subnets metric 35 metric-type 1 Router1(config-router)#exit Router1(config)#end Router1#

You can also do some rather interesting things when redistributing OSPF routes into another protocol. For example, you might choose to only redistribute internal routes to the foreign routing protocol, like this:

Router1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router1(config)#router eigrp 11 Router1(config-router)#redistribute ospf 55 match internal Router1(config-router)#exit Router1(config)#end Router1#

There are several other options for this match keyword. You could just as easily choose to match only External Type 1 routes as follows:

Router1(config-router)#redistribute ospf 55 match external type 1

You can also combine types to allow you to redistribute both internal and external Type 1 routes, but not external Type 2:

Router1(config-router)#redistribute ospf 55 match internal match external type 1

This match option on the redistribute command is much easier than configuring a route-map. But, if you require still greater control and flexibility, route-maps are the best choice. This is particularly true if you want to handle routing tags in a special way. For a discussion of using route-maps while redistributing routes between protocols, please refer to Recipe 8.15 on OSPF route tagging.

One of the potential dangers with route redistribution is the possibility of accepting too many routes from another network and overwhelming your network resources. This is a problem not only for router memory, but also for bandwidth because all of these external routes must be flooded throughout the OSPF network. To deal with this problem, Cisco introduced the redistribute maximum-prefix command in IOS Version 12.3(2)T.

In the Solution section of this recipe, we set the maximum number of redistributed routes to 1,000:

Router9(config)#router ospf 87 Router9(config-router)#redistribute eigrp 11 subnets Router9(config-router)#redistribute maximum-prefix 1000 80

Now this router will redistribute a maximum of 1,000 prefixes from all protocols. If any additional routes match redistribution rules, they will simply be ignored.

The final argument on this command specifies a warning threshold percentage. In this case, the value is 80 percent, or 800 total prefixes. If the number of redistributed prefixes rises above this threshold, the router will issue a syslog warning message.

To demonstrate this, we can introduce a large number of routes and watch what happens. When there are less than 800 redistribute routes, all of the routes are distributed normally:

Router9#show ip route sum IP routing table name is Default-IP-Routing-Table(0) IP routing table maximum-paths is 16 Route Source Networks Subnets Overhead Memory (bytes) connected 0 1 72 136 static 0 0 0 0 eigrp 11 0 791 56952 107576 ospf 87 3 2 360 680 Intra-area: 5 Inter-area: 0 External-1: 0 External-2: 0 NSSA External-1: 0 NSSA External-2: 0 internal 6 6936 Total 9 794 57384 115328 Router9#

If we then introduce a few more EIGRP prefixes to be redistributed to exceed the 80% warning threshold, the router produces this message:

*Mar 1 15:01:51.583: %IPRT-4-REDIST_THR_PFX: Redistribution prefix threshold ha s been reached "ospf 87" - 800 prefixes Router9#show ip route summary IP routing table name is Default-IP-Routing-Table(0) IP routing table maximum-paths is 16 Route Source Networks Subnets Overhead Memory (bytes) connected 0 1 72 136 static 0 0 0 0 eigrp 11 0 800 57600 108800 ospf 87 3 2 360 680 Intra-area: 5 Inter-area: 0 External-1: 0 External-2: 0 NSSA External-1: 0 NSSA External-2: 0 internal 6 6936 Total 9 803 58032 116552 Router9#

If we then increase this number beyond the configured maximum of 1,000, the router gives another message and refuses to accept any further prefixes, although it will continue to redistribute all of the prefixes that it has already seen:

*Mar 1 15:04:12.659: %IPRT-4-REDIST_MAX_PFX: Redistribution prefix limit has be en reached "ospf 87" - 1000 prefixes

This message appears whenever the threshold is crossed. If you continue to add routes past the threshold, it will not appear again. If the number of prefixes drops below the threshold and then rises above it again, you will see the message again:

Router9#show ip route summary IP routing table name is Default-IP-Routing-Table(0) IP routing table maximum-paths is 16 Route Source Networks Subnets Overhead Memory (bytes) connected 0 1 72 136 static 0 0 0 0 eigrp 11 0 1085 78120 147560 ospf 87 3 2 360 680 Intra-area: 5 Inter-area: 0 External-1: 0 External-2: 0 NSSA External-1: 0 NSSA External-2: 0 internal 6 6936 Total 9 1088 78552 155312 Router9#

Any downstream router will only see 1,000 redistributed prefixes originating on Router9:

Router3#show ip route summary IP routing table name is Default-IP-Routing-Table(0) Route Source Networks Subnets Overhead Memory (bytes) connected 3 1 528 576 static 0 0 0 0 ospf 1 0 1002 64128 144288 Intra-area: 2 Inter-area: 0 External-1: 0 External-2: 1000 NSSA External-1: 0 NSSA External-2: 0 internal 6 6984 Total 9 1003 64656 151848 Router3#

 

See Also

Recipe 8.5; Recipe 8.15

Категории