Date created: Wednesday, January 31, 2018 5:41:27 PM. Last modified: Wednesday, January 31, 2018 5:41:27 PM

Recursion (IOS)

IOS supports 8 levels of recursion:

! Router R1 config:

ip route 192.168.0.1 255.255.255.255 10.0.0.2 ! /30 subnet to directly connected router R2
ip route 192.168.0.2 255.255.255.255 192.168.0.1
ip route 192.168.0.3 255.255.255.255 192.168.0.2
ip route 192.168.0.4 255.255.255.255 192.168.0.3
ip route 192.168.0.5 255.255.255.255 192.168.0.4
ip route 192.168.0.6 255.255.255.255 192.168.0.5
ip route 192.168.0.7 255.255.255.255 192.168.0.6

R1(config)#do show ip route
Codes: L - local, 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 route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.0.0.0/30 is directly connected, FastEthernet0/0
L        10.0.0.1/32 is directly connected, FastEthernet0/0
      192.168.0.0/32 is subnetted, 7 subnets
S        192.168.0.1 [1/0] via 10.0.0.2
S        192.168.0.2 [1/0] via 192.168.0.1
S        192.168.0.3 [1/0] via 192.168.0.2
S        192.168.0.4 [1/0] via 192.168.0.3
S        192.168.0.5 [1/0] via 192.168.0.4
S        192.168.0.6 [1/0] via 192.168.0.5
S        192.168.0.7 [1/0] via 192.168.0.6


R1(config)#do ping 192.168.0.7
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.7, timeout is 2 seconds:
!!!!!


R1#show ip cef detail | sec 192.168.0.7
192.168.0.7/32, epoch 0
  recursive via 192.168.0.6
    recursive via 192.168.0.5
      recursive via 192.168.0.4
        recursive via 192.168.0.3
          recursive via 192.168.0.2
            recursive via 192.168.0.1
              recursive via 10.0.0.2
                attached to FastEthernet0/0

The following is the CEF debug from when the static route to 192.168.0.7/32 was added:

