QoS dinâmico PPPoE

Boa tarde a todos,

primeiramente quero pedir desculpas aos amigos que acompanham meus tópicos por não responder as perguntas e os e-mail enviados a mim.

Assim como vocês eu também tenho provedor, e no momento estou bastante ocupado com algumas mudanças aqui...

mais como sempre gosto de compartilhar informações, coisas que eu desenvolvo aqui em meu provedor vou compartilhar sempre que for possível.

pessoal, lembrando que eu não dou consultoria, nem cobro por informação ou ajuda.

falando sobre o QoS, em outro tópico fiz um QoS com HTB onde controlava a banda na queue tree consultando o mk-auth, hoje vou mostrar uma forma diferente de fazer o QoS de forma dinâmica para cada cliente direto no mikrotik.

No mikrotik e ppp/profile existe uma ferramenta pouco conhecida scripts on-up e on-down 

serve para executar scripts a cada ação do pppoe (logar e deslogar)

possui algumas variáveis próprias leia mais: http://wiki.mikrotik.com/wiki/Manual:PPP_AAA 
com um pouco de técnica e criatividade pode se adaptar algumas situações
em anexo QoS Dinamico PPPoE.txt script adaptado para um QoS dinâmico e individual por cliente.

como funciona?

a cada nova conexão do pppoe executa um script on_up que faz a leitura na simple queue, pega a velocidade do download e adiciona as regras na queue tree para download e na simple queue para upload dos serviços de redes sociais com base no plano do cliente.

quando desconecta o pppoe executa on_down que remove as regras.

não tem muito que explicar, é bem simples!

Um abraço a todos e fiquem com Deus.

 

QoS_Dinamico_PPPoE-2.0.txt

Para adicionar comentários, você deve ser membro de MK-AUTH.

Join MK-AUTH

Votos 0
Enviar-me um email quando as pessoas responderem –

