Publicado el 25 de Junio del 2017
632 visualizaciones desde el 25 de Junio del 2017
864,0 KB
51 paginas
Creado hace 14a (22/06/2010)
Carlos Álvarez Martín
Proyecto Integrado ASI 2009/2010
I.E.S. Gonzalo Nazareno
Índice de contenido
1. Introducción
2. Funcionamiento de QoS en Debian (GNU/Linux)
4
5
3. Caso práctico
7
3.1. Situación antes de la implantación...........................................................................8
3.2. ¿Qué es lo que vamos a hacer?..............................................................................9
3.3. Disciplinas de cola (Qdiscs) usando TC................................................................10
3.4. Marcado de paquetes con Iptables........................................................................16
3.5. QoS Lectivo y NoLectivo. El Script.......................................................................17
3.5.1. Estructura del script......................................................................................17
3.5.2. Ficheros del script........................................................................................18
3.6. Debianizando el script............................................................................................22
3.6.1. Qué es y cómo se estructura un paquete DEB............................................22
3.6.2. Creación de los ficheros de control..............................................................23
3.6.3. Creación del paquete DEB...........................................................................24
3.7. MRTG: Monitorización de la interfaz externa.........................................................26
3.8. Medición del ancho de banda con Iperf.................................................................29
3.9. Situación después de la implantación...................................................................30
4. Anexo de Teoría
32
4.1. Terminología...........................................................................................................32
4.2. Un poco más antes de empezar............................................................................33
4.3. Algunas disciplinas de cola (Qdiscs).....................................................................35
4.3.1. Qdiscs sin clases..........................................................................................35
4.3.1.1. pfifo_fast..............................................................................................35
4.3.1.2. TBF (Token Bucket Filter)...................................................................37
4.3.1.3. SFQ (Stochastic Fairness Queueing).................................................38
4.3.2. Qdiscs con clases........................................................................................40
4.3.2.1. Encolado del tráfico............................................................................40
4.3.2.2. Árboles: Relación entre qdiscs y clases.............................................40
4.3.2.3. Desencolado del tráfico......................................................................41
4.3.2.4. PRIO...................................................................................................41
4.3.2.5. CBQ....................................................................................................42
4.3.2.6. HTB (Hierarchical Token Bucket).......................................................43
4.3.3. La qdisc Ingress...........................................................................................44
4.4. Herramientas Iptables y TC...................................................................................45
4.4.1. Iptables..........................................................................................................45
4.4.2. TC.................................................................................................................47
4.4.2.1. Qdiscs.................................................................................................47
4.4.2.2. Clases.................................................................................................47
4.4.2.3. Filtros..................................................................................................48
4.4.2.4. Mostrar qdiscs y clases aplicadas......................................................48
4.4.2.5. Eliminar qdiscs...................................................................................48
5. Conclusiones
6. Posibles mejoras
7. Bibliografía
49
50
51
Implantación de un sistema de QoS
I.E.S. Gonzalo Nazareno
1. Introducción
Dentro del ámbito de la informática, podemos definir QoS (Quality of Service) como un
conjunto de mecanismos con los que se trata de conseguir dar buen servicio de forma
ininterrumpida. El QoS se puede aplicar en redes WiFi, conexiones ATM, etc. En este
caso se implantará sobre una red de más de 50 puestos de trabajo con una conexión
ADSL.
Consiste en priorizar cierto tráfico así como ajustar el ancho de banda para cada uno de
los protocolos que tratemos en concreto, el de la línea de forma global, etc.
Intentaremos, aplicando una serie de técnicas, que nuestra conexión funcione lo más
fluida posible en situaciones de mucha demanda.
Existen implementaciones QoS tanto software como hardware (la mayoría de las veces se
tratan de dispositivos corriendo un kérnel Linux).
En nuestro caso será una implementación software.
Digamos que QoS se podría representar con la siguiente igualdad:
QoS = Priorización + Moldeado
Carlos Álvarez Martín
4
Implantación de un sistema de QoS
I.E.S. Gonzalo Nazareno
2. Funcionamiento de QoS en Debian (GNU/Linux)
A la hora de hacer QoS se pueden usar distintas soluciones o formas de abordar el
problema. Un ejemplo sería el proxy Squid para realizar QoS a partir de ACLs y las
llamadas “Delay Pools”. Sin embargo en nuestro caso, debido a su popularidad y a un uso
de recursos más liviano, emplearemos un conjunto de dos herramientas. Se tratan de TC
(incluida en el paquete Iproute2) e IPTABLES.
Para poder usar dichas herramientas en nuestro servidor, hemos de comprobar que
nuestro kérnel está compilado con soporte para QoS y filtrado de paquetes (Iptables).
Estas características se encuentran en “Networking/Networking options” dentro del menú
de configuración del kérnel (secciones “Network packet filtering framework” y “QoS and/or
fair queueing”). En nuestro caso, usando Debian Lenny (kérnel 2.6.26) no tendremos que
recompilar el núcleo puesto que todas las características ya mencionadas se encuentran
incluidas en él.
La forma en la que trabajará nuestro sistema de QoS (TC e Iptables) será la siguiente:
Diagrama de QoS (TC+Iptables) en Linux
Lo que pretendemos es que en lugar de que le módem (o router doméstico) tenga la cola
Carlos Álvarez Martín
5
Implantación de un sistema de QoS
I.E.S. Gonzalo Nazareno
de nuestra línea, sea nuestro núcleo Linux el que se encargue de dicha función (“hay que
poseer la cola”). Es relativamente fácil hacerlo con las herramientas que usaremos, y se
consigue ajustando las velocidades de subida y descarga a unos límites un poco inferiores
a los alcanzables por nuestra conexión real (nuestro enlace con el ISP). Además,
conseguiremos “liberar” un poco al módem que usamos para conectar con el ISP ya que
suelen congestionarse con situaciones de tráfico elevado.
Carlos Álvarez Martín
6
Implantación de un sistema de QoS
I.E.S. Gonzalo Nazareno
3. Caso práctico
En esta sección se muestra cómo se ha implantado el QoS en los ciclos de informática del
I.E.S. Gonzalo Nazareno. Se tomó dicha decisión debido a la pobre calidad de conexión
de la que disponían tanto alumnos como profesores.
La red tiene un aspecto como el siguiente:
Red de los ciclos del I.E.S. Gonzalo Nazareno
La idea consiste en que la conexión a Internet sea fluida incluso en casos de un uso
intensivo.
En nuestro caso la máquina que nos interesa es macaco por el hecho de actuar como
router de la red. Tiene aplicadas unas reglas de Iptables para el cortafuegos y ejecuta un
servidor DHCP para ofrecer direcciones a las aulas. La interfaz en la que aplicaremos los
Carlos Álvarez Martín
7
Implantación de un sistema de QoS
I.E.S. Gonzalo Nazareno
ajustes será eth0, que nos da salida a Internet estando conectada a un router en modo
monopuesto. La línea contratada es un ADSL con Telefónica de 10Mbps/800Kbps.
3.1. Situación antes de la implantación
Como se ha comentado en la introducción del caso práctico, se ha optado por implantar
un QoS para solventar los problemas que existen con respecto a la conexión ADSL
compartida por tantos usuarios.
La navegación por páginas web es muy lenta cuando alguien está descargando a una
velocidad muy elevada o subiendo del mismo modo. Es decir, no se puede trabajar
cuando una sola persona es capaz de acaparar todo el ancho de banda.
A continuación, como una evidencia del problema, se puede mostrar la salida de un ping a
una de las direcciones IP de Google cuando alguien sube un fichero a GMail por ejemplo.
spiki@nemola:~$ ping -c100 74.125.77.104
PING 74.125.77.104 (74.125.77.104) 56(84) bytes of data.
64 bytes from 74.125.77.104: icmp_seq=1 ttl=48 time=760 ms
64 bytes from 74.125.77.104: icmp_seq=2 ttl=48 time=800 ms
64 bytes from 74.125.77.104: icmp_seq=3 ttl=48 time=713 ms
64 bytes from 74.125.77.104: icmp_seq=4 ttl=48 time=752 ms
64 bytes from 74.125.77.104: icmp_seq=5 ttl=48 time=592 ms
. . .
64 bytes from 74.125.77.104: icmp_seq=93 ttl=48 time=816 ms
64 bytes from 74.125.77.104: icmp_seq=94 ttl=48 time=941 ms
64 bytes from 74.125.77.104: icmp_seq=95 ttl=48 time=1031 ms
64 bytes from 74.125.77.104: icmp_seq=96 ttl=48 time=993 ms
64 bytes from 74.125.77.104: icmp_seq=97 ttl=48 time=1008 ms
64 bytes from 74.125.77.104: icmp_seq=98 ttl=48 time=1090 ms
64 bytes from 74.125.77.104: icmp_seq=99 ttl=48 time=1104 ms
64 bytes from 74.125.77.104: icmp_seq=100 ttl=48
Comentarios de: Quality of service (0)
No hay comentarios