#  > Telecomunicações >  > Mikrotik >  >  PPoE - QoS Dinâmico e Individual

## AndrioPJ

Prezados,

De uns tempo pra cá, vira e mexe recebemos ligações de clientes reclamando que não conseguem acessar nada ou que está extremamente lento, e quando vamos ver a conexão, o consumo de banda do cliente está em 100%.
Em 90% dos casos é com destino a IP da Microsoft, o que nos leva a crer ser atualização.

Sendo que desde o lançamento do Windows 10, a quantidade de ligações desse tipo aumentou.

Diante de tal problema, resolvi ir atrás de alguma solução de QoS individual e automático.
Consegui achar alguns exemplos de scripts na internet, fiz algumas modificações para poder gerar QoS automático para clientes com ou sem Burst.

O que ele faz?
A cada nova conexão, ele analisa os dados da Simple Queue desse cliente, e cria algumas regras no Queue Tree, com 5 tipos de priorização, conforme o tamanho do pacote (independente de site, protocolo ou serviço).

A principio tem funcionado bem.

Segue abaixo o script:



```
/ip firewall mangle
add action=mark-connection chain=forward comment=QoS-Andriopj_Client_PPPoE new-connection-mark=QoS_conn_Down out-interface=all-ppp passthrough=yes
add action=mark-packet chain=forward connection-bytes=0-524288 connection-mark=QoS_conn_Down new-packet-mark=QoS-Andriopj_512K passthrough=yes
add action=mark-packet chain=forward connection-bytes=524289-5242880 connection-mark=QoS_conn_Down new-packet-mark=QoS-Andriopj_5M passthrough=yes
add action=mark-packet chain=forward connection-bytes=5242881-20971520 connection-mark=QoS_conn_Down new-packet-mark=QoS-Andriopj_20M passthrough=yes
add action=mark-packet chain=forward connection-bytes=20971521-52428800 connection-mark=QoS_conn_Down new-packet-mark=QoS-Andriopj_50M passthrough=yes
add action=mark-packet chain=forward connection-bytes=52428801-0 connection-mark=QoS_conn_Down new-packet-mark=QoS-Andriopj_Infinity passthrough=yes
```

 
Esse você adiciona em PPP > Profile
Abra cada um dos Profiles > aba Scripts > On Up


```
:foreach i in=[/queue simple find where name="<pppoe-$user>"] do={
    :local NamePPP [/queue simple get $i name];
    :local RateLimit [/queue simple get $i max-limit];
    :local indexExplod [:find $RateLimit "/"];
    :local lenth [:len $RateLimit];
    :local rl [:pick $RateLimit ($indexExplod + 1) ($lenth - 1)];
    :local RateLimitUn [:pick $RateLimit ($lenth - 1) $lenth];
    :local BurstLimit [/queue simple get $i burst-limit];
    :local indexExplod [:find $BurstLimit "/"];
    :local lenth [:len $BurstLimit];
    :local bl [:pick $BurstLimit ($indexExplod + 1) ($lenth - 1)];
    :local BurstLimitUn [:pick $BurstLimit ($lenth - 1) $lenth];
    :local BurstTime [/queue simple get $i burst-time];
    :local indexExplod [:find $BurstTime "/"];
    :local lenth [:len $BurstTime];
    :local bt [:pick $BurstTime ($indexExplod + 1) ($lenth - 1)];
    :local indexExplod [:find $bt "m"];
    :local lenth [:len $bt];
    :local bt0 [:pick $bt 0];
    :local bt1 [:pick $bt ($indexExplod + 1) $lenth];
    :local BurstTh [/queue simple get $i burst-threshold];
    :local indexExplod [:find $BurstTh "/"];
    :local lenth [:len $BurstTh];
    :local bth [:pick $BurstTh ($indexExplod + 1) ($lenth - 1)];
    :local BurstThUn [:pick $BurstTh ($lenth - 1) $lenth];
    :local c512k [($rl * 55 / 100)];
    :local c5M [($rl * 25 / 100)];
    :local c20M [($rl * 20 / 100)];
    :local c50M [($rl * 15 / 100)];
    :local cInf [($rl * 10 / 100)];
    :local cBt [(($bt0 * 60) + $bt1)];
    :if ([:len $bl] != 0) do={
        :log warning "QoS ADD === $NamePPP";
#        :log warning "Com Burst";
#        :log warning "Max Limit === $rl $RateLimitUn";
#        :log warning "Burst Limit === $bl $BurstLimitUn";
#        :log warning "Burst Thr === $bth $BurstThUn";
#        :log warning "Burst Time=== $cBt";
/queue tree add name="QoS_$NamePPP" parent="$interface" queue="default" max-limit="$($rl)$RateLimitUn" burst-limit="$($bl)$BurstLimitUn" burst-time="$cBt" burst-threshold="$($bth)$BurstThUn" bucket-size=0.20;
        /queue tree add name="2-512k_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_512K" queue="default" priority="4" limit-at="$($c512k)$RateLimitUn" max-limit="$($rl)$RateLimitUn" burst-limit="$($bl)$BurstLimitUn" burst-time="$cBt" burst-threshold="$($bth)$BurstThUn";
        /queue tree add name="4-5M_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_5M" queue="default" priority="5" limit-at="$($c5M)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
        /queue tree add name="6-20M_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_20M" queue="default" priority="6" limit-at="$($c20M)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
        /queue tree add name="7-50M_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_50M" queue="default" priority="7" limit-at="$($c50M)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
        /queue tree add name="8-Inf_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_Infinity" queue="default" priority="8" limit-at="$($cInf)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
        } \
    else={
        :log warning "QoS ADD === $NamePPP";
        /queue tree add name="QoS_$NamePPP" parent="$interface" queue="default" max-limit="$($rl)$RateLimitUn" bucket-size=0.20;
        /queue tree add name="2-512k_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_512K" queue="default" priority="2" limit-at="$($c512k)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
        /queue tree add name="4-5M_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_5M" queue="default" priority="4" limit-at="$($c5M)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
        /queue tree add name="6-20M_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_20M" queue="default" priority="6" limit-at="$($c20M)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
        /queue tree add name="7-50M_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_50M" queue="default" priority="7" limit-at="$($c50M)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
        /queue tree add name="8-Inf_$NamePPP" parent="QoS_$NamePPP" packet-mark="QoS-Andriopj_Infinity" queue="default" priority="8" limit-at="$($cInf)$RateLimitUn" max-limit="$($rl)$RateLimitUn";
 
 
 }
}
```

 

Esse você adiciona em PPP > Profile
Abra cada um dos Profiles > aba Scripts > On Down


```
/queue tree remove [find where parent="QoS_<pppoe-$user>"]
/queue tree remove [find where name="QoS_<pppoe-$user>"]
:foreach a in=[/queue tree find where invalid] do={ /queue tree remove $a };
```

 

Pronto, agora seu concentrador já deve estar criando o QoS automaticamente para cada cliente que se conectar/reconectar.



*FONTES*:
https://wiki.mikrotik.com/wiki/Manual:Scripting
https://wiki.mikrotik.com/wiki/Manua...pting-examples
https://forum.mikrotik.com/viewtopic.php?t=61974
https://forum.mikrotik.com/viewtopic.php?t=4887
http://mk-auth.com.br/forum/topics/qos-din-mico-pppoe
https://forum.mikrotik.com/viewtopic.php?t=11534

----------


## Mitigo

Bela contribuição e de altíssimo nível.
Parabéns

----------


## daniellannes

[emoji1319][emoji1319]

----------


## JonasMT

Parabens, implantei aqui vou monitorar.

----------


## AndrioPJ

PS: se tiverem alguma sugestão de correção ou melhoria, me avisem...

----------


## eduardomazolini

Gostei do conseito. Uma coisa pra melhorar seria colocar a regra default small sfq ou pcq com tudo marcado.

----------


## eduardomazolini

Eu usei pcq para o problema inicial relatado aqui. Alto consumo causando lentidão.

A ideia de QoS aqui não é a mais complexa. Prioriza transferências menores ou iniciando.

Gostei do conseito do script a inicialização dele, criação de queue child em queues dinâmicas.

----------


## eduardomazolini

Dentro deste contexto também não vejo problema se ele iniciar muitas transferências simultâneamente e o pcq for aplicado a cada categoria só iria ajudar.

----------


## dulio2002

Muito bom.

----------


## alextaws

@*AndrioPJ*, eu utilizo o QoS individual em todos os meus concentradores, mais com diferença em um pequeno detalhe, o script eu colo dentro de SYSTEM --> SCRIPT e nos profiles PPP o nome do script, o funcionamento é o mesmo.

Vendo sua publicação gostaria de compartilhar algo que notei nesse QoS que utilizo algum tempo.

Fiz alguns testes e notei com ele ou sem ele a navegação pro cliente final não tem mudado significamente, pela regra acredito que ela deveria priorizar os pacotes menores independente do serviço ou protocolo, dessa forma acho que as navegações (sites) deveria ter uma certa qualidade na hora de abrir.

Monitorando e alguns testes feito com alguns clientes selecionados ao fazer um download por exemplo torrent a banda do cliente é 100% atingida o cliente vai navegar e nada do site abrir, demora tempo e nada, isso com plano de 2 e 3 megas, então para testar removi o cliente da Queue tree, o problema foi o mesmo, nada de melhora na navegação.

Acredito que algum tipo de melhoria falta a ser acrescentada no QoS. O que acha se fosse acrescentado mais uma regra nesse escript onde ele priorizaria a navegação(abertura de sites) pro cliente final?

Tive mais certeza do problema quando um amigo configurou um QoS Simples em uma rb450 pra eu colocar em um cliente corporativo no qual solicitou que alguns sites fossem priorizados na abertura de sites, fizemos isso é o resultado foi muito satisfatório. O mesmo teste com download torrent feito com o cliente pppoe usando qos individual foi feito com esta rb, e ao requisitar abertura dos sites priorizados retirou dos outros serviços incluindo o download citado e enviado pros sites, coisa que não estava acontecendo no teste feito com o cliente pppoe.

O que acha disso?

----------


## AndrioPJ

> @*AndrioPJ*, eu utilizo o QoS individual em todos os meus concentradores, mais com diferença em um pequeno detalhe, o script eu colo dentro de SYSTEM --> SCRIPT e nos profiles PPP o nome do script, o funcionamento é o mesmo.
> 
> Vendo sua publicação gostaria de compartilhar algo que notei nesse QoS que utilizo algum tempo.
> 
> Fiz alguns testes e notei com ele ou sem ele a navegação pro cliente final não tem mudado significamente, pela regra acredito que ela deveria priorizar os pacotes menores independente do serviço ou protocolo, dessa forma acho que as navegações (sites) deveria ter uma certa qualidade na hora de abrir.
> 
> Monitorando e alguns testes feito com alguns clientes selecionados ao fazer um download por exemplo torrent a banda do cliente é 100% atingida o cliente vai navegar e nada do site abrir, demora tempo e nada, isso com plano de 2 e 3 megas, então para testar removi o cliente da Queue tree, o problema foi o mesmo, nada de melhora na navegação.
> 
> Acredito que algum tipo de melhoria falta a ser acrescentada no QoS. O que acha se fosse acrescentado mais uma regra nesse escript onde ele priorizaria a navegação(abertura de sites) pro cliente final?
> ...


Você tem o script desse QoS simples que seu amigo configurou?
Quem sabe, poderíamos analisar ele e melhorar...

----------


## alextaws

> Você tem o script desse QoS simples que seu amigo configurou?
> Quem sabe, poderíamos analisar ele e melhorar...


o simples da rb do cliente corporativo? ou o individual dos clientes pppoe?

----------


## AndrioPJ

> o simples da rb do cliente corporativo? ou o individual dos clientes pppoe?


Esse que vc citou que o resultado foi satisfatório.

----------


## alextaws

