Está en la página 1de 3

Balanceo de carga con Mikrotik (PCC)

Balanceo de carga con Mikrotik


by Luis Zambrana on 6 Enero, 2015

http://luiszambrana.com.ar/balanceo-de-carga-con-mikrotik/

El balanceo de carga es un concepto usado en inform�tica que se refiere a la


t�cnica utilizada para compartir el trabajo entre varios procesos y as� evitar lo
denominado cuello de botella.

En nuestro caso, la idea se basa en utilizar un routerboard mikrotik y dos


proveedores de internet (isp) para dividir 50/50 la carga de conexiones de la red
hacia internet.

En principio no voy a tomar credito por nada, toda la configuraci�n est� disponible
enhttp://wiki.mikrotik.com/wiki/PCC y la copiar� solo para explicarla con mis
palabras.

Explicaci�n

Asumimos que tenemos la siguiente configuraci�n.

Direcciones IP

/ ip address
add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255
interface=Local
add address=10.111.0.2/24 network=10.111.0.0 broadcast=10.111.0.255 interface=wlan2
add address=10.112.0.2/24 network=10.112.0.0 broadcast=10.112.0.255 interface=wlan1

El router tiene tres interfaces:

La primera es la que utilizaremos como LAN/Local a la cual se conectan todos


nuestros clientes para obtener acceso al servicio.

La segunda es el primer proveedor a Internet o wlan1 en donde tenemos una


configuraci�n IP est�tica que es lo mas conveniente a la hora de configurar este
tipo de servicios.

La tercera (wlan2) es nuestro segundo proveedor de servicio de Internet.

Es importante que ambas conexiones tengan IPs est�ticos porque sino, el cambio de
Gateway (Puerta de Enlace) nos traer� problemas mas adelante en la configuraci�n.

Politicas de routeo

/ ip firewall mangle
add chain=input in-interface=wlan1 action=mark-connection new-connection-
mark=wlan1_conn
add chain=input in-interface=wlan2 action=mark-connection new-connection-
mark=wlan2_conn

Empezamos marcando los paquetes para separar las conexiones.

En esta parte nos encargamos de establecer que cada conexi�n que entra por un WLAN
sale por el mismo (un problema com�n anteriormente era que una conexi�n pod�a
entrar por wlan1 y salir por wlan2 ocasionando intermitencia del servicio y
problemas de conectividad para el usuario). Marcaremos las conexiones para recordar
mas adelante las interfaces (wlan1 y wlan2).

add chain=output connection-mark=wlan1_conn action=mark-routing new-routing-


mark=to_wlan1
add chain=output connection-mark=wlan2_conn action=mark-routing new-routing-
mark=to_wlan2

Las lineas de comando superior asegurar�n que el tr�fico salga por el mismo lugar
por donde entr�.

add chain=prerouting dst-address=10.111.0.0/24 action=accept in-interface=Local


add chain=prerouting dst-address=10.112.0.0/24 action=accept in-interface=Local

Las pol�ticas de routeo nos permiten forzar el tr�fico a que salga por un
determinado Gateway (o puerta de enlace, en este caso wlan1 o wlan2), aunque el
mismo se encuentre destinado a otra direcci�n (distinta al Gateway). Esto prevendr�
la generaci�n de Loops y problemas de conexi�n para el usuario. Para evitar que
esto suceda tendremos que hacer uso de la routing table.

add chain=prerouting dst-address-type=!local in-interface=Local per-connection-


classifier=both-addresses:2/0 \
action=mark-connection new-connection-mark=wlan1_conn passthrough=yes
add chain=prerouting dst-address-type=!local in-interface=Local per-connection-
classifier=both-addresses:2/1 \
action=mark-connection new-connection-mark=wlan2_conn passthrough=yes

Mark-routing puede ser usando solo en mangle bajo las cadenas output and
prerouting, pero la cadena prerouting est� capturando todo el tr�fico incluso el
que est� dirigido al mismo router. Para evitar este problema, en dst-address-type
seleccionaremos Local, inverted.

Con la ayuda de PCC (per connection clasiffier) dividiremos el tr�fico en dos ramas
o flujos iguales basados en el origen y destino de las direcciones.

