RESPUESTA a cómo dividir el ancho de banda

DevilKiller

Hola

Viendo los post he visto que hay bastantes con la misma pregunta, cómo dividir el ancho de banda entre varios usuarios.
La respuesta de cómo dividir el ancho de banda es con linux+htb.init _

El propio kernel de linux permite crear unas reglas para dividir el ancho de banda, pero crearlas "comando a comando" es algo engorroso por eso hay varios scripts para simplificar esto, htb.init. cbq.init, wondershaper son los que conozco, pero seguro que hay más ^^ Con estos scripts simplemente tienes que crear unos ficheros de configuración y a partir de ellos el script ya te crea las reglas para gestionar el ancho de banda.

Yo he usado htb.init para mis pruebas y me ha funcionado perfectamente, te permite opciones como dividir ancho de banda por ips, priorizar distintos tipos de tráfico (por ejemplo reducir la prioridad del tráfico de los programas peertopeer para que navegar no se vuelva algo imposible) y un largo etc

Básicamente lo que hace falta es un kernel con soporte para iptables, QoS y routing(creo que no me olvido de nada...), el paquete iproute con soporte para htb, el script htb.init y un pc que se encargue de gestionar el ancho de banda que actuará como router(también puede hacer de firewall al mismo tiempo :) He intentado hacer que actúe como un brige pero de momento no he podido :( tiempo al tiempo!)

Para hacer esto use

  • Un pc pentium mxx 200 Mhz 128 Ram 2Gigas HD pero supongo que hasta con un pentium 90 ha de funcionar, qiuzás hasta menos ^^
  • La distrubución Debian(Sarge) con kernel de debian(la versión del kernel ha de ser mayor que 2.4.20 o 2.4.19, no recuerdo muy bien)

