Blackhold

Bonding mikrotik con arp

Posted on febrer 10th, 2014 by admin

Nos encontramos con un escenario que queremos conectar 2 sedes con un par de enlaces, uno primario con Airfiber y otro secundario con Sextant.
La cuestión es que el enlace con Airfiber no es directo y tiene que pasar por una tercera ubicación. Esto es importante tenerlo en cuenta y voy a explicar el porqué mas adelante.

Inicialmente la idea era usar 2 switch D-Link DGS-1210-16, pero nos encontrábamos con un par de problemas, el primero es que en las nuevas versiones no se puede especificar la prioridad de cada uno de los puertos y no es posible indicar cual es el camino primario y cual el secundario. El segundo que para que funcione el bonding el interfaz tiene que estar completamente desconectado y es probable que el enlace con Airfibers se corte por motivos externos, como el que hubo ayer en el sitio donde estoy configurando este backup, que se puso a nevar y el enlace entre Airfibers estuvo 40 minutos bajado, pero las Airfiber estaban conectadas al switch. Los switch D-Link DGS-1210-16 no nos permiten ningún otro tipo de bonding que no sea por detección de link.

La idea era retirar las 2 RB1100AHx2 de ambas ubicaciones y sólo dejar los switches, pero tras ver este problema la mejor opción ha sido optar hacer el bonding con los routers mikrotik.

Así que al lío :) Aquí un pequeño esquema de lo que queremos montar:

Diagrama1

La configuración en ambos routers es calcada, simplemente cambia la configuración de las IPs. Para hacerlo mas divertido tenemos una VLAN, esto también nos sirve para ver que realmente el enlace es capa2 y que las VLAN pasan.

Router A

/interface bridge port
add bridge=bridge1 disabled=no edge=auto external-fdb=auto horizon=none 
    interface=bonding1 path-cost=10 point-to-point=auto priority=0x80
add bridge=bridge1 disabled=no edge=auto external-fdb=auto horizon=none 
    interface=ether3 path-cost=10 point-to-point=auto priority=0x80

/interface bonding
add arp=enabled arp-interval=100ms arp-ip-targets=192.168.69.2 disabled=no 
    down-delay=200ms lacp-rate=1sec link-monitoring=arp mii-interval=100ms 
    mode=active-backup mtu=1500 name=bonding1 primary=ether5 slaves=
    ether5,ether4 transmit-hash-policy=layer-2 up-delay=200ms

/interface vlan
add arp=enabled disabled=no interface=bridge1 l2mtu=65531 mtu=1500 name=
    vlan2000 use-service-tag=no vlan-id=2000

/ip address
add address=192.168.69.1/24 disabled=no interface=vlan2000 network=
    192.168.69.0

Router B

/interface bridge port
add bridge=bridge1 disabled=no edge=auto external-fdb=auto horizon=none 
    interface=bonding1 path-cost=10 point-to-point=auto priority=0x80
add bridge=bridge1 disabled=no edge=auto external-fdb=auto horizon=none 
    interface=ether3 path-cost=10 point-to-point=auto priority=0x80

/interface bonding
add arp=enabled arp-interval=100ms arp-ip-targets=192.168.69.1 disabled=no 
    down-delay=200ms lacp-rate=1sec link-monitoring=arp mii-interval=100ms 
    mode=active-backup mtu=1500 name=bonding1 primary=ether5 slaves=
    ether5,ether4 transmit-hash-policy=layer-2 up-delay=200ms

/interface vlan
add arp=enabled disabled=no interface=bridge1 l2mtu=65531 mtu=1500 name=
    vlan2000 use-service-tag=no vlan-id=2000

/ip address
add address=192.168.69.2/24 disabled=no interface=vlan2000 network=
    192.168.69.0

Aquí la captura de pantalla de cada uno de los Routers

Router A

routerA

Router B

routerB

Cabe destacar algunos puntos.

El primero es que estamos definiendo el “Link Monitoring” del bonding a ARP y a bajo especificamos la IP del otro router. De esta forma si hay link con la antena pero no enlace con la otra, va a detectar que realmente el enlace está caído y va a usar el enlace de backup.

El segundo que el up y el down delay sean múltiplos de arp interval. Este es el intervalo de switch de una interfaz a otra.

El tercero, el ratio LACP a 1 segundo.

Y esto es todo! :) Este post se lo dedico a Marc y Albert.

« »

guy fawkes