problemas al limitar ancho de banda a un puerto que ingresa de internet al servidor usando cbq

Forums: 

Hola a todos, estoy lidiando con un problemita, resulta que tengo implementado QoS con cbq a nivel de puertos marcando paquetes con iptables trabaja al 100% no me quejo es muy eficiente y hace lo que le digo, pero estoy teniendo un problema con algo nuevo, resulta que estoy manejando QoS para llamadas telefonicas y acabo de implementar en el mismo servidor el sistema de correos, tengo 2.5 mb de internet y hasta el momento he logrado controlar lo que el servidor envia de correos, logro controlar las maquinas internas, separo el ancho de banda de los telefonos y funciona genial con iftop se miran como se cumplen las reglas y ya tengo 1 año asi y va excelente, pero no logro controlar el trafico de entrada por la interfaz que esta en internet lo que deseo hacer es limitar la velocidad con que recibo email al mismo servidor de correos que hace QoS, observo en las reglas mangle de iptables que se marca el paquete perfectamente pero cbq no lo relaciona ya que esta llegando al servicio interno y ni lo mira y me topa el ancho de banda en este momento voy a implementar bloqueo de extensiones ya que no deseo que se envien musica y nada por el estilo pero seria genial lograr que el server limite la entrada a una velocidad determinada de veras le he dado vueltas al asunto y acudo a ustedes ya que hay muchos usuarios por estos lados que tienen mucha experiencia en QoS.

esto es lo que observo con iptables

Chain INPUT (policy ACCEPT 13M packets, 7233M bytes)
pkts bytes target prot opt in out source destination
6543 8507K MARK all -- any any anywhere anywhere MARK set 0x27

si observan envie un email de 10 mb y lo recibio a 8 mb de velocidad cuando debio ser a 84 Kb. iptables marca el paquete ya que es quien recibe mas informacion al momento de hacer la prueba los demas ni se mueven, ahora con cbq no veo que se relacione la regla.

al momento de hacer la prueba me da este resultado

class cbq 1:2002 parent 1: leaf 2002: rate 84Kbit (bounded) prio 5
Sent 0 bytes 0 pkts (dropped 0, overlimits 0 requeues 0)

lo tengo bajo porque estaba depurando pero ya le di mil vueltas a las reglas y no pego ni una.
se podra hacer lo que necesito?

en iptables uso esta regla

Imagen de juandarcy2000


iptables -t mangle -A INPUT -p tcp --dport 110 -j MARK --set-mark 39

aqui fui bien general intento disminuir el trafico en todas las interfaces pero aun asi cbq no trabaja al hacer INPUT me trabaja con FORWARD, OUTPUT, POSTROUTING Y PREROUTING pero input no las toma en cuenta.

en el archivo de cbq solo le cargo parametros basicos no hago reglas tc.


DEVICE=eth0,10Mbit,1Mbit
RATE=84Kbit
WEIGHT=8.4
PRIO=5
MARK=39

eth0 es mi interfaz de internet.

para probar la regla de una forma mas eficiente uso IPERF. y me muestra 10 mb ya que tenemos enlace de fibra.
solo detengo el demonio dovecot y pongo iperf a funcionar en el puerto 110 y desde un cliente transmito paquetes al mismo puerto y va a toda velocidad. es la forma mas eficiente y rapida de probar la carga.

Bueno añales que no uso CBQ,

Imagen de damage

Bueno añales que no uso CBQ, pero de lo poco que recuerdo de un script para segmentarle el ancho de banda de bajada a un cliente cuando usa correo lo que tengo en dicho codigo es:

$IPTABLES -A OUTPUT -d $IP_CLIENTE -p tcp --sport 110 -o eth0 -j MARK --set-mark 2

Ahora para la subida deberías usar prerouting pero no se que tan bien responda igual prueba ojo que la marca debe ser distinta a las otras ya que de subida por lo cual deben estar separadas dichas marcas:

$IPTABLES -A PREROUTING -s $IP_CLIENTE -d eth1 -i eth0 -j MARK --set-mark 1

Espero te ayude en algo.

Saludos coordiales.

P.D Las interfaces esta estan de acuerdo a tu red.

el cbq y el htb no trabajan

Imagen de Ascii

el cbq y el htb no trabajan en una interface entrante solo en una saliente, por eso puedes limitar los PC de tu red sin problemas.
http://www.gulic.org/almacen/lartc/lartc.pdf

14.4. Qdisc de entrada (Ingress)
Todas las qdisc comentadas hasta ahora eran de salida. Sin embargo, cada interfaz tiene también una qdisc de
entrada que no se usa para enviar paquetes hacia el adaptador de red. En su lugar, permite aplicar filtros de tc a
los paquetes que vienen desde la interfaz, independientemente de si su destino es local o han de ser reenviados.
Como los filtros de tc contienen una implementación completa del Token Bucket Filter, y también son capaces
de trabajar con el estimador de flujo del núcleo, hay mucha funcionalidad disponible. Esto permite de forma
efectiva controlar el tráfico entrante, antes incluso de que entre en la pila IP.

cito otra pagina del mismo documento.

Imagen de juandarcy2000

pag 41
9.1. Las colas y disciplinas de cola explicadas
Con el encolamiento determinamos la manera en que se ENVIAN los datos. Es importante darse cuenta de que
sólo podemos dar forma a lo que transmitimos.
De la manera en que trabaja Internet, no tenemos control directo sobre lo que la gente nos envía. Es un poco
como el buzón (¡físico!) de su casa. No hay manera en que pueda influenciar al mundo para modificar la cantidad
de correo que le envían, ya que no puede ponerse en contacto con todo el mundo.

[quote]con esto quedo mas claro que el agua.[/quote]