BULMA Bulma amb el projecta Defective by Desing
Bergantells Usuaris de GNU/Linux de Mallorca i Afegitons   |   Bisoños Usuarios de GNU/Linux de Mallorca y Alrededores
CONTENIDOS
. Jornadas de software libre
. Version para PDA
. Enlaces breves
. La asociacion
. Los mas leidos
. Autores [Actividad]
. Ultimos Comentarios
. Todos los titulares!
. Estadisticas
. Guia de estilo
. ¿Sugerencias?
. Wiki
. XML [Ayuda]
Listas de correo
. Archivos bulmailing
. Archivos BulmaGes
Radio libre :-)
. Des de la Xarxa (Archivos)
. Mallorca en Xarxa
Busquedas

+ Enlaces Linux
Ultimos kernels
(01/08/2010 05:10:59)
    
Google


En bulma.net
En internet
Método para la ecualización del ancho de banda (64099 lectures)
Por Jose Luis Nogueira
scero (http://www.scero.net)
Creado el 07/04/2003 21:02 modificado el 07/04/2003 21:02

En este artículo expongo un método con el cual podréis "ecualizar" el ancho de banda de vuestra conexión, gracias a las herramientas QoS.

Pagina1/1

1. Introducción

Desde hace algún tiempo he estado intentado ecualizar el ancho de banda de mi conexión, con el fin de poder garantizar que siempre se dispone de un ancho de banda mínimo para un determinado servicio o máquina de una red.

Para entender la utilidad de esto supongamos que tenemos una red como la siguiente


es muy habitual encontrarse con el hecho de que el cliente 1 comienza a utilizar ancho de banda de forma masiva y continua (ftp, p2p, etc...); de manera que si en un momento posterior el cliente 2 intenta utilizar la conexión para cosas más livianas (navegar), este descubre que la conexión esta copada por el primero y todo el acceso le va muy lento.

En este artículo pretendo explicar un método para poder evitar esta u otras situaciones en las cuales el ancho de banda es utilizado de una manera poco justa entre los usuarios (servicios) o como mínimo de una manera no adecuada. Entre otras cosas pretendo explicar la forma de conseguir lo siguiente:

  • Asegurar que no haya en la red usuarios (o servicios) que utilizan el ancho de banda ocasionando un acceso precario para los otros
  • Establece prioridades entre las máquinas cliente de nuestra red (si esto fuese necesario)
  • Garantizar un ancho de banda mínimo para cada servicio o grupo de servicios (ftp, telnet, ssh, www, etc ...)
No quiero que ninguno piense que este es el único método para poder ecualizar un ancho de banda, esto sería un error. Lo único que pretendo en este artículo es dar a conocer algunos de los servicios QoS (quality of service) que están disponibles en el núcleo de Linux; estos servicios se pueden utilizar de muchas formas y combinar entre ellos para solucionar problemas muy complejos. En general el método que os voy a explicar es muy potente y simple a la vez, de todos modos si alguno cree que puede mejorarse de alguna manera, estoy abierto a todo tipo de sugerencias.

En este artículo parto de la base de que todos los lectores:

  • Sabéis compilar el kernel de Linux
  • Sabéis usar netfilter (iptables) de los kernels 2.4.x
  • Tenéis conocimientos mínimos de administración de redes en Linux

2. Método utilizado para la ecualización

Este método se puede representar de manera gráfica de la siguiente manera:


Aviso: este gráfico es una simplificación de la realidad, únicamente pretende servir con fines didácticos; el proceso que realmente sigue Linux es un poco más complejo e intervienen más factores. Como se puede observar la idea es utilizar Netfilter para marcar los paquetes según el tratamiento que se desee darles, cuando estos paquetes lleguen al dispositivo de red por el que deben salir a internet (o cualquier otra red) son tratados según un árbol de preferencias que especifica el ancho de banda que le corresponde, la prioridad, etc...

En los siguiente puntos se encuentra una explicación detallada de como implementar este método.

2.1. Compilación de Kernel

Lo primero que se debe hacer es habilitar todos los soportes a utilizar en el Kernel.

Para poder emplear Netfilter, como mínimo:

Networking options -->
    [*] Network packet filtering (replaces ipchains)

IP: Netfilter Configuration -->
    <*> netfilter MARK match support
    <*> Connection state match support
    <*> Packet filtering
    <*> Packet mangling
        <*> MARK target support
Si adicionalmente se desea hacer Masquerading y demás historias también se deberían activar sus correspondiente soportes.

Para poder usar los servicios QoS necesarios para este método es necesario:

Networking options -->
  QoS and/or fair queueing -->
  [*] QoS and/or fair queueing
    <*> HTB packet scheduler
    <*> SFQ queue
    <*> Ingress Qdisc
    [*] QoS support
      [*] Rate estimator
    [*] Packet classifier API
      <*> TC index classifier
      <*> Routing table based classifier
      <*> Firewall based classifier
      [*] Traffic policing (needed for in/egress)

2.2. Creación de un árbol de preferencias para un dispositivo

Con árbol de preferencias de preferencias pretendo hacer referencia (de forma informal) a una estructura de ``clases'' o ``bandas'' (según la traducción) en la que hay dependencias padre-hijo entre sus miembros.

Para poder implementar esta estructura es necesario conocer los algoritmos que voy a emplear en cada una de sus clases. Hay que tener en cuenta que no son lo únicos que se pueden aplicar, existen otros con diferentes características:

Algoritmo sfq (Stochastic Fairness Queueing)

Es una implementación sencilla de la familia de algoritmos de colas justas (fair queueing).

En este algoritmo el tráfico se divide en un número bastante grande de colas FIFO, una por cada conversación. Entonces se envía el tráfico de una manera parecida a round robin, dando a cada sesión por turnos la oportunidad de enviar datos.

Es decir es un algoritmo que busca una equidad entre todas las peticiones para repartir de la manera más justa posible el ancho de banda.

Algoritmo htb (Hierarchical Token Bucket)

Es una algoritmo utilizado para dividir el ancho de banda según nos interese de manera que se puede especificar un ancho de banda mínimo y un ancho de banda máximo. De manera que el algoritmo asegura la disponibilidad del mínimo, y en caso de que haya ancho de banda libre se puede llegar hasta el máximo.

Existe otros algoritmos que hacen cosas similares, pero este es el único (por lo que he probado) que permite pedir prestado ancho de banda que no se use.

Reparto de los anchos de banda en el árbol de preferencias

Para crear el árbol cada uno puede aplicar los criterios que más le convengan, en este apartado explicaré como hacerlo y daré un par de ideas que pueden resultar interesantes.

Para los ejemplos que hay a continuación se supone:

  • La conexión a internet (podría ser cualquier otra red) es de 300Kbps
  • La conexión a internet se realiza por el interface eth1
  • Interesa crear dos bandas de similar ancho de banda, una se usará para navegar por la web y la otra para todos los demás servicios
  • La banda empleada para navegar por la web será prioritaria frente a la otra
Para este caso tan sencillo, se puede representar el árbol de preferencias como



para conseguir esto se puede proceder de la siguiente manera:

tc qdisc add dev eth1 root handle 1: htb default 20
Con esto se crea una banda principal (root) con el nombre 1:, que por defecto manda todos los paquetes a la banda 20.
tc class add dev eth1 parent 1: classid 1:10 htb rate 100kbps ceil 200kbps
Con esto se crea una banda que depende de la principal (parent 1:), tiene un ancho de banda mínimo de 100kbps (rate 100kbps) y puede llegar a tener hasta 200kbps (ceil 200kbps). Como no se ha indicado nada sobre la prioridad se supone que tiene prioridad máxima (es decir 0). A esta banda se le llama 10 y depende de la 1 (1:10).
tc class add dev eth1 parent 1: classid 1:20 htb rate 100kbps ceil 200kbps prio 1
Con esto se crea una banda de similares características a la anterior con la salvedad de que tiene menor prioridad (prio 1) . Su nombre es 20, al depender de la 1 se denomina (1:20). Esta será la banda por defecto para los paquetes (default 20), como se indico en el primer comando.
En este árbol cada una de las bandas tiene un ancho de 100kbps y puede crecer hasta 200kbps. Es importante tener el cuenta que los comandos:

tc qdisc add dev eth1 root handle 1: htb default 20

tc class add dev eth1 parent 1: classid 1:10 htb rate 100kbps ceil 300kbps

tc class add dev eth1 parent 1: classid 1:20 htb rate 100kbps ceil 300kbps prio 1
En la práctica con estos comandos se genera un árbol de idénticas características al anterior, pues si la conexión solo dispone de 300kbps y 100kbps son asignados de forma fija para cada banda, solo quedan 100kbps sin ocupar que son los que pueden repartirse la banda 10 y 20.

En muchos casos este modelo es indeseable pues si solo se utiliza una de las bandas, por ejemplo la 10 (para navegar) se está desaprovechando mucha velocidad, pues como máximo se puede llegar a 200kbps en lugar de los 300kbps, por lo que se está infrautilizando la conexión.

La solución a este problema es conseguir que las bandas se presten velocidad si no lo usan, conseguir esto es muy sencillo ya que en las colas htb siempre se comportan de este modo, con la salvedad de que la banda root (1) no puede prestar ancho de banda a sus hijas. Por tanto la solución se podría dar como:

tc qdisc add dev eth1 root handle 1: htb default 20

tc class add dev eth1 parent 1: classid 1:1 htb rate 300kbps ceil 300kbps

tc class add dev eth1 parent 1:1 classid 1:10 htb rate 100kbps ceil 300kbps

tc class add dev eth1 parent 1:1 classid 1:20 htb rate 100kbps ceil 300kbps prio 1
En este caso la banda root (1). Tiene una única hija la banda (1:1) (que acapara todo el ancho de la conexión) la cual a su vez tiene dos hijas (1:10) y (1:20), que tienen características similares a las ya descritas en el caso anterior. En este caso la banda 1:1 puede prestar su conexión a sus hijas, de modo que cada hija tiene su ancho de banda mínimo 100kbps y puede llegar a tener hasta 300kbps, si este no se usa por otra.

Gráficamente este segundo ejemplo se puede representar como


Como es evidente este es el ejemplo más sencillo que puede darse con únicamente dos bandas, si fuese necesario se pueden crear tantas bandas como sea necesario (1:30, 1:40, ...) según necesidades.

Combinación con colas sfq

Se puede ganar mucho en comportamiento si se combinan las clases htb con clases sfq que se encarguen de repartir justamente las peticiones que reciben, por ese motivo es muy recomendable combinar los árboles htb con estas. Esto es tan sencillo como asignar una cola de este tipo para cada banda final, esto se puede hacer de este modo:

tc qdisc add dev eth1 parent 1:10 handle 10: sfq

tc qdisc add dev eth1 parent 1:20 handle 20: sfq

...

2.3. Marcado de paquetes (Netfilter)

Ahora se debe utilizar la herramienta iptables para marcar los paquetes con valores; posteriormente los paquetes serán filtrados según los valores con los que ahora se marquen. Para esto no existe una receta ``mágica'' pues depende de lo que se desee en cada caso.

Por ejemplo si se tiene una red con un servidor que da acceso a internet y dos clientes (similar al primer gráfico que use en este artículo). De manera que lo que interesa es dar un tratamiento diferente a los paquetes que llegar de cada máquina, se pueden usar las siguientes reglas:

iptables -A FORWARD -s 192.168.1.13 -t mangle -j MARK -set-mark 1

iptables -A FORWARD -s 192.168.1.18 -t mangle -j MARK -set-mark 2

iptables -A POSTROUTING -o eth1 -p tcp -dport 20:21 -t mangle -j MARK -set-mark 3
De este modo los paquetes de la máquina con ip 192.168.1.13 son marcados con el valor 1, los paquetes de la máquina con ip 192.168.1.18 con el valor 2 y los paquetes con destino a un ftp con el valor 3.

2.4. Asociación de marcas con las bandas del árbol de preferencias

Para finalizar se debe asociar a cada marca una banda, para que de este modo según interese se de un tratamiento o otro a cada paquete. Esto se puede hacer con el comando:

tc filter add dev (dispositivo) protocol ip parent (clase_padre) handle 1 fw classid (clase_destino)
Si interesase que todos los paquetes marcados con el valor 1 fuesen a la banda 10, se podría usar algo similar a:

tc filter add dev eth1 protocol ip parent 1: handle 1 fw classid 1:10

3. Ejemplo completo

Supongamos que dada una red se desea separar las conexión a ftp del resto de conexiones a internet, de manera que se de mucha más prioridad a las conexiones ftp. En esta supuesta red, el servidor (donde se implementará el sistema QoS) da servicio de conexión a toda la red por masquerading (sobre iptables). El supuesto servidor se comunica por el dispositivo eth0 con la red local y con eth1 con internet, la velocidad de conexión es de 512kbps.

Para conseguir lo deseado se podría, por ejemplo, escribir los siguientes comandos:

# Creación del árbol de bandas

tc qdisc add dev eth1 root handle 1: htb default 20 # Por defecto toda la información irá a la banda 20

tc class add dev eth1 parent 1: classid 1:1 htb rate 512kbps ceil 512kbps

tc class add dev eth1 parent 1:1 classid 1:10 htb rate 300kbps ceil 512kbps

tc class add dev eth1 parent 1:1 classid 1:20 htb rate 200kbps ceil 512kbps prio 1 # Esta banda tiene menor prioridad y menor ancho de banda mínimo

# Asociación de colas sfq con bandas

tc qdisc add dev eth1 parent 1:10 handle 10: sfq

tc qdisc add dev eth1 parent 1:20 handle 20: sfq

# Se asocia la marca 1 con la banda 10

tc filter add dev eth1 protocol ip parent 1: handle 1 fw classid 1:10

# Reglas de filtrado (se marca con un 1 a todos los paquetes destinados a un ftp)

iptables -A FORWARD -i eth0 -o eth1 -p tcp -dport 20:21 -t mangle -j MARK -set-mark 1 # Se marca con 1 todos los paquetes con destino a un ftp

4. Herramientas de verificación

Para controlar que el sistema se comporta de forma correcta se pueden usar dos comandos, el primero muestra el comportamiento de la banda root (1:) y las bandas sfq. Este comando es:

tc -s qdisc ls dev ethx
Hay que substituir la x por el valor del dispositivo a mirar.
Si se desea controlar el comportamiento de htb es necesario usar:

tc -s -d class show dev ethx
Hay que substituir la x por el valor del dispositivo a mirar.
Al controlar los htb es interesante sobre todo controlar los campos lended y borrowed; pues muestran el comportamiento de préstamos de ancho de banda.

Espero que os sirva de utilidad y lo disfrutéis. Si encontrais algún error en el documento agradecería que me lo comunicaseis. Gracias.


Imprimir
Version para
imprimir

Imprimir
Version
PDF
Comentarios
Es posible que se hayan omitido algunos comentarios considerados poco constructivos
1.  Re: Método para la ecualización del ancho de banda (07/04/2003 22:56, #13456)
  Por: r00z

Muy interesante el tema y muy bien explicado.

Yo también estoy haciendo mis pruebas modificando un script parecido llamado wondershaper (http://lartc.org/wondershaper/). En la parte de la configuración donde se especifica el ancho de banda de subida y bajada recomienda poner los valores "algo" más bajos que los reales para evitar que se cree la cola en el router ADSL y no en la própia máquina. Alguien sabe si hay algun método para saber si los paquetes se ponen en la cola de la máquina o si pasan directamente? Es para dejar estos valores al máximo posible (que no es plan de desperdiciar unos bytes que pago religiosamente cada mes a precio de oro)

No sé si me he explicado bien pero bueno.

No es pot respondre
 
2.  Re: Método para la ecualización del ancho de banda (07/04/2003 23:59, #13461)
  Por: scero (http://scero.homelinux.org:8080)
Te has explicado perfectamente ;)
No puedo asegurarte nada sobre el tema, principalmente porque no uso ADSL (uso ONO). Ya habia leido cosas al respecto de lo que comentas, pero por las pruebas que he podido hacer no he notado la necesidad de reservar ese pequeño espacio, a pesar de que suelo tener la conexión muy saturada, tanto para subida como para bajada.
No es pot respondre
 
3.  Re: Método para la ecualización del ancho de banda (08/04/2003 20:52, #13491)
  Por: Kiko
Respecto del ancho de banda de subida, si puedes averiguarlo, porque cuando la cosa está congestionada, las colas se forman en el router y lo que interesa es que se formen en el linux para poder "aplicarle la prioridad que te interese". Lo que has de hacer es acceder al router y averiguar como estan las colas tcp (en un linux lo harías con un netstat -an, en el router..., pues dependerá del router).

Respecto del ancho de banda de bajada, éso es más complicado, porque en este caso las colas se forman en los enrutadores de tu ISP (y acceder a esa información ya es cosa más complicada...). En este caso lo que te interesa es que no se formen colas de paquetes tcp en ningun enrutador de tu isp de camino a tu casa para que la latencia no se vea afectada cuando el trafico de bajada es intenso. Perder un poquito de ancho de banda en este caso es inevitable (es el precio que hay que pagar por conservar la latencia).

Es un tema un poco complejo de explicar, en el readme del wonder shaper está bastante bien explicado.
No es pot respondre
 
4.  Re: Método para la ecualización del ancho de banda (07/04/2003 23:05, #13457)
  Por: Myth
un artículo collonut y que me va a ir de perlas. Gracias scero :)
No es pot respondre
 
5.  Re: Método para la ecualización del ancho de banda (07/04/2003 23:50, #13458)
  Por: Relay
Perfecto, solo un pequeño punto. Lee aqui: Algoritmo htb (Hierarchical Token Bucket) Es una algoritmo utilizado para dividir el ancho de banda según nos interese de manera que se puede especificar un ancho de banda mínimo y un ancho de banda máximo. De manera que el algoritmo asegura la disponibilidad del mínimo, y en caso de que haya ancho de banda libre se puede llegar hasta el mínimo. !!!! Se puede llegar al máximo no? eso he entendido.
No es pot respondre
 
6.  Re: Método para la ecualización del ancho de banda (07/04/2003 23:55, #13460)
  Por: scero (http://scero.homelinux.org:8080)
Exactamente, gracias por comentarlo. Ahora mismo lo cambio.
No es pot respondre
 
7.  Re: Método para la ecualización del ancho de banda (08/04/2003 01:18, #13463)
  Por: Tzac

Antes de nada felicitarte por el artículo, el tema es muy complejo y has conseguido realizar una introducción muy sencilla y atractiva.

Personalmente me he peleado con este tema ya hace algún tiempo y para un control satisfactorio de mi conexión me ví obligado a utilizar una interfaz IMQ, ya que sino no controlas el ancho de banda recibido, que es el que realmente te satura la conexión.

Realmente el problema que yo me he encontrado es algo que no he conseguido resolver y del que nadie ha sido capaz de darme una buena solución. El problema consiste en que puedo delimitar el tráfico que se consume a través del puerto http, pero me es imposible distinguir dentro de este el correspondiente a navegar y a las descargas a través de http. El resultado es que sigo igual, un usuario que pille un servidor desaprensivo me deja sin conexión para navegar en el resto de los puestos :(.

Pero bueno, solo lo comento porque me recordaste las noches sin dormir por culpa de los cbq, htb, tbq y compañía... un saludo de un gallego que alucina con el nivel y trabajo de estos mallorquines :)

No es pot respondre
 
8.  Re: Método para la ecualización del ancho de banda (08/04/2003 05:52, #13469)
  Por: r00z
Yo también hecho de menos una solución para esto. Habia pensado en clasificar las conexiones dinámicamente según el total de bytes consumidos dando prioridad a las conexiones que menos ancho de banda hayan consumido sin importar el puerto o protocolo. Así todas las conexiones gozarían de una prioridad alta al principio y las que consumiesen más ancho de banda poco a poco irían perdiendo esa prioridad. Lástima que no exista ninguna extensión que permita clasificar según el ancho de banda consumido. A ver si me decido un dia de estos y me pongo en serio con esto a ver si puedo sacar algo de provecho.
No es pot respondre
 
9.  Re: contolar el ancho de banda del trafíco http (11/04/2003 22:17, #13571)
  Por: murfy
...El problema consiste en que puedo delimitar el tráfico que se consume a través del puerto http, pero me es imposible distinguir dentro de este el correspondiente a navegar y a las descargas a través de http...
Creo que con Squid se puede hacer esto. No lo he probado, pero aquí explica como hacerlo.
No es pot respondre
 
10.  Re: contolar el ancho de banda del trafíco http (19/02/2004 11:07, #19808)
  Por: Rafa G.
Con SQUID puedes limitar la descarga de ficheros con las ACLs (pones las extensiones) y luego defines unas delay pools. Lo he montado y funciona muy bien :-)
No es pot respondre
 
11.  Re: Método para la ecualización del ancho de banda (08/04/2003 09:35, #13470)
  Por: djgera (http://www.vmlinuz.com.ar)
Muy, muy buen articulo, sobre todo porque es más practico que teorico, (al grano), que es lo que se pregunta generalmente sobre este tema.

Gracias!
No es pot respondre
 
12.  Re: Método para la ecualización del ancho de banda (08/04/2003 13:37, #13475)
  Por: rafaexpo
Me parece muy, pero que muy bueno, estoy haciendo algunas pruebillas si me saltan dudas te comento. Gracias por tu escrito
No es pot respondre
 
13.  Re: Método para la ecualización del ancho de banda (08/04/2003 16:17, #13478)
  Por: Solomons

Que gusto ver como subis el nivel de Bulma con estos artículos, norawena ;-) Ya tengo ganas de hacer pruebas en la oficina para evitar que se quede frita la conexión por los downloads de ftp o cvs.

Ya que estoy, hay un detalle que no se si está mal escrito. En el apartado 2.2, sección Reparto de los anchos de banda en el árbol de preferencias, hay un párrafo que dice:

La solución a este problema es conseguir que las bandas se presten velocidad si no lo usan, conseguir esto es muy sencillo ya que en las colas sfq siempre se comportan de este modo [...]

Y sin embargo en todas las lineas del ejemplo inmediatamente posterior pone:

tc qdisc add dev eth1 root handle 1: htb default 20 [...]

¿Es eso correcto?

Por lo demás, collonut :-) Fíjate si tiene nivel el artículo que esta collonada es lo único que se me ocurre alegar O;-)

Au, un sasludo


Nota privada: ¿sigues filtrándome? He respondido tu "dedicatoria" esta tarde.
No es pot respondre
 
14.  Re: Método para la ecualización del ancho de banda (08/04/2003 19:28, #13488)
  Por: scero (http://scero.homelinux.org:8080)
Totalmente correcto, en la frase me he colado de tipo de cola, lo siento. Lo corrijo en el artículo ahora mismo.
Supongo que estos algunos de fallos son probocados porque lo escribí inicialmente en Lyx/LaTeX y al pasarlo a html (cosa que hice medio a mano) me he colado en algunas cosillas.
Por cierto si alguien quiere completa el artículo con cualquier tipo de explicación o ampliación (colas p_fifo, bit TOS, ...) puede pedirme el original y se lo pasaré.
Muchas gracias por la anotación y saludos.
No es pot respondre
 
15.  Re: Método para la ecualización del ancho de banda (08/04/2003 23:44, #13496)
  Por: anónimo
Primero enhorabuena por el articulo porque es excelente para una introduccion de nivel muy bueno. Querria hacerte una pregunta:

Quiero compartir una conexion ADSL entre 3 personas usando linux como router y un modem adsl. Quiero tener 3 clases hijas de la 1:1 de tu ejemplo (la inmediatamente siguiente de la root). Estas clases corresponden a tres IPs (los 3 amigos). Despues de cada una de las tres hojas "cliente", quiero que salgan otras tres (una para web, smtp y resto). Y de tal manera que cada uno tenga en total como minimo un 33.3% del ancho de banda si estan los tres conectados, y si solo hay dos por ejemplo, pues un 50% para cada uno.

Esto se supone q tiene q aplicarse a la interfaz q da al modem para el uplink. ¿Se podria hacer? ¿Podrias pastear algo rapidito ? se me da muy muy mal :(( :) Gracias por adelantado si alguien lo pastea :)

Y otra cosa. ¿Seria interesante aplicarle a la otra interfaz del router (a la q da a la red interna) colas HTB ? vamos, lo digo para q en bajada uno no chupe mas q otro ... o eso tambien se implementa en tu ejemplo?. Quiero decir, que lo que has explicado es para el uplink, pero para el downlink no has dicho nada. Yo puedo enviar como maximo 100k, pero recibir mas estando copando la del resto, no?

Muchas gracias por adelantado, y muchas gracias tb por tu articulo.
No es pot respondre
 
16.  Re: Método para la ecualización del ancho de banda (09/04/2003 10:01, #13510)
  Por: scero (http://scero.homelinux.org:8080)
Antes de nada veo que tienes el mismo problema conceptual que yo me encontré: "separar las bajadas de las subidas". Este problema no es tal, pues si te fijas en los ejemplos del artículo, siempre se controla la banda por la que se envía la información pero no por cual te llega, y esto es porque por norma general siempre se baja más de los que se sube. Por tanto si una determinada información (por ejemplo de ftp) se pide por una banda de 100Kbps, la información de subida es despreciable, pero la de bajada nunca superará los 100Kbps. Con esto ya te libras de discernir entre upload y download, por otra parte si vas a usar mucha subida siempre puedes hacer bandas expecificas para ello, aunque esto solo es justificable si tienes un servidor (www, ftp, ...) que trabaja mucho.

Respecto al modelo que comentas que deseas aplicar no tendrás mucho problema en implementarlo siguiendo los pasos del artículo. Simplemente crea las tres colas htb dependientes de la 1:1 supongamos que se llaman 1:10, 1:20, y 1:30; ahora es realizar nuevamente el proceso pero tomando como padres estas, al estilo de:

tc class add dev ethX parent 1:10 classid 10:100 htb rate XXXkbps ceil XXXkbps

Espero que te sea útil, si no he entendido bien la pregunta o no te a quedado clara la respuesta no dudes en preguntar otra vez.
No es pot respondre
 
17.  duda upload/download (09/04/2003 12:53, #13515)
  Por: murfy
Excelente el articulo. Yo implementé algo parecido con el script cbq-init .

Mi duda: Supongamos que tenemos una linea ADSL asimetrica (300Kb/s subida y 2Mb/s de bajada). Según entendi en el articulo lo que se limita con htb es la subida, es decir las peticiones de mis clientes a Internet. Es decir que para implementarlo en este caso tendria que definir que la velocidad de la conexión es de 300Kb/s y no de 2Mb/s. ¿Esto es asi?

Por otro lado tiene cierto sentido limitar unicamente la subida (las peticiones de los clientes), pues para que quiero limitar la bajada si los datos ya me han llegado a mi router/shaper linux? Una vez que los datos estan en el router para que leches van a esperar alli, pudiendo entregarselos al cliente, ¿es correcto esto? o por el contrario merece la pena limitar y repartir la bajada también?

Según me comentarón existen unos aparatitos packetshaper bastante eficientes que sirven para gestionar el ancho de banda. Me parece que lo que hacen es modificar el tamaño de la ventana de transmision de los paquetes. En vez de simplemente dejar el paquete en una cola hasta que pueda salir adecuan la velocidad de las conexiones tcp modificando el tamaño de la ventana de transmisión de los paquetes enviados. ¿Existe algo parecido en linux?

El articulo esta muy bien, quizas yo hubiera añadido algunos enlaces a modo de bibliografía:
http://www.roback.cc/howto/bandwidth.html
http://www.redes-linux.com/manuales/ancho_banda/Limitar-COMO.pdf
http://www.redes-linux.com/manuales/ancho_banda/traffic_shaper_bidireccional.pdf
http://www.docum.org/stef.coene/qos/docs/
etc ...
Un saludo!
No es pot respondre
 
18.  Re: duda upload/download (09/04/2003 17:11, #13519)
  Por: El cobarde anónimo
"Por otro lado tiene cierto sentido limitar unicamente la subida [..] o por el contrario merece la pena limitar y repartir la bajada también? "

Yo tengo la misma duda. Quiero decir, el articulo esta basado en shappear el trafico en la interfaz que da al modem, por lo que conformamos lo que sube, para asi repartir adecuadamente el ancho de banda de subida, y asi por ejemplo, el trafico ftp de subida no corte a una conexion ssh. hasta aqui correcto, ¿no? Bien, pero digo yo. Si la subida son 300kbits, y la bajada 2 Mbits, lo mas logico es que ESA conexion, por ejemplo, ssh, tambien tenga paquetes de bajada que pueden ser cortados por un download p2p masivo, asi que tambien digo yo que habra que hacer QoS de bajada. Pero claro, se supone que eso deberia estar implementado en el router del otro extremo (en este caso el Dslam de ADSL) al que NO tenemos acceso. Por tanto, en este caso concluyo que NO serviria de NADA conformar el trafico de bajada, pues no tenemos acceso al dslam.

Pero imaginar la siguiente situacion. Tenemos un enlace adsl asimetrico de 2 megas de bajada y 300k de subida y queremos repartirlo igualitariamente para 2 personas, TANTO de subida como de bajada, no? entonces en este caso, SI que habria que hacer conformado en la interfaz del router que da a la red interna para que ambos tengan como minimo 1 mb de bajada, y conformado en la interfaz que da al modem para tener como minimo los 150 kbits cada uno de subida ¿no? aqui esta mi duda, si serviria y si se podria hacer. Porque claro, de nada sirve solo conformar el trafico de subida y limtiar por ejemplo, el trafico p2p de subida, si luego el p2p de bajada te copa TODO (y jode por ejemplo al que este navegando por web). ¿Se podria encontrar alguna solucion? es que sigo sin comprender de que serviria solo conformar el de subida, si lo q jode es la bajada. Y escribiendo esto tampoco entiendo entonces la funcion de los aparatos packetkeeper en una empresa entre el router para internet y el switch troncal si suceden las mismas cosas.

Por otro lado, lo que comentas de modificar en tiempo real el tamaño de ventana TCP en funcion del ancho de banda es MUY interesante. A ver si alguno con conocimientos mas profundos puede darnos algo de luz sobre este tema. Y porque no, si encontramos solucion a ambos problemas que he expuesto, ampliar el turorial tan magnifico que ha hecho este integrante de bulma.

Espero q este hilo se alargue hasta encontrar la solucion!! :)

un saludo a todos
No es pot respondre
 
19.  Re: duda upload/download (10/04/2003 00:48, #13530)
  Por: r00z

La idea de modificar el tamaño de la ventana parece bueno aunque también tiene sus inconvenientes (podeis mirar esta comparación poco imparcial, apartado TCP Rate Limiting).

Otro solución que aparece más o menos en el enlace anterior es la de crear varias colas con diferentes prioriades con la diferencia de meter los ACKs de los paquetes de cada cola en esa misma cola. Con esto simulamos una conexión lenta para las conexiones con poca prioridad y una conexión rápida para las de más prioridad. Mirando el código del wonder shaper he visto que se da prioridad máxima a todos los paquetes ACK por lo que todas las conexiones siempre enviarán los paquetes al máximo y se descartaran (una vez recibidos) en nuestra máquina si vemos que los recibimos demasiado rápido. Esto hace que con una conexión al límite los paquetes tienen que ser reenviados consumiendo más ancho de banda. No soy un experto en esto y no sé si sólo serviría para paquetes TCP (en UDP no hay ACKs verdad?). Tampoco sé cómo se podría relacionar un ACK con una conexión.

No es pot respondre
 
20.  Re: duda upload/download (10/04/2003 20:01, #13546)
  Por: scero (http://scero.homelinux.org:8080)
Respecto a lo de las bandas de subida y bajada ya he comentado cosas antes. Por lo que he podido observar la velocidad de bajada se ajusta a las características de la "banda" (como las he llamado en el artículo) por la que se realiza la petición. De modo que si se realiza una petición por una "banda" de 100Kbps la velocidad de bajada de respuesta no superará los 100Kbps (salvo prestamos y demás historias).
No es pot respondre
 
21.  Re: duda upload/download (11/04/2003 19:28, #13564)
  Por: El cobarde anónimo
A ver, segun tu, si una banda pone 100k como maximo para la subida, los datos de bajada que provengan de esa banda, tampoco superaran los 100k. Entonces, ¿Que es lo que ocurre con TODOS aquellos datos que superen esos 100kbits/sg? rechazados? si es asi, entonces quieres decir que como consecuencia de ser rechazados, es el propio TCP en el destino el que amolda su velocidad de tx hacia nuestro router (mecanismos que tienen TCP), no?

Es que si es asi, se me estaria produciendo una gran confusion, puesto q tengo en mis manos un tipo que ha hecho un script MUY bueno en el q usa el dispositivo imq para poder realizar ESO (lo de que en el otro extremo se reajuste la velocidad de tx mediante los algoritmos del propio TCP). Si quereis pasteo un fragmento de su explicacion:

Theory on using imq to "shape" inbound traffic:

It's impossible to directly limit the rate of data that will be sent to you by other hosts on the internet. In order to shape the inbound traffic rate, we have to rely on the congestion avoidance algorithms in TCP. Because of this, WE CAN ONLY ATTEMPT TO SHAPE INBOUND TRAFFIC ON TCP CONNECTIONS. This means that any traffic that is not tcp should be placed in the high-prio class, since dropping a non-tcp packet will most likely result in a retransmit which will do nothing but unnecessarily consume bandwidth.

We attempt to shape inbound TCP traffic by dropping tcp packets when they overflow the HTB queue which will only ss them on at a certain rate (RATEDN) which is slightly wer than the actual capability of the inbound device. By ropping TCP packets that are over-rate, we are simulating the same packets getting dropped due to a queue-overflow on our ISP's side. The advantage of this is that our ISP's queue will never fill because TCP will slow it's
transmission rate in response to the dropped packets in the assumption that it has filled the ISP's queue, when in reality it has not.

The advantage of using a priority-based queuing discipline is that we can specifically choose NOT to drop certain types of packets that we place in the higher priority buckets (ssh, telnet, etc). This is because packets will always be dequeued from the lowest priority class with the stipulation that packets will still be dequeued from every class fairly at a minimum rate (in this script, each bucket will deliver at least it's fair share of 1/7 of the bandwidth).

Reiterating main points:
* Dropping a tcp packet on a connection will lead to a slower rate of reception for that connection due to the congestion avoidance algorithm.
* We gain nothing from dropping non-TCP packets. In fact, if they were important they would probably be retransmitted anyways so we want to try to never drop these packets. This means that saturated TCP connections will not negatively effect protocols that don't have a built-in retransmit like TCP.
* Slowing down incoming TCP connections such that the total inbound rate is less than the true capability of the device (ADSL/Cable Modem) SHOULD result in little to no packets being queued on the ISP's side (DSLAM, cable concentrator, etc). Since these ISP queues have been observed to queue 4 seconds of data at 1500Kbps or 6 megabits of data, having no packets queued there will mean lower latency.

Caveats (questions posed before testing):
* Will limiting inbound traffic in this fashion result in poor bulk TCP performance?
- Preliminary answer is no! Seems that by prioritizing ACK packets (small
No es pot respondre
 
22.  Re: duda upload/download (11/04/2003 20:10, #13566)
  Por: scero (http://scero.homelinux.org:8080)
es el propio TCP en el destino el que amolda su velocidad de tx hacia nuestro router (mecanismos que tienen TCP), no?

Si miras algo de teoría de redes veras que existen varios sistemas para negociar la velocidad en cualquier conexión de cualquier protocolo. Concretamente en el caso que planteas del TCP no es una excepción, en toda conexión siempre se negocia (aunque sea forzando un sistema de descarte) una velocidad.
De todos modos la cosa es bien simple, _pruebalo_. Monta dos bandas sobre la root (para evitar que se presten ancho de banda), filtra todos los paquetes de un protocolo (por ejemplo ftp) hacia una de ellas y verás como la velocidad de recepción de los datos no supera la velocidad de esa banda. Si lo haces solucionarás tus dudas de una manera irrefutable, con unas pocas lineas lo tienes montado. Ya me contarás como te ha ido.
No es pot respondre
 
23.  Re: duda upload/download (11/04/2003 22:59, #13572)
  Por: El cobarde anónimo
Si no te llevo la contraria :-). Ahora mismo estoy haciendo el script para hacer la prueba, aunque con lo que tu me digas me vale. Lo que me es raro es porque la gente en internet levanta scripts un tanto complicados (el tema de imq es principalmente para poder gestionar varios enlaces wan como uno solo y poder balancear la carga modelandola como una sola) para poder hacer el shapping de bajada, bien implementandolo como arriba esta descrito, o bien haciendolo en la otra interfaz (la que da a la red interna). ¿Me podrias decir donde has encontrado la información que tu posees sobre la limitacion que se produce en la bajada usando las colas para el uplink? ¿ o es empirico ?

A lo mejor HTB ya de por si implementa esas restricciones de bajada haciendo uso del auto-reajuste de velocidades del TCP. quien sabe ...

También he leido en otros sitios (manual de LARTC) que el QoS en el caso nuestro ( modem/router ADSL) solo se puede implementar en el trafico de outbound, ya que para el inbound seria necesario practicarselo al router del otro extremo (DSlam en este caso) manipulando SU outbound (el del dslam que va hacia nuestro router).

Con esto repito que te hago caso a tu consejo. Simplemente pasteo temas que se ve de manera muy recurrente en listas de correo y manuales, y q por lo visto, está equivocado.
No es pot respondre
 
24.  Re: duda upload/download (12/04/2003 15:16, #13584)
  Por: scero (http://scero.homelinux.org:8080)
> Si no te llevo la contraria :-)
No me considero ningún experto en redes, simplemente es un tema que me gusta, por tanto puedes llevarme toda la contraria si estoy equivocado ;)
La afirmación la he hecho basandome únicamente en mi experiencia y las las pruebas que he hecho con este tipo de colas.
La verdad es que no me he leido la documentación de sobre como está implementado el algoritmo htb (falta de tiempo :( ), y por tanto no puedo con certeza explicar como se implementa esta acción; de todos modos si quieres información detallada este algoritmo tiene su propia homepage en internet esta .
Si tienes tiempo y te documentas sobre el tema ya nos contarás que has descubierto, desde luego parece un tema muy interesante.

No es pot respondre
 
25.  Re: duda upload/download (11/04/2003 23:17, #13575)
  Por: un escritor
Una duda. Si una clase, de por si, limita la velocidad de subida por ejemplo, en 100k, tambien lo hará con el de bajada (como acabas de decir) .. que ocurre con las conexiones asimetricas? si la subida son 512kbis y la bajada 2 Mbits/sg, y definimos tres clases de 512/3, se supone que en bajada, no se superaran los 512/3 por clase. Y la pregunta es ¿Que ocurre con el ancho de banda sobrante de los 2 Mbits? ¿se pierden? y si me contestas que lo coge el que mayor prioridad tenga, si estan conectados los tres, me quieres decir que en subida no se podria repartir nada sobrante porque no habria, pero en bajada si, ¿bien? un saludo y enhorabuena por tu articulo
No es pot respondre
 
26.  Re: Método para la ecualización del ancho de banda (09/04/2003 17:22, #13520)
  Por: El cobarde anónimo
Primero enhorabuena por tu articulo. Es MUY bueno. Escribo para la siguiente duda. Expones que el " camino" que siguen los paquetes IP en un router Linux conectado al modem ADSL seria el siguiente:

paquetes de datos --> Netfilter (opcion mangle) obteniendo paquetes marcados --> interfaz ethx que da al modem --> conformado de trafico HTB haciendo uso tb de las marcas hechas anteriormente --> internet

Bien, mi pregunta es la siguiente: si yo coloco un script tb en el router linux que haga de Firewall y NAT para los de la red interna ¿en donde se colocan ambas cosas en el camino descrito antes? interfereria hacer un script haciendo estas funciones en el transcurso del script HTB ?

Muchas gracias
No es pot respondre
 
27.  Re: Método para la ecualización del ancho de banda (09/04/2003 17:25, #13521)
  Por: El cobarde anónimo
Primero enhorabuena por tu articulo. Es MUY bueno. Escribo para la siguiente duda. Expones que el " camino" que siguen los paquetes IP en un router Linux conectado al modem ADSL seria el siguiente:

paquetes de datos --> Netfilter (opcion mangle) obteniendo paquetes marcados --> interfaz ethx que da al modem --> conformado de trafico HTB haciendo uso tb de las marcas hechas anteriormente --> internet

Bien, mi pregunta es la siguiente: si yo coloco un script tb en el router linux que haga de Firewall y NAT para los de la red interna ¿en donde se colocan ambas cosas en el camino descrito antes? interfereria hacer un script haciendo estas funciones en el transcurso del script HTB ?

Y el camino a la inversa como seria tb? paquete q entra desde el modem al router y hay que deshacer lo hecho anteriormente.

Muchas gracias
No es pot respondre
 
28.  Re: Método para la ecualización del ancho de banda (16/04/2003 00:26, #13652)
  Por: PiotR (http://barrapunto.com)
http://lartc.org/
No es pot respondre
 
29.  Re: Método para la ecualización del ancho de banda (11/05/2003 22:03, #14324)
  Por: Edgar (http://mxrisc.dnsq.org)
en el manejo de las cadenas con iptables el especificas el puerto de destino haces "-dport" lo correcto seria "--dport" y para marcar el paquete haces "-set-mark" y nuevamente lo corrector seria "--set-mark", es algo que por sentido comun el lector deveria corregir pero no caeria mal corregirlo. Saludos.
No es pot respondre
 
30.  Re: Método para la ecualización del ancho de banda (02/06/2003 18:55, #14866)
  Por: Enrique Porta
Hola a todos. Queria hacer la siguiente pregunta. ¿Como puedo eliminar un arbol de preferencias, para que no exista ningun tipo de restricciones? Gracias.
No es pot respondre
 
31.  Re: Método para la ecualización del ancho de banda (10/07/2003 05:12, #15791)
  Por: Edgar (http://mxrisc.dnsq.org)
si necesitan mas informacion sobre el tema esta este sitio en español. http://midgard.heimy.org/~javi/asgard/lartc/index.html
No es pot respondre
 
32.  RE: Método para la ecualización del ancho de banda (30/07/2003 17:26, #16159)
  Por: Snachez Guillermo
hola a todos, estuve leyendo toda la doc que pude encontrar en cuento a "controlar" el ancho de banda. y logré hacer un script, basado en el del articulo, pero del cual solo me funciona el control saliente, cabe aclarar, que estoy aplicando los controles sobre la eth0 que está conectada a la red local, no a internet que está conectada a otra placa. Quiero lograr controlar también el tráfico entrante por esa interfaz, y en base a lo que he leido, opte por IMQ. El cual "aparentemente" esta funcionando bien. Digo esto, porque en el resumen que solicito al iptables. marca los paquetes entrantes de manera correcta, los filtros estan cargados correctamente y las marcas concuerdan, y las qdisc tambien. Pero ninguna de las colas está contabilizando paquetes, cuando solicito la info me devuelven: class htb 2:12 parent 2:1 prio 0 rate 256Kbit ceil 256Kbit burst 1926b cburst 1926b Sent 0 bytes 0 pkts (dropped 0, overlimits 0) lended: 0 borrowed: 0 giants: 0 tokens: 48174 ctokens: 48174 Por favor, necesito una mano. desde ya muchas gracias !!!
No es pot respondre
 
33.  RE: Método para la ecualización del ancho de banda (05/10/2004 21:37, #23697)
  Por: Anónimo
Hola estoy interesado en como controlar el AB en linux, y soy nuevo me ayudan con un script en el cual limite AB por ip , osea los que se encuentren dentro de una red. tanto de bajada como de subida
No es pot respondre
 
34.  Exelente... y Ayuda (12/08/2003 17:43, #16377)
  Por: Juan Saransig
Es un tema interesante, y del cual necesitamos toda la ayuda (Documentacion Algoritmos Detallados) gracias... Espero su respuesta lo mas pronto
No es pot respondre
 
35.  Re: Exelente... y Ayuda (01/09/2003 21:20, #16849)
  Por: scero (http://scero.homelinux.org:8080)
Si lees los comentarios del artículo, encontrarás algunos enlaces de interes, donde podrás encontrar información sobre el tema. No esperaras que la copie y la pege aquí, ¿verdad?

Respecto a lo de los algoritmos, lo tienes mucho más fácil, mira el código fuente de tu kernel.
No es pot respondre
 
36.  Ayuda (14/08/2003 22:24, #16432)
  Por: Juan Saransig
Necestito ayuda con mas teoria y detalles de este articulo gracias
No es pot respondre
 
37.  Re: Método para la ecualización del ancho de banda (27/09/2003 15:42, #17263)
  Por: Ricardo A.
Este sitio es un oasis y los felicito... He estado recompilando el kernel 2.4.21 de un Debian Woody, e instalé builtin todos los módulos necesarios, según el artículo, para correr el QoS y está todo OK. Es decir, veo los módulos instalados, no hubo problemas de compilación, funciona todo bien el pinguino... Pero cuando ejecuto el comando "tc" para definir la primera banda, ahí me quedo, porque el bash me tira: "tc: command not found"... y no logro salir de allí, porque tampoco funciona con /sbin/tc ni encuentro el "tc" en ningún directorio... o sea, parece que el tc no se ha instalado por alguna razón... Alguna idea??? Si es urgente mejor porque estaba necesitando esto para mi trabajo y ahora me veo empantanado... Gracias por adelantado, Ricardo A. Buenos Aires
No es pot respondre
 
38.  Re: Método para la ecualización del ancho de banda (28/09/2003 20:54, #17286)
  Por: scero (http://scero.homelinux.org:8080)
Por lo que me explicas en el artículo, el problema que tienes no es de kernel sino de paquetes. Es necesario que instales el paquete que contiene el programa "tc", el nombre de este paquete para debian es "iproute".

Un saludo.
No es pot respondre
 
39.  Re: Método para la ecualización del ancho de banda (19/11/2003 09:45, #18152)
  Por: wless
Estupendo artículo junto con el del Wonder Shaper.

Os pego un pequeño scrip que prepare para dibidir el ancho de banda de mi lan, espero que os sirva de ayuda y aportar mi granito de arena.

Si pensais que hay algo mal no dudeis en postearlo, a mi me funciona, pero soy nuevo en esto del linux y vete tu a saber...

Espero no molestar con un post tan largo

*Use la banda 2: para no interferir con el Wonder Shaper

#!/bin/bash
#minilancontrol
#scrip para la gestion del ancho de banda en una minilan(256/128) por wless
DEV=eth1
RATEUP=80

case "$1" in
start)
#creaciuon del arbol de bandas
tc qdisc add dev $DEV root handle 2: htb default 60
tc class add dev $DEV parent 2: classid 2:1 htb rate 120kbps ceil ${RATEUP}kbps
tc class add dev $DEV parent 2:5 classid 2:50 htb rate $[50*$RATEUP/100]kbps ceil ${RATEUP}kbps
tc class add dev $DEV parent 2:6 classid 2:60 htb rate $[50*$RATEUP/100]kbps ceil ${RATEUP}kbps prio 1

#tc class add dev $DEV parent 2:7 classid 2:70 htb rate $[4*$RATEUP/100]kbps ceil ${RATEUP}kbps prio 2

#asociacion de colas sfq con bandas
tc qdisc add dev $DEV parent 2:50 handle 50: sfq
tc qdisc add dev $DEV parent 2:60 handle 60: sfq

#tc qdisc add dev $DEV parent 3:70 handle 70: sfq

#se asocian marcas con bandas
tc filter add dev $DEV protocol ip parent 2: handle 5 fw classid 2:50
tc filter add dev $DEV protocol ip parent 2: handle 6 fw classid 2:60

#tc filter add dev $DEV protocol ip parent 3: handle 7 fw classid 3:70

#reglas de filtrado
iptables -A FORWARD -s 192.168.1.3 -i $DEV -t mangle -j MARK --set-mark 5
iptables -A FORWARD -s 192.168.1.2 -i $DEV -t mangle -j MARK --set-mark 6

#iptables -A FORWARD -s 192.168.1.0/24 -i $DEV -t mangle -j MARK --set-mark 7
echo "MiniLanControl started"
;;
stop)
# borro la reglas de filtrado
iptables -t mangle -F FORWARD 2> /dev/null > /dev/null
iptables -t mangle -X FORWARD 2> /dev/null > /dev/null
# borro las bandas
tc qdisc del dev $DEV root 2> /dev/null > /dev/null
tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
tc qdisc del dev $DEV root 2> /dev/null > /dev/null
echo "MiniLanControl stoped"
;;
restart)
$0 stop
$0 start
;;
status)
# muestro datos interesantes
echo "[qdisc]"
tc -s qdisc show dev $DEV
echo "[class]"
tc -s class show dev $DEV
echo "[filter]"
tc -s filter show dev $DEV
echo " "
echo "[iptables]"
iptables -t mangle -L FORWARD -xnv
exit
;;
*)
echo "Use: $0 {start|stop|restart|status}"
;;
esac

#fin
No es pot respondre
 
40.  Re: Método para la ecualización del ancho de banda (19/12/2003 11:20, #18706)
  Por: Anónimo
muy bueno, pero... hay algún entorno gráfico para configurar todo esto de forma cómoda? no sé... un GUI o frontend que modifique el script.... esque el tema linux no lo domino nada que digamos. :D
No es pot respondre
 
41.  Re: Método para la ecualización del ancho de banda (04/02/2004 21:24, #19608)
  Por: Anónimo
Vale, yo tengo una duda... Si a demás de todo esto, en vez de una salida, disponemos de dos... ¿hay alguna manera a demás de balancear dicha salida?... Es decir, para evitar que una de las conexiones de salida se sature, que automáticamente enrute hacia la otra... más que alta disponibilidad, lo que me gustaría seria optimizar las conexiones de los clientes de la red local... ¿es posible?... A demás, para agrabarlo aún más, los proveedores de las distintas salidas son diferentes... :S Gracias...
No es pot respondre
 
42.  Re: Método para la ecualización del ancho de banda (22/08/2005 17:38, #27978)
  Por: velkro
se puede hacer y es muy facil.

leete 'Linux Advanced Routing & Traffic Control', mas especificamente: 4.2.2. Load balancing.

http://lartc.org/howto/lartc.rpdb.multiple-links.html

saludos, velkro.
No es pot respondre
 
43.  Re: Método para la ecualización del ancho de banda (20/02/2004 02:35, #19821)
  Por: Anònim
Muy bueno el articulo, corto pero bueno. Con respecto a un comentario de un gallego por ahi arriba responde otro gallego. :) Creo que es lo que buscas pero no estoy muy seguro. Existe layer7 QoS, no viene en el nucleo y hay que parchear kernel y varias utilidades, no recuerdo la pagina ahora mismo pero si pones en google layer7 Qos te saldra, o layer7+qos+ howto. ¿Y que haze esto? Pues lo lei por encima pero permite crear reglas QoS para servicios en los que el numero del puerto es aleatorio. Tambien util para redes en que los emules y derivados cambian extrañamente de puerto. :P Todo ello basandose en unas reglas que incluyen aparte. Ideal para filtrar el ancho de la navegacion ya que de otra forma es imposible por el uso de diferentes puertos. Para dejarlo claro imaginaos que creais una regla para el emule y claro si el tio cambia de puerto ya estamos jodidos... pues con esto no importa el puerto el que estee por que lo filtrara adecuademente. Para el tema de navegacion la regla interna es sencilla todo los paquetes que vengan con tags html pues los filtra como le indiques y asi hay ya predeterminadas para muchas cosas. Lastima que no estee dentro del nucleo y haya que andar ha parchear todo cada vez que se actualize. :(
No es pot respondre
 
44.  Re: Método para la ecualización del ancho de banda (23/03/2004 17:51, #20277)
  Por: Javier
Hola muy bueno el articulo, pero tengo un problema, cuando pongo la ultima linea: iptables -A POSTROUTING -o eth1 -p tcp -dport 20:21 -t mangle -j MARK -set-mark 3 Bad argument `20:21' Try `iptables -h' or 'iptables --help' for more information. me tira esos errores, si alguien tiene idea de lo que esta pasando se los agradesc. mi idea es poder limitar ciertos puertos y dejar libres unos pocos, ya que la red tiene muchas pcs conectadas y a todas les tengo que garantizar un par de servicios. gracias javier ramirez jramirez@bit2net.com
No es pot respondre
 
45.  Re: Método para la ecualización del ancho de banda (02/06/2004 12:33, #21660)
  Por: LZ
El problema esta en --dport, son dos guiones en lugar de uno, para el caso general si es una letra es un guion y si son varias letras (palabra) son dos guiones.
No es pot respondre
 
46.  Re: Método para la ecualización del ancho de banda (24/03/2004 18:16, #20305)
  Por: Anònim
te tengo un par de preguntas yo tengo en una pc una coneccion directa, de ahi va a 30 pcs mas, y yo tengo que garantizarle algunos servicios nuestros, en puertos que van entre el 20000 y el 25000 ojo, en el momento de limitar, yo conosco esos puertos, pero mas o menos andan por ese orden el tema es que necesito bloquear, o limitar todo lo demas a como mucho 100kbits y poder asignarle, por ejemplo 200kbit al puerto 22333 y 200kbit al 22444. ya recompile el kernel, pero no logro hacer que me limite, trabaja como si no hubiese puesto nada....me podes dar una mano ? te lo voy a agradecer mucho Saludos Javier
No es pot respondre
 
47.  Re: Método para la ecualización del ancho de banda (08/04/2004 16:25, #20574)
  Por: Marcelo
Hola el imforma esta muy bueno y es el problema que me esta ocurriendo en la oficina pero megustaria si hay algo para windows ?
No es pot respondre
 
48.  Re: Método para la ecualización del ancho de banda (02/06/2004 12:30, #21659)
  Por: LZ
Intento montar esto del QoS pero me da problemas con los algoritmos de division del ancho de banda, el htb, en concreto, con la primera linea que aparece en el articulo responde con un error que dice asi: Unknown qdisc "htb", hence option "default" is unparsable Y no se a que se debe, los paquetes han sido instalados y el kernel compilado, he repasado esto varias veces. He leido todos los comentarios del articulo y no veo a nadie que le pase parecido. En fin, si alguien me puede orientar se lo agradeceria mucho. Saludos.
No es pot respondre
 
49.  Re: Método para la ecualización del ancho de banda (10/06/2004 10:20, #21838)
  Por: montal
El error que a mi me da es el siguiente:
root@dewify:/usr/src# tc qdisc add dev eth0 root handle 1: htb default 20
RTNETLINK answers: Invalid argument
y tengo configurado en el nucleo CONFIG_IP_MULTIPLE_TABLES
¿alguna ayuda?, gracias
No es pot respondre
 
50.  Re: Método para la ecualización del ancho de banda (23/06/2004 16:48, #22039)
  Por: Edwin Valencia
Holas... Pues buscando en la Red encontre que ambos problemas se deben a que el kernel de redhat 2.4.20 si tiene soporte para HTB pero el paquete iproute2 NO. Asi que toca que bajarce el codigo fuente y parcharlo para que tenga soporte para esta. el link de donde podes obtener mas info: http://breu.bulma.net/?l3297 Saludos...
No es pot respondre
 
51.  Re: Método para la ecualización del ancho de banda (07/07/2004 02:35, #22261)
  Por: orzoways (http://www.redaerea.com)
Un poco de Help,please. Pues estoy intentando implementar esto ya que me vendria de perillas , pero me encuentro con el siguiente error.Tengo creado el metodo del ejemplo completo(3), que me viene de lujo pues tengfo una adsl 512, sin modificar nada y me da este error: llegal "rate"
Usage: ... qdisc add ... htb [default N] [r2q N]
default minor id of class to which unclassified packets are sent {0}
r2q DRR quantums are computed as rate in Bps/r2q {10}
debug string of 16 numbers each 0-3 {0}
... class add ... htb rate R1 burst B1 [prio P] [slot S] [pslot PS]
[ceil R2] [cburst B2] [mtu MTU] [quantum Q]
rate rate allocated to this class (class can still borrow)
burst max bytes burst which can be accumulated during idle period {computed}
ceil definite upper class rate (no borrows) {rate}
cburst burst but for ceil {computed}
mtu max packet size we create rate map for {1600}
prio priority of leaf; lower are served first {0}

quantum how much bytes to serve from leaf at once {use r2q}
TC HTB version 3.3 ???? alguien me peude dar idea de lo k me esta pasando??. Tambien de dice k tengo un error en la instrucion de la marca de paquetes ya k cambio el 20:21 por el 80:81 y me dice k bad argument `80:81' ??? No lo entiendo ya que e mirado la regla del iptable de marcado de paquetes y esta bien,en fin ya me tiene loco.Lo unico k esto intentando hacier es dar prioridad a la gente de mi red que van a ver paginas web sobre todo lo demas. Un salu2
No es pot respondre
 
52.  duda (09/09/2004 13:10, #23221)
  Por: perdido
muy buenas!

tengo un problemilla y espero que alguien me pueda ayudar... la cosa es que estoy intentando hacer funcionar el cbq-init (un script que hace algo parecido a lo que aquí se describe) y no lo logro. tengo un debian woody 3.0 con el kernel 2.4 y todos los modulos de QoS añadidos y el paquete iproute instalado. el caso es que todas las llamadas al tc me dan error:

- Invalid argument o

- No such file or directory

Creo que es porque los comandos tc generados por el script no se ajustan a la especificacion que aparece en el man. he intentado buscar otra version del paquete iproute que pudiese contener otro tc y encontre el "iproute_20010824-8woody1_i386.deb" que tenia buena pinta pero hace lo mismo...

alguien ha hecho funcionar este script en estas condiciones? bueno, espero haberme explicado bien. muchas gracias por la ayuda que me podais dar.
No es pot respondre
 
53.  Re: Método para la ecualización del ancho de banda (24/09/2004 17:41, #23403)
  Por: Itnash
Articulo muy interesante...felicidades! Para rizar el rizo, me gustaría plantear una duda para el caso en que tengamos una ADSL. La cuestión es que por contrato el ISP te garantiza un 10% del BW total. Con esta falta de precisión del BW disponible, cómo és posible asegurar un ancho de banda para diferentes tipos de tráfico? por ejemplo si tenemos el tráfico FTP limitado a 100kb y el tráfico HTTP a 100kb también, si el BW que nos ofrece en ese instante el ISP són 50 míseros kb ( >10% de una ADSL 256kb), que sucede con las colas? hay algún metodo/sw de monitorizar el BW total disponible, de forma que pudieras adaptar las colas a él? Gracias!
No es pot respondre
 
54.  Re: Método para la ecualización del ancho de banda (15/10/2004 16:01, #23836)
  Por: Peto
Muy buen articulo, aunque tengo un problea: hice el mismo arbol que tu cambiando cuanto queria de ancjho de banda, pero si veo las herramientas *tc -s *d ... aparece como si los paquetes estuvieran yendo hacia 1:10, :20, etc. La cuestion es que desde uno de las maquinas que manda paquetes al 1:20 que tiene como maximo 200Kbps hago un cheuqeo de cuanto es lo que esta saliendo y me aparece 815!!!!, obviamente el ancho de banda total es 1Mb, no se que puedo estar errando, se agradeceria una ayudita!!! :) Saudos desde Uruguay, Peto
No es pot respondre
 
55.  Re: Método para la ecualización del ancho de banda (16/10/2004 02:23, #23841)
  Por: pancho
exelenete me ha sido muy util ya que estaba tratando este tema y no lo encontraba tan claro como aqui saludos Fernando
No es pot respondre
 
56.  Re: Método para la ecualización del ancho de banda (28/12/2004 22:46, #24815)
  Por: fequay (http://guliv.cl)
hoola he estado tratando de hacer funcionar el ejemp´lo aqui puesto... he tenido algun error en el script donde tengo mi reglas de iptables al reiniciarlo.... RTNETLINK answers: File exists quien me pueda echar una manito...acerca de este error... desde ya gracias..
No es pot respondre
 
57.  Re: Método para la ecualización del ancho de banda (12/03/2005 04:37, #25641)
  Por: Maurolx
Para la gente que se encuentra con el siguiente error "RTNETLINK answers: File exists ".Esto se da por que estan queriendo ingresar una banda ya ingresada.Deben borrar todo ,con el siguiente comando "tc qdisc del dev ethX root",donde X es la interfaz.
No es pot respondre
 
58.  Re: Método para la ecualización del ancho de banda (18/08/2005 23:09, #27927)
  Por: fequay (http://www.guliv.cl)
Ahora que se cual es el error, RTNETLINK answers: File exists, donde lo pones al principio. 1.- antes de las clases nietas 2.- antes de la clase hija 3.- o antes de la clase padre 4.- o antes de la clase abuelo la principal.. Esa es mi duda. ya que al poner tc qdisc del dev ethX root entre algunas me sigue dando el error
No es pot respondre
 
59.  Re: Método para la ecualización del ancho de banda (16/06/2005 17:59, #27146)
  Por: Leonardo
INGREIBLE!!! EXPLICACION !!! Esta muy bien y los resultados son buenisimos! estaba buscando como hacer una sola cosa mas ... Ok yo tengo un ISP con X cantidad de repetidroas con X cantidad de clientes para poder marcar cada paquete tendria que hacer un super iptables super enorme lo cual me mataria la memoria RAM. pero creo que podria hacerce si tuviera iptables manera de decirle iptables -A fwilimitadobackbone -s "el ip del cliente" -d "archivo donde estan las rutas de mi backbone nacional" -t mangale -j MARK -set-mark 2 Por que sino seria un iptables extremadamente grande para decirle cada ruta del backbone que tiene que pasar ilimitado y despues decirle que lo demas es limitado a x cantidad de kb dependiendo el personaje que se conecta... bueno si alguien tiene una idea sobre esto le voy a agradecer que me responda con copia a mi correo que esta ahi arriba ! GRACIAS!!!
No es pot respondre
 
60.  Comprobar configuracion (11/12/2005 20:15, #29962)
  Por: Sorian
Esto que he hecho esta bien?:

ESTA ES MI SITUACION:

servidor eth0--> Internet eth1--> Red local
ip 192.168.1.1 minimo 2000 maximo 3766
ip's 192.168.1.2 - 192.168.1.4 minimo 300 y si sobra hasta 1766
ip 192.168.1.5 minimo 25 maximo 30

ESTE ES EL SCRIPT QUE HE CREADO:

#!/bin/bash

#Creo el arbol de bandas

tc qdisc add dev eth0 root handle 1:htb default 10
tc class add dev eth0 parent 1: classid 1:1 htb rate 4096kbps ceil 4096kbps
tc class add dev eth0 parent 1: classid 1:10 htb rate 2000kbps ceil 37666kbps
tc class add dev eth0 parent 1: classid 1:20 htb rate 300kbps ceil 1766kbps
tc class add dev eth0 parent 1: classid 1:30 htb rate 25kbps ceil 30kbps

#Asocio las colas sfq con las bandas

tc qdisc add dev eth0 parent 1:10 handle 10: sfq
tc qdisc add dev eth0 parent 1:20 handle 20: sfq
tc qdisc add dev eth0 parent 1:30 handle 30: sfq

# Asocio marcas con bandas

tc filter add dev eth0 protocol ip parent 1: handle 1 fw classid 1:10
tc filter add dev eth0 protocol ip parent 1: handle 2 fw classid 1:20
tc filter add dev eth0 protocol ip parent 1: handle 3 fw classid 1:30

# Reglas de filtrado

iptables -A FORWARD -s 192.168.1.1 -t mangle -j MARK --set-mark 1
iptables -A FORWARD -s 192.168.1.2 -t mangle -j MARK --set-mark 2
iptables -A FORWARD -s 192.168.1.3 -t mangle -j MARK --set-mark 2
iptables -A FORWARD -s 192.168.1.4 -t mangle -j MARK --set-mark 2
iptables -A FORWARD -s 192.168.1.5 -t mangle -j MARK --set-mark 3
No es pot respondre
 
61.  Re: Método para la ecualización del ancho de banda (17/12/2005 03:43, #30074)
  Por: jonathan
Scero, trate de enviarte un mensaje a traves de tu web, pero no me funciono.
queria comentarte que estoy intentado levantar una red local con las mismas caracteristicas que la del ejemplo y no puedo lograrlo, necesito urgente que alguien me de una ayuda y hace 4 dias que no encuentro nada de nada.
Por favor, si no es molestia, te agradeceria que te comuniques conmigo. Muchas Gracias

Jonathan
No es pot respondre
 
62.  Re: Método para la ecualización del ancho de banda (31/07/2006 07:01, #34066)
  Por: HERNAN
Me dirijo a ustedes para ver si me pueden ayudar ya que estoy un poco estancado. Paso a detallarles en que estoy estancado: Bueno antes que nada estoy tratando de lograr que un server httpd y ssh tenga limitado el download y el upload del mismo para determinadas ip's ahora bien despues de haber echo cantidades de scripts con iptables y TC no logro acotar el upload de los clientes del server ahora bien mi duda fundamental es ,¿necesito si o si tener dos placas de red?... ya que veo que la mayoria de los scripts que polulan por internet hablan de eth0 y eth1 y ahi es donde deciden la velocidad de upload y la download. Por otro lado mediante iptables les agrego los marks a cada regla pero en todas las que se refieren al upload del supuesto cliente no funcionan , me podrian aclarar. Otra duda que tengo es si en las directivas Htb rate son generales para upload y download, porque de ser asi creo que mi problema esta en el iptables donde no se como determinar los paquetes que vienen desde una PC cliente y por ende no puedo determinarles el Filtro TC... Bueno espero que me puedan ayudar, desde ya muchas gracias.
No es pot respondre
 
63.  Re: Método para la ecualización del ancho de banda (22/09/2006 02:02, #35170)
  Por: jortiz
Lo he leido muy bien todo, pero tengo una duda, en tu script, la eth1 está conectada al router y la eth0 a la LAN? o es al reves?
No es pot respondre
 
GRACIAS
Distribuciones Universal
Por el servidor
Dpto. de Matematicas e Informatica
Calificacion
***0
Vots: 64
Danos tu opinion:
**** Excelente
***0 Muy Bueno
**00 Bueno
*000 Regular
0000 Malo
Relacionados
. Algunas experiencias con Balanceo de carga, bonding, y demás
. Wonder Shaper : Gestiona eficientemente el ancho de banda de tu conexión adsl (o cable)
SECCIONES
Noticia
Breve
Truco
Enlace
Participa
Proyecto
Articulo
Webbulma
Manoletada :-)
Seguridad
Modificado: 3/7/2008 11:55:39 | Tiempo Total: 0.129 segs | Kernel: Linux - i686 - 2.6.26-1-686 | Last boot: 27/12/2009 22:08 CET
Powered by Apache    MySQL    PHP    Gimp