redistribution_frenzy

Being that the two way redistribution training gets into route tagging and other fun concepts, I want to just get an easy lab configuration under my belt to get myself started, and will just be working with R3 and R4 as no other routers can see the OSPF routes except R3 after I do this:

R3(config-router)#no redistribute ospf 1
R3(config-router)#do ping 4.4.4.4

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms
R3(config-router)#do sh ip ospf nei

Neighbor ID     Pri   State           Dead Time   Address         Interface
172.12.44.4       0   FULL/  –           –        172.12.34.4     OSPF_VL0
172.12.44.4       1   FULL/DR         00:00:39    172.12.34.4     FastEthernet0/1
R3(config-router)#

However, they are still neighbors and can ping, so that is a good deal, and lets see what happened to R4:

R4#sh ip route

Gateway of last resort is not set

3.0.0.0/32 is subnetted, 1 subnets
O E2     3.3.3.3 [110/20] via 172.12.34.3, 00:02:36, FastEthernet0/1
4.0.0.0/32 is subnetted, 1 subnets
C        4.4.4.4 is directly connected, Loopback4
O E2  5.0.0.0/8 [110/20] via 172.12.34.3, 00:17:32, FastEthernet0/1
33.0.0.0/24 is subnetted, 1 subnets
O E2     33.33.33.0 [110/20] via 172.12.34.3, 00:00:09, FastEthernet0/1
172.12.0.0/16 is variably subnetted, 6 subnets, 2 masks
O E2     172.12.15.0/24 [110/20] via 172.12.34.3, 00:17:32, FastEthernet0/1
C        172.12.34.0/24 is directly connected, FastEthernet0/1
L        172.12.34.4/32 is directly connected, FastEthernet0/1
C        172.12.44.0/24 is directly connected, Loopback44
L        172.12.44.4/32 is directly connected, Loopback44
O E2     172.12.123.0/24 [110/20] via 172.12.34.3, 00:17:32, FastEthernet0/1
R4#

Now we’ve got a party! I have added two loopback interfaces to R3 inside the RIP domain to work with as well, I don’t think I will touch anything but metrics, but we shall see what we can break along the way. So in order I must to make the route map

  • Create ACL’s for all networks to be adjusted
  • Create a route-map sequence for each ACL to set clauses for the route / network
  • Remove the Redistribute command entirely, and re-apply it with the route-map

In the video series I had watched, the ACL’s were all configured first to completion, then route-map clauses to completion, and then applied to the redistribution – I am not going to do that. I am going to start a couple of ACL’s, a route-map with a couple of clauses, and applying that route-map to the redistribution and adding to it from there.

One of the more interesting things to me will be what happens with all these routes without clauses, and no catch-all statement, and what happens if I put a catch all statement on a route-map with a lower sequence # than other policies I will later add with higher sequence numbers. It is about to get thick 🙂

So first off, I’d like to know the true distance to our routes 172.12.15.0 and 5.0.0.0 right off the bat, but will point out some things along the way:

R3(config)#access-list 5 permit 5.0.0.0 0.255.255.255
R3(config)#access-list 15 permit 172.12.15.0 0.0.0.255
R3(config)#route-map RIP2OSPF permit ?
    Sequence to insert to/delete from existing route-map entry
 

R3(config)#route-map RIP2OSPF permit 10
R3(config-route-map)#?
Route Map configuration commands:
  continue     Continue on a different entry within the route-map
  default      Set a command to its defaults
  description  Route-map comment
  exit         Exit from route-map configuration mode
  help         Description of the interactive help system
  match        Match values from routing table
  no           Negate a command or set its defaults
  set          Set values in destination routing protocol

R3(config-route-map)#

As seen the 2 ACL’s are made for those networks with permit statements, as any traffic deny statements will be implemented as a sequence on the route-map. As can also be seen they are called sequences, I assume it works the same as extended ACL #’s for lines, that will be the focus of lab session part 2. They can also be clauses without matching an ACL or setting parameters, such as the catch all clause demonstrated below.
So I may call them sequences or clauses, was the shorter version of that 🙂

Another thing I chose to highlight, as of now in my learning I will be using match, and set in route-map configuration. You may be asking how I will use them, and let me show you with some information poked in between output:

R3(config-route-map)#match ?

  as-path           Match BGP AS path list
  clns              CLNS information
  community         Match BGP community list
  extcommunity      Match BGP/VPN extended community list
  interface         Match first hop interface of route
  ip                IP specific information

  ipv6              IPv6 specific information
  length            Packet length
  local-preference  Local preference for route
  metric            Match metric of route
  mpls-label        Match routes which have MPLS labels
  nlri              BGP NLRI type
  policy-list       Match IP policy list
  route-type        Match route-type of route
  source-protocol   Match source-protocol of route
  tag               Match tag of route

R3(config-route-map)#match ip ?

  address       Match address of route or match packet
  next-hop      Match next-hop address of route
  route-source  Match advertising source address of route

R3(config-route-map)#match ip address ?

        IP access-list number
    IP access-list number (expanded range)
  WORD         IP access-list name
  prefix-list  Match entries of prefix-lists
 

R3(config-route-map)#match ip address 5
R3(config-route-map)#

I highlighted both where the config line currently is among all the output, and the command needed next to get to the access-list, which is funny to me that it couldn’t just be match access-list x – It had to be hidden in “match ip address (acl #)” for some reason.

So I have used “match” to define the route(s) that will be effected by this sequence of the route-map, now to use “set” to define how to adjust it, and here is a glimpse of why we will only touch metrics in this lab:

R3(config-route-map)#set ?
  as-path           Prepend string for a BGP AS-path attribute
  automatic-tag     Automatically compute TAG value
  clns              OSI summary address
  comm-list         set BGP community list (for deletion)
  community         BGP community attribute
  dampening         Set BGP route flap dampening parameters
  default           Set default information
  extcommunity      BGP extended community attribute
  interface         Output interface
  ip                IP specific information
  ipv6              IPv6 specific information
  level             Where to import route
  local-preference  BGP local preference path attribute
  metric            Metric value for destination routing protocol
  metric-type       Type of metric for destination routing protocol
  mpls-label        Set MPLS label for prefix
  nlri              BGP NLRI type
  origin            BGP origin code
  tag               Tag value for destination routing protocol
  traffic-index     BGP traffic classification number for accounting
  vrf               Define VRF name
  weight            BGP weight for routing table

R3(config-route-map)#set

Yeah… So for now I am going to set both sequences with clauses that will turn those routes into a E1 routes to get their real metric rather than the default / seed metric of 20:

R3(config-route-map)#set metric-type ?
  external  IS-IS external metric
  internal  IS-IS internal metric or Use IGP metric as the MED for BGP
  type-1    OSPF external type 1 metric
  type-2    OSPF external type 2 metric
 

R3(config-route-map)#set metric-type type-1 ?
 

R3(config-route-map)#set metric-type type-1
R3(config-route-map)#route-map RIP2OSPF permit 15
R3(config-route-map)#match ip address 15
R3(config-route-map)#set metric-type type-1
R3(config-route-map)#

I wanted to show the output of the metric-type on here even though the acronym might get me on the NSA’s list, to show that you will want to choose either type-1 (E1) or type-2 (E2) for OSPF, while the internal / external is for IS-IS routing protocol.

So now that everything is set with no catch-all permit clause, lets apply the Redistribution and see what happens:

R3(config-router)#no redistribute rip subnets
R3(config-router)#
ASR#4
[Resuming connection 4 to r4 … ]

R4#sh ip route

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
C        4.4.4.4 is directly connected, Loopback4
O E2  5.0.0.0/8 [110/20] via 172.12.34.3, 00:57:11, FastEthernet0/1

      172.12.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.12.34.0/24 is directly connected, FastEthernet0/1
L        172.12.34.4/32 is directly connected, FastEthernet0/1
C        172.12.44.0/24 is directly connected, Loopback44
L        172.12.44.4/32 is directly connected, Loopback44
R4#clear ip route *

R4#sh ip route

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
C        4.4.4.4 is directly connected, Loopback4
O E2  5.0.0.0/8 [110/20] via 172.12.34.3, 00:00:03, FastEthernet0/1

      172.12.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.12.34.0/24 is directly connected, FastEthernet0/1
L        172.12.34.4/32 is directly connected, FastEthernet0/1
C        172.12.44.0/24 is directly connected, Loopback44
L        172.12.44.4/32 is directly connected, Loopback44
R4#

So apparently R5’s loopback of 5.5.5.5 is still being redistributed, even after I obviously typed “no redistribute rip subnets” into OSPF configuration on R3? ARE YOU READY FOR ONE OF CISCO’S GOTCHA’S THAT YOU MIGHT SEE ON AN EXAM?

R3#sh ip proto
Routing Protocol is “ospf 1”
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Router ID 172.12.33.3
  It is an area border and autonomous system boundary router
  Redistributing External Routes from,
    rip

  Number of areas in this router is 2. 2 normal 0 stub 0 nssa
  Maximum path: 4
  Routing for Networks:
    172.12.33.0 0.0.0.255 area 0
    172.12.34.0 0.0.0.255 area 34
 Reference bandwidth unit is 100 mbps
  Routing Information Sources:
    Gateway         Distance      Last Update
    172.12.44.4          110      00:44:19
  Distance: (default is 110)

Routing Protocol is “rip”
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Sending updates every 30 seconds, next due in 19 seconds
  Invalid after 180 seconds, hold down 180, flushed after 240
  Redistributing: rip
  Default version control: send version 1, receive any version
    Interface             Send  Recv  Triggered RIP  Key-chain
    FastEthernet0/0       1     1 2
    FastEthernet0/1       1     1 2
    Serial0/2             1     1 2
    Serial0/3             1     1 2
    Loopback3             1     1 2
    Loopback33            1     1 2
  Automatic network summarization is not in effect
  Maximum path: 4
  Routing for Networks:
    3.0.0.0
    33.0.0.0
    172.12.0.0
  Routing Information Sources:
    Gateway         Distance      Last Update
    172.12.123.1         120      00:00:17
  Distance: (default is 120)

SNEAKY, SNEAKY CISCO! As policy moving forward as I don’t imagine I typed redistribute rip without adding the subnets command, when you remove redistribution that includes subnets as an option, remove it both as “no redistribute connected subnets” AND “no redistribute connected” and verify with “sh ip proto” to confirm they are gone.

**So remember, if the redistribution includes ‘subnets’ remove it both with subnets on the command and without it tagged on the command to be thorough**

So I will correct this, and get R4’s external routes at a complete stop:

R3#conf t
R3(config)#router ospf 1
R3(config-router)#no redistribute rip
R3(config-router)#
ASR#4
[Resuming connection 4 to r4 … ]

R4#sh ip route

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
C        4.4.4.4 is directly connected, Loopback4
      172.12.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.12.34.0/24 is directly connected, FastEthernet0/1
L        172.12.34.4/32 is directly connected, FastEthernet0/1
C        172.12.44.0/24 is directly connected, Loopback44
L        172.12.44.4/32 is directly connected, Loopback44
R4#

And now on R3, I will apply the route-map, and see what happens:

R3(config-router)#redistribute rip subnets ?
  metric       Metric for redistributed routes
  metric-type  OSPF/IS-IS exterior metric type for redistributed routes
  route-map    Route map reference
  tag          Set tag for routes redistributed into OSPF
 

R3(config-router)#redistribute rip subnets route-map ?
  WORD  Pointer to route-map entries

R3(config-router)#redistribute rip subnets route-map RIP2OSPF ?
  metric       Metric for redistributed routes
  metric-type  OSPF/IS-IS exterior metric type for redistributed routes
  tag          Set tag for routes redistributed into OSPF
 

R3(config-router)#redistribute rip subnets route-map RIP2OSPF
R3(config-router)#

There is our friends metric-type in the redistribution command for the same protocols mentioned in route maps. So lets see how R4 took that route-mapping so far:

R4#show ip route

Gateway of last resort is not set

      4.0.0.0/32 is subnetted, 1 subnets
C        4.4.4.4 is directly connected, Loopback4
O E1  5.0.0.0/8 [110/21] via 172.12.34.3, 00:01:43, FastEthernet0/1
      172.12.0.0/16 is variably subnetted, 5 subnets, 2 masks
O E1     172.12.15.0/24 [110/21] via 172.12.34.3, 00:01:43, FastEthernet0/1
C        172.12.34.0/24 is directly connected, FastEthernet0/1
L        172.12.34.4/32 is directly connected, FastEthernet0/1
C        172.12.44.0/24 is directly connected, Loopback44
L        172.12.44.4/32 is directly connected, Loopback44
R4#

Very interesting, that catch all “permit clause” really is needed like an ACL, as all other routers took a hike, and I am not quite sure how it came up with 21 as the true metric unless it just took the seed / default and RIP added it’s metric (1 hop) to the destination.

This little bit of accomplishment was actually more work than I anticipated, so I am going to call it a night here now that I know we need to define some more sequences / clauses to bring in some more routes, and have a bit more fun with configuring the route-map so I will wr mem and pick up where I left off tomorrow.