*Jan 29 12:24:25.903: FIBtable: {l-u} [v4:Default 68C49EF4(29)] Locked table
*Jan 29 12:24:25.907: FIBfib: {trg} [Default 68C49EF4(30):192.168.0.7/32] RIB: Route ins, 192.168.0.7/32 (none) {192.168.0.6[0x0] (none) #1[lbl iprm]}
*Jan 29 12:24:25.907: FIBfib: {mod} [Default 68C49EF4(30):192.168.0.7/32] First source RIB supplied for new prefix
*Jan 29 12:24:25.911: FIBfib: {l-u} Locking entry
*Jan 29 12:24:25.911: FIBtable: {l-u} [v4:Default 68C49EF4(30)] Locked table
*Jan 29 12:24:25.915: FIBfib: {c-d} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Created fib
*Jan 29 12:24:25.919: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Set output chain to unresolved (was )
*Jan 29 12:24:25.919: FIBfib: {c-d} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Prefix inserted
*Jan 29 12:24:25.923: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Source RIB being added
*Jan 29 12:24:25.923: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 6
R1(config)#9EF1A60(2)] FIB entry needs to be updated
*Jan 29 12:24:25.927: FIBpathlist: {c-d} [0/0: 6A4A32E0(0)] Created path list
*Jan 29 12:24:25.931: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Constructing RIB path list
*Jan 29 12:24:25.931: FIBpath: {c-d} [uninit 6947EC2C(1)] Created IPv4 path
*Jan 29 12:24:25.935: FIBpathlist: {mod} [0/0: 6A4A32E0(0)] Adding path v4-rcrsv-192.168.0.6[IPv4:Default] 6947EC2C to path list, old path count=0/0
*Jan 29 12:24:25.935: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] Locked path list
*Jan 29 12:24:25.939: FIBpathlist: {evt} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] Added path list to db incl. shareable tree
*Jan 29 12:24:25.943: FIBpathlist: {evt} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] Do not build MAP, single path
*Jan 29 12:24:25.947: FIBpath: {evt} [v4-rcrsv-192.168.0.6 6947EC2C(1)] Resolving recursive via 192.168.0.6/32 in table v4:Default [], will source via
*Jan 29 12:24:25.947: FIBfib: {mod} [Default
R1(config)# 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)] Source RR being added
*Jan 29 12:24:25.951: FIBfib: {evt} [Default 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)]  Null update for neos oce, remains 
*Jan 29 12:24:25.955: FIBfib: {mod} [Default 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)] Recomputing forwarding for entry with sources RIB, RR, and cover 0.0.0.0/0
*Jan 29 12:24:25.955: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.5 6A4A3330(3)] Locked path list
*Jan 29 12:24:25.955: FIBfib: {mod} [Default 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)]  contributing fwding
*Jan 29 12:24:25.955: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.5 6A4A3330(4)] Locked path list
*Jan 29 12:24:25.955: FIBfib: {mod} [Default 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)]  contributing fwding (cover:0.0.0.0/0, is default route handler, fwdinfo already present) []
*Jan 29 12:24:25.955: FIBfib: {evt} [Default 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)] (rr) Link to cover , previous 
*Jan
R1(config)# 29 12:24:25.955: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.5 6A4A3330(4)] Unlocking path list
*Jan 29 12:24:25.955: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.5 6A4A3330(3)] Unlocking path list
*Jan 29 12:24:25.959: FIBpath: {evt} [v4-rcrsv-192.168.0.6 6947EC2C(1)] Resolved recursive nexthop 192.168.0.6/32 via prefix 192.168.0.6/32
*Jan 29 12:24:25.963: FIBfib: {mod} [Default 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)] Prefix uses per-destination load balancing and contains no local and no outgoing labels
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)] Recalculating chains (flags 00000006):
        old: IP adj out of FastEthernet0/0, addr 10.0.0.2 68C9E760//
        new: IP adj out of FastEthernet0/0, addr 10.0.0.2 68C9E760//
*Jan 29 12:24:25.967: FIBfib: {evt} [Default 68C49EF4(31):192.168.0.6/32 69EF1AE4(3)]  Null update for neos oce, remains 
*Jan 29 12:24:25.967: FIBfib: {evt} [Default 68C49EF4(31):192.168.0.6/32
R1(config)# 69EF1AE4(3)] Omit dependents termination change
*Jan 29 12:24:25.967: FIBpath: {evt} [v4-rcrsv-192.168.0.6 6947EC2C(1)] Update terminations 0 (0 term fibs) not looped
*Jan 29 12:24:25.967: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.5 6A4A3330(3)] Locked path list
*Jan 29 12:24:25.967: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.5 6A4A3330(3)] Unlocking path list
*Jan 29 12:24:25.967: FIBfib: {l-u} [Default 68C49EF4(31):192.168.0.1/32 69EF1D78(8)] Locking entry
*Jan 29 12:24:25.967: FIBpath: {evt} [v4-rcrsv-192.168.0.6 6947EC2C(1)] Updated terminations 0 (0 term fibs) not looped
*Jan 29 12:24:25.967: FIBpathlist: {evt} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] Calculating output chains
*Jan 29 12:24:25.967: FIBpathlist_ifnums: [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] Set contain real if flag
*Jan 29 12:24:25.967: FIBpathlist: {l-u} [1/0:v4-rcrsv-10.0.0.2 6A4A34C0(3)] Locked path list
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31):192.168.0.1/32 69EF1D78(9)] Set imp 68F64
R1(config)#158(size 0, path v4-rcrsv-10.0.0.2), mpls 00000000(imp 00000000, mpls_imp 0)
*Jan 29 12:24:25.967: FIBpathlist: {l-u} [1/0:v4-rcrsv-10.0.0.2 6A4A34C0(3)] Unlocking path list
*Jan 29 12:24:25.967: FIBpathlist_ifnums: [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] Adding list from pathlist 1/0:v4-rcrsv-192.168.0.5
*Jan 29 12:24:25.967: FIBpathlist_ifnums: [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] inserted FastEthernet0/0(3) 10.0.0.2
*Jan 29 12:24:25.967: FIBpathlist_ifnums: [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] Deleted 0 stale ifnums
*Jan 29 12:24:25.967: FIBpathlist: {mod} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] Setting output_chain[0] 68C9E7D0 (was 00000000)
*Jan 29 12:24:25.967: FIBpathlist: {evt} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(1)] End of calculating output chains
*Jan 29 12:24:25.967: HW-API: Create: RPF List[RPF interface list [0x6A4A32E0]]
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Recomputing forwarding for entry with sources RIB, and
R1(config)# cover 0.0.0.0/0
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)]  contributing fwding
*Jan 29 12:24:25.967: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(2)] Locked path list
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Change path_list, new 1/0:v4-rcrsv-192.168.0.6 6A4A32E0 old NULL
*Jan 29 12:24:25.967: FIBpathlist: {mod} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(2)] Adding fib 192.168.0.7/32 69EF1A60 as dependent to path list, old refcount=2
*Jan 29 12:24:25.967: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(3)] Locked path list
*Jan 29 12:24:25.967: FIBfib: {c-d} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)]  no mpls extensions needed
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Prefix uses per-destination load balancing and contains no local and no outgoing labels
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31
R1(config)#):~192.168.0.7/32 69EF1A60(2)] Set output chain to IP adj out of FastEthernet0/0, addr 10.0.0.2 68C9E760 (was unresolved)
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Recalculating chains (flags 00000000):
        old: unresolved//
        new: IP adj out of FastEthernet0/0, addr 10.0.0.2 68C9E760//
*Jan 29 12:24:25.967: FIBfib: {mod} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Validating
*Jan 29 12:24:25.967: HW-API: Create: FIB Entry[192.168.0.7/32]
*Jan 29 12:24:25.967: FIBfib: {l-u} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(2)] Locking entry
*Jan 29 12:24:25.967: FIBfib: {l-u} [Default 68C49EF4(31):~192.168.0.7/32 69EF1A60(3)] Unlocking entry
*Jan 29 12:24:25.967: FIBfib: {l-u} [Default 68C49EF4(31):0.0.0.0/0 69EF1A60(2)] Locking entry
*Jan 29 12:24:25.971: HW-API: Prefix link change: IPV4 FIB Table[IPv4:Default] : 192.168.0.7/32 : FIB Entry[NULL Handle]
*Jan 29 12:24:25.971: HW-API: Modify: IPV4 FIB Table[
R1(config)#IPv4:Default]
*Jan 29 12:24:25.975: HW-API: Create: Fib entry subblock[0x69EF1A60] Policy related fib entry sb
*Jan 29 12:24:25.975: FIBpathlist: {l-u} [1/0:v4-rcrsv-192.168.0.6 6A4A32E0(3)] Unlocking path list
*Jan 29 12:24:25.975: FIBtable: {l-u} [v4:Default 68C49EF4(31)] Unlocked table
*Jan 29 12:24:28.883: FIBif: Processing queued interface events
*Jan 29 12:24:28.883: FIBif: [sw:(7) 6A24AA20] Coming up
*Jan 29 12:24:28.887: FIBif: [sw:(7) 6A24AA20] Failed: Interface not really up
*Jan 29 12:24:28.887: FIBif: Restarting queued interface events

When adding the static route "ip route 192.168.0.8 255.255.255.255 192.168.0.7" nothing happened on the device CLI. No CEF debugs entries appeared, the route doesn't show in "show ip route", it doesn't show in "show cef *". It is present in the "show run" output however, no other evidence can be found operationally that a static route to 192.168.0.8/32 was configured (not even a route with a bad flag or error/warning etc).