Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. Primeiro post meu aqui no under-linux. Como sempre recorro ao fórum para os problemas que enfrento no dia-a-dia, resolvi repassar uma experiência que tive esses dias. Talvez seja útil pra alguém...

    No provedor que trabalho, sempre tem uns clientes que não sabem monitorar sua rede. Sempre tem atualização do Windows rodando, software p2p, funcionário fazendo download sem permissão... enfim... tudo que a maioria das redes tem. Aí o cara não consegue usar o Skype, a navegação fica lenta, não consegue receber e-mails e liga reclamando que não tá funcionando nada.

    Estive quebrando a cabeça pra poder priorizar o tráfego deles, mas não consegui nada muito prático pro meu caso. Usamos Hotspot e quando o usuário loga, já cria uma queue dinâmica com as limitações de banda dele. Porém, é útil se você quiser fazer isso para um cliente ou outro.

    O primeiro passo é marcar os pacotes que queremos priorizar.

    Primeiro eu crio uma expressão regular com Layer7 pra reconhecer os pacotes de ligações Skype para Skype. [1]

    Código :
    /ip firewall layer7-protocol
    add comment="" name=SkypeParaSkype regexp="^..\\x02............."

    Depois as address-lists com os endereços dos servidores do Skype e de alguns "velocímetros de internet" que tem por aí, pra testar:

    Código :
    add address=193.120.212.0/24 comment=Skype disabled=no list=rede-skype
    add address=213.146.167.0/24 comment="" disabled=no list=rede-skype
    add address=77.67.32.0/24 comment="" disabled=no list=rede-skype
    add address=213.146.189.0/24 comment="" disabled=no list=rede-skype
    add address=149.13.32.0/24 comment="" disabled=no list=rede-skype
    add address=200.159.128.189 comment=RJNet disabled=no list=medidores
    add address=200.195.144.42 comment=Copel disabled=no list=medidores
    add address=186.233.88.161 comment="PC Ativo" disabled=no list=medidores
    add address=200.187.80.31 comment="Teste sua velocidade" disabled=no list=medidores
    add address=81.92.212.76 comment=Abeltronica.com disabled=no list=medidores
    add address=74.209.160.12 comment=Speedtest.net disabled=no list=medidores
    add address=74.125.234.0/24 comment=Speedtest.net disabled=no list=medidores
    add address=189.50.144.15 comment="" disabled=no list=medidores

    Marquei os pacotes com o mangle:

    Primeiro marco as conexões do Skype através da address-list e se não pegar pela address-list, pega pelo Layer7. Marco os pacotes dessas conexões também.

    Código :
    /ip firewall mangle
    add action=mark-connection chain=prerouting comment=Skype disabled=no \
        dst-address-list=rede-skype new-connection-mark=cSkype passthrough=yes
    add action=mark-connection chain=prerouting comment="" disabled=no \
        layer7-protocol=SkypeParaSkype new-connection-mark=cSkype passthrough=yes
    add action=mark-packet chain=prerouting comment="" connection-mark=cSkype \
        disabled=no new-packet-mark=pSkype passthrough=no

    Depois marco as conexões e os pacotes da address-list que criei anteriormente com os IPs dos medidores (source e destination):

    Código :
    add action=mark-connection chain=prerouting comment=Medidores disabled=no \
        dst-address-list=medidores new-connection-mark=cMedidores passthrough=yes
    add action=mark-connection chain=prerouting comment="" disabled=no \
        new-connection-mark=cMedidores passthrough=yes src-address-list=medidores
    add action=mark-packet chain=prerouting comment="" connection-mark=cMedidores \
        disabled=no new-packet-mark=pMedidores passthrough=no

    Após isso, marco as conexões e os pacotes do que considero navegação: download de arquivos menores. Marco somente os arquivos que tem tamanho de 0 a 300000 bytes (300k). [2]

    Código :
    add action=mark-connection chain=prerouting comment="Navegacao" \
        connection-bytes=0-300000 disabled=no new-connection-mark=cNavegacao \
        passthrough=yes protocol=tcp
    add action=mark-packet chain=prerouting comment="" connection-mark=cNavegacao \
        disabled=no new-packet-mark=pNavegacao passthrough=no

    Marco o que considero download de arquivos (arquivos acima de 300k): [2]

    Código :
    add action=mark-connection chain=postrouting comment=Downloads \
        connection-bytes=300000-1000000000 disabled=no new-connection-mark=\
        cDownload passthrough=yes protocol=tcp
    add action=mark-packet chain=prerouting comment="" connection-mark=cDownload \
        disabled=no new-packet-mark=pDownload passthrough=no

    Depois que os pacotes importantes foram marcados, o resto é resto. [2]

    Código :
    add action=mark-connection chain=prerouting comment=Restante disabled=no \
        new-connection-mark=cRestante passthrough=yes
    add action=mark-packet chain=prerouting comment="" connection-mark=cRestante \
        disabled=no new-packet-mark=pRestante passthrough=no

    Com os pacotes marcados, basta implementar as queues.
    Eu usei as Simple Queues, mas dá pra usar as Queue Tree também.

    Aqui eu criei uma queue principal de 210k/210k, com nome de 'geral' que vai limitar o IP 10.25.50.252:

    Código :
    /queue simple
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=210k/210k name=geral parent=none priority=8 queue=\
        default-small/default-small target-addresses=10.25.50.252/32 total-queue=\
        default-small

    Daqui em diante só criei uma simple queue pra cada serviço que eu quero priorizar (skype, medidores, navegação, download e o restante, nessa ordem). O parent de todos eles é essa queue principal que criamos anteriormente.

    Código :
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=200k/200k name=skype packet-marks=pSkype parent=\
        geral priority=4 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=200k/200k name=restante packet-marks=pRestante \
        parent=geral priority=8 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=210k/210k name=download packet-marks=pDownload \
        parent=geral priority=7 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=200k/200k name=navegacao packet-marks=pNavegacao \
        parent=geral priority=6 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=200k/200k name=medidores packet-marks=pMedidores \
        parent=geral priority=5 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small

    Nessas regras eu filtro o tráfego pela marcação que ele tem, dou uma certa quantidade de banda e defino a prioridade de cada um deles. Dessa forma, por exemplo, quando o usuário fizer um download e for falar no skype, a ligação não vai picotar. O skype vai roubar do download a quantidade necessária de banda pra poder falar. A navegação vai pegar banda do download quando necessário... enfim, os serviços com maior prioridade vão pegar banda dos menos previlegiados.

    Coloquei 10k a mais para download porque se eu deixar igual as outras regras, os downloads não terminam. A transmissão do arquivo termina abruptamente.

    [1] - Para ligações de Skype para telefone comum, muda a regra, mas tem coo marcar também.
    [2] - Somente exemplo, tem como otimizar implementando mais opções.




    Pra mim isso não serve porque teria que fazer tooooodas essas regras da queue para cada cliente. Iria ferrar com o processamento das RouterBoard. Se alguém tiver alguma idéia de como fazer isso sem eu ter que alterar as queue dinâmicas que o hotspot gera, agradeço bastante!

  2. basta fazer as mesmas marcacao
    mas, ao invez de usar apenas o simple queue para criar o controle de banda... use o pcq
    dessa forma, tera um controle de banda de cada regra para cada usuario
    a velocidade de um nao influenciara no outro....

    contudo, a melhor forma de implementar QoS, seria fazer um equipamento a parte (que nao seja no proprio Gateway)



  3. apsilva,

    Parabéns pelo tópico, muito legal...

    Citação Postado originalmente por apsilva Ver Post
    Primeiro post meu aqui no under-linux. Como sempre recorro ao fórum para os problemas que enfrento no dia-a-dia, resolvi repassar uma experiência que tive esses dias. Talvez seja útil pra alguém...

    No provedor que trabalho, sempre tem uns clientes que não sabem monitorar sua rede. Sempre tem atualização do Windows rodando, software p2p, funcionário fazendo download sem permissão... enfim... tudo que a maioria das redes tem. Aí o cara não consegue usar o Skype, a navegação fica lenta, não consegue receber e-mails e liga reclamando que não tá funcionando nada.

    Estive quebrando a cabeça pra poder priorizar o tráfego deles, mas não consegui nada muito prático pro meu caso. Usamos Hotspot e quando o usuário loga, já cria uma queue dinâmica com as limitações de banda dele. Porém, é útil se você quiser fazer isso para um cliente ou outro.

    O primeiro passo é marcar os pacotes que queremos priorizar.

    Primeiro eu crio uma expressão regular com Layer7 pra reconhecer os pacotes de ligações Skype para Skype. [1]

    Código :
    /ip firewall layer7-protocol
    add comment="" name=SkypeParaSkype regexp="^..\\x02............."

    Depois as address-lists com os endereços dos servidores do Skype e de alguns "velocímetros de internet" que tem por aí, pra testar:

    Código :
    add address=193.120.212.0/24 comment=Skype disabled=no list=rede-skype
    add address=213.146.167.0/24 comment="" disabled=no list=rede-skype
    add address=77.67.32.0/24 comment="" disabled=no list=rede-skype
    add address=213.146.189.0/24 comment="" disabled=no list=rede-skype
    add address=149.13.32.0/24 comment="" disabled=no list=rede-skype
    add address=200.159.128.189 comment=RJNet disabled=no list=medidores
    add address=200.195.144.42 comment=Copel disabled=no list=medidores
    add address=186.233.88.161 comment="PC Ativo" disabled=no list=medidores
    add address=200.187.80.31 comment="Teste sua velocidade" disabled=no list=medidores
    add address=81.92.212.76 comment=Abeltronica.com disabled=no list=medidores
    add address=74.209.160.12 comment=Speedtest.net disabled=no list=medidores
    add address=74.125.234.0/24 comment=Speedtest.net disabled=no list=medidores
    add address=189.50.144.15 comment="" disabled=no list=medidores

    Marquei os pacotes com o mangle:

    Primeiro marco as conexões do Skype através da address-list e se não pegar pela address-list, pega pelo Layer7. Marco os pacotes dessas conexões também.

    Código :
    /ip firewall mangle
    add action=mark-connection chain=prerouting comment=Skype disabled=no \
        dst-address-list=rede-skype new-connection-mark=cSkype passthrough=yes
    add action=mark-connection chain=prerouting comment="" disabled=no \
        layer7-protocol=SkypeParaSkype new-connection-mark=cSkype passthrough=yes
    add action=mark-packet chain=prerouting comment="" connection-mark=cSkype \
        disabled=no new-packet-mark=pSkype passthrough=no

    Depois marco as conexões e os pacotes da address-list que criei anteriormente com os IPs dos medidores (source e destination):

    Código :
    add action=mark-connection chain=prerouting comment=Medidores disabled=no \
        dst-address-list=medidores new-connection-mark=cMedidores passthrough=yes
    add action=mark-connection chain=prerouting comment="" disabled=no \
        new-connection-mark=cMedidores passthrough=yes src-address-list=medidores
    add action=mark-packet chain=prerouting comment="" connection-mark=cMedidores \
        disabled=no new-packet-mark=pMedidores passthrough=no

    Após isso, marco as conexões e os pacotes do que considero navegação: download de arquivos menores. Marco somente os arquivos que tem tamanho de 0 a 300000 bytes (300k). [2]

    Código :
    add action=mark-connection chain=prerouting comment="Navegacao" \
        connection-bytes=0-300000 disabled=no new-connection-mark=cNavegacao \
        passthrough=yes protocol=tcp
    add action=mark-packet chain=prerouting comment="" connection-mark=cNavegacao \
        disabled=no new-packet-mark=pNavegacao passthrough=no

    Marco o que considero download de arquivos (arquivos acima de 300k): [2]

    Código :
    add action=mark-connection chain=postrouting comment=Downloads \
        connection-bytes=300000-1000000000 disabled=no new-connection-mark=\
        cDownload passthrough=yes protocol=tcp
    add action=mark-packet chain=prerouting comment="" connection-mark=cDownload \
        disabled=no new-packet-mark=pDownload passthrough=no

    Depois que os pacotes importantes foram marcados, o resto é resto. [2]

    Código :
    add action=mark-connection chain=prerouting comment=Restante disabled=no \
        new-connection-mark=cRestante passthrough=yes
    add action=mark-packet chain=prerouting comment="" connection-mark=cRestante \
        disabled=no new-packet-mark=pRestante passthrough=no

    Com os pacotes marcados, basta implementar as queues.
    Eu usei as Simple Queues, mas dá pra usar as Queue Tree também.

    Aqui eu criei uma queue principal de 210k/210k, com nome de 'geral' que vai limitar o IP 10.25.50.252:

    Código :
    /queue simple
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=210k/210k name=geral parent=none priority=8 queue=\
        default-small/default-small target-addresses=10.25.50.252/32 total-queue=\
        default-small

    Daqui em diante só criei uma simple queue pra cada serviço que eu quero priorizar (skype, medidores, navegação, download e o restante, nessa ordem). O parent de todos eles é essa queue principal que criamos anteriormente.

    Código :
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=200k/200k name=skype packet-marks=pSkype parent=\
        geral priority=4 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=200k/200k name=restante packet-marks=pRestante \
        parent=geral priority=8 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=210k/210k name=download packet-marks=pDownload \
        parent=geral priority=7 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=200k/200k name=navegacao packet-marks=pNavegacao \
        parent=geral priority=6 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small
    add burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s comment="" \
        direction=both disabled=no dst-address=0.0.0.0/0 interface=all limit-at=\
        0/0 max-limit=200k/200k name=medidores packet-marks=pMedidores \
        parent=geral priority=5 queue=default-small/default-small \
        target-addresses=10.25.50.252/32 total-queue=default-small

    Nessas regras eu filtro o tráfego pela marcação que ele tem, dou uma certa quantidade de banda e defino a prioridade de cada um deles. Dessa forma, por exemplo, quando o usuário fizer um download e for falar no skype, a ligação não vai picotar. O skype vai roubar do download a quantidade necessária de banda pra poder falar. A navegação vai pegar banda do download quando necessário... enfim, os serviços com maior prioridade vão pegar banda dos menos previlegiados.

    Coloquei 10k a mais para download porque se eu deixar igual as outras regras, os downloads não terminam. A transmissão do arquivo termina abruptamente.

    [1] - Para ligações de Skype para telefone comum, muda a regra, mas tem coo marcar também.
    [2] - Somente exemplo, tem como otimizar implementando mais opções.




    Pra mim isso não serve porque teria que fazer tooooodas essas regras da queue para cada cliente. Iria ferrar com o processamento das RouterBoard. Se alguém tiver alguma idéia de como fazer isso sem eu ter que alterar as queue dinâmicas que o hotspot gera, agradeço bastante!

  4. Andrio, usando pcq eu teria um número muito grande de regras... usamos hotspot e o controle de banda dos usuários é feito no próprio rádio. Me corrija se eu estiver errado: usando PCQ e seguindo a lógica desse exemplo que eu postei, eu teria uma regra por serviço por cliente. Imagine isso num rádio que tem 60 clientes logados, por exemplo

    Obrigado, endnet! Faz tempo que uso o fórum e não tive a oportunidade de ajudar ainda. Dessa vez não deixei passar... espero que seja útil.



  5. Não, é mais simples. Recentemente desative pcq+queue tree pois notei aumento de latência icmp (haviam outros problemas tb posso ter me enganado).

    http://mum.mikrotik.com/presentation.../megis_qos.pdf






Tópicos Similares

  1. Exemplos de wireless com mikrotik
    Por makitojp no fórum Redes
    Respostas: 3
    Último Post: 14-03-2008, 21:23
  2. Proxy transparente com 2 links - URGENTE
    Por no fórum Servidores de Rede
    Respostas: 1
    Último Post: 25-06-2003, 05:08
  3. Proxy transparente com 2 links - URGENTE
    Por no fórum Servidores de Rede
    Respostas: 1
    Último Post: 23-06-2003, 10:06
  4. Proxy Transparente com dois links
    Por no fórum Servidores de Rede
    Respostas: 0
    Último Post: 20-06-2003, 14:42
  5. Squid Transparente com autenticação
    Por escambau no fórum Servidores de Rede
    Respostas: 0
    Último Post: 10-01-2003, 14:19

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L