Respostas

  • jonas oliveira da silva, valeu pela atenção. Funcionou perfeitamente. Muito obrigado!

    jonas oliveira da silva disse:

    Boa tarde Adriano José de Faria,

    Fiz uma versão que funciona para os dois tipos k e M.

    QoS_Dinamico_PPPoE-2.0.txt
    e coloquei uma opção para definir qual o plano minimo e o plano máximo que entra no QoS ou seja que vai ser adicionado na queue tree.

    sendo definido o plano máximo em mega e o plano minimo em kbps.

    # Plano Maximo Para o QoS ( em M )
    :local PLANOMAXIMO 5;
    #
    # Plano Minimo Para o QoS ( em k )
    :local PLANOMINIMO 1024;

    :local PLANOMAXIMO 5;

    só entra no QoS planos no máximo 5 mega

    :local PLANOMINIMO 1024;

    só entra no QoS planos no minimo1024 kbps


    Adriano José de Faria disse:

    Boa noite. 

     jonas oliveira da silva, obrigado por compatilhar seu conhecimento. 

    Implementei seu scritp, porém estou com a seguinte dificuldade: 1488593946?profile=RESIZE_480x480Como mostrado na imagem acima, a garantia de banda só é calculada na primeira fila e para o plano de 2 mega, creio eu que seja pelo motivo de a velocidade "Max Limit" estar em mbps e não em kbits, sendo assim ele não fraciona os 2M em 0,4M, como por exemplo (2M * 20 /100). Como Resolver?

  • Jonas, teria como vc criar um controle com prioridade 3 até 5Mb com as portas 80, 443?

  • Boa tarde Adriano José de Faria,

    Fiz uma versão que funciona para os dois tipos k e M.

    QoS_Dinamico_PPPoE-2.0.txt
    e coloquei uma opção para definir qual o plano minimo e o plano máximo que entra no QoS ou seja que vai ser adicionado na queue tree.

    sendo definido o plano máximo em mega e o plano minimo em kbps.

    # Plano Maximo Para o QoS ( em M )
    :local PLANOMAXIMO 5;
    #
    # Plano Minimo Para o QoS ( em k )
    :local PLANOMINIMO 1024;

    :local PLANOMAXIMO 5;

    só entra no QoS planos no máximo 5 mega

    :local PLANOMINIMO 1024;

    só entra no QoS planos no minimo1024 kbps


    Adriano José de Faria disse:

    Boa noite. 

     jonas oliveira da silva, obrigado por compatilhar seu conhecimento. 

    Implementei seu scritp, porém estou com a seguinte dificuldade: 1488593946?profile=RESIZE_480x480Como mostrado na imagem acima, a garantia de banda só é calculada na primeira fila e para o plano de 2 mega, creio eu que seja pelo motivo de a velocidade "Max Limit" estar em mbps e não em kbits, sendo assim ele não fraciona os 2M em 0,4M, como por exemplo (2M * 20 /100). Como Resolver?

  • MUDE SEUS PLANOS PARA OS PADRÕES CORRETOS DE DEFINIÇÃO DE VELOCIDADE EM BITS AMIGO:

    1 MEGA= 1024K

    2 MEGAS= 2048K

    3 MEGAS= 3072K

    4 MEGAS= 4096K

    5 MEGAS= 5120K

    6 MEGAS= 6144K

    E ASSIM POR DIANTE!


    Adriano José de Faria disse:

    Boa noite. 

     jonas oliveira da silva, obrigado por compatilhar seu conhecimento. 

    Implementei seu scritp, porém estou com a seguinte dificuldade: 1488593946?profile=RESIZE_480x480Como mostrado na imagem acima, a garantia de banda só é calculada na primeira fila e para o plano de 2 mega, creio eu que seja pelo motivo de a velocidade "Max Limit" estar em mbps e não em kbits, sendo assim ele não fraciona os 2M em 0,4M, como por exemplo (2M * 20 /100). Como Resolver?

  • não consigo abrir o link

  • Boa noite. 

     jonas oliveira da silva, obrigado por compatilhar seu conhecimento. 

    Implementei seu scritp, porém estou com a seguinte dificuldade: 1488593946?profile=RESIZE_480x480Como mostrado na imagem acima, a garantia de banda só é calculada na primeira fila e para o plano de 2 mega, creio eu que seja pelo motivo de a velocidade "Max Limit" estar em mbps e não em kbits, sendo assim ele não fraciona os 2M em 0,4M, como por exemplo (2M * 20 /100). Como Resolver?

  • Valeu amigo entendi e obrigado pela a explicação, parabéns! 

    jonas oliveira da silva disse:

    Boa noite, respondendo a primeira pergunta

    - esse script NOVO_QOS_DINAMICO_PPPOE.txt não se aplica ao primeiro, tem que excluir o primeira versão e importar a nova versão

    A Segunda pergunta é um pouco mais técnica, uma boa leitura aqui: http://wiki.mikrotik.com/wiki/Manual:IP/Firewall/Mangle 

    uma explicação básica do script com a função connection-bytes

    O connection-bytes combina pacotes apenas se uma determinada quantidade de bytes foram transferidos através de uma conexão particular.

    exemplo:

    connection-bytes=1-512000

    combina pacotes de 1 a 512000 bytes ou seja até 512kbps.

    connection-bytes=512000-5000000

    combina pacotes de 512000 a 5000000 bytes ou seja de 512kbps a 5M.

    connection-bytes=5000000-20000000

    combina pacotes de 5M a 20M.

    connection-bytes=20000000-50000000

    combina pacotes de 20M a 50M.

    connection-bytes=50000000-0

    combina pacotes de 50M em diante .

    0 (zero) - significa infinito.

    - por que essa marcação se eu não tenho clientes com plano de 20M ???

    o exemplo 5M a 20M isso não significa que essa é a velocidade aplicada no plano do cliente e sim que o mangle vai marcar esses pacotes de 5M até 20M na conexão desse cliente. 

    nessa versão do script estou tratando priorização de tráfego, onde cada quantidade de bytes transferida tem uma priorização diferente de 1 a 8

    onde 1 tem maior prioridade e o 8 a menor prioridade.

    outro exemplo:

    eu tenho um cliente com plano de 2M como que o QoS vai tratar esse cliente de 2M?

    connection-bytes=1-512000 - geralmente a cada requisição e abertura de uma página na internet tem um consumo médio até 512k (dependendo da pagina) Então o QoS tem prioridade 4 para abertura de paginas.

    connection-bytes=512000-5000000 - supondo que na pagina que o cliente abriu tem um link de um vídeo e o cliente clicou e começo assistir, então sua conexão agora já ultrapassa os 512k transferidos chegando a atingir 5M de transferência, Então o QoS tem prioridade 5 para pacotes a partir de 512k até 5M transferidos. 

    connection-bytes=5000000-20000000 - agora este mesmo cliente tem um roteador e esta compartilhando sua conexão com outro "computador" que está fazendo um download, agora já ultrapassa os 5M transferidos chegando a atingir 20M de transferência, Então o QoS tem prioridade 6 para pacotes a partir de 5M até 20M transferidos.

    connection-bytes=20000000-50000000 - agora já ultrapassa os 20M transferidos chegando a atingir 50M de transferência, Então o QoS tem prioridade 7 para pacotes a partir de 20M até 50M transferidos.

    a ultima regra do mangle diz...

    connection-bytes=50000000-0 - agora já ultrapassa os 50M transferidos, e daqui por diante o QoS tem prioridade 8 para pacotes acima de 50M transferidos.

    no mangle apenas marcamos os pacotes de acordo com os bytes transferidos,

    1488595402?profile=original

    na queue tree vamos individualizar e aplicar as prioridades de todas essas marcações do mangle para cada cliente, o max-limit é o plando do cliente e o limit-at é onde garantimos a banda do cliente.

    na queue tree dividimos o QoS em 6 filas HTB para cada cliente

    1488595465?profile=RESIZE_1024x1024

    a 1° fila é a fila pai, contem apenas o max-limit = 2048k  parent=<pppoe-jonas> (login do cliente) e prioridade = 8

    a 2° fila prioriza os pacotes marcados de 1-512k tem prioridade = 4 e o limit-at = 1024k = 50% da banda

    a 3° fila prioriza os pacotes marcados de 512k-5M tem prioridade = 5 e o limit-at = 409k = 20% da banda

    a 4° fila prioriza os pacotes marcados de 5M-20M tem prioridade = 6 e o limit-at = 307k = 15% da banda

    a 5° fila prioriza os pacotes marcados de 20M-50M tem prioridade = 7 e o limit-at = 204k = 10% da banda

    a 6° fila prioriza os pacotes marcados apartir de 50M em diante tem prioridade = 8 e o limit-at = 102k = 5% da banda

    o tratamento do script:

    Desenvolvi esse script com o objetivo de fazer um QoS dinâmico para executar rotinas direto no mikrotik independente do servidor radius.

    quando o cliente pppoe loga, o script captura a variável $user que representa o login do cliente,

    checa esse login na simple queue e pega o valor do max-limit que representa a velocidade do plano.

     limit-at="$($maxlimit * 50 / 100)$unidade"

    $maxlimit = max-limit (plano do cliente)

    $unidade = "k"

    o script faz um calculo de porcentagem (plano= 2048 x 50 = 102400 / dividido por 100 = 1024) 

    resultado: 50% de 2048 é = 1024 e a agora acrescentamos a variável $unidade k (1024k)

    a função do script é adicionar na queue tree 6 filas HTB para cada cliente de acordo com as regras do mangle e com base no calculo de porcentagem de cada plano para se chegar em um valor padrão do QoS de priorização de trafego por cliente.

    Bom acho que mais explicado que isso não tem como kkkkk!

    acabei repetindo coisa que expliquei lá no inicio do tópico.

    Um abraço a todos!

     

    INCLUSÃO DIGITAL AGENTE FAZ disse:

    boa tarde amigo essa segunda regra NOVO_QOS_DINAMICO_PPPOE.txt, se aplica em cima da primeira

    e essa velocidade de 512k 5mb 20mb 50mb o que seria?

  • Aqui estou utilizando a primeira versão e gostei bastante dela, adicionei prioridades de outros sites também como o Netflix e demais e gostei muito de usar dessa forma, mas também irei testar essa daí!
  • Boa noite, respondendo a primeira pergunta

    - esse script NOVO_QOS_DINAMICO_PPPOE.txt não se aplica ao primeiro, tem que excluir o primeira versão e importar a nova versão

    A Segunda pergunta é um pouco mais técnica, uma boa leitura aqui: http://wiki.mikrotik.com/wiki/Manual:IP/Firewall/Mangle 

    uma explicação básica do script com a função connection-bytes

    O connection-bytes combina pacotes apenas se uma determinada quantidade de bytes foram transferidos através de uma conexão particular.

    exemplo:

    connection-bytes=1-512000

    combina pacotes de 1 a 512000 bytes ou seja até 512kbps.

    connection-bytes=512000-5000000

    combina pacotes de 512000 a 5000000 bytes ou seja de 512kbps a 5M.

    connection-bytes=5000000-20000000

    combina pacotes de 5M a 20M.

    connection-bytes=20000000-50000000

    combina pacotes de 20M a 50M.

    connection-bytes=50000000-0

    combina pacotes de 50M em diante .

    0 (zero) - significa infinito.

    - por que essa marcação se eu não tenho clientes com plano de 20M ???

    o exemplo 5M a 20M isso não significa que essa é a velocidade aplicada no plano do cliente e sim que o mangle vai marcar esses pacotes de 5M até 20M na conexão desse cliente. 

    nessa versão do script estou tratando priorização de tráfego, onde cada quantidade de bytes transferida tem uma priorização diferente de 1 a 8

    onde 1 tem maior prioridade e o 8 a menor prioridade.

    outro exemplo:

    eu tenho um cliente com plano de 2M como que o QoS vai tratar esse cliente de 2M?

    connection-bytes=1-512000 - geralmente a cada requisição e abertura de uma página na internet tem um consumo médio até 512k (dependendo da pagina) Então o QoS tem prioridade 4 para abertura de paginas.

    connection-bytes=512000-5000000 - supondo que na pagina que o cliente abriu tem um link de um vídeo e o cliente clicou e começo assistir, então sua conexão agora já ultrapassa os 512k transferidos chegando a atingir 5M de transferência, Então o QoS tem prioridade 5 para pacotes a partir de 512k até 5M transferidos. 

    connection-bytes=5000000-20000000 - agora este mesmo cliente tem um roteador e esta compartilhando sua conexão com outro "computador" que está fazendo um download, agora já ultrapassa os 5M transferidos chegando a atingir 20M de transferência, Então o QoS tem prioridade 6 para pacotes a partir de 5M até 20M transferidos.

    connection-bytes=20000000-50000000 - agora já ultrapassa os 20M transferidos chegando a atingir 50M de transferência, Então o QoS tem prioridade 7 para pacotes a partir de 20M até 50M transferidos.

    a ultima regra do mangle diz...

    connection-bytes=50000000-0 - agora já ultrapassa os 50M transferidos, e daqui por diante o QoS tem prioridade 8 para pacotes acima de 50M transferidos.

    no mangle apenas marcamos os pacotes de acordo com os bytes transferidos,

    1488595402?profile=original

    na queue tree vamos individualizar e aplicar as prioridades de todas essas marcações do mangle para cada cliente, o max-limit é o plando do cliente e o limit-at é onde garantimos a banda do cliente.

    na queue tree dividimos o QoS em 6 filas HTB para cada cliente

    1488595465?profile=RESIZE_1024x1024

    a 1° fila é a fila pai, contem apenas o max-limit = 2048k  parent=<pppoe-jonas> (login do cliente) e prioridade = 8

    a 2° fila prioriza os pacotes marcados de 1-512k tem prioridade = 4 e o limit-at = 1024k = 50% da banda

    a 3° fila prioriza os pacotes marcados de 512k-5M tem prioridade = 5 e o limit-at = 409k = 20% da banda

    a 4° fila prioriza os pacotes marcados de 5M-20M tem prioridade = 6 e o limit-at = 307k = 15% da banda

    a 5° fila prioriza os pacotes marcados de 20M-50M tem prioridade = 7 e o limit-at = 204k = 10% da banda

    a 6° fila prioriza os pacotes marcados apartir de 50M em diante tem prioridade = 8 e o limit-at = 102k = 5% da banda

    o tratamento do script:

    Desenvolvi esse script com o objetivo de fazer um QoS dinâmico para executar rotinas direto no mikrotik independente do servidor radius.

    quando o cliente pppoe loga, o script captura a variável $user que representa o login do cliente,

    checa esse login na simple queue e pega o valor do max-limit que representa a velocidade do plano.

     limit-at="$($maxlimit * 50 / 100)$unidade"

    $maxlimit = max-limit (plano do cliente)

    $unidade = "k"

    o script faz um calculo de porcentagem (plano= 2048 x 50 = 102400 / dividido por 100 = 1024) 

    resultado: 50% de 2048 é = 1024 e a agora acrescentamos a variável $unidade k (1024k)

    a função do script é adicionar na queue tree 6 filas HTB para cada cliente de acordo com as regras do mangle e com base no calculo de porcentagem de cada plano para se chegar em um valor padrão do QoS de priorização de trafego por cliente.

    Bom acho que mais explicado que isso não tem como kkkkk!

    acabei repetindo coisa que expliquei lá no inicio do tópico.

    Um abraço a todos!

     

    INCLUSÃO DIGITAL AGENTE FAZ disse:

    boa tarde amigo essa segunda regra NOVO_QOS_DINAMICO_PPPOE.txt, se aplica em cima da primeira

    e essa velocidade de 512k 5mb 20mb 50mb o que seria?

  • omo funciona essa regra nova explica pra gente

    sobre a prioridade como funciona de 1 a 8 

    e sobre  add limit-at="$($maxlimit / 100 * 30)$unidade" max-limit="$maxlimit$unidade" name="$queuename-DOWN" packet-

    que dizer que suporta 100 pessoas  ? como funciona para eu coloca de acordo minha rede 

This reply was deleted.