CBQ mi script falla no limita el ancho de banda marcado

Imagen de juank6_66

Tema: 

Hola a todos...miren tengo un problema estoy usando CBQ para el control del ancho banda uso este script supuestamente limito el consumo a 256k a la red interna pero nose en donde esa mal ya que una pc tranquilamente me llega a sobrepasar el consumo delimitado....no se si le dan una chequeadita para que me sugieran donde esta la falla.. :?

Nota:estoy usando centos 4.4

#!/bin/sh

IPTABLES=/sbin/iptables
TC=/sbin/tc
CBQ=/sbin/cbq.init
OK="\033[1;0m [ \033[00;32mOK \033[1;0m]\033[0m"
echo -e "Reglas de Control de Ancho de Banda: $OK"
$CBQ stop

# ===>> Control Ingreso de Paquetes de la Red <<=== #

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -s mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -s mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -s mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -s mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A INPUT -j MARK -p udp -s mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -s mi_ip_publica --set-mark 1

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -s mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -s mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -s mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -s mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A INPUT -j MARK -p udp -s mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -s mi_ip_privada/24 --set-mark 2

# ===>> Control Egreso de Paquetes de la Red <<=== #

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -d mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -d mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -d mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -d mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A INPUT -j MARK -p udp -d mi_ip_publica --set-mark 1
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -d mi_ip_publica --set-mark 1

$IPTABLES -t mangle -A PREROUTING -j MARK -p tcp -d mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A INPUT -j MARK -p tcp -d mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A OUTPUT -j MARK -p tcp -d mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A PREROUTING -j MARK -p udp -d mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A INPUT -j MARK -p udp -d mi_ip_privada/24 --set-mark 2
$IPTABLES -t mangle -A OUTPUT -j MARK -p udp -d mi_ip_privada/24 --set-mark 2

# ===>> Control de Ancho de Banda a 256Kbit <<=== #
$TC qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit avpkt 1000 cell 8
$TC qdisc add dev eth1 root handle 1: cbq bandwidth 10Mbit avpkt 1000 cell 8

$TC class add dev eth0 parent 1:0 classid 1:1 est 1sec 2sec cbq bandwidth 10Mbit rate 256Kbit allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000 bounded

$TC class add dev eth1 parent 1:0 classid 1:2 est 1sec 2sec cbq bandwidth 10Mbit rate 256Kbit allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000 bounded

$TC filter add dev eth0 protocol ip handle 1 fw classid 1:1
$TC filter add dev eth1 protocol ip handle 2 fw classid 1:2

Comentarios

Me parece que estas marcando

Imagen de Monkito

Me parece que estas marcando mal los paquetes, prueba lo siguiente:


lan="192.168.0.0/24"
# Ingreso de paquetes a la red
$IPTABLES -t filter -A FORWARD -s $ip -i eth1 -d 0/0 -o eth0 -j MARK --set-mark 1
# Egreso de paquetes de la red
$IPTABLES -t filter -A FORWARD -d $ip -o eth1 -s 0/0 -i eth0 -j MARK --set-mark 2

# el resto...
$TC qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit avpkt 1000 cell 8
$TC qdisc add dev eth1 root handle 2: cbq bandwidth 10Mbit avpkt 1000 cell 8

$TC class add dev eth0 parent 1:0 classid 1:1 est 1sec 2sec cbq bandwidth 10Mbit rate 256Kbit allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000 bounded

$TC class add dev eth1 parent 2:0 classid 2:1 est 1sec 2sec cbq bandwidth 10Mbit rate 256Kbit allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000 bounded

$TC filter add dev eth0 protocol ip handle 1 fw classid 1:1
$TC filter add dev eth1 protocol ip handle 2 fw classid 2:1

A mi me ha funcionado bien con el htb, debería funcionar tambien con el cbq, en cuanto a el "handle 1" debería funcionar como tu tienes el mismo "1" para subida y bajada ya que son distintas interfaces de red, pero me he acostumbrado a ponerles diferente "1 y 2"

Bye

Cogito Ergo Sum

------------
counter.li.org

Cogito Ergo Sum

Correcto esta mal marcado y

Imagen de damage

Correcto esta mal marcado y debes separar las redes en dos clases diferentes una que sea 1,2 y la ota 3,4. Espro me comprendas.

Keep The Fire Burning.....
Stryper 1988
http://counter.li.org/

Gracias voy a probar

Imagen de juank6_66

Gracias voy a probar !!!!!!!!!!!!!!! ... ademas vi un script bastante interesante aca publicado por usted... segun su experiencia que me recomienda mas cbq o htb???

Juank

monkito.. yo tengo un

Imagen de jorgeq

monkito.. yo tengo un problema similar con mis archivos segmentadores.. veo q tienes en tu archivo detallado paquetes de entrada y salida de la red... crees q me puedas ayudar publicando tu script cbq completo para poder ajustarlo a mi red.. ??.. gracias

All right...

Imagen de Monkito

Aqui va:


#!/bin/sh
#

OK="\033[1;0m [ \033[00;32mOK \033[1;0m]\033[0m"
echo -e "ANCHO DE BANDA: $OK"

### VARIABLES ###
WAN="0/0"
DEVWAN="eth0"
DEVLAN="eth1"

TC=/sbin/tc
IPTABLES="/sbin/iptables -t mangle"
HTB=/usr/bin/htb
ANY=0/0

$HTB stop
### ---------------- FLUSH DE REGLAS ----------------- ###
$TC qdisc del dev $DEVWAN root handle 1: htb
$TC qdisc del dev $DEVLAN root handle 2: htb

$IPTABLES -F
$IPTABLES -X

### ---------------- CREANDO CLASE ROOT -------------- ###
$TC qdisc add dev $DEVWAN root handle 1: htb default 97 r2q 1
$TC qdisc add dev $DEVLAN root handle 2: htb default 98 r2q 1

### ----------------- CLASES PADRES ---------------------------------------- ###
$TC class add dev $DEVWAN parent 1: classid 1:100 htb rate 256Kbit ceil 256Kbit
$TC class add dev $DEVLAN parent 2: classid 2:100 htb rate 256Kbit ceil 256Kbit

#ICMP tienen prioridad (5Mb) (marcas por defecto)

$IPTABLES -A INPUT -i eth1 -s 0/0 -p icmp -j MARK --set-mark 97
$IPTABLES -A OUTPUT -o eth1 -d 0/0 -p icmp -j MARK --set-mark 98

#$IPTABLES -A OUTPUT -p icmp -j MARK --set-mark 97
#$IPTABLES -A FORWARD -p icmp -j MARK --set-mark 97
#$IPTABLES -A POSTROUTING -p icmp -j MARK --set-mark 97
#$IPTABLES -A PREROUTING -p icmp -j MARK --set-mark 97

#$IPTABLES -A OUTPUT -p icmp -j MARK --set-mark 98
#$IPTABLES -A FORWARD -p icmp -j MARK --set-mark 98
#$IPTABLES -A POSTROUTING -p icmp -j MARK --set-mark 98
#$IPTABLES -A PREROUTING -p icmp -j MARK --set-mark 98

# Canal 001 => 128-C [8:1]

RATE="16Kbit"
MAX="128Kbit"

IPs="192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.14
192.168.0.15
192.168.0.16
192.168.0.17
192.168.0.18
"
for IP in $IPs; do
$IPTABLES -A FORWARD -s $IP -d $ANY -o $DEVWAN -i $DEVLAN -j MARK --set-mark 1
$IPTABLES -A FORWARD -d $IP -s $ANY -i $DEVWAN -o $DEVLAN -j MARK --set-mark 2
done

$TC class add dev $DEVWAN parent 1:100 classid 1:1 htb rate $RATE ceil $MAX
$TC class add dev $DEVLAN parent 2:100 classid 2:1 htb rate $RATE ceil $MAX
$TC filter add dev $DEVWAN parent 1:0 protocol ip prio 1 handle 1 fw flowid 1:1
$TC filter add dev $DEVLAN parent 2:0 protocol ip prio 2 handle 2 fw flowid 2:1

# Canal 002 => 128-A [1:1]

RATE="64Kbit"
MAX="96Kbit"

IPs="192.168.0.6"

for IP in $IPs; do
$IPTABLES -A FORWARD -s $IP -d $ANY -o $DEVWAN -i $DEVLAN -j MARK --set-mark 3
$IPTABLES -A FORWARD -d $IP -s $ANY -i $DEVWAN -o $DEVLAN -j MARK --set-mark 4
done

$TC class add dev $DEVWAN parent 1:100 classid 1:2 htb rate $RATE ceil $MAX
$TC class add dev $DEVLAN parent 2:100 classid 2:2 htb rate $RATE ceil $MAX

$TC filter add dev $DEVWAN parent 1:0 protocol ip prio 1 handle 3 fw flowid 1:2
$TC filter add dev $DEVLAN parent 2:0 protocol ip prio 2 handle 4 fw flowid 2:2

#### ----------- LINEA DE CLASE Y FILTRO DE CLASE POR DEFECTO ------------ ####
$TC class add dev $DEVWAN parent 1:100 classid 1:97 htb rate 5Mbit ceil 5Mbit quantum 640
$TC class add dev $DEVLAN parent 2:200 classid 2:98 htb rate 5Mbit ceil 5Mbit quantum 640

$TC filter add dev $DEVWAN parent 1:0 protocol ip prio 1 handle 97 fw flowid 1:97
$TC filter add dev $DEVLAN parent 2:0 protocol ip prio 1 handle 98 fw flowid 2:98

iptables-save > /etc/sysconfig/iptables

Tengo 256Kbps y lo divido en dos canale, uno de 8:1(clientes home) y otro de 1:1(cyber)..

Cogito Ergo Sum

------------
counter.li.org

Cogito Ergo Sum