Hi everyone,
I am trying to create a EVPN+VXLAN leaf/spine topology in a lab environment on version 7.21.2, using eBGP for the underlay, but when I add the overlay the EVPN routes become “unreachable” on the spine router, see below. When changing out the underlay for OSPF everything starts working perfectly. I tried to advertise standard IPv4 routes as well on the overlay but it’s the same and I cannot for the life of me figure this out. Any insights would be greatly appreciated!
[admin@spine1] > /routing route print where afi=evpn
Flags: U - UNREACHABLE; b - BGP
Columns: DST-ADDRESS, GATEWAY, AFI, DISTANCE, SCOPE, TARGET-SCOPE
DST-ADDRESS GATEWAY AFI DISTANCE SCOPE TARGET-SCOPE
Ub [172.18.240.3:1]imet:0|172.18.240.3 172.18.240.3 evpn 20 40 30
Ub [172.18.240.4:1]macip:0|AA:C1:AB:A0:9A:6B 172.18.240.4 evpn 20 40 30
Ub [172.18.240.4:1]imet:0|172.18.240.4 172.18.240.4 evpn 20 40 30
Topology and configuration
My topology is like this:
And my configuration, BGP underlay and OSPF underlay for comparison (only one leaf for brevity):
BGP underlay
spine1
/ip address add interface=ether2 address=10.255.240.0/31
/ip address add interface=ether3 address=10.255.240.2/31
/ip address add interface=lo address=172.18.240.1/32
/system logging add topics=route action=memory
/routing id add name=loopback select-dynamic-id=only-loopback
/routing filter rule add chain=loopbacks rule="if (dst in 172.18.240.0/24 && dst-len == 32) { accept; }"
/routing bgp instance add name=fabric as=65001 router-id=loopback
/routing bgp template add name=underlay afi=ip input.filter=loopbacks output.filter-chain=loopbacks output.redistribute=connected
/routing bgp connection add name=underlay-leaf1 instance=fabric templates=underlay local.address=10.255.240.0 local.role=ebgp remote.address=10.255.240.1 remote.as=65003
/routing bgp connection add name=underlay-leaf2 instance=fabric templates=underlay local.address=10.255.240.2 local.role=ebgp remote.address=10.255.240.3 remote.as=65004
/routing bgp template add name=overlay afi=evpn multihop=yes nexthop-choice=propagate
/routing bgp connection add name=overlay-leafs instance=fabric templates=overlay local.address=172.18.240.1 local.role=ebgp remote.address=172.18.240.0/24
leaf1
/ip address add interface=ether2 address=10.255.240.1/31
/ip address add interface=lo address=172.18.240.3/32
/system logging add topics=route action=memory
/routing id add name=loopback select-dynamic-id=only-loopback
/routing filter rule add chain=loopbacks rule="if (dst in 172.18.240.0/24 && dst-len == 32) { accept; }"
/routing bgp instance add name=fabric as=65003 router-id=loopback
/routing bgp template add name=underlay afi=ip input.filter=loopbacks output.filter-chain=loopbacks output.redistribute=connected
/routing bgp connection add name=underlay-spine1 instance=fabric templates=underlay local.address=10.255.240.1 local.role=ebgp remote.address=10.255.240.0 remote.as=65001
/routing bgp template add name=overlay afi=evpn multihop=yes
/routing bgp connection add name=overlay-spine1 instance=fabric templates=overlay local.address=172.18.240.3 local.role=ebgp remote.address=172.18.240.1 remote.as=65001
/interface bridge add name=bridge1 pvid=10 vlan-filtering=yes
/interface vxlan add bridge=bridge1 bridge-pvid=10 learning=no local-address=172.18.240.3 name=vxlan10 vni=100010
/interface bridge port add bridge=bridge1 interface=ether3 pvid=10
/ip address add interface=bridge1 address=203.0.113.1/24
/routing bgp evpn add export.route-targets=65000:100010 import.route-targets=65000:100010 instance=fabric name=evpn-100010 vni=100010
OSPF underlay
spine1
/ip address add interface=ether2 address=10.255.240.0/31
/ip address add interface=ether3 address=10.255.240.2/31
/ip address add interface=lo address=172.18.240.1/32
/system logging add topics=route action=memory
/routing id add name=loopback select-dynamic-id=only-loopback
/routing ospf instance add name=underlay router-id=loopback
/routing ospf area add area-id=0.0.0.0 instance=underlay name=area0
/routing ospf interface-template add area=area0 interfaces=ether2,ether3
/routing ospf interface-template add area=area0 interfaces=lo passive
/routing bgp instance add name=fabric as=65001 router-id=loopback
/routing bgp template add name=overlay afi=evpn multihop=yes nexthop-choice=propagate
/routing bgp connection add name=overlay-leafs instance=fabric templates=overlay local.address=172.18.240.1 local.role=ebgp remote.address=172.18.240.0/24
leaf1
/ip address add interface=ether2 address=10.255.240.1/31
/ip address add interface=lo address=172.18.240.3/32
/system logging add topics=route action=memory
/routing id add name=loopback select-dynamic-id=only-loopback
/routing ospf instance add name=underlay router-id=loopback
/routing ospf area add area-id=0.0.0.0 instance=underlay name=area0
/routing ospf interface-template add area=area0 interfaces=ether2
/routing ospf interface-template add area=area0 interfaces=lo passive
/routing bgp instance add name=fabric as=65003 router-id=loopback
/routing bgp template add name=overlay afi=evpn multihop=yes
/routing bgp connection add name=overlay-spine1 instance=fabric templates=overlay local.address=172.18.240.3 local.role=ebgp remote.address=172.18.240.1 remote.as=65001
/interface bridge add name=bridge1 pvid=10 vlan-filtering=yes
/interface vxlan add bridge=bridge1 bridge-pvid=10 learning=no local-address=172.18.240.3 name=vxlan10 vni=100010
/interface bridge port add bridge=bridge1 interface=ether3 pvid=10
/ip address add interface=bridge1 address=203.0.113.1/24
/routing bgp evpn add export.route-targets=65000:100010 import.route-targets=65000:100010 instance=fabric name=evpn-100010 vni=100010
