Page 1 of 1

Redundant VPLS Termination

Posted: Fri Oct 28, 2022 1:09 pm
by blingblouw
Hi.

Currently all our sites connect to a single Mikrotik router for VPLS termination.

I'm trying to setup a way so that there is an automatic failover incase of hardware issues. I've run a quick lab and it seems like its possible, just wanted to find out what everyone else is doing and if there is maybe a better way.

I'm using LDP and not BGP based signalling.

Basically the idea is that VPLS1 terminates the tunnels, its got a higher OSPF interface priority (and DR) down to VPLS2, Cust1 & Cust2.

VPLS1 & VPLS2 have the SAME lsr-id and transport-id so that if VPLS1 fails, after sometime the route for 1.1.1.1 will hit VPLS2 and tunnels re-establish.

Is this the correct way to go about this?

VPLS1
/interface vpls
add disabled=no l2mtu=1500 mac-address=02:B7:93:34:5B:24 name=vpls-cust1 remote-peer=1.0.0.100 vpls-id=1:1
add disabled=no l2mtu=1500 mac-address=02:34:D8:F1:08:8B name=vpls-cust2 remote-peer=1.0.0.101 vpls-id=1:2
/ip address
add address=10.100.0.1/24 interface=ether1 network=10.100.0.0
add address=1.0.0.1 interface=lo1 network=1.0.0.1
add address=1.1.1.1 interface=lo2_ha network=1.1.1.1
/mpls interface
set [ find default=yes ] mpls-mtu=1526
/mpls ldp
set enabled=yes lsr-id=1.1.1.1 transport-address=1.1.1.1
/mpls ldp interface
add interface=ether1
add interface=lo2_ha
/routing ospf instance
set [ find default=yes ] disabled=yes router-id=1.0.0.1
/routing ospf interface
add interface=ether1 priority=100
/routing ospf network
add area=backbone network=1.0.0.1/32
add area=backbone network=10.100.0.0/24
add area=backbone network=1.1.1.1/32


VPLS2
/interface vpls
add disabled=no l2mtu=1500 mac-address=02:F5:36:CC:01:C8 name=vpls-cust1 remote-peer=1.0.0.100 vpls-id=1:1
add disabled=no l2mtu=1500 mac-address=02:D7:5A:E2:9F:FD name=vpls-cust2 remote-peer=1.0.0.101 vpls-id=1:2
/routing ospf instance
set [ find default=yes ] router-id=1.0.0.2
/routing ospf interface
add interface=ether1 priority=90
add cost=20 interface=lo2_HA
/routing ospf network
add area=backbone network=1.0.0.2/32
add area=backbone network=10.100.0.0/24
add area=backbone network=1.1.1.1/32
/ip address
add address=10.100.0.2/24 interface=ether1 network=10.100.0.0
add address=1.0.0.2 interface=lo1 network=1.0.0.2
add address=1.1.1.1 interface=lo2_HA network=1.1.1.1
[admin@VPLS2] /interface> /mpls ex
/mpls interface
set [ find default=yes ] mpls-mtu=1526
/mpls ldp
set enabled=yes lsr-id=1.1.1.1 transport-address=1.1.1.1
/mpls ldp interface
add interface=ether1


Cust1
/interface vpls
add disabled=no l2mtu=1500 mac-address=02:80:0A:FF:BF:40 name=vpls-core remote-peer=1.1.1.1 vpls-id=1:1
/mpls interface
set [ find default=yes ] mpls-mtu=1526
/mpls ldp
set enabled=yes lsr-id=1.0.0.100 transport-address=1.0.0.100
/mpls ldp interface
add interface=ether1
/routing ospf instance
set [ find default=yes ] router-id=1.0.0.100
/routing ospf interface
add interface=ether1 priority=0
/routing ospf network
add area=backbone network=1.0.0.100/32
add area=backbone network=10.100.0.0/24

---


