03-12-2018 02:18 PM - edited 03-05-2019 10:05 AM
Hi I am trying to redistribute bgp-learned routes from VRF to global.
However, I got the below message.
"Inter-VRF redistribution is NOT allowed from 'bgp'".
Since I am currently running it in VIRL, I wonder if this is a legit error message.
In my understanding, it doesn't make sense that BGP doesn't allow Inter-VRF redistribution.
Please advise.
03-12-2018 06:38 PM
10-23-2019 01:57 PM
I am looking to do this exact same thing and am getting the same exact message. I need all BGP learned routes in vrf CUSTOMER to be redistributed into my global OSPF process. Can you provide solutions since I cannot find anything online so far.
Thanks,
Levi
10-23-2019 07:11 PM
10-23-2019 08:52 PM - edited 10-24-2019 08:00 AM
Here is a sample config:
ip vrf CUSTOMER
description CUSTOMERS
rd 200:0
route-target export 200:0
route-target import 200:0
route-target import 0:0
!
ip vrf DEFAULT
description DEFAULT_ROUTE
rd 0:0
route-target export 0:0
!
router bgp 12345
bgp router-id 1.1.1.1
!
address-family ipv4 vrf CUSTOMER
neighbor CUST-EBGP peer-group
neighbor CUST-EBGP remote-as 64600
neighbor CUST-EBGP soft-reconfiguration inbound
neighbor 172.20.0.201 peer-group CUST-EBGP
neighbor 172.20.0.201 description RTCUSTOMER1
neighbor 172.20.0.201 activate
neighbor 172.20.0.209 peer-group CUST-EBGP
neighbor 172.20.0.209 description RTCUSTOMER2
neighbor 172.20.0.209 activate
neighbor 172.20.1.218 peer-group CUST-EBGP
neighbor 172.20.1.218 description RTCUSTOMER3
neighbor 172.20.1.218 activate
exit-address-family
!
!
router ospf 50
router-id 1.1.1.1
redistribute connected subnets
redistribute static subnets
!
ip route vrf DEFAULT 0.0.0.0 0.0.0.0 Port-channel1 5.5.5.5 global
I would like all BGP routes learned from RTCUSTOMER1, RTCUSTOMER2 and RTCUSTOMER3 to be redistributed into OSPF process 50.
Thanks,
Levi
10-24-2019 08:32 PM - edited 10-24-2019 08:34 PM
Here a config sample for your vrf CUSTOMER:
ip vrf CUSTOMER
import ipv4 unicast map GLOBAL-TO-VRF
export ipv4 unicast map VRF-TO-GLOBAL
!
ip prefix-list NET seq 10 permit 0.0.0.0/0 le 32
route-map GLOBAL-TO-VRF permit 10
match ip address prefix-list NET
!
route-map VRF-TO-GLOBAL permit 10
match ip address prefix-list NET
!
router bgp 12345
address-family ipv4
!
router ospf 50
redistribute bgp 12345 subnets
With this sample config, all subnets will be exchanged between your VRF and GRT. You'll need also to redistribute ospf 50 into your bgp AF ipv4 if you want your return traffic otherwise it won't work.
Test it on a vrf that's not critical or in a lab or create a fake vrf and see how it works.
Other methods exist using dynamic protocol and gre tunnel but i prefer this one which is straight forward.
10-25-2019 07:45 AM
Thanks for the reply and sample. From what I see, you export all routes from the VRF's bgp table into the GLOBAL bgp table and then you redistribute all routes from GLOBAL bgp table into GLOBAL OSPF. I have two problems with this approach:
1 The VRF routes will be present in the GLOBAL bgp table and will get advertised to all BGP neighbors which I do not want. I want those routes to be known via OSPF only in the GLOBAL routing table.
2 ALL bgp routes get redistributed into OSPF which means not only the routes exported from the VRF but also the ones learned from other BGP peers. I don't want this either. I could attach a route-map to filter what gets redistributed into OSPF but I do not know exactly what prefixes those will be. This is a Data Center environment and different techs connect different customer routers over private lines assigning prefixes to customers dynamically so I can't predict what prefixes they will use and I can't give them access to modify the redistribution ACL on the fly.
So to reformulate the requirement, I need the BGP learner routes in vrf CUSTOMER and, only these routes, to be dynamically redistributed into the global OSPF process.
One other thing I was thinking of was to redistribute from BGP in the VRF to OSPF in the VRF but I am not aware of a technique to leak OSPF routes between VRF and Global.
Thanks,
Levi
10-25-2019 08:55 PM
Ok, you want only prefixes from your vrf CUSTOMER and your global ospf.
With the sample I provided, as I said it was an example and filtering using communities for importing into the GRT would work.
Anyways, now I understand better your requirement and there’s an easy way using GRE as I told previously.
Let me show you what the config will look like:
Create 2 loopbacks in the GRT:
interface Loopback50
ip address 10.80.1.1 255.255.255.255
!
interface Loopback51
ip address 10.80.2.1 255.255.255.255
!
Then create 2 tunnel interfaces:
interface Tunnel100
ip address 169.255.50.1 255.255.255.252
tunnel source Loopback50
tunnel destination 10.80.2.1
!
interface Tunnel101
ip vrf forwarding CUSTOMER
ip address 169.255.50.2 255.255.255.252
tunnel source Loopback51
tunnel destination 10.80.1.1
Then create 2 ospf process (I used 2 process id for readability):
router ospf 99 vrf CUSTOMER
router-id 10.80.2.1
redistribute bgp 12345 subnets
network 169.255.50.2 0.0.0.0 area 0
!
router ospf 98
router-id 10.80.1.1
network 169.255.50.1 0.0.0.0 area 0
And finally you need to redistribute back to your CUSTOMER address-family your vrf ospf process.
Does that make sense and fits your requirement?
10-28-2019 02:51 PM
This is exactly what I was looking for. It fits all my requirements. Thank you very much for your help!!!
10-30-2019 05:46 PM
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide