Hola Showk, el 05 de feb de 2002, a las 07:21 +0100, Showk dec�as:
> Existe alg�n programa para linux que me permita controlar la carga de un
> programa dado en red, por ejemplo que limite el puerto 21 a 5kb o por
> ejemplo que asegure para el puerto 80 a 10 kb y el resto de programas ocupen
> el ancho de banda que deje disponible el puerto 80.
---
Lo que necesitas es el qos (Quality Of Service), no es estrictamente un
programa,
sino forma parte de kernel!
Mirate www.netfilter.org en la gu�a de enrutado avanzada
tienes varios ejemplos de como hacerlo y ademas te viene como
puedes hacer para mejorar las descargas, asignarles prioridades
seg�n el tipo de tr�fico, etc...
Yo tengo puesto el qos en casa y es una maravilla!
Te pongo mi script de configuraci�n por si te sirve de ayuda,
aunque te recomiendo que te leas la gu�a que te explica
muy bien para que sirve todo esto :)
8<-----------------------------------------------------
#!/bin/bash
#
# QOS para mi casita
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin
case $1 in
start)
# Creamos la clase cbq en la interfaz de salida
# Aqui solamente consideramos el tr�fico de salida, no podemos contolar la
entrada
# por lo menos no con esta clase.
tc qdisc add dev eth0 root handle 1:0 cbq bandwidth 10Mbit avpkt 1000 cell 8
# Creamos la clase general
tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 10Mbit \
rate 128Kbit weight 12.8Kbit prio 8 allot 1514 cell 8 maxburst 20 \
avpkt 1000 bounded
# Creamos clase para tr�fico estandar prioridad media - 5
# No hace falta acotarla, pq esta acotada la parent
tc class add dev eth0 parent 1:1 classid 1:3 cbq bandwidth 10Mbit \
rate 128Kbit weight 12.8Kbit prio 5 allot 1514 cell 8 maxburst 20 \
avpkt 1000
# Creamos clase para tr�fico priorizado: ssh
# No hace falta acotarla, pq esta acotada la parent
tc class add dev eth0 parent 1:1 classid 1:4 cbq bandwidth 10Mbit \
rate 128Kbit weight 12.8Kbit prio 2 allot 1514 cell 8 maxburst 20 \
avpkt 1000
# Creamos clase para tr�fico menos priorizado: navegaci�n web
# No hace falta acotarla, pq esta acotada la parent
tc class add dev eth0 parent 1:1 classid 1:5 cbq bandwidth 10Mbit \
rate 128Kbit weight 12.8Kbit prio 3 allot 1514 cell 8 maxburst 20 \
avpkt 1000
# Creamos clase para tr�fico de baja prioridad: e-donkey
# No hace falta acotarla, pq esta acotada la parent
# Quiero que siempre haya un margen y no ocupe todo el bw
tc class add dev eth0 parent 1:1 classid 1:6 cbq bandwidth 10Mbit \
rate 100Kbit weight 10Kbit prio 7 allot 1514 cell 8 maxburst 20 \
avpkt 1000
# Para que el tr�fico sea tratado justamente, cambiamos el administrdor
# por defecto (fifo, por sfq)
# Hay que hacerlo en cada clase.
tc qdisc add dev eth0 parent 1:3 handle 30: sfq perturb 10
tc qdisc add dev eth0 parent 1:4 handle 40: sfq perturb 10
tc qdisc add dev eth0 parent 1:5 handle 50: sfq perturb 10
tc qdisc add dev eth0 parent 1:6 handle 60: sfq perturb 10
# Y ahora los filtros.
# Todos los que vayan para ssh (no scp)
tc filter add dev eth0 protocol ip parent 1:0 prio 20 u32 match \
ip tos 0x10 0xff flowid 1:4
# Tambi�n metemos aqui el ping pa que vaya bien siempre
tc filter add dev eth0 protocol ip parent 1:0 prio 20 u32 match \
ip protocol 1 0xff flowid 1:4
# Todos los que vayan para web
tc filter add dev eth0 protocol ip parent 1:0 prio 30 u32 match \
ip dport 80 0xffff flowid 1:5
tc filter add dev eth0 protocol ip parent 1:0 prio 30 u32 match \
ip dport 8080 0xffff flowid 1:5
tc filter add dev eth0 protocol ip parent 1:0 prio 30 u32 match \
ip dport 443 0xffff flowid 1:5
# Ahora metemos el e-donkey
tc filter add dev eth0 protocol ip parent 1:0 prio 70 u32 match \
ip dport 4662 0xffff flowid 1:6
tc filter add dev eth0 protocol ip parent 1:0 prio 70 u32 match \
ip dport 4665 0xffff flowid 1:6
tc filter add dev eth0 protocol ip parent 1:0 prio 70 u32 match \
ip sport 4662 0xffff flowid 1:6
tc filter add dev eth0 protocol ip parent 1:0 prio 70 u32 match \
ip dport 4661 0xffff flowid 1:6
tc filter add dev eth0 protocol ip parent 1:0 prio 70 u32 match \
ip dport 6665 0xffff flowid 1:6
# Para priorizar la descarga sobre el upload metemos lo paquetes de ack
# en la cola normal.
tc filter add dev eth0 protocol ip parent 1:0 prio 60 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:3
# El resto por defecto tiene prioridad estandar
tc filter add dev eth0 protocol ip parent 1:0 prio 80 u32 match \
ip dst 0.0.0.0/0 flowid 1:3
# Y ahora la cola de entrada
#tc qdisc add dev eth0 handle ffff: ingress
# Filtramos todo lo que vaya demasiado r�pido, para optimizar el
# encolamiento en ISP y no me llegue a saturarse alli y perder el control
#tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip \
# src 0.0.0.0/0 police rate 256Kbit burst 10k drop flowid :1
;;
stop)
tc qdisc del dev eth0 root >/dev/null 2>&1
;;
*)
echo "Usage: /etc/init.d/qos {start|stop}"
exit 1
;;
esac
exit 0
8<-----------------------------------------------------------
Un saludo,
Andr�s
--
-------------------------------------------------------------
Jos� Andr�s Arias Velichko Grupo de Usuarios de Linux
[EMAIL PROTECTED] Universidad Carlos III de Madrid
http://gul.uc3m.es/~locke http://gul.uc3m.es