I’m trying to get some clarity around my understanding of FIB use vs. re-use.
To paint the picture, assume the following configuration:
!
vrf main
address-family ipv4 unicast
import route-target
123:4
!
export route-target
123:4
!
!
address-family ipv6 unicast
import route-target
123:4
!
export route-target
123:4
!
!
!
vrf red
address-family ipv4 unicast
import route-target
123:4
123:69
!
export route-target
123:4
123:69
!
!
address-family ipv6 unicast
import route-target
123:4
123:69
!
export route-target
123:4
123:69
!
!
vrf blue
address-family ipv4 unicast
import route-target
123:4
123:420
!
export route-target
123:4
123:420
!
!
address-family ipv6 unicast
import route-target
123:4
123:420
!
export route-target
123:4
123:420
!
!
!
router bgp 1
address-family vpnv4 unicast
!
address-family vpnv6 unicast
!
neighbor 10.0.20.1
remote-as 1
update-source Loopback0
address-family vpnv4 unicast
!
address-family vpnv6 unicast
!
!
!
So here we have an IP-VPN network where VRF blue and red are importing routes from VRF main.
# vrf main
B* 0.0.0.0/0 [200/0] via 10.0.2.1 (nexthop in vrf default), 19:38:46
B 100.4.20.0/24 is directly connected, 19:38:34, BVI420 (nexthop in vrf blue)
B 100.4.20.5/32 [200/0] via 10.0.9.1 (nexthop in vrf default), 17:02:48
B 100.100.69.0/24 [200/0] via 10.0.12.1 (nexthop in vrf default), 19:38:36
B 100.100.69.16/32 [200/0] via 10.0.12.1 (nexthop in vrf default), 17:02:48
# vrf blue
B* 0.0.0.0/0 [200/0] via 10.0.2.1 (nexthop in vrf default), 17:20:51
C 100.4.20.0/24 is directly connected, 1d16h, BVI420
L 100.4.20.1/32 is directly connected, 1d16h, BVI420
B 100.4.20.5/32 [200/0] via 10.0.9.1 (nexthop in vrf default), 17:00:30
B 100.100.69.0/24 [200/0] via 10.0.12.1 (nexthop in vrf default), 17:20:51
B 100.100.69.16/32 [200/0] via 10.0.12.1 (nexthop in vrf default), 17:00:30
# vrf red
B* 0.0.0.0/0 [200/0] via 10.0.2.1 (nexthop in vrf default), 17:21:33
B 100.4.20.0/24 is directly connected, 17:21:33, BVI420 (nexthop in vrf blue)
B 100.4.20.5/32 [200/0] via 10.0.9.1 (nexthop in vrf default), 17:01:12
B 100.100.69.0/24 [200/0] via 10.0.12.1 (nexthop in vrf default), 17:21:33
B 100.100.69.16/32 [200/0] via 10.0.12.1 (nexthop in vrf default), 17:01:12
Given that among the three VRFs, the next-hop is the same for the respective destination, in terms of FIB, what’s happening? In the example below, the three FIB entries are for the major part identical, save for ptr
(which as far as I understand is the hardware pointer for that particular entry).
By virtue of each entry’s unique ptr
value, do each of these three entries consume (use) an IPv4 FIB resource, instead of a single entry being created and all three routes reference that singular entry (re-use)?
RP/0/RP0/CPU0:ncs55a1-13.lab#show cef vrf main 100.4.20.5/32 brief
Wed Aug 28 15:33:08.761 EDT
100.4.20.5/32, version 11141873, internal 0x5000001 0x30 (ptr 0xd25eb1b0) [1], 0x0 (0x0), 0x208 (0xd201b938)
Updated Aug 28 11:45:30.612
Prefix Len 32, traffic index 0, precedence n/a, priority 3
via 10.0.9.1/32, 9 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0x8a40ccb8 0x0]
recursion-via-/32
next hop VRF - 'default', table - 0xe0000000
next hop 10.0.9.1/32 via 130018/0/21
next hop 10.8.13.8/32 BE8 labels imposed {100003 92066}
next hop 10.13.14.14/32 BE14 labels imposed {100003 92066}
RP/0/RP0/CPU0:ncs55a1-13.lab#show cef vrf red 100.4.20.5/32 brief
Wed Aug 28 15:33:17.514 EDT
100.4.20.5/32, version 190, internal 0x5000001 0x30 (ptr 0xd25ed390) [1], 0x0 (0x0), 0x208 (0xd201daa8)
Updated Aug 28 11:45:30.612
Prefix Len 32, traffic index 0, precedence n/a, priority 3
via 10.0.9.1/32, 9 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0x8a40ccb8 0x0]
recursion-via-/32
next hop VRF - 'default', table - 0xe0000000
next hop 10.0.9.1/32 via 130018/0/21
next hop 10.8.13.8/32 BE8 labels imposed {100003 92066}
next hop 10.13.14.14/32 BE14 labels imposed {100003 92066}
RP/0/RP0/CPU0:ncs55a1-13.lab#show cef vrf blue 100.4.20.5/32 brief
Wed Aug 28 15:33:23.096 EDT
100.4.20.5/32, version 161, internal 0x5000001 0x30 (ptr 0xd25eac18) [1], 0x0 (0x0), 0x208 (0xd201c1a8)
Updated Aug 28 11:45:30.612
Prefix Len 32, traffic index 0, precedence n/a, priority 3
via 10.0.9.1/32, 9 dependencies, recursive [flags 0x6000]
path-idx 0 NHID 0x0 [0x8a40ccb8 0x0]
recursion-via-/32
next hop VRF - 'default', table - 0xe0000000
next hop 10.0.9.1/32 via 130018/0/21
next hop 10.8.13.8/32 BE8 labels imposed {100003 92066}
next hop 10.13.14.14/32 BE14 labels imposed {100003 92066}
RP/0/RP0/CPU0:ncs55a1-13.lab#