Balanceo de Carga PCC

PPPoE + Rutas Recursivas + Mikrotik

Como consultor de redes ofreciendo servicio a múltiples países en Latino América, he percibido la importancia de conocer como poder utilizar múltiples conexiones a internet (WAN) para poder satisfacer la demanda de nuestros clientes.

Muchos de los pequeños y medianos proveedores de internet, no tienen acceso aún a conexiones dedicadas de fibra óptica, ya sea por su ubicacióm geográfica, costo, restricciones políticas, etc. En ese caso, debemos recurrir a los medios que tengamos a nuestro alcance, y en muchas ocasiones, lo más sencillo es contratar varias líneas de internet de baja capacidad.

Precisamente en este momento es cuando entra en juego este concepto fundamental de Balanceo de Carga. En palabras sencillas, diré que balanceo de cargas se refiere al proceso mediante el cual vamos a enviar trafico de nuestra red local a través de múltiples conexiones de internet simúltaneamente. Existen diversos mecanismos, particularmente en Mikrotik puedo mencionar NTH, ECMP y PCC.

Los diferentes tipos de balanceo tienen algunos diferencias en su funcionamiento interno y configuración, en este tutorial vamos a aprender PCC, el cual considero es el más estable para usarlo en escenarios como el planteado.

IMAGEN 1. Balanceo PCC + 4 Conexiones PPPoE + Failover con rutas recursivas

La imagen anterior muestra un diagrama del laboratorio que realizaremos en la clase. A continuación iré mostrando los comandos de configuración para cada etapa. Al final, podrán ver el video donde hago la configuración y pruebas del mismo.

Configuración de Clientes PPPoE – 4 Wans

Usaremos la interfaces ether1 a ether4 para cada WAN. Se asume que ya tenemos el usuario y password de cada conexion de nuestro proveedor. Cabe destacar que el cliente PPPoE estará directamente configurado en nuestro router. Si el proveedor esta usando un modem, y nos entrega por DHCP, pues lo que se deberia configurar es un cliente DHCP.

/interface pppoe-client
 add disabled=no interface=ether1_ISP1 name=pppoe-isp1 password=password service-name=isp1 user=user1
 add disabled=no interface=ether2_ISP2 name=pppoe-isp2 password=password service-name=isp2 user=user2
 add disabled=no interface=ether3_ISP3 name=pppoe-isp3 password=password service-name=isp3 user=user3
 add disabled=no interface=ether4_ISP4 name=pppoe-isp4 password=password service-name=isp4 user=user4

Enmascarado de Conexiones

Lo siguiente es enmascarar (NAT) para que nuestra red LAN pueda salir a internet. Primero crearemos una lista de interfaces y luego generaremos la regla de NAT para esas interfaces.

/interface list
 add name=WAN
 /interface list member
 add interface=pppoe-isp1 list=WAN
 add interface=pppoe-isp2 list=WAN
 add interface=pppoe-isp3 list=WAN
 add interface=pppoe-isp4 list=WAN

Red Lan

Ahora necesitamos crear nuestra interface de LAN, usaremos ether5. ether5 puedo ir conectado a un switch, y de ese modo tendremos cualquier cantidad de equipos en nuestra red local

/ip address
 add address=172.16.0.1/24 interface=ether5_LAN network=172.16.0.0

BALANCEO PCC

Existen varios tipos de balanceo como NTH, ECMP y PCC. PCC significa “per connection classifier” y basicamente permite marcar cada conexion (stream) basado en criterios como la dirección origen/destino y/o puerto origen/destino.

/ip firewall mangle
add action=mark-connection chain=prerouting comment="MARCAS DE CONEXION - ENTRANDO DESDE INTERNET" connection-mark=no-mark in-interface=pppoe-isp1 new-connection-mark=ISP1_conn passthrough=yes
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=pppoe-isp2 new-connection-mark=ISP2_conn passthrough=yes
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=pppoe-isp3 new-connection-mark=ISP3_conn passthrough=yes
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=pppoe-isp4 new-connection-mark=ISP4_conn passthrough=yes
add action=mark-connection chain=prerouting comment="MARCADO DE CONEXIONES - ENTRADANDO VIA LAN" connection-mark=no-mark in-interface=ether5_LAN new-connection-mark=ISP1_conn passthrough=yes per-connection-classifier=both-addresses:4/0
add action=mark-routing chain=prerouting connection-mark=ISP1_conn in-interface=ether5_LAN new-routing-mark=to_ISP1 passthrough=no
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether5_LAN new-connection-mark=ISP2_conn passthrough=yes per-connection-classifier=both-addresses:4/1
add action=mark-routing chain=prerouting connection-mark=ISP2_conn in-interface=ether5_LAN new-routing-mark=to_ISP2 passthrough=no
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether5_LAN new-connection-mark=ISP3_conn passthrough=yes per-connection-classifier=both-addresses:4/2
add action=mark-routing chain=prerouting connection-mark=ISP3_conn in-interface=ether5_LAN new-routing-mark=to_ISP3 passthrough=no
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether5_LAN new-connection-mark=ISP4_conn passthrough=yes per-connection-classifier=both-addresses:4/3
add action=mark-routing chain=prerouting connection-mark=ISP4_conn in-interface=ether5_LAN new-routing-mark=to_ISP4 passthrough=no
add action=mark-routing chain=output comment="MARCADO DE OUTPUT CHAIN" connection-mark=ISP1_conn new-routing-mark=to_ISP1 passthrough=no
add action=mark-routing chain=output connection-mark=ISP2_conn new-routing-mark=to_ISP2 passthrough=no
add action=mark-routing chain=output connection-mark=ISP3_conn new-routing-mark=to_ISP3 passthrough=no
add action=mark-routing chain=output connection-mark=ISP4_conn new-routing-mark=to_ISP4 passthrough=no

Tabla de Rutas : Rutas Recursivas

Para usar rutas recursivas, en lugar de monitorear cada ruta con la ip del gateway de nuestro proveedor, usaremos la ip de un servidor DNS publico. La ventaja será que si se presenta un problema despues del gateway de nuestro proveedor, nuestra ruta se desactivara y con ello podremos enviar el trafico por otra WAN.

Usaremos las siguientes ips de DNS publico (ustedes pueden elegir las que deseen)

9.9.9.9
149.112.112.112
208.67.222.222
208.67.220.220

Creación de Rutas

/ip route

add check-gateway=ping distance=1 gateway=9.9.9.9 routing-mark=to_ISP1
add check-gateway=ping distance=2 gateway=149.112.112.112 routing-mark=to_ISP1
add check-gateway=ping distance=1 gateway=149.112.112.112 routing-mark=to_ISP2
add check-gateway=ping distance=2 gateway=208.67.222.222 routing-mark=to_ISP2
add check-gateway=ping distance=1 gateway=208.67.222.222 routing-mark=to_ISP3
add check-gateway=ping distance=2 gateway=208.67.220.220 routing-mark=to_ISP3
add check-gateway=ping distance=1 gateway=208.67.220.220 routing-mark=to_ISP4
add check-gateway=ping distance=2 gateway=9.9.9.9 routing-mark=to_ISP4
add distance=1 gateway=9.9.9.9
add check-gateway=ping distance=2 gateway=149.112.112.112
add check-gateway=ping distance=3 gateway=208.67.222.222
add check-gateway=ping distance=4 gateway=208.67.220.220
add check-gateway=ping distance=1 dst-address=9.9.9.9/32 gateway=10.0.0.1 scope=10
add check-gateway=ping distance=1 dst-address=149.112.112.112/32 gateway=10.10.0.1 scope=10
add check-gateway=ping distance=1 dst-address=208.67.220.220/32 gateway=10.30.0.1 scope=10
add check-gateway=ping distance=1 dst-address=208.67.222.222/32 gateway=10.20.0.1 scope=10

9 thoughts on “Balanceo de Carga PCC

    1. Hola, no podria darle una recomendación especifica de los proveedores de la zona ya que resido un poco lejos de esa zona geografica, y no podria darle un referencia precisa.

      1. A ver, Podrias si no es mucho pedir entonces, Q hicieras o explicaras en base al Video actual.. Como configurar Script con Ip Publicas y DInamicas, con FailOver sobre Rutas Recursivas???

  1. Saludos tocayo, Muy interesante tus vídeos, por fin lo q estaba buscando. Pues en Venezuela los ISP son ADSL con Ip Publicas/Dinámicas e incluso a veces otorga el mismo GateWay en varios WANs.
    Pregunto: Esta explicación la podría adaptar a mi realidad, donde poseeo 5 ADSL y varias veces el ServerDHCP de la Empresa de telefonía envias conexiones con Gateways iguales…. Pues hace tiempo estaba tratando de implementar dichos scripts y se producía un error debido a gateways idénticos.

    Otra pregunta: SI deseo implementar rutas recursivas para 10 ADSL , necesito q los 10 DNS de comparacion, sean diferentes entre todos???

    Gracias…

    1. Hola saludos hasta Venezuela. Me alegra que el tema le sea de utilidad.
      Con respecto a su consulta, al usar failover recursivo, si es necesario usar una ip de monitoreo distinta para cada ruta. Con el tema de gateways iguales, si es posible. Solo debe añadir a la ruta donde se indica el gateway del proveedor “%nombre_interface”

      Por ejemplo,
      Si Gateway 1 es 10.0.0.1/pppoe_isp1 y Gateway 2 es 10.0.0.1/pppoe_isp2, los gateways serian asi:

      10.0.0.1%pppoe_isp1
      10.0.0.1%pppoe_isp2

      Esto solo debe ponerlo en las rutas donde se usan los gateways del proveedor, no donde usar las ips de los servidores publicos de monitoreo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *