Boa noite @brito666
Achei a pergunta interessante e fui da uma pesquisada sobre o assunto.
Nós temos a ferramenta Traffic Monitor, mas isso é para medir a velocidade e executar algum comando.
Pela rápida pesquisa que fiz, não achei nada pronto no MK para isso, então a solução seria com script, fui meter a mão pra testar e ta ai o resultado.
SCRIPT PARA RESETAR A BAGAÇA:
Código ::global lastRX;:set $lastRX 0;Você usara isso quando for mudar para monitorar outra interface, pois o rx-bytes (quantidade de trafego passado) vai ser diferente. Para não dar erro, tem que resetar a variavel $lastRX.
SCRIPT DE PROBE (QUE APALISA SE O TRAFEGO CHEGOU NO LIMITE DESEJADO):
Código ::local trafficLimit 10485760; :local interface "ether1"; :local scriptToExecute "scriptRxReached"; ########################## :global lastRX :if ($lastRX = nil) do={ :set lastRX 0; } :local RX [interface get [find name=$interface] rx-byte] :local traffic ($RX - $lastRX) #log info "$RX RX" #log info "$traffic TRAFFIC" :local disp; if ($traffic >= 1048576) do={ :local mb ($traffic / 1048576); :local kb (($traffic - ($mb * 1048576)) / 1024); :set disp "$mb.$kb Mb"; } else={ :if ($traffic >= 1024) do={ :local kb ($traffic / 1024); :set disp "$kb Kb"; } else={ :set disp ($traffic); } } :if ($traffic >= $trafficLimit) do={ log info "$disp"; :set lastRX $RX; /system script run [find name=$scriptToExecute]; }Você só precisa mudar as primeiras três variáveis. $trafficLimit é o trafego, em bytes, que você deseja como limite, $interface é o nome da interface que você quer monitorar e $scriptToExecute é o nome do script que você quer que seja executado quando o trafego chegar àquele limite definido em $trafficLimit.
Você só precisa criar uma tarefa em System->Scheduler com o intervalo que você desejar, digamos 10 segundos, chamando o script de PROBE. Depois disso altera ali o $trafficLimit logo no inicio para 94371840 (que é 90Mb, em bytes), e cria um script com o nome scriptRxReached onde ficara o script que você quer executar a cada vez que a interface indicada na variavel $interface (logo no inicio) trafegar a quantidade de bytes indicada.
Fazendo uma simulação aqui referente ao seu caso em específico, eu criei um script chamado scriptRxReached, e na minha regra de mangle que queria mudar, eu coloquei um comentário nela, para identificação, "THIS RULE" por exemplo.
No script scriptRxReached, fiz assim:
Código ::local interface1 "ether10"; :local interface2 "ether11"; :local mangleComment "THIS RULE"; ########################## :local int [/ip firewall mangle get [find comment=$mangleComment] in-interface]; :if ($int = $interface1) do={ /ip firewall mangle set [find comment=$mangleComment] in-interface=$interface2; } else={ /ip firewall mangle set [find comment=$mangleComment] in-interface=$interface1; }
Esse script vai pegar a regra de mangle com o comentário "THIS RULE", e vai fazer ela ficar alternando entre as interfaces definidas nas variaveis $interface1 e $interface2.
inquiery
Obrigado, irei estudar este script no qual você teve o trabalho de elaborar (Em pleno domingo rs).
A necessidade desta função surgiu pelo seguinte motivo, tenho 2 links, e mesmo como load balance chega um certo momento que somente 1 link fica saturado, e chegando nos 90MB, automaticamente o "PORT3_LAN" será alterado para "PORT4_LAN" , logo o tráfego será direcionado para o 2º link aliviando o PORT3.
(Ideia meia gambiarra né? kkk mas....)