Los pasos a seguir serían:
1º instalara debian
2º configurarlo la red si no lo has hecho durante la instalación
3º instalar paquete iproute
4º configurar linux para que actúe como gateway(he intentado que funcione como un brigde pero de momento no he podido :()
5º bajar htb.init, darle permisos de ejecución, crear la configuración y añadirlo al arranque

Y ya está _ Espero no haberme olvidado de nada ni haberme confundido, en tal caso me lo dicen y listo

No pretendo que esto sea un manual de cómo hacerlo evidentemente, sólo que sepan que se puede hacer y por dónde investigar para hacerlo. El que algo quiere, algo le cuesta :P

He pensado en hacer un howto paso a paso, pero ahora mismo no puedo ya que donde vivo ahora(estudio informática y la facultad ta en otra isla a la mñía, soy de canarias ^^)sólo tengo un pc...y dividir el ancho de banda para un pc y hacer pruebas....difícil es...pero desde que vuelva a mi hogar y pueda lo hago _

Para el que le interese aquí os paso unos enlaces bastante interesantes sobre el tema:

http://talk.trekweb.com/jasonb/articles/linux_tc_minihowto.shtml
http://www.retronet.com.ar/staticpages/index.php?page=20021007185828566
http://bulma.net/body.phtml?nIdNoticia=1527
http://bulma.net/body.phtml?nIdNoticia=1727
http://www.knowplace.org/shaper/index.html
http://en.tldp.org/HOWTO/Adv-Routing-HOWTO/index.html
http://snafu.freedom.org/linux2.2/iproute-notes.html
http://luxik.cdi.cz/devik/qos/index2.htm
http://sourceforge.net/projects/htbinit/
http://google.es ;)

Mucha suerte!

S

O puente o encaminador, si mezclas procesamiento de distintas capas (quitando protocolo + red) vas a acabar con un lío de 3 pares de narices.

Por cierto ¿para qué quieres que funcione como bridge?

PS: pf >>> iptables :D

DevilKiller

No digo que quiero que actúen como puente y gateway al mismo tiempo, sino que prefiero como bridge ya que tras el pc que se encarga de dividir el ancho de banda hay un firewall y me interesa que las ips tras pasar por el "control de ancho de banda" no cambien ya que si hago que el pc actúe como gateway todos los datos que salen de ese ordenador y llegan al firewall salen con la misma ip cosa que no me interesa evidentemente. Y claro, al pasar los datos por un bridge no se pueden "modificar" pero buscando por google he encontrado casos en los que lo han hecho, es cuestión de seguir buscando, pero como ya expliqué, ahora no puedo hacer pruebas así que no es algo por lo que me preocupe en este momento

S

me interesa que las ips tras pasar por el "control de ancho de banda" no cambien ya que si hago que el pc actúe como gateway todos los datos que salen de ese ordenador y llegan al firewall salen con la misma ip cosa que no me interesa evidentemente.

¿Evidentemente? Puedes tener 2 niveles de NAT con total facilidad (yo lo tuve un tiempo). ¿Hay alguna otra razón?

DevilKiller

No es que lo que más me importe sea el hecho de tener dos niveles de NAT(que por cierto no le veo ninguna ventaja, simplemente ahorrar trabajo), pero quiero que las estadísticas del firewall sean sobre las ips de los usuarios no sólo sobre una ip(la del pc que controla el ancho de bana) Sé que puedo configurar el linux para que me haga estadísticas de todo tipo sobre el tráfico y demás cosas pero no me interesa, prefiero usar las que implemente ya el firewall. Además de que en el firewall hay puertos cerrados a algunos usuarios(que también lo podría hacer en el pc del ancho de banda, pero tampoco me interesa). También me interesa el hecho de que si el pc que gestiona el ancho de banda falla simplemente se desconecte los calbes y funcione la red sin problemas cosa que si actúa como bridge se puede hacer pero si actúa como gateway no.

Vamos, que lo prefiero como bridge! _ Aún así agradezco tu interés

S

Como puente no tengo claro que puedas hacer QoS sobre lo que pasas de un lado al otro, principalmente porque el trabajo consiste en "transplante de paquetes" de trama a trama.

DevilKiller

Buscando por internet he encontrado algún post en el que usuarios lo han hecho aunque no explican cómo sino algúna duda o problema con el bridge. De todos modos, el objetivo de este post no es cómo hacerlo como bridge, si se puede hacer como bridge o no, etc etc sino informar que se puede dividir el ancho de banda que he visto que es una duda bastante común, además de que en el en FAQ ese que hay en el foro sólo informa sobre el programa netlimiter nada más

PiTaGoRaS

Y dejando la teoría a un lado, ¿lo has probado con éxito? Quiero decir, si por ejemplo prioritizas el tráfico UDP sobre los puertos comunmente usados para juegos, ¿puedes llegar a jugar sin problemas de lantencia mientras descargas con eMule?

En cuanto al tema del bridge o NAT, estoy con Soy_Heaton, no creo que un bridge trabaje a nivel de transporte o sesión, necesarios para distinguir el tipo de tráfico, simplemente se limita a copiar datagramas IP de una red a otra. Deberías hacer las estadísticas y el filtrado directamente con el iptables, así simplicas todo un montón y te va a quedar igual de bien.

DevilKiller

Sólo he probado a priorizar el tráfico http sobre el resto(además de dividir el ancho de banda), respecto a juegos no he podido probar nada ya que la conexión es por satélite y la latencia de por si ya es muy alta como para poder jugar :((un ping no da menos de 440 nunca)

Referente a lo del bridge eso es lo que pensaba yo inicialmente, pero como puedes ver en páginas como esta http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-bridging.html si se puede hacer, entre todo el texto encontramos "If you want to use the bridge as a traffic shaper, you will need to add the DUMMYNET option to your kernel configuration. Read dummynet(4) for further information."
En esta otra página también podemos comprobar que sí se puede hacer http://www.docum.org/docum.org/faq/cache/41.html "When you create a bridge with the bridge-utils, you get a new device : br0. You can shape traffic on this device, but you can not use iptables to mark packets and the fw filter to use that mark. But you can use the u32 filter."

Leyendo esto tipo de cosas entiendo que sí se puede hacer, aún no sé cómo, todavía no me he puesto, pero esperanzas tengo.

Saludos y me voy a clase que llego tarde _

Usuarios habituales

  • DevilKiller
  • PiTaGoRaS
  • Soy_HeatoN