+ Responder ao Tópico



  1. #1

    Padrão Controle de banda com IPFW e Dummynet

    Olá pessoal,

    Tenho a seguinte duvida. Utilizo FreeBSD para firewall e controle de banda com IPFW+Dummynet. Já li em vários lugares, mas as explicações nunca me pareceram clara. Gostaria de saber como posso trabalhar com banda compartilhada utilizando IPFW+Dummynet. Exemplo abaixo.

    Link de 1 Mbps dedicado em um firewall freebsd entregando a 2 clientes via NAT. Gostaria de compartilhar essa banda entre os dois que daria 512Kbps para cada, mas quando o cliente 1 não estiver utilizando sua banda total ou parcial, que ela fosse entregue ao cliente 2 que está utilizando a banda. No CBQ com Linux é possível fazer isso com as opções BOUNDED=yes. ISOLATED=yes mas no freebsd com dummynet não consigo fazer isso.
    Provavelmente o pessoal vai me indicar trabalhar com PF, mas sinceramente quero aprender a fazer isso com IPFW e Dummynet somente.
    Não sei se fui claro, espero que possam me ajudar.

  2. #2
    MODERADOR-CHEFE Avatar de osmano807
    Ingresso
    Aug 2008
    Localização
    Araguari - Minas Gerais
    Posts
    1.980
    Posts de Blog
    5

    Padrão Re: Controle de banda com IPFW e Dummynet

    Humm, olha, à muito tempo li que era só ao invés de especificar um ip específico para o pipe, especificar uma classe, assim seria dividido.
    Teria que testar... deixo pra alguém com mais experiência em bsd falar.

  3. #3

    Padrão Re: Controle de banda com IPFW e Dummynet

    Interessante osmano. Vou verificar isso em um dos meus firewalls. Eu queria uma certeza ou até mesmo uma documentação. Meu inglês não é dos melhores, mas numa tradução que fiz num documento eu entendi isso, que se especificar a classe ele iria dividir a demanda de acordo com as requisições da rede.

  4. #4

    Padrão Re: Controle de banda com IPFW e Dummynet

    Você pode usar o ALTQ dentro do ipfw.
    ALTQ with IPFW - Max Laier - org.freebsd.freebsd-ipfw - MarkMail

    Divirta-se

  5. #5

    Padrão Re: Controle de banda com IPFW e Dummynet

    Nao. O que ele quer nao se chama mask. O que ele quer é quando estiver com banda sobrando, o link do cliente aumente. Ele quer garantir banda mínima.
    Se nao me engano foi vc que acusou os moderadores de uma ditadura aqui no fórum nao foi? E que também estava se excluindo do fórum. Como tem gente que nao tem palavra né?
    Sem mais.

  6. #6

    Padrão Re: Controle de banda com IPFW e Dummynet


    Apresento regras ipsis literis que tenho em produção.

    ipfw pipe 1 config bw 128Kbytes # 1mbps - 1024kbps

    ipfw queue 1 config weight 35 pipe 1 # ABC com 35% de banda, tendendo à 100%.
    ipfw queue 2 config weight 65 pipe 1 # XYZ com 65% de banda, tendendo à 100%.

    ipfw add 00001 queue 1 all from { not me or not $ABCNT } to $ABCNT recv $LINK1IF xmit $ABCIF # ABC
    ipfw add 00002 queue 1 all from $ABCNT to { not me or not $ABCNT } recv $ABCIF xmit $LINK1IF # ABC

    ipfw add 00003 queue 2 all from { not me or not $XYZNT } to $XYZNT recv $LINK1IF xmit $XYZIF # XYZ
    ipfw add 00004 queue 2 all from $XYZNT to { not me or not $XYZNT } recv $XYZIF xmit $LINK1IF # XYZ


    As variáveis acima são:

    LINK1IF = Interface WAN.

    ABCNT = Rede do cliente ABC.
    ABCIF = Interface LAN da rede do cliente ABC (que pode ser compartilhada com XYZ com o uso de aliases de IP).

    XYZNT = Rede do cliente XYZ.
    XYZIF = Interface LAN da rede do cliente ZYZ (que pode ser compartilhada com ABC com o uso de aliases de IP).

    Funciona redondo. Quando o cliente ABC está ocioso, o cliente XYZ usa integralmente toda a banda disponível (128KB = 1024kbps), da mesma forma o contrário.

    Caso os dois clientes estejam em consumo total, cada um terá sua parcela de consumo, com base do peso (weight). Para ser igualitário (512kbps para cada um), altere os pesos para 50% (meio a meio, para dois clientes).

    Espero ter ajudado.

    Saudações,

    Trober




  7. #7

    Padrão Re: Controle de banda com IPFW e Dummynet

    Olha, se você diz que o dummynet só se comporta com banda máxima vc está completamente equivocado. Leia a respeito de queues com WF2Q+.
    To sentindo é que você é que se sente inferiorizado, aí ataca todo mundo. Atacou muita gente. Se fosse tao bom nao estaria aí mendigando emprego. Então se coloque no seu lugar já que ninguém foi atras dos teus problemas.
    O rapaz perguntou uma coisa, e como você é mestre em desvirtuar tudo, pela falta de interpretação de texto, já levou o assunto para o outro lado. O assunto que o rapaz abordou nao tem nada a ver com "mask" e sim com CIR ( Committed information rate ). Agora, se nao sabe como funciona, é melhor ficar quieto na sua insignificancia e deixar os outros ajudar, como o trober colocou um exemplo prático do dummynet funcionando fazendo CIR (ou será que nao funciona e o trober também está mentindo como tu tambem acusa todo mundo).
    E outra, vc nao disse que ia sair do fórum? Acredito que gente que desagrega só atrapalha.
    Sem mais.

  8. #8

    Padrão Re: Controle de banda com IPFW e Dummynet

    Terminei de ler e entender as resposta. Vou testar em um FreeBSD. Obrigado, Trober, GrayFox e JorgeAldo.

  9. #9

    Padrão Re: Controle de banda com IPFW e Dummynet

    LSWIFI, tem outra forma alem do exemplo do trober.
    Após compilar o kernel com suporte a pf, altq e ipfw crie um arquivo altq.conf:

    $int_if = "interface"
    altq on $int_if cbq bandwidth 1Mb queue { cliente1, cliente2 }
    queue cliente1 bandwidth 512Kb cbq(borrow,default)
    queue cliente2 bandwidth 512Kb cbq(borrow)
    e no seu arquivo de firewall:

    ipfw add allow altq cliente1 all from any to 192.168.2.1
    ipfw add allow altq cliente2 all from any to 192.168.2.2
    Assim, o cliente 1 teria o ip 192.168.2.1 e o cliente 2 o ip 192.168.2.2.
    No link de 1mbps, cada um teria 512kbps garantido, só que se estiver sobrando banda, qualquer um dos 2 pode comer todo o 1mbps.

    Nao pode-se esquecer de ativar o altq:
    pfctl -e
    pfctl -f altq.conf

    Saudações,

  10. #10

    Padrão Re: Controle de banda com IPFW e Dummynet

    LSwifi, esqueci de algo importante. Faltou a regra ipfw disable one_pass, que faz com que todas as regras sejam consideradas, mesmo depois de processada por uma regra anterior (matched). Por padrão, o IPFW quando encontra uma tráfego que satisfaça a regra, não processa as regras subsequentes.

    Para fins de analogia (se não estou equivocado) é como se fosse um o passthrough do IPTables, só que para todos as regras.

    Saudações,

    Trober

  11. #11

    Padrão Re: Controle de banda com IPFW e Dummynet

    Se você nao falha na interpretação de texto, o que que isso tem haver com MASK?
    "Link de 1 Mbps dedicado em um firewall freebsd entregando a 2 clientes via NAT. Gostaria de compartilhar essa banda entre os dois que daria 512Kbps para cada, mas quando o cliente 1 não estiver utilizando sua banda total ou parcial, que ela fosse entregue ao cliente 2 que está utilizando a banda. No CBQ com Linux é possível fazer isso com as opções BOUNDED=yes. ISOLATED=yes mas no freebsd com dummynet não consigo fazer isso."
    Isso é CIR. O teu problema muita gente já notou. Não acredito que vale a pena discutir contigo, e eu nao concordo com nada com o que vc colocou, e outra, nao foi somente com o pkmc que vc discutiu, ja discutiu com o luciano, e mais outros. É aquele negocio, é muito facil o lobo colocar um casaco de cordeiro.
    Muito pouco me importa suas opinioes ao meu respeito, muito pelo o contrário, pessoa que desagrega, pra mim é insignificante.

  12. #12

    Padrão Re: Controle de banda com IPFW e Dummynet

    O ipfw por padrao tem o one_pass ativado. Quando ele está ativado e encontra uma regra de pipe, o pacote entra no pipe e nao sai mais de lá. O disable one_pass serve para isso, para continuar a ler as regras.
    Se por algum acaso voce colocar todas as regras de normalization, (allow, deny) e deixar essas regras por ultimo, nao tem necessidade de desabilitar o one_pass. Mas existem situações que voce precisa utilizar do skipto para fazer alguma coisa funcionar. Em todos os casos, é recomendavel desabilitar o one_pass.
    Citação Postado originalmente por trober Ver Post
    LSwifi, esqueci de algo importante. Faltou a regra ipfw disable one_pass, que faz com que todas as regras sejam consideradas, mesmo depois de processada por uma regra anterior (matched). Por padrão, o IPFW quando encontra uma tráfego que satisfaça a regra, não processa as regras subsequentes.

    Para fins de analogia (se não estou equivocado) é como se fosse um o passthrough do IPTables, só que para todos as regras.

    Saudações,

    Trober

  13. #13

    Padrão Re: Controle de banda com IPFW e Dummynet

    LSWIFI, testa o que o jorge aldo postou, aí quando nao funcionar, pega os outros exemplos para resolver o teu problema.
    Outra coisa, quem diz que o QOS nao controla banda mínima nao sabe o que está falando.
    Quando se cria um "pipe", uma "queue", tem que ser colocado a sua banda máxima.
    No altq, quando se coloca sua banda máxima é facil alocar a quantidade para cada cliente, e pode até se definir quanto que um pode pegar emprestado de outro.
    No manual do ALTQ tem até exemplos de como se faz. O altq pode ser usado com varios algoritmos. O HFSC faz isso muito bem. O CBQ faz para essas coisas mais simples.

  14. #14

    Padrão Re: Controle de banda com IPFW e Dummynet

    ok.

  15. #15

    Padrão Re: Controle de banda com IPFW e Dummynet

    Olá pessoal,

    Desculpem a demora, o servidor que usei para testar é lento, então demorou pra instalar o freebsd e compilar o kernel. Agora estou testando as regras do site do luigi que o Jorge mostrou. Com dois hosts fazendo o download, o trafego foi divido, quando parei o download no segundo host a banda do primeiro melhorou. Preciso testar mais. Agora vou testar as regras que o trober postou, depois testarei o altq.