add chain=prerouting connection-mark=wlan1_conn in-interface=Local action=mark-


routing new-routing-mark=to_wlan1
add chain=prerouting connection-mark=wlan2_conn in-interface=Local action=mark-
routing new-routing-mark=to_wlan2

Luego marcamos todos los paquetes de esas conexiones con una marca. Se marcar� todo
el tr�fico que sale hacia Internet, no olvidemos que se utiliza una interfaz
espec�fica de salida pensando siempre que debe ser la misma por la cual entr�.

/ ip route
add dst-address=0.0.0.0/0 gateway=10.111.0.1 routing-mark=to_wlan1 check-
gateway=ping
add dst-address=0.0.0.0/0 gateway=10.112.0.1 routing-mark=to_wlan2 check-
gateway=ping

Llegando al final, crearemos rutas, establecemos que todo el tr�fico puede salir
por cualquiera de las dos conexiones.

add dst-address=0.0.0.0/0 gateway=10.111.0.1 distance=1 check-gateway=ping


add dst-address=0.0.0.0/0 gateway=10.112.0.1 distance=2 check-gateway=ping

Para activar la opci�n de failover(en caso de que una conexi�n caiga, la siguiente
asumir� toda la carga) es necesario que la ruta previa se desactive autom�ticamente
tan pronto como sea posible. Esto se logra configurando check-gateway=ping. Esta
opci�n censar� constantemente si hay respuesta del router para pasar el tr�fico, en
caso de no responder, deshabilitar� una de las routas hasta que el Gateway vuelva a
su normalidad.

En esta parte es importante tener en cuenta que al checkear el gateway en una


direcci�n est�tica previamente configurada por nosotros, es indispensable tener una
direcci�n de IP est�tica para poder lograrlo. Uno de los inconvenientes que tuve
personalmente con una conexi�n de Fibertel fue que para lograr que el IP sea fijo,
previamente al entrar el Mikrotik lo pas� por un router externo, de esta manera el
gateway ser�a la direcci�n de mi router.

El inconveniente aqu� surge para la opci�n de failover. Si la conexi�n a Internet


dejaba de responder, el Mikrotik igual seguir�a teniendo conexi�n al Gateway porque
a menos que el router se encuentre desenchufado este siempre va a responder. Esto
ocacionaba que cuando se ca�a la conexi�n a Internet, el Mikrotik fuera incapaz de
reconocer que estaba ca�da y segu�a mandando tr�fico por esta ruta imposibilitando
la navegaci�n.

NAT

/ ip firewall nat
add chain=srcnat out-interface=wlan1 action=masquerade
add chain=srcnat out-interface=wlan2 action=masquerade

Esta parte es muy com�n para todos, se debe configurar un NAT con out-interface
para cada una de las conexiones que se desee balancear. Todo el tr�fico que pase
por nuestra red tiene la posibilidad de salir por cualquiera de las dos interface
wlan.

Balanceo de ocho conexiones�

Finalmente cierro con esta parte. Balancear ocho conexiones es tan simple como
hacerlo con dos. En la parte de direcciones IP solo tendremos que levantar y
configurar 6 interfaces mas, en la parte mangle marcaremos desde wlan1 hasta wlan8,
en la parte de pcc (ramas/strems) configuraremos el pcc desde 8/0 hasta 8/7 de
manera que cada conexi�n recibir� una carga del 12.5%, se crear�n ocho rutas junto
con ocho gateways y finalmente ocho nats. No es ninguna ciencia hacerlo, solo hay
que tener cuidado de ingresar bien todas las direcciones y nombres, de lo contrario
tendremos un comportamiento erradico y nos tomar� bastante tiempo ubicar que parte
configuramos mal.

Conclusi�n:

Mikrotik nos permite con la ayuda de un RB493AH hacer un balanceo de hasta ocho
conexiones de la misma manera que lo har�a otro equipo de varios miles le d�lares.
Es una excelente alternativa para la los peque�os WISP que usualmente tienen
problemas al ofrecer iguales anchos de banda a precios competitivos.
Espero haber ayudado y animado a alguno para probar esta configuraci�n. La misma se
puede realizar en un RB433 (por sus tres puertos ether) en el que solo podremos
balancear dos conexiones.

También podría gustarte