I’m not sure if this is a BGP issue or whatnot, but we have a section of our network that joins 2 area 0 OSPF networks together via iBGP route redistribution on both sides (they are physically connected over a wireless ptp link)
I have MPLS and VPLS running in many areas of our network without an issue. However in this case they simply will not connect to each other
I have set the transport address to the loopback IP’s (same as everywhere else in the network)
I have triple checked that MTU is fine along the path (capable of 9600 between them)
Both routers can see each others loopbacks in their routing tables
Both routers can ping each others loopbacks, 1 total hop
The MPLS LDP neighbor state goes to DOT
The loopback addresses or any other remote addresses do not appear in the MPLS forwarding table
I cannot establish a VPLS tunnel between these 2 routers (there are no other routers between them)
Both routers have no firewall rules at all
If I change the LSR transport address to the interface IP instead of the loopback IP on both sides, and also change the remote IP of the VPLS tunnel to the other sides interface IP it works. But this is not a solution. I don’t need VPLS between these 2 routers, I actually need VPLS between 2 much further away routers, but this link is the problem that I need to solve first
Is iBGP the problem here or something else?
BGP is not involved in VPLS. For VPLS you using LDP signaling in martini draft. So just create ospf routing, ldp neighbors and run vpls. If you can’t establish vpls tunnel between loopbacks, then you might have a problem in ldp connectivity.
I can’t use OSPF because this segment is bridging 2 separate OSPF area 0 networks together. I don’t want each side involved and I don’t want to convert a side to another area. It’s easy just to use BGP to redistribute routes. Plus there are 2 paths and OSPF convergence time is too slow because it doesn’t keep the backup route in the table, BGP does
MPLS doesn’t seem to form correctly either when using loopback addresses, no routes show up.in the MPLS table. Is BGP causing an issue here or is it going to be something else? Maybe I need to configure something extra in BGP?
Why you think that OSPF can’t keep different reserve routes? It can just like EIGRP, maybe with a little slower convergence, but it can. If you need to know link info on routers, then you should use OSPF, if you need to just signal routes use BGP. MPLS need only for seemless BGP connectivity between their neighbors. With MPLS there is no need to BGP full mesh topology. And of course you can advertise different routing tables between BGP neighbors over MPLS, that is called MP-BGP. BGP can filter l3 VPN routes and IPv4/v6 routes more efficiently than OSPF.
If your BGP neighbors can’t establish connectivity because of absent loopback IP in LDB table of MPLS, then you should troubleshoot this spot.
This is definitely a BGP issue
I’ve setup a lab to replicate the topology. If I use OSPF it works fine, if I use static routes it works fine, if I use BGP it doesn’t
Loopback addresses do not appear in the MPLS bindings and hence VPLS will not form
OSPF doesn’t keep reserve routes. It detects a change, waits for everyone to agree on the new topology and then calculates a new route. This is not at all like EIGRP (I really wish MikroTik would implement EIGRP as it has many benefits in a lot of instances)
The 2 routers in question are joining 2 separate OSPF area 0 networks together. I do not want to join them all into 1 much larger one - reconvergence will become MUCH slower - and I also want the ability to summarize. I can’t summarize anywhere except ABR/ASBR in OSPF (again, EIGRP would have been great). I’m using BGP for convergence time and summarization at this point in the network. If I create a separate area i.e. area1 it will cause issues due to having 2 separate area 0
Did you make BGP full mesh? Each neighbor with each other. Like 1-2-3-4, or just 1-4?
There are only these 2 routers doing BGP at this point, so yes its technically a full mesh since there’s only 2 routers participating in that AS
Yes, have also tried manually adding networks, doesn’t seem to matter. Still does not work
As soon as I add a static route (which overrides the BGP route) - with exactly the same gateway - it works. Disable the static route, stops working
Try to advertise loopback with routing filter. Like: /routing bgp peer set out-filter=ISP1-out. In filter sign 1.1.1.1/32 for example. Something like that.
Is there any way around this?
I could set a static IP for the next router i.e.
A-B
And then it works I can get a VPLS tunnel between those 2 routers
But VPLS doesn’t work for routers that are further along i..e
A-B-C (between A and C)
I even tried setting a static route to C on A (with recursive lookup) it doesn’t work. Even if it did this is not a solution because its not scalable setting up static routes for every VPLS connection
mrz meant that ldp creates labels only for OSPF network as for link state protocol, also LDP creates labels for OSPF loopback addresses. But if you configure BGP peers with option nexthop self force with BGP update source - loopback interface, BGP peer will advertise route which will be reachable via OSPF loopback = mean LDP = mean label creation. Maybe you didn’t set nexthop self force to BGP peer?
Also this option is very nice to set on all LDP routers: propagate-ttl=no, in order to see whole MPLS cloud as one IP hop.
Yes I have tried that but I am not running OSPF between these 2 routers. Let me draw a basic diagram that will make more sense
I don’t want to join the OSPF area’s because then a change on router F will mean routers A/B/C/D hear about it
Slower convergence
No ability to summarize
Larger routing tables
Problem with fragmented area 0 if D-E link goes down
I don’t want to convert an entire area to i.e. Area5 because it’s a lot of work and provides no benefit to us
(EIGRP would be perfect for us, pretty please MikroTik)
The reason i’m using BGP is for summarization, smaller routing tables on all routers except D and E, and fast failover (there are actually 2 links between D and E but for simplicity lets just pretend there is only 1)
So the question is whats the best method here for scalability? We need the ability to establish VPLS tunnels between sites on each side. I obviously can’t use something that requires setup on every single router every time we add a VPLS tunnel
Will BGP signalled VPLS work if I implement it only on D and E? Or would I need to run it on A & I (which then over time would mean A & E/F/G/H/I as well as G & A/B/C/D due to further growth and need to transport more VPLS across D-E)
What I have done before is run 2 OSPF instances on D & E, then I redistribute between both instances. But I have had some routing issues where traffic went across D-E when it didn’t have to. And I don’t have as much flexibility. It generally just seems quite messy
Moving to BGP I have not had issues, except VPLS…
All I can see is you wanna do a trick in OSPF that will allow you run MPLS through OSPF without OSPF on E & D And you wanna run BGP that will segment 2 simmilar OSPF domains which had to be in different areas.
If you don’t want to show some routes to routers A,B,C,D, then use routing filters for OSPF process. If you want faster convergence, use BFD between spots you wan fast conv.
In order to run MPLS/VPLS you have to make smooth OSPF domain without BGP between. Don’t do worst design with things that have to run another way.
It would be PERFECT for our network, and quite honestly I imagine it would also be perfect for the vast majority of WISPs. I’m surprised MikroTik hasn’t implemented it (it is not Cisco proprietary anymore) because while OSPF works very well when planned from the start with a large topology, all hardwired links and segmented growth. It does not fit so well with many with growing WISPs that go from a single link to large scale - often buying other businesses along the work and incorporating their networks, with lots of spokes and chained links. Merging multiple area 0’s is not fun, and often not easy to do ‘properly’
I’m going to investigate if BGP signalled VPLS will work. I may have to go back to using 2 OSPF processes and redistribution but i’d rather avoid it if I can, if anyone has other idea’s please let me know