Cust2
/interface vpls
add disabled=no l2mtu=1500 mac-address=02:28:8B:ED:29:6B name=vpls-core remote-peer=1.1.1.1 vpls-id=1:2
/ip address
add address=10.100.0.101/24 interface=ether1 network=10.100.0.0
add address=1.0.0.101 interface=lo1 network=1.0.0.101
add address=192.168.1.101/24 interface=vpls-core network=192.168.1.0
/mpls interface
set [ find default=yes ] mpls-mtu=1526
/mpls ldp
set enabled=yes lsr-id=1.0.0.101 transport-address=1.0.0.101
/mpls ldp interface
add interface=ether1
/routing ospf instance
set [ find default=yes ] router-id=1.0.0.101
/routing ospf interface
add interface=ether1 priority=0
/routing ospf network
add area=backbone network=1.0.0.101/32
add area=backbone network=10.100.0.0/24

EDIT: just cannot get this formatting right....

Re: Redundant VPLS Termination

Posted: Mon Apr 10, 2023 1:04 am
by athatare81
Hi blingblouw,

Interesting approach! Does it works the way you expected it to work?

Kind regards

Re: Redundant VPLS Termination

Posted: Mon Apr 10, 2023 11:23 am
by mada3k
Interesting. I think it's best practice not to have any chance of overlapping LSR-ID's, but I'm not sure. It will probably work.

We have solved our redundant tunnels with basically terminating twice (in core1 and core2) and let RSTP decide path. We also have some EoIP tunnels, but those are bound to a VRRP address, so basiclly running in an active/backup fashion. The failover time is about 10s.

Re: Redundant VPLS Termination

Posted: Mon Apr 10, 2023 11:40 am
by blingblouw
Unfortunately I wasn’t going to implement this on production without further info.

Our biggest issue was not being able to assign public IPs from radius server. Once we got that resolved, also went down the route of multiple vpls tunnels to different BRAS.

It worked in the lab, but who knows what happens over time in prod. :/

Re: Redundant VPLS Termination

Posted: Mon Apr 10, 2023 6:13 pm
by StubArea51
The most stable way to accomplish this in prod is to use scripting to keep one of the VPLS tunnels down at the redundant termination point and tie it into VRRP master/backup state.

Re: Redundant VPLS Termination

Posted: Thu Jul 06, 2023 12:26 pm
by glueck05
The most stable way to accomplish this in prod is to use scripting to keep one of the VPLS tunnels down at the redundant termination point and tie it into VRRP master/backup state.
Thanks for the hint. I have set the following scripts and it works very well.

Master
/interface vrrp
add comment=Default:Master interface=ether4.vlan1010 interval=500ms name=ether4.vlan1010.vrrp1 on-backup=\
    "/interface vpls disable vpls1.rt1.test;\r\
    \n/mpls ldp set transport-address=10.0.1.1 lsr-id=10.0.1.1;" on-master="/interface vpls enable vpls1.rt1.test;\r\
    \n/mpls ldp set transport-address=10.0.10.6 lsr-id=10.0.10.6;" preemption-mode=no priority=101 vrid=50
 
Slave
/interface vrrp
add comment="Default: Backup" interface=ether4.vlan1010 interval=500ms name=\
    ether4.vlan1010.vrrp1 on-backup="/interface vpls disable vpls1.rt1.test;\r\
    \n mpls ldp set transport-address=10.0.6.6 lsr-id=10.0.6.6;" on-master="/int\
    erface vpls enable vpls1.rt1.test;\r\
    \n/mpls ldp set transport-address=10.0.10.6 lsr-id=10.0.10.6;" \
    preemption-mode=no vrid=50
 


I have now tried to set load balancing in addition to failover. The idea is another VRRP-IF which is the master on rt2 and always alternately enter rt1 or rt2 as the endpoint on the vpls tunnels at the locations. Due to the change of the "Transport Address" at a central point, the whole thing doesn't work. If I set the "Transport Address" on the interfaces, it is not adopted for the VPLS tunnel. Is there a way to set the transport address on an interface basis and the VPLS tunnel adopts this setting? Currently he always takes the lowest IP which corresponds to the documentation.

thanks,
glueck