Herramientas para el control de ancho de banda en servidores Linux

1. Introducción
2. Herramientas
3. Principios de Funcionamiento
4. Eemplo
!. "onclusión
#. $iblio%ra&'a
1( Introducción
Si bien los enlaces y conexiones a internet son hoy en día muy veloces, es normal que nos
encontremos con enlaces multipropósito, es decir, con conexiones que nos sirven de soporte para varios
tipos de servicio, como por ejemplo, interet, correo corporativo, video conferencia, canales de voz, consulta a
servidores internos, etc...
Aunque nuestras redes estén confiuradas para trabajar a !""#bps o !"#bps, no siempre $por no decir
nunca% es posible alcanzar estas velocidades de transmisión, debido a la ran cantidad de colisiones que
presenta ethernet, sin duda la topoloía m&s usada en la actualidad. 'ebido a esto es conveniente tener bien
definido que servicios son los fundamentales y cuanto ancho de banda requieren.
(o sólo es importante definir las prioriedades en cuanto a los servicios, también es muy importante
definir las prioridades que tienen las diferente subnets de nuestra empresa, por ejemplo, no podemos asinarle
el mismo ancho de banda a areas como desarrollo o erencia y a areas como atención al cliente o archivo. (o
podemos permitir que el erente de nuestra empresa participe de una videoconferencia )entrecortada* porque
aluien aburrido en el archivo baja los +ltimos mp, desde internet. -ensemos que ésta persona en el archivo,
lueo de bajar los mp,, tiene la brillante idea de de envi&rselos a sus amios dentro de la empresa por correo
corporativo, la ente de desarrollo no podría acceder a sus bases de datos debido al exesivo uso de ancho de
banda ocupado por los mails llenos de mp,. .odo esto hace a una buena administración de recursos.
/reo conveniente advertir, antes de que sea tarde, que para poder implementar este tipo de control,
debemos tener un cierto conocimiento acerca de direccionamiento 0-, subnets, y puertos. 1 sea para poder
limitar el uso de 0nternet, debemos saber que puerto usa nuestro servidor proxy, para limitar o liberar el uso de
video conferencias, debemos saber que puertos se utilizan para establecer el enlace, o la ip de la m&quina en la
que se realiza dicha video conferencia.
2( Herramientas
-ara lorar nuestro objetivo no vamos a utilizar nin+n soft2are especial ni costoso, sólo utilizaremos
herramientas que vienen en las +ltimas distribuciones de linux $a partir de la versión 3.4.3" de 5ernel%, éstas
herramientas son, un controlador de tr&fico $tc% y una especie de temporizador $htb%.
'ebido a que éstas herramientas son relativamente nuevas, hay que prestar mucha atención a la
sintaxis y a los valores que se asinan, ya que un valor erróneo sinificaría dejar sin conexión a un determinado
sector o dejarlo totalmente libre con ancho de banda ilimitado.
6ste tipo de herramientas, al formar parte del propio sistema operativo tiene un elevado nivel de
eficiencia y precisión. Adem&s de ser muy eficiente, es muy sencillo anular su efecto ya que con una simple
línea, se anulan los efectos producidos.
3( Principios de Funcionamiento
Antes de hablar sobre sintaxis o de explicarles al+n ejemplo, creo conveniente explicar los terminos y
los elementos que hacen a que la oranización del )limitador* sea sencilla y eficiente.
6s muy importante tener en claro antes de empezar a limitar alo, saber los limites propios de lo que
queremos limitar, no tendría sentido ajustar el limitador de velocidad de un automóvil en 3""7m8h cuando su
velocidad final es de !4"7m8h.... 6n nuestro caso pasa exactamente lo mismo, si contamos con un enlace punto
a punto de 947bps, de nada servir& ajustar el limitador en !3:7bps o en 3;97bps, nuestra línea seuir&
saturada siempre.
<echa la aclaración anterior, ya podemos empezar a dar definiciones sobre cuanto ancho de banda
habilitaremos para determinados servicios, usuarios o subnets.
6stablecemos primero el ancho de banda m&ximo disponible en nuestras líneas de transmisión, este
valor puede ser, por ejemplo, de !"#bps $/lase !%. =ueo definimos todos los límites previstos o /=AS6S. -or
ejemplo hemos definidos de que los diferentes límites ser&n $sin importar a+n a que corresponde cada límite%,
;!37bps $/lase 3%, 3;97bps $/lase ,% y 347bps $/lase 4%. /on estos valores tenemos definidas 4 /=AS6S.
6sto sinifica que tendremos alunos servicios, usuarios o subnets, con !#bps, otros con ;!37bps, otros con
3;97bps y los +ltimos con 347bps.
=ueo de definidas las /=AS6S, debemos empezar a definir que corresponder& a cada clase, por
ejemplo, erencia tendr& el m&ximo ancho de banda posible $/lase !%, el correo corporativo ser& de /lase ,,
0nternet /lase 4, 'esarrollo /lase 3, >ideoconferencia /lase !, y el resto de usuarios estar&n limitados a la
/lase 4.
-ara que cada sector o servicio corresponda a una determinada /=AS6 debemos aplicar ?0=.@1S.
<ay muchas formas de hacer esto, por ejemplo se puede hacer trabajando en conjunto con las entradas de las
0-.AA=6S, pero esto ya hace todo un poco mas complejo. #i recomendación es trabajar sólo con los
comandos mencionados anteriormente ya que nos brindan las mismas potencialidades con una facilidad de
implementación muy superior.
=ueo que tenemos las /=AS6S y los ?0=.@1S, sólo nos queda escribir el Script que implemente el
)limitador*.
/reo conveniente explicar la implementación con un ejemplo de Script que limita diferentes cosas, por
ejemplo, un rupo de usuarios, una subnet y un servicio, dejando así en claro como se implementa cada cosa,
para que lueo ustedes puedan implementarlo a su medida.
4( Eemplo
'escribiré brevemente los recursos con los que contamos y como he decidido distribuirlos.
6l limitador se aplicar&, en un servidor =inux por donde pasa todo el tr&fico de 0nternet, videoconferencia
y correo corporativo. 6ste servidor tiene dos placas de red, una externa $eth"% y la otra interna $eth!%. (uestro
proveedor de 0nternet conectado a eth" nos brinda un ancho de banda de !#bps. (uestra red interna est&
confiurada para funcionar a !"#bps m&xima. Adem&s tenemos contratado un enlace punto a punto con una
sucursal de 947bps por el cual viaja tanto, internet, correo corporativo y canales de voz.
(uestra distribución de direcciones ip y puertos es la siuienteB
a%=a Cerencia forma una subnet con la siuiente numeraciónB !D3.!9.3!."834.
b%(uestra sucursal es la subnet !D3.!9.,!."834
c% 6l resto de los usuarios pertenecen a la subnet !D3.!9.!."834
d%6l puerto usado por nuestro proxy de internet es el ,!3:
>amos a definir 4 clases de ancho de bandaB
0% !"#bps
00% 3;9 7bps
000% !3: 7bps
0>% 347bps
Ahora definimos que rupo pertenece a cada clase. Cerencia pertenecer& a la /lase 0, 0nternet
pertenecer& a la /lase 00, el resto de los usuarios ocupar& la /lase 000 y la sucursal ser& parte de la /lase 0>. 6n
el caso de la sucursal, por ejemplo, los servicios de internet y correo corporativo estar&n limitados a 347bps,
dejando el resto para canales de voz y otros servicios que no pasen por el servidor donde instalaremos el
limitador.
6l Script tendría el siuiente contenidoB
EF8bin8bash
E'efinimos la placa de red interna, ya que es la que nos interesa administrar.
'6>Geth!
E'efinimos el camino al comando )tc*, en caso de que no este en el -A.<
./Gtc H este es el caso en el que esta en el -A.<
E'efinimos todos los limites de ancho de banda a utilizar en 7bps.
@A.6!G!"""
@A.63G3;9
@A.6,G!3:
@A.64G34
E 6sta linea elimina toda posible definicon anterior de ?0=.@1S y /=AS6S
I./ qdisc del dev I'6> root 3JK! J8dev8null
E'efinimos las /=AS6S existentes, ademas de la /=AS6 root y la /=AS6 master que son necesarias para el
funcionamiento del script, pero que no debemos modificar.
E/=AS6 root y master
I./ qdisc add dev I'6> root handle !B htb default 9"
I./ class add dev I'6> parent !B classid !B! htb rate IL@A.6!M5bit
E/=AS6S y orden prioridad
E/lAS6 0
I./ class add dev I'6> parent !B! classid !B!" htb rate IL@A.6M5bit ceil IL@A.6M5bit prio !
I./ qdisc add dev I'6> parent !B!" handle !"B sfq perturb !"
E/lAS6 00
I./ class add dev I'6> parent !B! classid !B3" htb rate IL@A.63M5bit ceil IL@A.63M5bit prio 3
I./ qdisc add dev I'6> parent !B3" handle 3"B sfq perturb !"
E/lAS6 000
I./ class add dev I'6> parent !B! classid !B," htb rate IL@A.6,M5bit ceil IL@A.6,M5bit prio ,
I./ qdisc add dev I'6> parent !B," handle ,"B sfq perturb !"
E/lAS6 0>
I./ class add dev I'6> parent !B! classid !B4" htb rate IL@A.64M5bit ceil IL@A.64M5bit prio !
I./ qdisc add dev I'6> parent !B4" handle 4"B sfq perturb !"
ENa est&n las 4 /=AS6S definidas, ahora hay que definir los ?0=.@1S.
E ?0=.@1! $Subnet C6@6(/0A a /=AS6 0%
I./ filter add dev I'6> parent !B protocol ip prio ! u,3 match ip dst !D3.!9.3!."834 flo2id !B!"
I./ filter add dev I'6> parent !B protocol ip prio ! u,3 match ip src !D3.!9.3!."834 flo2id !B!"
E ?0=.@13 $0(.6@(6. a /=AS6 00%
I./ filter add dev I'6> parent !B protocol ip prio ! u,3 match ip dport ,!3: flo2id !B3"
I./ filter add dev I'6> parent !B protocol ip prio ! u,3 match ip sport ,!3: flo2id !B3"
E ?0=.@1, $Subnet @6S.1 OSOA@01S a /=AS6 000%
I./ filter add dev I'6> parent !B protocol ip prio ! u,3 match ip dst !D3.!9.!."834 flo2id !B,"
I./ filter add dev I'6> parent !B protocol ip prio ! u,3 match ip src !D3.!9.!."834 flo2id !B,"
E ?0=.@14 $Subnet SO/O@SA= a /=AS6 0>%
I./ filter add dev I'6> parent !B protocol ip prio ! u,3 match ip dst !D3.!9.,!."834 flo2id !B4"
I./ filter add dev I'6> parent !B protocol ip prio ! u,3 match ip src !D3.!9.,!."834 flo2id !B4"
ENa esta listo para correr, si queremos podemos mostrar las clases y limites establecido $no muestra a quien
pertenece cada subnet o servicio%.
I./ qdisc sho2 dev I'6>
I./ class sho2 dev I'6>
E?in del Script
!( "onclusión
/on este sencillo Script, hemos lorado desarrollar una muy potente herramienta que nos permite
administrar muy eficientemente los recursos con los que disponemos. 'em&s est& decir que recomiendo
firmemente leer los manuales de los comandos utilizados, ya que esto dara una solidez de conocimiento muy
superior, y una posibilidad de ajustar m&s aun el Script a la medida de sus necesidades.
#( $iblio%ra&'a
• SuperShaper Script, de Smidsrod /onsultin
httpB88222.smidsrod.no8
• Apuntes sobre control de .afico en httpB88222.opalsoft.net8
• 7ernihan8-i5e $!P:D%, 7ernihan K -i5e, -rentice <all
)ie%o *antoni
produccionQtodosafull.com.ar

Sign up to vote on this title
UsefulNot useful