Saturday, January 31, 2015

IOS XR: redistribution of EIGRP routes

Redistribution of EIGRP routes into MP-BGP seems to be very simple process. However, I spent 40 minutes troubleshooting the issue.

Simple scenario, PE-CE EIGRP and MP-BGP in the SP Core

PE Config:
RP/0/0/CPU0:XR1(config)#sh run router bgp
Tue Jan 31 11:53:35.119 PST
router bgp 100
 bgp router-id 19.19.19.19
 address-family vpnv4 unicast
 !
 neighbor 3.3.3.3
  remote-as 100
  update-source Loopback0
  address-family vpnv4 unicast
  !
 !
 vrf VPN_B
  rd 100:2
  address-family ipv4 unicast
   redistribute eigrp core
  !
 !
RP/0/0/CPU0:XR1(config-bgp-vrf-af)#sho run router eigrp
Tue Jan 31 11:53:58.807 PST
router eigrp core
 vrf VPN_B
  address-family ipv4
   autonomous-system 1
   redistribute bgp 100
   interface GigabitEthernet0/0/0/2
   !
  !
According to IOS XR 5.2 Command Reference Guide "redistribute eigrp" syntax is pretty straightforward:
Enhanced Interior Gateway Routing Protocol (EIGRP)
redistribute eigrp process-id [ match { external | internal } ] [ metric metric-value ] [ route-policy route-policy-name ]
no redistribute eigrp process-id [ match { external | internal } ] [ metric metric-value ] [ route-policy route-policy-name
What is the process-id? According to the same reference guide:
process-id
For the eigrp keyword, an EIGRP instance name from which routes are to be redistributed.        

...but I don't see any vpnv4 routes from my PE (19.19.19.19):

R3#sh bgp vpnv4 unicast all summary
BGP router identifier 3.3.3.3, local AS number 100
BGP table version is 75, main routing table version 75
8 network entries using 1216 bytes of memory
8 path entries using 640 bytes of memory
8/8 BGP path/bestpath attribute entries using 1280 bytes of memory
8 BGP extended community entries using 1620 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 4756 total bytes of memory
BGP activity 27/19 prefixes, 31/23 paths, scan interval 60 secs

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
2.2.2.2         4          100     110     128       75    0    0 01:31:51        2
4.4.4.4         4          100     104     126       75    0    0 01:31:38        2
5.5.5.5         4          100     110     125       75    0    0 01:31:40        2
19.19.19.19     4          100      31      40       75    0    0 00:10:41        0

Then I realized that it could be something wrong with process-id - instead of the core I tried to use AS number inside vrf:

vrf VPN_B
  rd 100:2
  address-family ipv4 unicast
   redistribute eigrp 1
   redistribute eigrp core

And it worked!

R3#sh bgp vpnv4 unicast all summary
BGP router identifier 3.3.3.3, local AS number 100
BGP table version is 75, main routing table version 75
8 network entries using 1216 bytes of memory
8 path entries using 640 bytes of memory
8/8 BGP path/bestpath attribute entries using 1280 bytes of memory
8 BGP extended community entries using 1620 bytes of memory
0 BGP route-map cache entries using 0 bytes of memory
0 BGP filter-list cache entries using 0 bytes of memory
BGP using 4756 total bytes of memory
BGP activity 27/19 prefixes, 31/23 paths, scan interval 60 secs

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
2.2.2.2         4          100     115     133       75    0    0 01:36:37        2
4.4.4.4         4          100     109     131       75    0    0 01:36:24        2
5.5.5.5         4          100     115     130       75    0    0 01:36:26        2
19.19.19.19     4          100      36      45       75    0    0 00:30:07        2