Páginas

terça-feira, 7 de fevereiro de 2012

Load Balance por ECMP e FailOver com MIKROTIK

Como fazer um balanceamento de carga de uma forma eficaz sem subutilizar um dos links ou dividir sua rede, usando “ECMP load balance” no mikrotik.

Cenário:


LAN: 192.168.0.1/24
WAN1: 172.16.10.10/32 – Link Embratel 2Mb
WAN2: 172.16.20.10/32 – Link OI 2Mb


ISP Mikrotik:
LAN: 192.168.0.1
WAN1:172.16.10.1
WAN2:172.16.20.1


ISP Routers:
WAN1: 172.16.10.10
WAN2:172.16.20.10


*** Regras:


/ip address
add address=192.168.0.1/24 broadcast=192.168.0.255 comment=”LAN” disabled=no \
interface=ether2 network=192.168.0.0
add address=172.16.10.1/24 broadcast=172.16.10.255 comment=”WAN1″ disabled=no \
interface=ether3 network=172.16.10.0
add address=172.16.20.1/24 broadcast=172.16.20.255 comment=”WAN2″ disabled=no \
interface=ether1 network=172.16.20.0


/ ip route
add dst-address=0.0.0.0/0 gateway=172.16.10.10,172.16.20.10 check-gateway=ping


/ ip firewall nat
add chain=srcnat out-interface=WAN1 action=masquerade
add chain=srcnat out-interface=WAN2 action=masquerade


/ ip firewall mangle
add chain=input in-interface=WAN1 action=mark-connection new-connection-mark=wan1_conn
add chain=input in-interface=WAN2 action=mark-connection new-connection-mark=wan2_conn
add chain=output connection-mark=wan1_conn action=mark-routing new-routing-mark=to_wan1
add chain=output connection-mark=wan2_conn action=mark-routing new-routing-mark=to_wan2


/ ip route
add dst-address=0.0.0.0/0 gateway=172,16.10.10 routing-mark=to_wan1
add dst-address=0.0.0.0/0 gateway=172.16.20.10 routing-mark=to_wan2



*** IP Address:


/ip address
add address=192.168.0.1/24 broadcast=192.168.0.255 comment=”LAN” disabled=no \
interface=ether2 network=192.168.0.0
add address=172.16.10.10/24 broadcast=172.16.10.255 comment=”WAN1″ disabled=no \
interface=ether3 network=172.16.10.0
add address=172.16.20.10/24 broadcast=172.16.20.255 comment=”WAN2″ disabled=no \
interface=ether1 network=172.16.20.0


Neste trecho definimos os ips da interface local LAN (192.168.0.1/24) e os ips das interfaces externas WAN(172.16.10.1/24 e 172.16.20.1/24), claro, ips inválidos, adeque a sua necessidade!





*** Routing:


/ ip route
add dst-address=0.0.0.0/0 gateway=172.16.10.10,172.16.20.10 check-gateway=ping


Aqui criamos uma rota tipica de ECMP (Equal Cost Multi-Path), com check-gateway. Por definição o ECMP é persistente por conexão, ou seja, se um cliente estabelece conexão pelo gateway 172.16.10.10, ele irá utilizar somente este gateway durante ESTA conexão. Assim que um dos links cair o check-gateway irá remove-lo da lista de gateway, com isso você terá um efeito failover de brinde .


você pode utilizar também links assimétricos, por exemplo, digamos que o link da OI seja de 4Mb e o da Embratel de 8Mb, sendo o da Embratel o dobro do link da OI, você pode fazer a rota da seguinte forma para não subutilizar um dos links:


/ ip route
add dst-address=0.0.0.0/0 gateway=172.16.20.10,172.16.10.10,172.16.10.10 check-gateway=ping


**** NAT:


/ ip firewall nat
add chain=srcnat out-interface=wan1 action=masquerade
add chain=srcnat out-interface=wan2 action=masquerade


Como as rotas já foram decididas, só precisamos das regras para corrigir o src-address para os pacotes de saída, Se o pacote sair pela WAN1 será “NATeado” para 172.16.10.10/24, caso contrário será para 172.16.20.10/24.


*** Conexões Entrantes:


/ ip firewall mangle
add chain=input in-interface=WAN1 action=mark-connection new-connection-mark=wan1_conn
add chain=input in-interface=wlan2 action=mark-connection new-connection-mark=wan2_conn
add chain=output connection-mark=wan1_conn action=mark-routing new-routing-mark=to_wan1
add chain=output connection-mark=wan1_conn action=mark-routing new-routing-mark=to_wan2


/ ip route
add dst-address=0.0.0.0/0 gateway=172.16.10.10 routing-mark=to_wan1
add dst-address=0.0.0.0/0 gateway=172.16.20.10 routing-mark=to_wan2



Imagine um pacote INPUT vindo pelo link da Oi e retornando pelo link da Embratel, com ip diferente não vai dar, para evitar isso, vamos avisar ao mikrotik que o pacote que for recebido pelo link1 deve ser retornado pelo mesmo link.


Conclusão:


O ECMP é uma boa forma de balancear múltiplos links no mikrotik, com a utilização dele não subutilizamos os links e conseguimos um failover caso um dos links caiam, ele bem configurado dificilmente dará problemas.


*** Liberando Memoria CPU

/ip firewall connection tracking set enabled=no

4 comentários:

  1. Amigo teria como você me ajudar seguir seu tutorial e não funcionou!
    idalmo@gmail.com

    ResponderExcluir
    Respostas
    1. ok.... vou te mandar um email para saber mais detalhes.

      Excluir
  2. manda para meu e-mail tambem leo.concas@live.nl

    ResponderExcluir
  3. Amigo, também segui o que descreve e não obtive exito!

    há algum detalhe extra configuração?

    ResponderExcluir