> Esse que vc citou que o resultado foi satisfatório.


Muito melhor. 
DETALHE: nesse a priorização de sites e depois as mesma regras por tamanho de pacote. A minha dúvida seria se daria para acrescentar no qos individual a mesma priorização, mais ao invés de priorizar sites determinados, priorizar toda navegação

----------


## AndrioPJ

> Muito melhor. 
> DETALHE: nesse a priorização de sites e depois as mesma regras por tamanho de pacote. A minha dúvida seria se daria para acrescentar no qos individual a mesma priorização, mais ao invés de priorizar sites determinados, priorizar toda navegação


1 - Para provedor, de acordo com o Marco Civil, é proibido priorizar pacotes quanto a origem/destino, conteúdo, terminal ou aplicação.
ou seja, não se pode priorizar um site em detrimento a outro.

2 - Esse script que postei prioriza pacotes pequenos, independente da origem/destino, protocolo, aplicação, etc e tal.
Mas sabemos que pacotes pequenos em sua grande maioria é: dns, ping, navegação ou inicio de algum download/video online.

----------


## sostenes

A ideia e boa,ja usei algo parecido a um tempo atrás,o problema e que tanto no seu script quanto no que eu usava nao respeita a o burst limit, pra mim infelizmente isso inviabilizou o uso do mesmo,um exemplo pra os menos intendidos: velocidade contratada 2048k , burst limit: 2298k , o pico máximo sempre e 2M. que seria os 2048k.

Para os que utilizam planos sem brust funciona 100%

----------


## AndrioPJ

> A ideia e boa,ja usei algo parecido a um tempo atrás,o problema e que tanto no seu script quanto no que eu usava nao respeita a o burst limit, pra mim infelizmente isso inviabilizou o uso do mesmo,um exemplo pra os menos intendidos: velocidade contratada 2048k , burst limit: 2298k , o pico máximo sempre e 2M. que seria os 2048k.
> 
> Para os que utilizam planos sem brust funciona 100%


Cheguei a ver uns script na internet quando estava estudando uma solução, esses ignoravam totalmente a configuração do burst,.
Mas vale salientar que Esse que postei adiciona regras para burst tbm...

----------


## JonasMT

Bom to rodando em cima de 900 cliente, até agora tudo ok. Achei uma boa melhora mesmo quando o link esta no gargalo.
Processamento subiu um pouco mas nada absurdo.

----------


## sostenes

então... ,verifica ai só é adicionado o burst na primeira regra, nas demais nao tem.

----------


## alextaws

vou aguardar mais testes dos colegas

----------


## Mitigo

Vou testar assim que possível.

----------


## AndrioPJ

> então... ,verifica ai só é adicionado o burst na primeira regra, nas demais nao tem.


Se notar, ele dá burst no geral.
No mais, ele tbm dá burst para arquivos pequenos tbm, que em sua grande maioria, é navegação.

----------


## PabloDelfino

> Prezados,
> 
> De uns tempo pra cá, vira e mexe recebemos ligações de clientes reclamando que não conseguem acessar nada ou que está extremamente lento, e quando vamos ver a conexão, o consumo de banda do cliente está em 100%.
> Em 90% dos casos é com destino a IP da Microsoft, o que nos leva a crer ser atualização.
> 
> Sendo que desde o lançamento do Windows 10, a quantidade de ligações desse tipo aumentou.
> 
> Diante de tal problema, resolvi ir atrás de alguma solução de QoS individual e automático.
> Consegui achar alguns exemplos de scripts na internet, fiz algumas modificações para poder gerar QoS automático para clientes com ou sem Burst.
> ...


Muito boa sua contribuição amigo, Parabéns.
Mas aqui não funcionou, o script não adiciona as regras de queue tree!

----------


## sostenes

e script funciona sim ,revise onde colocou as regras,qual a versão do seu mikrotik?

----------


## PabloDelfino

Deve funcionar sim mas aqui não rolou.
Peguei outro que achei no fórum da MK-Auth onde adicionei direto em system>Scripts e funcionou
Versão 6.33.3
Coloquei exatamente no local onde o autor do tópico falou, ppp>profiles Script

----------


## AndrioPJ

> Deve funcionar sim mas aqui não rolou.
> Peguei outro que achei no fórum da MK-Auth onde adicionei direto em system>Scripts e funcionou
> Versão 6.33.3
> Coloquei exatamente no local onde o autor do tópico falou, ppp>profiles Script


Mestre
esse script que passei não é para ser adicionado em System Scripts.
Mas sim na Aba script do PROFILE PPP.

----------


## PabloDelfino

> Mestre
> esse script que passei não é para ser adicionado em System Scripts.
> Mas sim na Aba script do PROFILE PPP.


sim amigo eu compreendi, foi isso mesmo que fiz!
oque me referi a cima foi outro que achei no fórum da MK-Auth onde e adicionado direto no Script do MK, que funcionou.
o seu script direto no profile do ppp aqui não rolou, não sei pq.
Abraço.

----------


## AndrioPJ

prezados,

Localizei um erro no script com relação ao tempo (burst-time) quando maior que 59 segundos. Não chega a ser um erro no script, mas sim uma diferença na forma como o mikrotik armazena o tempo.
Veja na imagem... note que no simple queue está com o Time em 80, mas qdo exportamos a regra ele passa o time em 1m20


o que era para estar 60s, ele recebe como 1m
ou que era para estar 80s, ele recebe como 1m20

Ai dá erro na hora de adicionar a regra para clientes com tempo maior que 59s.

Estou buscando uma forma de converter para segundos.
Se alguém tiver uma sugestão, avisa ai.

----------


## sostenes

aqui em meus testes nao houve esse problema, utilizo sempre 32s e adicionou so 32s o problema e que quando "cai" abaixo do burst threshold nem sempre libera um novo burst limit.

----------


## AndrioPJ

> prezados,
> 
> Localizei um erro no script com relação ao tempo (burst-time) quando maior que 59 segundos. Não chega a ser um erro no script, mas sim uma diferença na forma como o mikrotik armazena o tempo.
> Veja na imagem... note que no simple queue está com o Time em 80, mas qdo exportamos a regra ele passa o time em 1m20
> 
> 
> o que era para estar 60s, ele recebe como 1m
> ou que era para estar 80s, ele recebe como 1m20
> 
> ...


Prezados,

Resolvido!!!
Mais tarde devo atualizar o script.

O que eu fiz?

Quando o script vai buscar o valor do Burst-time, o valor vem assim "upload/download", exemplo:
30s/30s

ou

1m20/1m20

Então, primeiramente eu isolei o download:


```
    :local burstt [/queue simple get $i burst-time];
    :local indexExplod [:find $burstt "/"];
    :local lenth [:len $burstt];
    :local bt [:pick $burstt ($indexExplod + 1) ($lenth - 1)];
```

 
Pronto, com o código acima eu tenho apenas o valor do download.
O problema é quando o tempo é maior que 59s, ai o mikrotik altera de segundos para minutos.
ou seja, 80s vira 1m20

Se tentarmos adicionar uma regra com o valor 1m20, dá erro, e a regra não é adicionada.
Então temos que converter esse 1m20 para 80 segundos.

Consegui fazer isso com o script abaixo:


```
    :local indexExplod [:find $bt "m"];
    :local lenth [:len $bt];
    :local bt0 {:pick $bt 0 ];
    :local bt1 [:pick $bt ($indexExplod + 1) ($lenth - 1)];
    :local bt2 [:pick $bt ($indexExplod + 1) $lenth ];
    :local cBt [(($bt0 * 60) + $bt1)];
```

 
Resumindo:
Primeiro isolei o valor e depois transformei ele em segundos.

----------


## PabloDelfino

Muito bom!
Assim que corrigir o script posta ele, que eu quero testar de novo.

----------


## AndrioPJ

Script atualizado.

----------


## PabloDelfino

Realmente continua a não funcionar aqui!
Na madrugada vou atualizar a RB desse pop para ver se resolve.

----------


## AndrioPJ

> Realmente continua a não funcionar aqui!
> Na madrugada vou atualizar a RB desse pop para ver se resolve.


só para tentar entender...
Os planos dos seus clientes possuem Burst ou não?

Vai no Profile, Aba Script > On UP
E adiciona o seguinte script:


```
:foreach i in=[/queue simple find where name="<pppoe-$user>"] do={
    :local qName [/queue simple get $i name];
    :local rLimit [/queue simple get $i max-limit];
    :local indexExplod [:find $rLimit "/"];
    :local lenth [:len $rLimit];
    :local rl [:pick $rLimit ($indexExplod + 1) ($lenth - 1)];
    :local rlUnity [:pick $rLimit ($lenth - 1) $lenth];
    :local burstl [/queue simple get $i burst-limit];
    :local indexExplod [:find $burstl "/"];
    :local lenth [:len $burstl];
    :local bl [:pick $burstl ($indexExplod + 1) ($lenth - 1)];
    :local blUnity [:pick $burstl ($lenth - 1) $lenth];
    :local burstt [/queue simple get $i burst-time];
    :local indexExplod [:find $burstt "/"];
    :local lenth [:len $burstt];
    :local bt [:pick $burstt ($indexExplod + 1) ($lenth - 1)];
    :local indexExplod [:find $bt "m"];
    :local lenth [:len $bt];
    :local bt0 [:pick $bt 0];
    :local bt1 [:pick $bt ($indexExplod + 1) $lenth];
    :local burstth [/queue simple get $i burst-threshold];
    :local indexExplod [:find $burstth "/"];
    :local lenth [:len $burstth];
    :local bth [:pick $burstth ($indexExplod + 1) ($lenth - 1)];
    :local bthUnity [:pick $burstth ($lenth - 1) $lenth];
    :local c512k [($rl * 55 / 100)];
    :local c5M [($rl * 25 / 100)];
    :local c20M [($rl * 20 / 100)];
    :local c50M [($rl * 15 / 100)];
    :local cInf [($rl * 10 / 100)];
    :local cBt [(($bt0 * 60) + $bt1)];
        :log warning "=== Inicio Script ===";
    :if ([:len $bl] != 0) do={
        :log warning "QoS === $qName";
        :log warning "Com Burst";
        :log warning "Max Limit === $rl $rlUnity";
        :log warning "Burst Limit === $bl $blUnity";
        :log warning "Burst Thr === $bth $bthUnity";
        :log warning "Burst Time=== $cBt";
        :log warning "=== Fim Script ===";
        } \
    else={
        :log warning "QoS === $qName";
        :log warning "Sem Burst";
        :log warning "Max Limit === $rl $rlUnity";
        :log warning "=== Fim Script ===";
 }
}
```

 
Esse script não vai criar nenhuma queue, apenas irá relatar no log os valores que estão recebendo.

----------


## PabloDelfino

Meus clientes estão em sfq sera por isso?

edit.
Realmente fiz o teste com o Script a cima, esta sem burst!

----------


## AndrioPJ

> Meus clientes estão em sfq sera por isso?
> 
> edit.
> Realmente fiz o teste com o Script a cima, esta sem burst!


o SFQ não tem relação.
Com esse ultimo script que passei, apareceu no LOG o nome da queue do cliente e a velocidade???

----------


## PabloDelfino

> o SFQ não tem relação.
> Com esse ultimo script que passei, apareceu no LOG o nome da queue do cliente e a velocidade???


Ai esta o log

----------


## AndrioPJ

> Ai esta o log


Aparentemente, o script em si está coletando as informações necessárias.
então ele deveria estar criando ai as regras no queue tree.

Vamos dar mais um passo.
Nesse ultimo script que te passei, exatamente esse que vc está usando, localize a parte em vermelha:


```
else={
[COLOR="#FF0000"]        :log warning "QoS === $qName";
        :log warning "Sem Burst";
        :log warning "Max Limit === $rl $rlUnity";
        :log warning "=== Fim Script ===";[/COLOR]
 }
}
```

 
e adicione logo abaixo dessa linha em vermelha, o codigo abaixo:


```
/queue tree add name="QoS_$qName" parent="$interface" queue="default" max-limit="$($rl)$rlUnity" bucket-size=0.20;
        /queue tree add name="2-512k_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_512K" queue="default" priority="2" limit-at="$($c512k)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="4-5M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_5M" queue="default" priority="4" limit-at="$($c5M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="6-20M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_20M" queue="default" priority="6" limit-at="$($c20M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="7-50M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_50M" queue="default" priority="7" limit-at="$($c50M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="8-Inf_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_Infinity" queue="default" priority="8" limit-at="$($cInf)$rlUnity" max-limit="$($rl)$rlUnity";
```

 
Ficando da seguinte forma:



```
   else={
        [COLOR="#FF0000"]:log warning "QoS === $qName";
        :log warning "Sem Burst";
        :log warning "Max Limit === $rl $rlUnity";
        :log warning "=== Fim Script ===";[/COLOR]
        /queue tree add name="QoS_$qName" parent="$interface" queue="default" max-limit="$($rl)$rlUnity" bucket-size=0.20;
        /queue tree add name="2-512k_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_512K" queue="default" priority="2" limit-at="$($c512k)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="4-5M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_5M" queue="default" priority="4" limit-at="$($c5M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="6-20M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_20M" queue="default" priority="6" limit-at="$($c20M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="7-50M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_50M" queue="default" priority="7" limit-at="$($c50M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="8-Inf_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_Infinity" queue="default" priority="8" limit-at="$($cInf)$rlUnity" max-limit="$($rl)$rlUnity";
 }
}
```

 
Cuide para copiar toda a regra, inclusive o ;PontoVirgula; que está ao final

----------


## PabloDelfino

> Aparentemente, o script em si está coletando as informações necessárias.
> então ele deveria estar criando ai as regras no queue tree.
> 
> Vamos dar mais um passo.
> Nesse ultimo script que te passei, exatamente esse que vc está usando, localize a parte em vermelha:
> 
> 
> ```
> else={
> ...



O Codigo pronto ficou assim:



```
:foreach i in=[/queue simple find where name="<pppoe-$user>"] do={
    :local qName [/queue simple get $i name];
    :local rLimit [/queue simple get $i max-limit];
    :local indexExplod [:find $rLimit "/"];
    :local lenth [:len $rLimit];
    :local rl [:pick $rLimit ($indexExplod + 1) ($lenth - 1)];
    :local rlUnity [:pick $rLimit ($lenth - 1) $lenth];
    :local burstl [/queue simple get $i burst-limit];
    :local indexExplod [:find $burstl "/"];
    :local lenth [:len $burstl];
    :local bl [:pick $burstl ($indexExplod + 1) ($lenth - 1)];
    :local blUnity [:pick $burstl ($lenth - 1) $lenth];
    :local burstt [/queue simple get $i burst-time];
    :local indexExplod [:find $burstt "/"];
    :local lenth [:len $burstt];
    :local bt [:pick $burstt ($indexExplod + 1) ($lenth - 1)];
    :local indexExplod [:find $bt "m"];
    :local lenth [:len $bt];
    :local bt0 [:pick $bt 0];
    :local bt1 [:pick $bt ($indexExplod + 1) $lenth];
    :local burstth [/queue simple get $i burst-threshold];
    :local indexExplod [:find $burstth "/"];
    :local lenth [:len $burstth];
    :local bth [:pick $burstth ($indexExplod + 1) ($lenth - 1)];
    :local bthUnity [:pick $burstth ($lenth - 1) $lenth];
    :local c512k [($rl * 55 / 100)];
    :local c5M [($rl * 25 / 100)];
    :local c20M [($rl * 20 / 100)];
    :local c50M [($rl * 15 / 100)];
    :local cInf [($rl * 10 / 100)];
    :local cBt [(($bt0 * 60) + $bt1)];
        :log warning "=== Inicio Script ===";
    :if ([:len $bl] != 0) do={
        :log warning "QoS === $qName";
        :log warning "Com Burst";
        :log warning "Max Limit === $rl $rlUnity";
        :log warning "Burst Limit === $bl $blUnity";
        :log warning "Burst Thr === $bth $bthUnity";
        :log warning "Burst Time=== $cBt";
        :log warning "=== Fim Script ===";
        } \
   else={
        :log warning "QoS === $qName";
        :log warning "Sem Burst";
        :log warning "Max Limit === $rl $rlUnity";
        :log warning "=== Fim Script ===";
        /queue tree add name="QoS_$qName" parent="$interface" queue="default" max-limit="$($rl)$rlUnity" bucket-size=0.20;
        /queue tree add name="2-512k_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_512K" queue="default" priority="2" limit-at="$($c512k)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="4-5M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_5M" queue="default" priority="4" limit-at="$($c5M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="6-20M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_20M" queue="default" priority="6" limit-at="$($c20M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="7-50M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_50M" queue="default" priority="7" limit-at="$($c50M)$rlUnity" max-limit="$($rl)$rlUnity";
        /queue tree add name="8-Inf_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_Infinity" queue="default" priority="8" limit-at="$($cInf)$rlUnity" max-limit="$($rl)$rlUnity";
 }
}
```

 

Nada aconteceu!
Apenas autenticou e não emitiu nenhum Log. e nao adicionou nenhuma Queue Tree

----------


## Mitigo

Como faço para que funcione nos dois sentidos upload e download pois o mesmo está tratando somente pacotes​ de download. e AndrioPJ mais uma vez muito obrigado pela contribuição.

----------


## AndrioPJ

> O Codigo pronto ficou assim:
> 
> 
> 
> ```
> :foreach i in=[/queue simple find where name="<pppoe-$user>"] do={
>     :local qName [/queue simple get $i name];
>     :local rLimit [/queue simple get $i max-limit];
>     :local indexExplod [:find $rLimit "/"];
> ...


muito estranho não estar funcionando ai contigo.
Qual a versão do seu Mikrotik? se for RB, qual a versão de firmware tbm?
É possível fazer acesso remoto ai pelo team viewer ou algum programa semelhante??

----------


## PabloDelfino

> muito estranho não estar funcionando ai contigo.
> Qual a versão do seu Mikrotik? se for RB, qual a versão de firmware tbm?
> É possível fazer acesso remoto ai pelo team viewer ou algum programa semelhante??


Achei o Problema amigo,

Estava aqui: "bucket-size=0.20" na hora de adicionar a Queue-tree
Meu MK estava detectando erro

Removi ele e funcionou, qual problema deixar sem?
Notei também que não adicionou Burst Limit

----------


## int21

Andrio, parabens pela postagem, como já disseram, de alto nível.

Fiz varios testes aqui em um cenario com cerca de 550 pppoe, e constatei o seguinte:

Funciona muito bem e pode sim ser bem melhorado a partir desta ideia, a exemplo, fragmentacões de torrent e outros P2P em porta 443 não são vistas pelo filtro P2P nem pelo script (que não é o papel dele é lógico) pois ja vem fragmentado, teríamos que descobrir uma forma de usar um DIP (Deep Inspection Pack) em mikrotik pra fazer isso mas até agora não vi como pois esta funcionalidade esta como uma feature do iptables, mas se for nessa linha beira a perfeição. 

No mais, só elogios pela disposição do feito.

Abraços!!

----------


## eberty

> :local c512k [($rl * 55 / 100)];
> :local c5M [($rl * 25 / 100)];
> :local c20M [($rl * 20 / 100)];
> :local c50M [($rl * 15 / 100)];
> :local cInf [($rl * 10 / 100)];


AndrioPJ, fiquei com uma duvida aqui, a soma desses dados não teria que dar 100%?

----------


## AndrioPJ

> AndrioPJ, fiquei com uma duvida aqui, a soma desses dados não teria que dar 100%?


a principio sim.
Mas observei que nem sempre todas as regras estão sendo usadas simultaneamente.
na grande maioria tem 2, no máximo 3 regras sendo usadas.
Por isso, pensei em garantir um minimo maior.

----------


## AndrioPJ

> Achei o Problema amigo,
> 
> Estava aqui: "bucket-size=0.20" na hora de adicionar a Queue-tree
> Meu MK estava detectando erro
> 
> Removi ele e funcionou, qual problema deixar sem?
> Notei também que não adicionou Burst Limit


Sobre o bucket-size, não tem nenhum problema em exclui-lo.
por padrão, quando não é mencionado, ele já usa o valor de 0.10.

Como você já achou o problema, tenta copiar/usar o script que está na pagina inicial e remove apenas o bucket-size.
ele deve adicionar as regras de burst-limite no geral, e na 1 regra de QoS (para pacotes pequenos).

----------


## AndrioPJ

> Olá a todos, a principio, gostaria de agradecer e muito ao AndrioPJ, esse Qos dinâmico transformou a experiência dos meus usuários, o pessoal ligou perguntando o que aconteceu... e realmente ao entrar em um site que o pessoal usa muito eu me deparei com as aberturas muito mais rápidas das janelas de exibição, coisa impressionante!!! Como pode algumas regras mudarem tanto a rede... mais uma vez, OBRIGADO!!!


Opa, valeu grande.

----------


## PabloDelfino

> Sobre o bucket-size, não tem nenhum problema em exclui-lo.
> por padrão, quando não é mencionado, ele já usa o valor de 0.10.
> 
> Como você já achou o problema, tenta copiar/usar o script que está na pagina inicial e remove apenas o bucket-size.
> ele deve adicionar as regras de burst-limite no geral, e na 1 regra de QoS (para pacotes pequenos).


Ja fis isso @*AndrioPJ*
Mas o Burst Limit realmente não vai.
Será a versão do Meu MK que esta causando isso? Ros 6.33.3 - Firm. 3.10

----------


## AndrioPJ

> Ja fis isso @*AndrioPJ*
> Mas o Burst Limit realmente não vai.
> Será a versão do Meu MK que esta causando isso? Ros 6.33.3 - Firm. 3.10


o do burst possui o bucket-size tbm, vc retirou ele?
de qualquer forma, realmente pode ser versão da RB.
Aqui eu uso a versão 6.37.5 Bugfix only

----------


## eberty

> a principio sim.
> Mas observei que nem sempre todas as regras estão sendo usadas simultaneamente.
> na grande maioria tem 2, no máximo 3 regras sendo usadas.
> Por isso, pensei em garantir um minimo maior.


Obrigado pela resposta.

----------


## PabloDelfino

> o do burst possui o bucket-size tbm, vc retirou ele?
> de qualquer forma, realmente pode ser versão da RB.
> Aqui eu uso a versão 6.37.5 Bugfix only


Realmente, o erro estava relacionado a versão do mikrotik, atualizei para 6.37 e a regra com bucket-cize passou a funcionar
Porem o Burst-limit não funciona!

----------


## PabloDelfino

Outra falha @*AndrioPJ*
O script Esta adicionando parent errado!
Fez uma confusão aqui,Telefone começou a tocar reclamando de lentidão fui olhar e... olha no print.

----------


## ShadowRed

PPPoE ou PPoE ? 

Do resto ótima contribuição [emoji106]

----------


## AndrioPJ

> Outra falha @*AndrioPJ*
> O script Esta adicionando parent errado!
> Fez uma confusão aqui,Telefone começou a tocar reclamando de lentidão fui olhar e... olha no print.


estranho...

Aconteceu o mesmo com mais alguém?

----------


## AndrioPJ

> Realmente, o erro estava relacionado a versão do mikrotik, atualizei para 6.37 e a regra com bucket-cize passou a funcionar
> Porem o Burst-limit não funciona!


Não adiciona a regra com Burst ou não libera o Burst?

----------


## eduardomazolini

> estranho...
> 
> Aconteceu o mesmo com mais alguém?


Será que ele esta tratando de certa forma como global?
Se criar uma variável pro nome das variáveis exemplo adicionando os segundos aos nomes?
segs = 23.312
user$segs = "Joao"
blabla usuario=$user23.312

Algumas linguagens de programação permitem não sei se da certo no mikrotik

----------


## AndrioPJ

> Será que ele esta tratando de certa forma como global?
> Se criar uma variável pro nome das variáveis exemplo adicionando os segundos aos nomes?
> segs = 23.312
> user$segs = "Joao"
> blabla usuario=$user23.312
> 
> Algumas linguagens de programação permitem não sei se da certo no mikrotik


pois é... n deveria.
pois cada vez que ele roda, ele atualiza a variavel.

----------


## PabloDelfino

> Não adiciona a regra com Burst ou não libera o Burst?


Boa tarde @*AndrioPJ*
Ele não Adiciona a Queue Tree com Burst!
Adiciona Apenas LImit At e Max LImit , ta certo isso?

----------


## PabloDelfino

> Adiciona o Burst normal, 100% funcional, eu estou usando a 2 semanas, sem problemas.


Que estranho isso, será que é só Comigo esse trem!

----------


## JonasMT

Aqui quando cliente desconecta do pppoe e volta ele nao adicionar a regra correta de parent tbm, ao deletar da queue ai que ele adicona tudo pelas metade. Mais alguem com esse problema?

----------


## AndrioPJ

> Aqui quando cliente desconecta do pppoe e volta ele nao adicionar a regra correta de parent tbm, ao deletar da queue ai que ele adicona tudo pelas metade. Mais alguem com esse problema?


vc notou se quando ele desconecta se está sendo excluído automaticamente as regras desse cliente?

----------


## PabloDelfino

> Aqui quando cliente desconecta do pppoe e volta ele nao adicionar a regra correta de parent tbm, ao deletar da queue ai que ele adicona tudo pelas metade. Mais alguem com esse problema?


Mesmo problema aqui!!

Vamos achara o problema @*AndrioPJ* dai sim vai ficar TOP.

----------


## JonasMT

> vc notou se quando ele desconecta se está sendo excluído automaticamente as regras desse cliente?


Nao deleta e creio ser justamente esse o problema, ao fazer manual ele se perde de vez.

----------


## jrdecezere

Coloquem um ( :delay 3s; ) no início do script que vai resolver, boa noite a todos

----------


## JonasMT

> Coloquem um ( :delay 3s; ) no início do script que vai resolver, boa noite a todos


Alguem testo a dica acima?

----------


## eberty

> Alguem testo a dica acima?


Eu uso delay em quase todas as regras dos Scripts, até mesmo nas do mk-auth.

----------


## AndrioPJ

> Nao deleta e creio ser justamente esse o problema, ao fazer manual ele se perde de vez.


Vc adicionou a regra na aba Scripts > On Down ???

----------


## gregorypv

> Prezados,
> 
> Resolvido!!!
> Mais tarde devo atualizar o script.
> 
> O que eu fiz?
> 
> Quando o script vai buscar o valor do Burst-time, o valor vem assim "upload/download", exemplo:
> 30s/30s
> ...


Massa

----------


## gregorypv

Assim que chegar a minha ccr de backup eu irei testar

----------


## JonasMT

> Vc adicionou a regra na aba Scripts > On Down ???


Sim foi adicionado!

----------


## alextaws

a regra esta 100% estável? posso testar?

----------


## JonasMT

> a regra esta 100% estável? posso testar?


Aqui tive os problema que citei acima, quando cai pppoe ele nao recria as regras corretas. Deletei tudo copie novamente e problema continuo, fui obrigado a tirar.

----------


## JonasMT

> Jonas, no meu caso, quando um cliente cai, a regra é removida, assim que ele entra, a regra é criada, tudo automaticamente.
> Não tive problemas.
> Anexo 67101


Qual versao do router se ta usando? Aqui ele cria pelas metade, se deletar ela manualmente por completo ai é que nao cria nada, ou pega o parent global unknown.

Aqui sao cerca 920 sessão pppoe

----------


## NielsonPadilha

Aqui não uso Burst. Qual como devo por o script? 

Meus planos hoje são: 2megas, 3megas, 4megas e 5megas.

Clientes usando IP público sem nat.

Obrigado

----------


## NielsonPadilha

Vou testar aqui. Tô tendo problemas depois das 9 horas até as 00:00 do cliente não conseguir consumir a banda toda nas redes sociais e YouTube mesmo com link sobrando. Acredito que seja o fornecedor e estamos para trocar o mesmo.

----------


## pedrohafe

Que tópico meus colegas!!! Altíssimo nível!! Por isso antes de testar essas regras eu gostaria de ler algum material sobre QoS no RouterOS. Gostaria de ter um entendimento mais aprofundado sobre o tema antes de aplicar uma solução tão sofisticada. Alguém tem um material para disponibilizar aqui?

----------


## eduardomazolini

Tem um PDF de uma apresentação do mum. Muito boa. Atenção que mudou o QoS da versão 6. Tem muita gente falando coisas da versão anterior.

----------


## pedrohafe

Opa, se puder deixar o link aí, seria de grande ajuda.

----------


## oliari

Boa tarde muito boa a contribuição. Adicionei as regras na rb 3011 com 210 conexões ppoe, com planos 1,2 e 3 megas tudo funcionando perfeitamente. Notei uma boa melhora na navegação dos clientes.

----------


## EvertonMachado

> Prezados,
> 
> De uns tempo pra cá, vira e mexe recebemos ligações de clientes reclamando que não conseguem acessar nada ou que está extremamente lento, e quando vamos ver a conexão, o consumo de banda do cliente está em 100%.
> Em 90% dos casos é com destino a IP da Microsoft, o que nos leva a crer ser atualização.
> 
> Sendo que desde o lançamento do Windows 10, a quantidade de ligações desse tipo aumentou.
> 
> Diante de tal problema, resolvi ir atrás de alguma solução de QoS individual e automático.
> Consegui achar alguns exemplos de scripts na internet, fiz algumas modificações para poder gerar QoS automático para clientes com ou sem Burst.
> ...


AndrioPJ...você esta de parabéns pela dedicação e principalmente pela boa vontade/iniciativa em compartilhar este material.

Router OS v6.37.5...ao aplicar as regras nos profiles de cada plano não surgiu efeito no On Up e On Down, percebi que o meu servidor PPPoE esta considerando/usando os profiles "remotos" do servidor Radius (sistema de gestão), então apliquei as regras no ServerProfile (é o default profile do servidor PPPoE) e bombou.

Inicialmente tudo funcionando perfeitamente, tanto na conexão como na queda do túnel PPPoE do cliente, vou acompanhar o desempenho para deixar um Feedback na sequencia.

Sei que este detalhe não é tão simples assim, mas quanto ao Queue Type alguém tem alguma sugestão para o melhor Kind (pcq ou pfifo ou sfq) ???

----------


## redecompleta

Boa tarde.
AndrioPJ, quando pegar um conteúdo alheio para publicar em um fórum e querer se engrandecer sobre o assunto, pelo menos tenha a decência de dar os mérito ao autor e no caso sou eu Caio Fabeni.
Vc copiou ate mesmo oque eu falo no vídeo.
Já que vc fez esse QoS Individual explica ai para os membros o motivo de nao funcionar o UPload.

Para que não fique duvidas da uma olhada no vídeo,



Só procurar no meu canal que tem esse conteúdo com data bem mais antiga.

No minimo comprou meu treinamento em vídeo e veio aqui tentar ganhar moral.

Para que saiba quem escreveu sou eu o dono do conteúdo CAIO FABENI.

----------


## avatar52

Eu até pensei em falar que esse conteúdo era do Caio Fabeni (pois eu vi você postando no Facebook), sendo que até o presente momento o único que produziu esse QoS via script é você.

Mas para evitar criar atritos nesse fórum, eu preferi ficar quieto. 

Eu já tentei publicar materiais aqui para ajudar o pessoal mas foi tanta cópia e venda do meu material que renderia um processo para um monte aqui, então abandonei. Esse fórum está virando um lixo, estou com pena.

----------


## redecompleta

Alem de copiar, ainda fala que ele que desenvolveu. rsrs
É para acabar um cara desse.
E ainda esta como Moderador do Forum.
Esse forum ja foi melhor. rsr
A anos eu não participo, só me cadastrei novamente que achei uma sacanagem do cidadão, na maior cara de pau.

----------


## MarcusMaciel

acho melhor esperarem o @*AndrioPJ* falar e dar suas versões dos fatos.

----------


## MarcusMaciel

E adicionando O Vídeo em si não prova nada. Até porque, eu já fazia algo parecido com iptables , HTB/CBQ 18 anos atrás, logo não tem nada de inovador no que o @*AndrioPJ* fez ou no que o @*redecompleta* fez.

Outro ponto é, se o que foi feito não foi patenteado ou é uma tecnologia inovadora que nunca foi usada por ninguém no mundo não sei nem pq estamos tendo essa discussão aqui.

De toda forma vamos esperar o @*AndrioPJ* se pronunciar se de fato ele copiou algo ele vai falar  :Smile: 

Quer ver outro exemplo ?

no Ano de 2000 eu fiz esse artigo
http://www.abusar.org.br/PPPOE_RADIUS_BANDLIMIT.html

Hoje todo mundo usa PPPOE RADIUS e BANDLIMIT, seja no linux, no mikrotik ou etc mas eu fui o primeiro e nem por isso eu fiquei mordido  :Smile:

----------


## redecompleta

Legal, que ate os nomes ele colocou igual. 
O script esta igual ao meu.
No minimo comprou meu treinamento pegou as regras e jogou aqui, chamei ele no face até o momento não me respondeu.
Sobre o Video veja que os nomes são iguais ao que esta no post dele. ou vc acho muita coincidência.
Mas vamos ver oque o mesmo vai falar.

----------


## redecompleta

" Outro ponto é, se o que foi feito não foi patenteado ou é uma tecnologia inovadora que nunca foi usada por ninguém no mundo não sei nem pq estamos tendo essa discussão aqui. "
Sobre isso , quando compra um treinamento em video meu, tem um contrato onde diz que nao pode vender, compartilhar etc etc etc...
E o mesmo me parece que fez tudo ao contrario.

Mas como vc mesmo disse, não sei por que estamos falando disso.

----------


## MarcusMaciel

@*redecompleta*, como você disse se até o nome das regras são iguais eu creio que algo duvidoso tenha acontecido, mas temos que esperar o @*AndrioPJ* se explicar.

Sobre contrato de treinamento, creio que você esteja se referindo a vídeos ou powerpoints do seu treinamento, pois sintaxe e comandos a serem usados no mikrotik não creio que se aplicam a nenhum contrato. 

Você pode até ter feito um treinamento legal e ensinado alguém, mas você não criou o Mikrotik, você não criou QoS, você não criou limitação de banda logo você não tem direito intelectual sobre nada nesse sentido desta forma. 

O @*AndrioPJ* pode ter copiado e se fez deveria ter citado a fonte em suas referências como fez com várias outras ocasiões, mas você NUNCA pode limitar ninguem de compartilhar comandos/sintaxes de Mikrotik com ninguém simplesmente por que você não tem autoridade sobre o mesmo, mas como disse se fosse um vídeo ou um powerpoint iria concordar com você completamente no seu último comentário.

De toda forma acho legal que você de e crie treinamentos e mesmo sem lhe conhecer lhe admiro. 

Sobre o @*AndrioPJ* ser moderador, isso não é relevante, pois qualquer um pode ser moderador até o @*avatar52* era, e ficou bravo com algo e falou que nunca mais iria voltar, pediu para deletar sua conta e está ai de volta usando o nick @*avatar52* ne não Arthur ?

O mundo dá voltas e muitas pessoas vão, voltam outras já até morreram nos 17 anos de underlinux, mas o principal que peço a todos é profissionalismo e paz.

----------


## avatar52

Tentei dar uma chance pra esse fórum, porque como moderador levei mais pauladas que os outros.

Como viu acima, pelo Andrio ser moderador já virou motivo.

----------


## MarcusMaciel

Você levou mais paulada que os outros devido a forma que se dirigia às pessoas.

Existem pessoas que aprendem rápido, outras devagar e outras nunca vão aprender. O que você precisa aprender é tratar todos com respeito, educação ou então apenas ficar calado.

Mas não vamos poluir o tópico com isso, só quero que o mundo seja melhor  :Smile:

----------


## avatar52

Não sou obrigado a mudar a minha forma de falar ou de me dirigir aos sujeitos aqui por causa de alguns que ficam choramingando, estou pouco me lixando para eles como eles pouco se preocupam comigo. 

A minha luta sempre será de acabar com receitinhas de bolo e provedores de fundo de quintal, e sempre manterei minha fala, não vou abaixar meu tom pra ninguém. 

Não leve nada pro lado pessoal, também quero que o mundo seja melhor, mas com pessoas melhores, não com um bando de preguiçosos em pleno 2017.

Se para participar desse fórum tem que ficar alisando as pessoas, por favor me exclua e eu desisto de ajudar nesse fórum. 

Novamente, não leve nada pro lado pessoal como uma meia dúzia de bebês aqui.

----------


## eduardomazolini

> Não sou obrigado a mudar a minha forma de falar ou de me dirigir aos sujeitos aqui por causa de alguns que ficam choramingando, estou pouco me lixando para eles como eles pouco se preocupam comigo. 
> 
> A minha luta sempre será de acabar com receitinhas de bolo e provedores de fundo de quintal, e sempre manterei minha fala, não vou abaixar meu tom pra ninguém. 
> 
> Não leve nada pro lado pessoal, também quero que o mundo seja melhor, mas com pessoas melhores, não com um bando de preguiçosos em pleno 2017.
> 
> Se para participar desse fórum tem que ficar alisando as pessoas, por favor me exclua e eu desisto de ajudar nesse fórum. 
> 
> Novamente, não leve nada pro lado pessoal como uma meia dúzia de bebês aqui.


Triste fala.

----------


## MaxSolucao

e esse aki é de quem?


# REGRAS MANGLE
/ip firewall mangle
add action=mark-packet chain=forward comment=PRIO4-QoS_512k connection-bytes=1-512000 new-packet-mark=PRIO4-QoS_512k passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment=PRIO5-QoS_5M connection-bytes=512000-5000000 new-packet-mark=PRIO5-QoS_5M passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment=PRIO6-QoS_20M connection-bytes=5000000-20000000 new-packet-mark=PRIO6-QoS_20M passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment=PRIO7-QoS_50M connection-bytes=20000000-50000000 new-packet-mark=PRIO7-QoS_50M passthrough=yes protocol=tcp
add action=mark-packet chain=forward comment=PRIO8-QoS_Infinity connection-bytes=50000000-0 new-packet-mark=PRIO8-QoS_Infinity passthrough=yes protocol=tcp

# SCRIPTS
/system script
add name=on_down policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive source="##########################################\r\
\n# QoS Dinamico Individual PPPoE\r\
\n# Remover Queue Tree PPPoE\r\
\n# By Jonas Oliveira\r\
\n##########################################\r\
\n:delay 1s;\r\
\n/queue tree remove [find where invalid];\r\
\n##########################################"
add name=on_up policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive source="##########################################\r\
\n# QoS Dinamico Individual PPPoE\r\
\n# Adiciona Queue Tree PPPoE\r\
\n# By Jonas Oliveira\r\
\n# Versao: 2.0\r\
\n##########################################\r\
\n#================== VARIAVEIS ==================\r\
\n# Plano Maximo Para o QoS ( em M )\r\
\n:local PLANOMAXIMO 5;\r\
\n#\r\
\n# Plano Minimo Para o QoS ( em k )\r\
\n:local PLANOMINIMO 1024;\r\
\n#\r\
\n##########################################\r\
\n:delay 3s;\r\
\n:foreach i in=[/queue simple find where name=\"<pppoe-\$user>\"] do={\r\
\n:local queuename [/queue simple get \$i name];\r\
\n:local rate [/queue simple get \$i max-limit];\r\
\n:local down [ :Stick Out Tongue: ick \"\$rate\" \"\$([:find \"\$rate\" \"/\" -1 ] + 1)\" \"\$([:len \"\$rate\"] - 1)\" ]; \r\
\n:local unidade [ :Stick Out Tongue: ick \"\$rate\" \"\$([:len \"\$rate\"] - 1)\"];\r\
\n:local maxlimit \"\$down\";\r\
\n:if (\"\$unidade\" = \"k\") do={\r\
\n:set maxlimit \"\$down\"; \r\
\n} else={\r\
\n:set maxlimit [:tonum \"\$(\$down * 1024)\"];\r\
\n:set unidade \"k\";\r\
\n}\r\
\n:if ((\$maxlimit <= \"\$(\$PLANOMAXIMO * 1024)\") && (\$maxlimit >= \$PLANOMINIMO)) do={ \r\
\n/queue tree \r\
\nadd name=\"QoS_\$queuename\" max-limit=\"\$maxlimit\$unidade\" parent=\"\$queuename\" queue=\"default\";\r\
\nadd name=\"PRIO4-QoS_512k_\$queuename\" max-limit=\"\$maxlimit\$unidade\" limit-at=\"\$(\$maxlimit * 50 / 100)\$unidade\" packet-mark=\"PRIO4-QoS_512k\" parent=\"QoS\
_\$queuename\" priority=\"4\" queue=\"default\";\r\
\nadd name=\"PRIO5-QoS_5M_\$queuename\" max-limit=\"\$maxlimit\$unidade\" limit-at=\"\$(\$maxlimit * 20 / 100)\$unidade\" packet-mark=\"PRIO5-QoS_5M\" parent=\"QoS_\$q\
ueuename\" priority=\"5\" queue=\"default\";\r\
\nadd name=\"PRIO6-QoS_20M_\$queuename\" max-limit=\"\$maxlimit\$unidade\" limit-at=\"\$(\$maxlimit * 15 / 100)\$unidade\" packet-mark=\"PRIO6-QoS_20M\" parent=\"QoS_\
\$queuename\" priority=\"6\" queue=\"default\";\r\
\nadd name=\"PRIO7-QoS_50M_\$queuename\" max-limit=\"\$maxlimit\$unidade\" limit-at=\"\$(\$maxlimit * 10 / 100)\$unidade\" packet-mark=\"PRIO7-QoS_50M\" parent=\"QoS_\
\$queuename\" priority=\"7\" queue=\"default\";\r\
\nadd name=\"PRIO8-QoS_Infinity_\$queuename\" max-limit=\"\$maxlimit\$unidade\" limit-at=\"\$(\$maxlimit * 5 / 100)\$unidade\" packet-mark=\"PRIO8-QoS_Infinity\" pare\
nt=\"QoS_\$queuename\" priority=\"8\" queue=\"default\";\r\
\n};\r\
\n};\r\
\n##########################################"

# SETAR SCRIPTS NO PROFILE PPPOE	
/ppp profile set on-down=on_down on-up=on_up [find];


Esse é do fórum MK-Auth

----------


## muttley

Muito bom! Esse qos. Mas pra quem tem link sobrando! 
Eu coloquei um cache, e esta sempre pegando o windows update e avast. rsrsrsrs....
Até nem era pra fazer isso, cliente que se vire com a banda que tem!!!

----------


## AndrioPJ

> Legal, que ate os nomes ele colocou igual. 
> O script esta igual ao meu.
> No minimo comprou meu treinamento pegou as regras e jogou aqui, chamei ele no face até o momento não me respondeu.
> Sobre o Video veja que os nomes são iguais ao que esta no post dele. ou vc acho muita coincidência.
> Mas vamos ver oque o mesmo vai falar.


Opa... Estava mto corrido aqui e não percebi esses comentários, só fui tomar conhecimento depois que me procuraram no facebook, mas vamos lá...:

As regras que postei aqui são EXATAMENTE IGUAIS AS SUAS?
pois então achei parte delas no forum da mikrotik, do mkauth e outros, datado em 2014~2015 (se observar, até citei algumas fontes, mas n todas), E se procurar mais a fundo, acha regras ou trechos "parecidos" em outros locais... E elas não eram suas, agora virando o feitiço contra o feiticeiro: "então você copiou de outro e não citou fontes no seu curso???"

De qualquer forma, essas regras que achei em outros locais, n possuía suporte a burst, nem fazia o calculo do tempo.
algo que criei na unha.

----------


## redecompleta

Segue a vida, vamos que vamos.

----------


## AndrioPJ

Como citei acima, cheguei a pesquisar esse assunto em vários locais, vi vários tópicos e videos, não cheguei a citar todos os fontes pq alguns acabei perdendo enquanto estudava o assunto (mas se quiser, posso editar o tópico inicial e adicionar seu video como fonte? pra mim n tem problema).

Me recordo de ter visto seu vídeo de demonstração (esse mesmo que vc postou ai), ele me deu umas ideias tbm.

De qualquer forma, me mandaram no privado (facebook) seu script e Acabei de analisar.... tem varias diferenças:
1- As variáveis não são as mesmas.
2 - nas suas regras de firewall, vc faz marcação em uma interface, e nesse script que postei faz marcação em outra interface.
3 - Seu script não verifica se o usuário possui burst ou não, nem adiciona nenhuma regra de burst.
4 - Seu script não faz a conversão do tempo recebido para um valor que o mikrotik aceite, alias, nem sequer menciona parte disso. Por exemplo, se o Burst Time do cliente é 80s, o script ao buscar esse dado, o mikrotik retorna o valor de 1m20... se pegar esse valor e adicionar a regra, dá erro.... Esse script que postei pega esse valor e converte de volta para 80.

PS: esse script postado aqui já está 2 versão atrás, tenho novas regras nele.
Inclusive, tem uma versão que criei que faz do upload tbm, mas ai as regras quase que duplicam, e acaba não compensando, consome mto recurso da RB.

----------


## NielsonPadilha

> Como citei acima, cheguei a pesquisar esse assunto em vários locais, vi vários tópicos e videos, não cheguei a citar todos os fontes pq alguns acabei perdendo enquanto estudava o assunto.
> 
> Me recordo de ter visto seu vídeo de demonstração (esse mesmo que vc postou ai), ele me deu umas ideias tbm.
> 
> De qualquer forma, me mandaram no privado (facebook) seu script e Acabei de analisar.... tem varias diferenças:
> 1- As variáveis não são as mesmas.
> 2 - nas suas regras de firewall, vc faz marcação em uma interface, e nesse script que postei faz marcação em outra interface.
> 3 - Seu script não verifica se o usuário possui burst ou não, nem adiciona nenhuma regra de burst.
> 4 - Seu script não faz a conversão do tempo recebido para um valor que o mikrotik aceite, alias, nem sequer menciona parte disso. Por exemplo, se o Burst Time do cliente é 80s, o script ao buscar esse dado, o mikrotik retorna o valor de 1m20... se pegar esse valor e adicionar a regra, dá erro.... Esse script que postei pega esse valor e converte de volta para 80.
> ...


 @*AndrioPJ* Gostei bastante do script. Tô usando aqui.

----------


## eduardomazolini

@*Adriano*PJ acho que deve, como você se propôs citar ele, já que lembra de ter usado. O cara foi infeliz na forma de expor principalmente em justificar. A inversão sua é válida. Eu ainda não tô usando, nem sei se vou, mas tô seguindo que gostei da iniciativa. Você expôs uma forma de fazer em cima de regras que todos tem acesso e conhecem, o que vai permitir colaboração pra sua melhoria. 

Dizer que vai banir as receitas de bolo é ridículo. Seguindo a idéia da receita de bolo todos nós sabemos fazer bolo, conhecemos os ingredientes, mas as vezes pegamos na receita dos outros a dica da pitada de sal o pulinho que faz toda a diferença. Agora pode alguém pegar a receita e se queimar no forno, falta de prática e conhecimento mínimo. Culpa de quem escreveu a receita, dela existir?
Por isso a partir de agora só admitirmemos comer de cozinheiros formados.

----------


## muttley

kkkkkkkk .... isso aê!!! ok... blz! Mas não digo de cozinheiros formados, mas de grande estrada, grandes anos!!!!!!

----------


## AndrioPJ

> Como citei acima, cheguei a pesquisar esse assunto em vários locais, vi vários tópicos e videos, não cheguei a citar todos os fontes pq alguns acabei perdendo enquanto estudava o assunto (mas se quiser, posso editar o tópico inicial e adicionar seu video como fonte? pra mim n tem problema).
> 
> Me recordo de ter visto seu vídeo de demonstração (esse mesmo que vc postou ai), ele me deu umas ideias tbm.
> 
> De qualquer forma, me mandaram no privado (facebook) seu script e Acabei de analisar.... tem varias diferenças:
> 1- As variáveis não são as mesmas.
> 2 - nas suas regras de firewall, vc faz marcação em uma interface, e nesse script que postei faz marcação em outra interface.
> 3 - Seu script não verifica se o usuário possui burst ou não, nem adiciona nenhuma regra de burst.
> 4 - Seu script não faz a conversão do tempo recebido para um valor que o mikrotik aceite, alias, nem sequer menciona parte disso. Por exemplo, se o Burst Time do cliente é 80s, o script ao buscar esse dado, o mikrotik retorna o valor de 1m20... se pegar esse valor e adicionar a regra, dá erro.... Esse script que postei pega esse valor e converte de volta para 80.
> ...


5 - No seu script, no firewall vc faz as mesmas marcações, uma para TCP e outra UDP, nesse que postei existe uma unica marcação para os dois.
6 - No seu script, vc nem menciona o bucket-size, no que postei, na regra Queue Tree Pai possui bucket-size = 0.20
7 - No seu script, se somar o valor do limit-at das regras filha dá igual a 100% do valor do max-limit da regra pai. No caso do script que postei, ele dá um pouco mais... pois qdo estava criando as regras, percebi que nem sempre todas as regras filha estão sendo usadas, logo, o limit-at das regras filha poderiam ser um pouco maior.
8 - Desconsiderando os comentários e as regras de debug do script, o seu tem no total 34 regras, o que postei aqui tem 37, e o Atual que uso (estou testando) tem 42.





> @*Adriano*PJ *acho que deve, como você se propôs citar ele*, já que lembra de ter usado. O cara foi infeliz na forma de expor principalmente em justificar. A inversão sua é válida. Eu ainda não tô usando, nem sei se vou, mas tô seguindo que gostei da iniciativa. Você expôs uma forma de fazer em cima de regras que todos tem acesso e conhecem, o que vai permitir colaboração pra sua melhoria. 
> 
> Dizer que vai banir as receitas de bolo é ridículo. Seguindo a idéia da receita de bolo todos nós sabemos fazer bolo, conhecemos os ingredientes, mas as vezes pegamos na receita dos outros a dica da pitada de sal o pulinho que faz toda a diferença. Agora pode alguém pegar a receita e se queimar no forno, falta de prática e conhecimento mínimo. Culpa de quem escreveu a receita, dela existir?
> Por isso a partir de agora só admitirmemos comer de cozinheiros formados.


Opa, vou editar o tópico inicial e adicionar o vídeo dele.

----------


## MaxSolucao

O cara quis foi fazer uma propaganda do curso dele aki.
Isso foi pura jogada de marketing.

----------


## killerwollf

AndrioPJ pretende postar este novo que esta testando tbm?

----------


## AndrioPJ

> AndrioPJ pretende postar este novo que esta testando tbm?


Sim,
Coloquei ele em apenas um dos concentradores, ainda não tive um feedback se continua a mesma coisa, ou se piorou/melhorou algo.
E como não tive tempo para colocar no concentrador da minha casa, ainda não consegui testar.

O que foi feito de diferente nessa nova versão do script?
Apesar da primeira regra abranger pacotes pequenos (entre eles o ping), basicamente o que fiz foi adicionar mais algumas marcações/queue para ping e outros serviços importantes (como voip, dns, etc...), para que eles tenham uma prioridade diferente das demais e não seja afetado mesmo qdo o cliente está "apenas" navegando.

Pois notei o seguinte:
Em uma casa com muitas pessoas, mesmo que estejam apenas navegando na internet (sem fazer download ou assistir video), o consumo de banda acaba sempre atingindo os 100% por longos períodos (a regra Queue tree usada fica sempre na primeira em 100% de uso), ai o ping (ou outros serviços importantes como voip, dns) acabam oscilando/sendo prejudicados, pois tem que concorrer com o restante do trafego.

Depois que tiver testado e chegado a um script bacana, vou começar a estudar melhor o script para ver se consigo diminuir a quantidade de regras sem afetar o resultado final.

----------


## killerwollf

Parece promissor, Boa sorte!

----------


## EvertonMachado

> Sim,
> Coloquei ele em apenas um dos concentradores, ainda não tive um feedback se continua a mesma coisa, ou se piorou/melhorou algo.
> E como não tive tempo para colocar no concentrador da minha casa, ainda não consegui testar.
> 
> O que foi feito de diferente nessa nova versão do script?
> Apesar da primeira regra abranger pacotes pequenos (entre eles o ping), basicamente o que fiz foi adicionar mais algumas marcações/queue para ping e outros serviços importantes (como voip, dns, etc...), para que eles tenham uma prioridade diferente das demais e não seja afetado mesmo qdo o cliente está "apenas" navegando.
> 
> Pois notei o seguinte:
> Em uma casa com muitas pessoas, mesmo que estejam apenas navegando na internet (sem fazer download ou assistir video), o consumo de banda acaba sempre atingindo os 100% por longos períodos (a regra Queue tree usada fica sempre na primeira em 100% de uso), ai o ping (ou outros serviços importantes como voip, dns) acabam oscilando/sendo prejudicados, pois tem que concorrer com o restante do trafego.
> ...


AndrioPJ...você esta de parabéns pela dedicação e principalmente pela boa vontade/iniciativa em compartilhar este material... independente das circunstancias/detalhes, as outras pessoas que em algum momento compartilharam este tipo de material também estão de parabéns, afinal o conhecimento esta sendo compartilhado.

Router OS v6.37.5...ao aplicar as regras nos profiles de cada plano não surgiu efeito no On Up e On Down, percebi que o meu servidor PPPoE esta considerando/usando os profiles "remotos" do servidor Radius (sistema de gestão), então apliquei as regras no ServerProfile (é o default profile do servidor PPPoE) e bombou.

Inicialmente tudo funcionando perfeitamente, tanto na conexão como na queda do túnel PPPoE do cliente, vou acompanhar o desempenho para deixar um Feedback na sequencia.

Sei que este detalhe não é tão simples assim, mas quanto ao Queue Type alguém tem alguma sugestão para o melhor Kind (pcq ou pfifo ou sfq) ???

----------


## AndrioPJ

> AndrioPJ...você esta de parabéns pela dedicação e principalmente pela boa vontade/iniciativa em compartilhar este material... independente das circunstancias/detalhes, as outras pessoas que em algum momento compartilharam este tipo de material também estão de parabéns, afinal o conhecimento esta sendo compartilhado.
> 
> Router OS v6.37.5...ao aplicar as regras nos profiles de cada plano não surgiu efeito no On Up e On Down, percebi que o meu servidor PPPoE esta considerando/usando os profiles "remotos" do servidor Radius (sistema de gestão), então apliquei as regras no ServerProfile (é o default profile do servidor PPPoE) e bombou.
> 
> Inicialmente tudo funcionando perfeitamente, tanto na conexão como na queda do túnel PPPoE do cliente, vou acompanhar o desempenho para deixar um Feedback na sequencia.
> 
> Sei que este detalhe não é tão simples assim, mas quanto ao Queue Type alguém tem alguma sugestão para o melhor Kind (pcq ou pfifo ou sfq) ???


SFQ é melhorzinho...

https://under-linux.org/showthread.php?t=98859

https://under-linux.org/showthread.php?t=184070

PS: vlw pelo reporte do funcionamento nessa versão do RouterOS

----------


## EvertonMachado

> SFQ é melhorzinho...
> 
> https://under-linux.org/showthread.php?t=98859
> 
> https://under-linux.org/showthread.php?t=184070
> 
> PS: vlw pelo reporte do funcionamento nessa versão do RouterOS


Valeu pelo retorno, esta questão do melhor Kind (pcq ou pfifo ou sfq) é muito relativo, cada caso é um caso!


AndrioPJ...olha só, caso você precise de ambiente para testar seus scripts pode me chamar em particular, tenho diversas redes em produção, ambientes atendendo com Rádio e com Fibra, desde planos de baixa velocidade até bandas maiores tipo 50 a 100 mega...ficarei contente em colaborar.

----------


## gregorypv

Rpz....eles deveriam pedir desculpa ao @*AndrioPJ*. Nem isso eles fizeram. Lamentável.

----------


## alextaws

@*AndrioPJ*, como esta os testes nessa nova versão do script?

----------


## AndrioPJ

> @*AndrioPJ*, como esta os testes nessa nova versão do script?


Acredito que nesse FDS devo realizar os testes e postar os resultados.

Aproveitando.
Para ter uma ideia:
Para fazer o QoS Down, caso você tenha 100 clientes no concentrador, você teria que ter umas 8 regras no mangle, e o script criaria umas 600 regras no Queue Tree (06 regras para cada cliente).

Para fazer o QoS UP, caso você tenha 100 clientes no concentrador, o script criaria outras 100 regras no mangle e outras 400 no Queue Tree.

Dependendo do Concentrador, já é complicado o script apenas para o QoS Down, imagina fazer o QoS UP?

Estava a dias pensando em como diminuir essas regras afim de diminuir o processamento, mas sem prejudicar o resultado do QoS.
E Essa semana, olhando o forum da mikrotik, vi um post que me deu umas ideias que além de ter diminuído drasticamente a quantidade de regras, o resultado do QoS é o mesmo....
porem, diferente do script postado aqui e da versão nova que estava usando até então, onde é possível visualizar no Que Tree qual QoS individual que está sendo aplicado (Tipo, na versão postada aqui, basta ir no Queue Tree, procurar as regras do cliente, e ver qual está sendo usada), Nessa nova versão n tem como ver isso, mas o QoS está sendo feito perfeitamente.

Para fazer esse novo QoS, agora tanto de Down quanto de UP, são necessárias apenas 15 Regras no mangle e 12 regras no Queue Tree.

As prioridades que configurei aqui são as seguintes:
### Download
- Ping, DNS, VoIP = 1
- Pacotes Pequenos (até 512k) = 2
- Pacotes médio (Até 5M) = 4
- Pacotes Grandes (Até 50M) = 6
- Todo o Restante (Pacotes acima de 50M) = 8

### UPload
- Ping, DNS, VoIP = 1
- Pacotes Pequenos (até 256k) = 2
- Pacotes Medios (até 512k) = 4
- Pacotes Grandes (até 5M) = 6
- Todo o Restante (Pacotes acima de 5M) = 8

----------


## AndrioPJ

Haaaa, também foi resolvido um problema que tinha quando reiniciava a RB, ai qdo voltava e os clientes conectavam, algumas regras não eram aplicadas.

----------


## Mitigo

Mais esse não seria um QoS estático.

----------


## pedrohafe

Um detalhe que notei no funcionamento desses script é que se o cliente estiver cadastrado no Secrets o script não funciona, mesmo o cliente estando configurado para utilizar o profile com o script. Já os clientes que autenticam no Radius a regra funcionou sem problemas. Versão 6.37.5

----------


## EvertonMachado

> Um detalhe que notei no funcionamento desses script é que se o cliente estiver cadastrado no Secrets o script não funciona, mesmo o cliente estando configurado para utilizar o profile com o script. Já os clientes que autenticam no Radius a regra funcionou sem problemas. Versão 6.37.5


Aqui na versão 6.37.5 apliquei no Profile que uso como "Default Profile" do servidor PPPoE e funcionou perfeito tanto para autenticação Radius como Local.

----------


## gregorypv

> Acredito que nesse FDS devo realizar os testes e postar os resultados.
> 
> Aproveitando.
> Para ter uma ideia:
> Para fazer o QoS Down, caso você tenha 100 clientes no concentrador, você teria que ter umas 8 regras no mangle, e o script criaria umas 600 regras no Queue Tree (06 regras para cada cliente).
> 
> Para fazer o QoS UP, caso você tenha 100 clientes no concentrador, o script criaria outras 100 regras no mangle e outras 400 no Queue Tree.
> 
> Dependendo do Concentrador, já é complicado o script apenas para o QoS Down, imagina fazer o QoS UP?
> ...


Man,

No meu caso a simple queue não sao criadas dinamicamente. Eu crio manualmente porque eu quero saber qnt cada cliente consome de dados por mês. Qnd criava automaticamente o valor se apagava a cada desconexão. Neste caso como tem como alterar o script para pegar os dados de outro lugar? Ou no caso...deixar com que as desconexoes não apague o dados consumidos ?

----------


## pedrohafe

Vocês utilizam profiles diferentes mesmo utilizando servidor Radius?

----------


## alextaws

> Acredito que nesse FDS devo realizar os testes e postar os resultados.
> 
> Aproveitando.
> Para ter uma ideia:
> Para fazer o QoS Down, caso você tenha 100 clientes no concentrador, você teria que ter umas 8 regras no mangle, e o script criaria umas 600 regras no Queue Tree (06 regras para cada cliente).
> 
> Para fazer o QoS UP, caso você tenha 100 clientes no concentrador, o script criaria outras 100 regras no mangle e outras 400 no Queue Tree.
> 
> Dependendo do Concentrador, já é complicado o script apenas para o QoS Down, imagina fazer o QoS UP?
> ...


Ficarei no aguardo da conclusão dos testes, e efetuas os testes aqui ver como vão se comportar

----------


## killerwollf

Alguma novidade amigo?

----------


## pedrohafe

Vocês estão utilizando pfifo/bfifo ou sfq no tipo de queue?

----------


## eduardomazolini

@*Adriano*PJ,
Apesar de te acompanhado o tópico eu até hoje não tinha implantado, então queria deixar minha contribuição.
Vi que identificou as conexões como o nome QoS_conn_Down, mas como são conexões ou seja a contagem de bytes é pra down ou up. Mera questão de nome, sei que queue tree só se aplica a download.

Fez um spoiler de uma nova versão que me parece mais alinhada com o que penso, separar os tráfegos pela velocidade que consomem, priorizando os dns, voip que é constante,
Eu não gosto de priorizar ping, me sinto enganando o cliente jogador.
Acho que se houver plano com Burst só no Download seu teste de existência do Burst pode falhar. Ou eu entendi errado o script.


```
    :local burstl [/queue simple get $i burst-limit];
    :local indexExplod [:find $burstl "/"];
    :local lenth [:len $burstl];
    :local bl [:pick $burstl ($indexExplod + 1) ($lenth - 1)];
.
.
.
    :if ([:len $bl] != 0) do={
.
.
}
```

 
Eu adicionei no meu script burst até 5Mb.
Mudei o tipo da fila pra uma PCQ com tudo marcado que me disseram que é muito parecido com usar sfq, na duvida mantive pcq.



```
/queue type
add kind=pcq name=pcq-connections pcq-classifier=src-address,dst-address,src-port,dst-port
```

 
No spoiler diz que vai tratar o upload também. Estou ansioso para ver o resultado.

Quanto a um video que colocou como Fonte, achei meio bobeira, vi que o cara se manifestou no forum, antes de você responder achei que poderia ter algum sentido, mas ali não mostra nada, só propaganda de curso.
E ainda no que mostra tem pegadinha pra fuder a vida de quem copiar pois se o id da rb for diferente ela fica bootando a cada 30s, não da nem tempo do cara apagar o script e ver o que tem de errado. Só essa pegadinha pra mim já justifica não mostrar o video. Pois algum novato aqui pode vir a ter problemas.

Novamente parabéns por modificar, melhorar e principalmente compartilhar os scripts que pesquisou.

----------


## NielsonPadilha

Alguma novidade da versão nova? Obrigado

----------


## gabrielest

E para Qos geral? Como o pessoal tá trabalhando pra quem tem muito uso de Netflix. ..yutube...Facebook e what's app? ?

----------


## thiagoferreira

Pessoal mais nenhuma novidade ?

----------


## williankevenis

Boa pergunta...

----------


## eduardomazolini

Pessoal não resolveu o meu problema do Windows update. Eu indo contra o que penso mas pensando no melhor experiência dos clientes tô pensando em usando esse conceito limitar meu cliente em conexões individuais menos que o plano contratado.

Meu plano é de 8Mb sendo garantido 4Mb(50%) com burst de 16Mb(100%)

Vou limitar uma conexão aos 4Mb se ele usar um speed teste vai fazer 4 fluxos simultaneamente pra testar o que vai chegar nos 16Mb.

Alguém pode dizer algo pra aliviar minha consciência?

----------


## williankevenis

Como pretende fazer isso? 




> Pessoal não resolveu o meu problema do Windows update. Eu indo contra o que penso mas pensando no melhor experiência dos clientes tô pensando em usando esse conceito limitar meu cliente em conexões individuais menos que o plano contratado.
> 
> Meu plano é de 8Mb sendo garantido 4Mb(50%) com burst de 16Mb(100%)
> 
> Vou limitar uma conexão aos 4Mb se ele usar um speed teste vai fazer 4 fluxos simultaneamente pra testar o que vai chegar nos 16Mb.
> 
> Alguém pode dizer algo pra aliviar minha consciência?

----------


## luizs

e o qos ta pronto ? funciona bem ?

----------


## BillGates

Aqui esta muito bom, desde a implantação. Não uso Burst!

----------


## JonasMT

> Aqui esta muito bom, desde a implantação. Não uso Burst!


O patrao qual versao do seu mk? Pois aqui fico duplicando ou criando pelas metade as regras =/

----------


## gutemberg

@*AndrioPJ*, falta você ajustar os script para mikrotik 5.x tem que ajudar o pessoal de 6.x e 5.x... E outra vi que você andou ajustando os script para priorizar DNS e ICMP, isso porque essa de priorizar connection-bytes seria inserto, melhor você priorizar packet-size ou juntar ambas meu caro.. nem precisaria ficar marcando pacotes de dns ou icmp.. brilharia mais ... ate para joguinhos online dos clientes eles iriam ficar leve.. pensem no packet-size e sejamos felizes.
Em meio a tudo isso marque o SIN,FIN e ACK todos juntos com maior prioridade também..

----------


## avatar52

Fácil

----------


## arthursena_

Boa noite pessoal, alguma atualização do script?

----------


## AndrioPJ

Prezados,

Tive várias mudanças na minha rotina sem contar a queima de alguns concentradores (Raio) que estava testando novas versões do script.
Ai como fiquei sem tempo, não me dei o trabalho de modificar e testar novamente.

De qualquer forma, o script aqui disponível funciona bem e é facilmente modificado/adaptado. Basta mudar a parte que insere as regras de marcação no firewall E a parte que insere o controle de banda individual conforme a regra de marcação no firewall.

Qualquer duvida, sintam-se a vontade de entrar em contato por mensagem privada (Se eu estiver disponível, tento ajudar)

----------


## eduardomazolini

[QUOTE=AndrioPJ;826693]Prezados,

Tive várias mudanças na minha rotina sem contar a queima de alguns concentradores (Raio) que estava testando novas versões do script.
Ai como fiquei sem tempo, não me dei o trabalho de modificar e testar novamente.

De qualquer forma, o script aqui disponível funciona bem e é facilmente modificado/adaptado. Basta mudar a parte que insere as regras de marcação no firewall E a parte que insere o controle de banda individual conforme a regra de marcação no firewall.

Qualquer duvida, sintam-se a vontade de entrar em contato por mensagem privada (Se eu estiver disponível, tento ajudar)[/QUOTE @*Adriano*PJ cara você já deu a idéia, já valeu!
Eu fiz algumas mudanças no meu tô testando em alguns lugares.

----------


## lacerdacg

To usando o script da primeira pagina aqui do tópico. Até agora tudo ok.

----------


## gbovelar

Nenhum updates do script.

----------


## avatar52

> Nenhum updates do script.


Está com problemas? Ajude a melhorar o script então, toda ajuda é bem vinda.

----------


## eduardomazolini

Eu fiz no meu mas coisa minha a idéia tá aí. O que você acha que deve melhorar?

----------


## Guimagal

Acabei de colocar aqui no meu concentrador para testar. Gostaria de saber se existe uma forma para quem tem muito consumo com netflix também.Esse script ele ajuda a navegação num todo ou tem sites específicos que ele ajuda como facebook ,youtube ?

----------


## loghan02

Galera preciso da ajuda de vcs, então essa regra que devo usar no profile que tem meu pppoe na aba scipt? são 2 scrit coloco o up encima e o dow em baixo no mesmo profile certo no profile default ou em todos os profile que eu criar ex: 5megas 3 megas? a regra do mangle eu colo no terminal normal, é so isso apenas comigo não deu certo? ajudem ai os que sabem mais que eu, Preciso de uma luz ou talvez um tutorial como fazer srsrsrsr obrigado galera. :Cheers:

----------


## Guimagal

Amigo isso mesmo faz esse procedimento em cada profile que voce tiver e cola no terminal a regra normalmente,os Qos são criados automaticamente para cada cliente ao conectar e ao desconectar e desativado. Faz esse procedimento e desconecta o cliente. Vai ver nos log os qos sendo criados automaticamente,estou usando a umas 2 semanas!

----------


## loghan02

Amigo obrigado consegui aqui coloquei em cada profile, os Qos foi criado certim agora deu obrigado, vc ta usando a 2 semana seu processamento subiu muito vc notou ?

----------


## Guimagal

Amigo não notei nada de processamento. Estou usando em 2 rb450g como concentrador pppoe.

----------


## loghan02

amigo fiz os teste aqui e realmente funciona, coloquei um torrent baixando a 3megas e tava puxando 300kbps entao liguei o youtube e o download do torren fica menos que 100kbps :Dancing:

----------


## lucianobatista

Boa noite. Tenho uma dúvida nesse script aí, pelo que vi tem que ter profiles diferentes com as velocidades dos clientes para funcionar?
Pois no meu caso aqui eu utilizo o sistema da MK Solutions e o servidor radius já entrega a velocidade dos clientes, o profile que utilizo não tem velocidade específicada.

----------


## johnwso

boa tarde

alguém pode me ajudar ?,

e ele não esta fazendo o QoS em todos os clientes o profile teria algum limite 
de clientes nele ?

eu conseguir colocar numa 3011 mais na 750gr3 
o connection-bytes não ativa 
ele so ativa se eu escolher um protocolo.

ja Agradeço pela atenção de todos.

outra coisa notei que no harario de pico o consumo diminuiu

no script tem planos de 5 20 50mb eu tenho q alterar isso no meu ja que
so tenho planos de 3 5 7 e 10mb

----------


## gutemberg

> Acabei de colocar aqui no meu concentrador para testar. Gostaria de saber se existe uma forma para quem tem muito consumo com netflix também.Esse script ele ajuda a navegação num todo ou tem sites específicos que ele ajuda como facebook ,youtube ?


Não existe nesse script sites específicos, somente navegação geral, vejo que alguns consultores "meia boca", tem adicionado somente COMENTÁRIOS informando que é do WhatsApp, Facebook e quando olhamos não tem nada haver, ou seja, enganando o cliente.

----------


## avatar52

> Não existe nesse script sites específicos, somente navegação geral, vejo que alguns consultores "meia boca", tem adicionado somente COMENTÁRIOS informando que é do WhatsApp, Facebook e quando olhamos não tem nada haver, ou seja, enganando o cliente.


Sabe o que é pior? É que 90% desse povo que vem atrás de QoS, nem sabe de fato o que é QoS.

[1] https://www.cisco.com/c/pt_br/suppor...3-qos-faq.html

----------


## raumaster

> boa tarde
> 
> alguém pode me ajudar ?,
> 
> e ele não esta fazendo o QoS em todos os clientes o profile teria algum limite 
> de clientes nele ?
> 
> eu conseguir colocar numa 3011 mais na 750gr3 
> o connection-bytes não ativa 
> ...


Aqui tb notei que o consumo total de link no dia, caiu. Não vejo isso como uma boa coisa, já que se caiu, tá havendo alguma limitação que não deveria, ao meu ver... Sobre esses valores de 5, 20 e 50 no Script, acho que não tem nada haver com os nossos planos nos profiles, mas se tiver, comentem aí os mais entendidos, por gentileza. Obrigado!

----------


## loghan02

Amigo vc não entendeu certo oque o scrit faz.

----------


## raumaster

O que ele faz eu entendi sim, só não me peça pra entender completamente como ele faz porque aí confesso que só lendo o script não entendo nda. Aí vc postou uma dúvida assim logo aí pra tras:

"Galera preciso da ajuda de vcs, então essa regra que devo usar no profile que tem meu pppoe na aba scipt? são 2 scrit coloco o up encima e o dow em baixo no mesmo profile certo no profile default ou em todos os profile que eu criar ex: 5megas 3 megas? a regra do mangle eu colo no terminal normal, é so isso apenas comigo não deu certo? ajudem ai os que sabem mais que eu, Preciso de uma luz ou talvez um tutorial como fazer srsrsrsr obrigado galera."

E vem me dizer que eu não entendi... Pra que? Só pra encher o forum?? Cada um não entende ou entende cada coisa que ta dentro dos nossos conhecimentos, correto?

----------


## loghan02

Isso ai eu ja resolvi, mas o meu trabalha normal de acordo com cada plano, ex: 1 mega 5 megas 10mb 15mb etc... funciona lindo. big bju

----------


## raumaster

Sim, o meu tb, mas só ficou aquela pontinha de duvida pq o outro colega nosso de forum perguntou aí pra tras.

----------


## loghan02

Tipo, o ideal seria limitar ainda mais o youtube em relação a qualquer site, porem no teste que fiz aqui o youtube ainda puxa muita banda, e o site demora a carregar, o scrite vai diminuindo lentamente, esse scrit trabalha em escala porem demora um pouco a reduz quando tem requisição para paginas de qualquer site. alguém sabe onde aumenta o diminui a prioridade disso? :Damnmate:

----------


## raumaster

Cara, só não pode prejudicar muito a exibição e qualidade do vídeo, pelo menos não demais. Se o Youtube identifica que vc tem banda suficiente, joga automaticamente o vídeo pra 1080P ou até 4K quando disponível e isso mata a conexão, penso que poucas pessoas precisam mais que 720P ou percebem a diferença, ainda mais em celular... 720P fica show de bola em qualquer TV moderna de ate umas 50 polegadas... Então limitar mais o Youtube por um lado faria o sistema automatico dele a reduzir a resolução e aí seria uma boa coisa.

----------


## johnwso

Raumaster 

blz olha aqui na minha rede o youtube esta lento em alguns clientes.
hoje estão consumindo muita banda antes de colocar o QoS minha rede no pico dava 179mb 
agora o maximo que e 120 e fica lenta tem algo ai que esta limitando.

alguem sabe explicar o que seria essas divisões

:local c5M [($rl * 25 / 100)];
:local c20M [($rl * 20 / 100)];
:local c50M [($rl * 15 / 100)];
:local cInf [($rl * 10 / 100)];

e se a sequencia la seria 

ICMP
DNS
HTTP
DATA seria o infinity

mais ainda falta um ja que sao 5 regras

----------


## Wlliamy

bom dia sou novo aqui testei no meu servidor apareceu todos os QOS mais o ciente ficou sem acesso ele aparece ogado mais nao da net.
Vendo panos de ate 2 megas mais a maioria e de 1 . o que sera que fiz de errado ????

----------


## JhoniVaz

boa noite galera, como se aplica estas regras a quem não usa ppoe,sei que preciso criar manual, da certo usar alguem se habilita ? vlw

----------


## antoniooracio

Parabéns, ficou show @*AndrioPJ*, uma questão é com relação a reiniciar o concentrador
como sera feito a remoção dos Queues Tree ??

----------


## avatar52

Quando o cliente desconecta, o script de pppoe-down já remove. Se você não percebeu, o RouterOS desconecta todos os clientes quando você solicita um reboot, então as Queue Tree serão removidas normalmente.

----------


## antoniooracio

> Quando o cliente desconecta, o script de pppoe-down já remove. Se você não percebeu, o RouterOS desconecta todos os clientes quando você solicita um reboot, então as Queue Tree serão removidas normalmente.



Ja fiz vários testes e nada aconteceu, como você citou "quando você reinicia o RouterOS os PPPoE se desconectam" porem não removem da queues, ja tentei colocar deley de 1s, 3s e nada de desconectarem, detalhe muito interessante que quando temos mais que 300 PPPoE ele remove alguns e quando temos poucos ele não remove nenhum.

Mais isso também é uma falha pois muitos reiniciam seus equipamentos desligando a energia.

uma outra pergunta, alguém conseguiu fazer essa adaptação para hostpot, eu fiz as alterações mais na "queue tree" não contabiliza direito, tive imaginado que seria por causa do item "Parent" pois o PPPoE caria uma nova ether para cada conexão e a regra pai utiliza essa interface, ja no Hotspot não é criado essa interface, ja tentei com varias interface e nada, uma coisa que notei foi que ele contabiliza e aceita as limitações para um único usuário.

----------


## silvawes

No meu, ativa e desativa as regras quando o cliente conecta ou desconecta, mas as regras não estão sendo usadas. Os rates das regras ficam zerados mesmo usando banda. Notei que não está sendo criado o mangle em firewall.

----------


## eberty

> No meu, ativa e desativa as regras quando o cliente conecta ou desconecta, mas as regras não estão sendo usadas. Os rates das regras ficam zerados mesmo usando banda. Notei que não está sendo criado o mangle em firewall.


As regras do mangle não são automáticas como o script, vc tem que colocar as regras no mangle.

----------


## silvawes

> As regras do mangle não são automáticas como o script, vc tem que colocar as regras no mangle.


Acredito que não amigo, no meu entender o primeiro script seria justamente para criar as configurações na RB.

----------


## eberty

> Acredito que não amigo, no meu entender o primeiro script seria justamente para criar as configurações na RB.


Aqui eu utilizo em 5 pops, a regra do mangle tem que ser add pelo nem terminal, e on_up e on_down são automáticas quando o cliente faz login.

----------


## silvawes

Coloquei as regras manualmente em minha rede e está funcionando pra teste em alguns perfis, aparentemente está tudo ok, ping levemente mais baixo, mas não senti melhoras significativas na minha navegação, possuo 5 Megas aqui, acredito que fara melhor diferença para clientes abaixo dos 3 Megas e ou em horário de pico, vou seguir testando. Muito bom o tópico, muito obrigado está de parabéns.

----------


## alextaws

como esta os testes para quem ta usando esse script?

----------


## jadsonsilva

no meu caso deu tudo certo, uso server pppoe, so q tenho uma duvida, eu tenho um cliente link full, e quando eu utilizo o qos dinâmico a regra do queue tree q limitava a banda da faixa dos clientes normais não funciona mais, dificultando assim entregar a banda full pra esse cliente, no caso essa regra eu faço marcação da faixa de ip pool dos clientes normais, e esse cliente especifico eu deixo com um ip diferente pra não ser pego na marcação do firewall, alguém pode me ajudar a resolver isso?

----------


## JhoniVaz

Cria um plano pra ele sem o script

----------


## jadsonsilva

> Cria um plano pra ele sem o script


não acho que faria diferença, o uso do qos é uma vantagem, criar um plano sem isso não teria muita vantagem, sem contar que mesmo assim não iria fazer a limitação de banda nos clientes domésticos.

----------


## wilbson

Boa tarde, pessoal, como para quem usa Radius, MK-auth - como inserir o script?

----------


## eberty

O Script vai no mikrotik, não tem problema se vc usa Radius. Funciona normal.

----------


## JonasMT

> Essas regras é pra qualquer velocidade ou tenho que fazer alterações para os planos de velocidades que vendo aqui ?


Se de ao minimo o trabalho de ler oque o cara posto velho.

----------


## andrecarlim

Eu fiz um QoS no Mikrotik um pouco diferente, criei 4 classes para a queue-tree. Aí cada uma tem uma quantia da banda garantida e uma prioridade, até aí parecido com o do amigo, a diferença é que nosso amigo fez pela quantidade de bytes da conexão. Então o que eu fiz? Marquei o que é relacionado a TCP/UDP 53 e TCP syn, rst, ack para a melhor propriedade (tem menos banda, mas sempre fura a fila), assim a experiência de uso do cliente final é sempre garantida quando o cliente usa o DNS, e tenta abrir uma nova conexão. Aí na segunda prioridade, ficou VoIP e FTP, na terceira ficou HTTP/HTTPS, e qualquer outra coisa, vai para prioridade "menos urgente", com mais banda.

----------


## ricromero

Coloquei ontem para funcionar na parte da manhã e no inicio da noite tive que remover as regras, pois ninguém mais conseguia se conectar no youtube, netflix, vídeos em geral.

Achei estranho, mas é melhor retirar do que ficar com o telefone tocando na madrugada

----------


## Paulo José da Silva

aconteceu o mesmo comigo, não sei se é pq eu tenho planos altos de 10,15 e 20 megas

----------


## Paulo José da Silva

> Eu fiz um QoS no Mikrotik um pouco diferente, criei 4 classes para a queue-tree. Aí cada uma tem uma quantia da banda garantida e uma prioridade, até aí parecido com o do amigo, a diferença é que nosso amigo fez pela quantidade de bytes da conexão. Então o que eu fiz? Marquei o que é relacionado a TCP/UDP 53 e TCP syn, rst, ack para a melhor propriedade (tem menos banda, mas sempre fura a fila), assim a experiência de uso do cliente final é sempre garantida quando o cliente usa o DNS, e tenta abrir uma nova conexão. Aí na segunda prioridade, ficou VoIP e FTP, na terceira ficou HTTP/HTTPS, e qualquer outra coisa, vai para prioridade "menos urgente", com mais banda.


amigo tem como vc posta aqui o seu QoS ou se possivel me envia pelo e-mail: [email protected]

----------


## surfinhu

> PS: se tiverem alguma sugestão de correção ou melhoria, me avisem...


Boa noite, amigo. 

Você sabe dizer como adaptar esse script pra ser usado com DHCP?

Abraços!

----------


## ThomasDren

Fala Galera, estou apredendo muito aqui com voces .... me diz uma coisa alguem conseguiu aplicar garantia de banda em cima desse script?
Esse script é muito bom! parabens ao criador!

----------


## Wandersonbraz

Boa noite e possivel utilizar esse script em DHCP no meu caso eu recebo ppoe e tenho um vizinho que usa minha internet e acaba sugando muita banda.

----------


## edilsonmoura

Boa pessoal, esse script tem para IPV6.

----------

