Como fazer controle de banda em um server PPPoE

1. Como fazer controle de banda em um server PPPoE

Marcos Meira
oxroll

(usa Debian)

Enviado em 12/04/2008 - 13:15h

Pessoal, montei um server PPPoE, está funcionando 100%, porém ele cria uma interface virtual para cada cliente q se autentica (ppp0, ppp1..etc), gostaria de saber como posso controlar banda neste servidor, seja com o CBQ ou HTB...etc. Alguém tem alguma sugestão???


  


2. Re: Como fazer controle de banda em um server PPPoE

Wilker Azevedo
cytron

(usa Slackware)

Enviado em 13/06/2008 - 17:43h

O funcionamento é simples, cada vez que um cliente se conecta, o pppd no seu servidor executa o script ip-up caso ele exista (tem outros também, como ip-pre-up, mas não vem ao caso). É nesse script que você faz o controle. Ao desconectar, você desfaz pelo ip-down.

Esse scrpit eu mesmo fiz, baseado em artigos aqui no VOL:

=== ip-up ===

#!/bin/bash
#
# ip-up by cytron
# Script para limitar velocidade
#
ppp=$1
ip=$5
down=250 # velocidade download
up=32 # velocidade upoad

/sbin/tc qdisc add dev $ppp root handle 1: htb default 30
/sbin/tc class add dev $ppp parent 1: classid 1:1 htb rate ${down}kbit ceil ${down}kbit
/sbin/tc class add dev $ppp parent 1:1 classid 1:10 htb rate $[5*$down/100]kbit burst 5k prio 1 ceil ${down}kbit
/sbin/tc class add dev $ppp parent 1:1 classid 1:20 htb rate $[5*$down/100]kbit burst 5k prio 2 ceil ${down}kbit
/sbin/tc class add dev $ppp parent 1:1 classid 1:30 htb rate $[5*$down/100]kbit burst 5k prio 3 ceil ${down}kbit
/sbin/tc qdisc add dev $ppp parent 1:10 handle 10: sfq perturb 10
/sbin/tc qdisc add dev $ppp parent 1:20 handle 20: sfq perturb 10
/sbin/tc qdisc add dev $ppp parent 1:30 handle 30: sfq perturb 10

/sbin/tc qdisc add dev $ppp handle ffff: ingress
/sbin/tc filter add dev $ppp parent ffff: protocol ip prio 5 u32 match ip tos 0x10 0xff flowid :1
/sbin/tc filter add dev $ppp parent ffff: protocol ip prio 5 u32 match ip protocol 1 0xff flowid :1
/sbin/tc filter add dev $ppp parent ffff: protocol ip prio 5 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid :1

/sbin/tc filter add dev $ppp parent ffff: protocol ip prio 6 u32 match ip src $ip police rate ${up}kbit burst 10k drop flowid :1

==============

=== ip-down ===

#! /bin/bash
#
# ip-down by cytron
# Script para desativar limite de velocidade
#
ppp=$1
echo "Logout" $ppp `date` >> /usr/local/var/log/pppd.log
echo >> /usr/local/var/log/pppd.log
tc qdisc del dev $ppp root
tc qdisc del dev $ppp ingress

=============

Só tem um probleminha mas estou querendo trabalhar na solução, só falta tempo:

Ele apenas limita a velocidade máxima que o cliente pode chegar, mas não faz uma distribuição uniforme entre os clientes, tipo gerar uma média e estabelecer pra todos, considerando o critério da velocidade máxima.

Este script considera que você estabeleça a mesma velocidade para todos os clientes, se quiser velocidade individual tem que alterar, no meu caso uso Radius, faço controle de velocidades diferentes, por isso tive que alterar o script pra postar aqui. Se quiser o script que trabalha com radius é só me pedir... quando eu tiver tempo vou postar no VOL.


3. opa

Marcos Dias Cardoso
marquinhos1875

(usa CentOS)

Enviado em 11/09/2010 - 00:10h

opa, sei que esse e um assunto antigo e não sei se resolveu, mas pode resolver isso com o modulo (patch) IMQ ou o IFB nativo do kernel






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts