Humm, vou ver isso. Sobre o controle de banda, trabalho em um ISP e preciso limitar planos de velocidades de clientes, 2M, 3M, 5M etc. Por isso é um controle simples, a única coisa a mais é a franquia mensal, que quando ultrapassada o plano do cliente é reduzido para a velocidade mínima garantida.
Acho que o controle de banda que vc quer envolve filas, tipo com PF + ALTQ não seria isso? Como não é minha realidade, acabei não vendo se tem algo neste sentido no MPD, mais acho que não, pelo menos a documentação fala sobre pipes no IPFW e mpd-limit usando Netgraph. -- Att. __________________________________ Márcio Elias Hahn do Nascimento Araranguá - SC Cel: (55) 48-9661-0233 msn: [email protected] 2014-03-04 10:11 GMT-03:00 Bruno Araújo <[email protected]>: > Em 03/03/2014, às 17:34, Márcio Elias <[email protected]> escreveu: > > > 2014-03-03 16:44 GMT-03:00 Bruno Araújo <[email protected]>: > > > >> Em 03/03/2014, às 15:48, Márcio Elias <[email protected]> escreveu: > >> > >>> Estive meio ausente da lista, mais estou progredindo neste assunto. > >>> > >>> Atualmente estou apto a conectar usuários, e logo que conectado limitar > >> sua > >>> banda usando mpd-limit (não estou usando pipes, e sim a interface > >> netgraph > >>> criada para o cliente). > >>> > >>> Estou também conseguindo obter informações do tráfego do usuário, e > apto > >> a > >>> enviar pacotes CoA para o MPD de modo que este possa atualizar o link > do > >>> usuário sem desconectá-lo, ou seja, mesmo no meio de um download, se o > >>> usuário ultrapassar a quota mensal, o mesmo verá sua taxa de > >> transferencia > >>> cair até o limite do plano. > >>> > >>> Minha solução até agora está envolvendo alguns AVPs personalizados, > >> alguns > >>> códigos em Perl (modulos para checar a banda usada e para resetar o > >>> contador de tempo de sessão) e uma boa dose de código em UnLang nas > >> sessões > >>> authorize e accounting. > >>> > >>> Está ficando bem interessante, como disse ainda tenho intenção de fazer > >> um > >>> artigo detalhando esse assunto, mais vou fazê-lo assim que tiver a > >> solução > >>> completamente pronta. > >>> > >>> Atualmente minha dúvida está em enviar o pacote CoA para o MPD somente > >> se o > >>> usuário ultrapassar a quota mensal, ou se virar o mes conectado, por > que > >>> atualmente estou enviando o pacote a cada accounting update. > >>> > >>> Volto quando tiver maiores novidades, e começo a escrever o artigo > assim > >>> que sanar essa dúvida. Não pretendo fazer um pequeno artigo do tipo > >> copiar > >>> e colar, mais sim explicar e referenciar cada ponto, para que se possa > >>> entender o assunto e saber o que se está fazendo. Senti muita > dificuldade > >>> em encontrar materiais, as principais dicas (tirando a documentação do > >> MPD > >>> e do FreeRadius) tirei de fóruns Russos, (traduzindo para o ingles). > Por > >>> isso quero contribuir para comunidade brasileira e escrever tudo em bom > >>> Portuguès. > >>> > >>> -- > >>> Att. > >>> __________________________________ > >>> Márcio Elias Hahn do Nascimento > >>> > >>> Araranguá - SC > >>> Cel: (55) 48-9661-0233 > >>> msn: [email protected] > >>> > >>> > >>> 2014-02-13 8:59 GMT-02:00 Márcio Elias <[email protected]>: > >>> > >>>> Ai que está, eu já fui um pouco mais longe, não usei Dummynet nem IPFW > >> pra > >>>> controle de banda, usei ng_bpf+ng_car ( > >>>> http://mpd.sourceforge.net/doc5/mpd30.html#radius). Quanto a troca de > >>>> velocidade, queria fazer isso de modo transparente, sem derrubar o > >> usuário. > >>>> Dependendo do usuário ou do que o mesmo está fazendo, não é > >> interessante vc > >>>> derrubar ele. > >>>> > >>>> Minha ideia era conseguir fazer algo semelhante ao que fala este > artigo. > >>>> > >>>> http://revk.www.me.uk/2012/11/usage-quotas.html > >>>> > >>>> Tentei até entrar em contato com o autor mais não tive resposta até > >> agora. > >>>> > >>>> -- > >>>> Att. > >>>> __________________________________ > >>>> Márcio Elias Hahn do Nascimento > >>>> > >>>> Araranguá - SC > >>>> Cel: (55) 48-9661-0233 > >>>> msn: [email protected] > >>>> > >>>> > >>>> 2014-02-13 8:40 GMT-02:00 Marcelo Gondim <[email protected]>: > >>>> > >>>> Em 13/02/14 02:25, Márcio Elias escreveu: > >>>>>> Alguém na lista tem uma solução usando radius+mysql (ou postgresql) > >> como > >>>>>> servidor de autenticação com MPD5 e que tenha implementado um > sistema > >> de > >>>>>> controle de banda relativo a um sistema de quotas? > >>>>>> > >>>>>> Um exemplo básico, tenho um plano de acesso de 10Mbits e queria > >> limitar > >>>>> ele > >>>>>> a 100GB de transferencia mensal, desta forma ao atingir o limite da > >>>>>> franquia o usuário estaria limitado a uma velocidade equivalente a > 40% > >>>>> do > >>>>>> seu plano por exemplo. Ao iniciar o mês seguinte essa regra > reinicia. > >>>>>> > >>>>>> Consegui implementar o servidor Radius, (FreeRadius) com banco de > >> dados, > >>>>>> autenticação PPPoE com MPD5, Controle de banda, tudo certinho. O > >>>>> problema > >>>>>> está em criar as quotas e controlar o limite de banda baseado nisso. > >>>>>> > >>>>>> Vi que a FUG está meio desatualizada em artigos, e acho que isso é > um > >>>>>> assunto interessante para aqueles que como eu trabalham em ISPs, e > >>>>>> principalmente que utilizam FreeBSD. Gostaria do apoio da comunidade > >>>>> para > >>>>>> implementar isso e lançar um artigo detalhado sobre o assunto para > >>>>>> favorecer os pobres mortais que futuramente terão a mesma > dificuldade > >>>>> que > >>>>>> estou tendo hoje para implementar essa solução. > >>>>>> > >>>>>> Conto com o apoio dos mestres. ;) > >>>>>> > >>>>> Opa Marcio, > >>>>> > >>>>> Um certo tempo fiz alguns testes como esses que você tá fazendo e > >>>>> consegui fazer funcionar sem o controle de franquia, que é o que você > >> tá > >>>>> querendo. > >>>>> Não implantei pois precisava fazer umas mudanças internas e também eu > >>>>> ainda não tinha IPv6 para fazer os testes que eu queria. > >>>>> Levando-se em conta que no sistema que eu testava eu criei os planos > de > >>>>> velocidades em tables no ipfw e dummynet, assim quando o cliente > >>>>> conectava, eu checava de qual plano ele era e jogava o IP dele da > >>>>> conexão, na table certa. No seu caso poderia ser feito um script em > php > >>>>> que checasse a tabela radacct do radius e calculasse se ele > >> ultrapassou > >>>>> a quantidade de bytes trafegados da franquia e se sim desconectaria > ele > >>>>> e jogaria ele na table de velocidade nova. Isso pode ser feito em php > >>>>> tranquilamente. :) > >>>>> > >>>>> Abração, > >>>>> Gondim > >>>>> ------------------------- > >>>>> Histórico: http://www.fug.com.br/historico/html/freebsd/ > >>>>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd > >>>>> > >>>> > >>>> > >>> ------------------------- > >>> Histórico: http://www.fug.com.br/historico/html/freebsd/ > >>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd > >> > >> > >> Parabéns pelo progresso, também diz alguns testes aqui e consegui > conectar > >> clientes sem nat ( é assim que quero) e renomear a interface para o > nome de > >> usuário mas o controle de tráfego também não quis por pipes. > >> Poderia me adiantar ou postar o link original sobre esse controle > netgraph? > >> > >> _______________ > >> Bruno Araújo > >> > >> > >> Antes de imprimir, verifique se tem papel e tinta suficiente na > impressora. > >> > >> ------------------------- > >> Histórico: http://www.fug.com.br/historico/html/freebsd/ > >> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd > >> > > > > > > Se vc está usando MPD, coloca os seguintes atributos na tabela radreply > > (para um usuário) ou radgroupreply (para um grupo): > > > > **para limitar o download com 2Mbits > > attribute = "mpd-limit" > > op = "+=" > > value = "out#1=all rate-limit 2048000 384000 768000 pass" > > > > **para limitar o upload com 1Mbits > > attribute = "mpd-limit" > > op = "+=" > > value = "in#1=all rate-limit 1024000 192000 384000 pass" > > > > rate-limit é o mesmo principio do comando no iOS da Cisco, onde o > primeiro > > atributo é o limite de tráfego, o segundo o burst e o terceiro o extended > > burst. > > > > pra calcular o burst (segundo documentação da cisco): > > > > taxa * (1/8) * 1.5 (onde taxa é o limite de tráfego que vc quer). > > > > o último argumento "pass" no final do comando, é pra evitar a necessidade > > de outra regra para liberar o tráfego. > > > > Agora, me da tua contribuição ai, não tinha percebido que podia renomear > as > > interfaces com o nome do usuario, qual foi o AVP que vc usou pra setar > isso? > > > > > > -- > > Att. > > __________________________________ > > Márcio Elias Hahn do Nascimento > > > > Araranguá - SC > > Cel: (55) 48-9661-0233 > > msn: [email protected] > > ------------------------- > > Histórico: http://www.fug.com.br/historico/html/freebsd/ > > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd > > > Para renomear a interface eu configurei o mpd.conf para rodar um script > imediatamente após a interface ser criada. > set iface up-script /caminho/completo/up.sh > > ### up.sh > #!/bin/sh > > ifconfig $1 name pppoe-$5 > exit 0 > ------------------ > > Quando ao sem nat (tem + de 6 meses que não toco no sistema). > Me lembro de configurar proxy-arp no sistema e no mpd.conf tenho que fazer > mais testes pois me parece que só é necessário em um de ambos. > > > > Quando ao controle de tráfego pensei que seu método seria diferente do que > me apresentou (ao menos agora conheço os parâmetros de controle de tráfego > e o cálculo) estou a procura dum controle hierárquico e dinâmico para cada > conexão. > > > _______________ > Bruno Araújo > > > Antes de imprimir, verifique se tem papel e tinta suficiente na impressora. > ------------------------- > Histórico: http://www.fug.com.br/historico/html/freebsd/ > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd > ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

