+ Responder ao Tópico



  1. #79

    Padrão Re: PPoE - QoS Dinâmico e Individual

    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.

  2. #80

    Padrão Re: PPoE - QoS Dinâmico e Individual

    Citação Postado originalmente por AndrioPJ Ver Post
    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:

    Código :
    /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
    Código :
    :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)];
        :if ([:len $bl] != 0) do={
            :log warning "QoS ADD === $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";
    /queue tree add name="QoS_$qName" parent="$interface" queue="default" max-limit="$($rl)$rlUnity" burst-limit="$($bl)$blUnity" burst-time="$cBt" burst-threshold="$($bth)$bthUnity" bucket-size=0.20;
            /queue tree add name="2-512k_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_512K" queue="default" priority="4" limit-at="$($c512k)$rlUnity" max-limit="$($rl)$rlUnity" burst-limit="$($bl)$blUnity" burst-time="$cBt" burst-threshold="$($bth)$bthUnity";
            /queue tree add name="4-5M_$qName" parent="QoS_$qName" packet-mark="QoS-Andriopj_5M" queue="default" priority="5" 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";
            } \
        else={
            :log warning "QoS ADD === $qName";
            /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";
     
     }
    }


    Esse você adiciona em PPP > Profile
    Abra cada um dos Profiles > aba Scripts > On Down
    Código :
    /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.
    Anexo 66869


    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
    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) ???



  3. #81

    Padrão Re: PPoE - QoS Dinâmico e Individual

    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.

  4. #82

    Padrão Re: PPoE - QoS Dinâmico e Individual

    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.



  5. #83

    Padrão Re: PPoE - QoS Dinâmico e Individual

    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.

  6. #84
    Under-linux.Org Team Avatar de MarcusMaciel
    Ingresso
    Dec 2000
    Localização
    Boston
    Posts
    1.963
    Posts de Blog
    44

    Padrão Re: PPoE - QoS Dinâmico e Individual

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