PDF de programación - Implantación de QoS en un entorno GNU/Linux

Imágen de pdf Implantación de QoS en un entorno GNU/Linux

Implantación de QoS en un entorno GNU/Linuxgráfica de visualizaciones

Publicado el 27 de Marzo del 2018
249 visualizaciones desde el 27 de Marzo del 2018
270,7 KB
21 paginas
Creado hace 14a (12/10/2006)
Implantación de QoS

en un entorno GNU/Linux

Bruno Herrero (mines)

Última revisión: Octubre 2006

1. Introduccion

QoS (Quality of Service o Calidad de Servicio) es un conjunto de protocolos y tecnologías que

garantizan la entrega de datos a través de la red en un momento dado. De este modo, nos

aseguramos que las aplicaciones que requieran un tiempo de latencia bajo o un mayor consumo de
ancho de banda, realmente dispongan de los recursos suficientes cuando los soliciten. Por ello, uno

de las principales metas de QoS es la priorización. Esto es, el dar más relevancia a unas
conexiones frente a otras.

Algunos de los beneficios que podemos obtener al implantar QoS en nuestro sistema son:

● Control sobre los recursos: podemos limitar el ancho de banda consumido por

transferencias de FTP y dar más prioridad a un servidor de bases de datos al que

acceden múltiples clientes.

● Uso mas eficiente de los recursos de red: al poder establecer prioridades

dependiendo del tipo de servicio, umbrales de tasas de transferencia...

● Menor latencia: en aplicaciones de tráfico interactivo como SSH, telnet... que requieren

un tiempo de respuesta corto.

Existen varias estrategias y técnicas para llevar a cabo la aplicación de QoS, tanto software como
Hardware, comerciales y de código abierto (libres). En este documento se realizará la implantación

práctica de un sistema QoS sencillo bajo un entorno Debian GNU/Linux. El propósito es proveer un
acercamiento práctico al manejo de las disciplinas de cola bajo Linux que permiten ordenar el

tráfico de red.

2. Caso de ejemplo

Para acercarnos un poco más a la filosofía de QoS, imaginemos un caso muy común.

Tenemos un ordenador que está conectado a Internet a través de una línea ADSL con 1mb de
bajada y 320kb de subida. Empezamos a generar tráfico de subida abundante, como por ejemplo

mediante el uso de un programa P2P. ¿Por qué es imposible navegar por la web de forma fluida, si
el tráfico de bajada y subida son independientes?. Por culpa de las colas.

Por defecto, cuando enviamos información por una interfaz (tarjeta de red en este caso) las tramas

de datos se encolan en una pila FIFO: la primera trama en entrar, es la primera en salir. En
nuestro caso, el módem que nos da salida a internet tiene una cola donde se colocan los paquetes

para ser enviados, llamada Send-Q (Send-Queue, cola de envío). Al saturar esa cola con paquetes
de envío P2P, será más difícil para los paquetes ACK de navegación web llegar a su destino, y esa

es la causa de que no podamos navegar de forma fluida, porque el servidor HTTP no enviará mas
datos hasta que no reciba las confirmaciones anteriores.

La solución para esto es trasladar la cola de envío a nuestro ordenador/router, de manera que
podamos moldearla y darla forma a nuestro gusto, para gestionar el ancho de banda de manera

más eficiente. En este caso, podremos decir que los paquetes dirigidos al puerto HTTP (80) tengan
mucha más prioridad que los paquetes P2P; de esta forma saldrán antes por el módem los ACKs

HTTP, permitiendo una mejor navegación al tener más prioridad que el tráfico P2P.

Fig. 1: Colas en el módem

Fig. 2: Colas en el ordenador (router)
con subida limitada

Debemos de entender la situación de la figura 2 como un “filtro” o semáforo regulador del tráfico:
los paquetes se clasifican en el router (en nuestro caso el ordenador hará las veces de router) antes

de llegar al módem. Además limitaremos ligeramente por debajo la velocidad de subida, de
manera que no saturemos las colas de envío del modem. Con esto nos aseguramos de que no

enviamos más datos de los que el módem puede manejar.

Este caso es extensible: en una red local corporativa con un gran número de puestos, puede ocurrir
la situación de que parte de ellos comienzen a demandar ancho de banda en detrimento de

servicios críticos que requieran alta disponibilidad y baja latencia, tales como tráfico interactivo SSH
o servidores de aplicaciones. Aquí es donde entra en juega QoS y su capacidad para actuar como

“agente” de la red, estableciendo prioridades de acceso, umbrales de transferencia y políticas para
un control inteligente de los recursos de red.

3. Cómo funciona QoS en Linux

Para proceder a la implantación práctica de un sistema QoS para gestionar el ancho de
banda, hay que comprender cual es el camino que recorre un paquete desde que “entra” o se

genera en nuestra máquina Linux (que hará las veces de router) hasta que sale a Internet u otra
red; así como las diferentes disciplinas de cola también conocidas como qdiscs (Queue

Disciplines) que clasifican los paquetes.

Fig. 3: Diagrama de paquetes con disciplinas de cola

En la figura 3 se puede observar de forma esquemática cual es el proceso que sigue un paquete de
datos desde que llega hasta nuestra máquina local hasta que abandona la misma:

● El paquete llega al kernel linux de la máquina.

● Netfilter (iptables) se encarga de poner una marca al paquete que nosotros

establezcamos. Es similar al código postal del sistema de correos: un identificador para
posteriormente poder clasificar el envío. Se pueden hacer marcados en base al puerto de

destino, a la cabecera IP, la dirección IP origen del paquete...

● El árbol de preferencias o árbol de preferencias: aquí es donde reside el corazón del

mecanismo de control de tráfico. Con el encolamiento determinamos de que forma se

envían los datos, mediante el uso de disciplinas de cola.

Disciplinas de cola

Las disciplinas de cola no son más que una estructura de clases en las que hay dependencia

de padre-hijo entre sus miembros. Antes de entrar con detalle en ellas, es necesario conocer los
algoritmos que hacen funcionar el mecanismo. Los aquí expuestos no son los únicos que existen,

pero si los más comunmente usados.

● ESFQ (Enhaced Stochastic Fair Queing): el ancho de banda se reparte equitativamente

entre todas las conexiones, dando la misma oportunidad a todas para enviar datos. Además,
permite hacer el reparto en base a la dirección IP de la conexión. Esto es útil para controlar

los programas P2P, que se aprovechan al crear múltiples conexiones.

● HTB (Hierarchical Token Bucket): permite dividir el ancho de banda disponible entre un

mínimo y un máximo. El algoritmo asegura la disponibilidad del mínimo, y si se permite,

alcanzar el máximo. Ademas puede “pedir prestado” el ancho de banda sobrante que no
se use.

● IMQ (Intermediate Queing Device): se usa para encolar paquetes y limitar cuánto tráfico

puede llegar a la interfaz de red. Tiene utilidad a la hora de limitar el tráfico entrante.

● WRR (Weighted Round Robin, Round Robin por Peso): similar al ESFQ, permite dar mas

“peso” a una IP concreto y crear jerarquías balanceadas de tráfico.

● PFIFO_FAST: First In, First Out: el primero en entrar, es el primero en salir. Es el que está

activado por defecto en linux, y el que se aplica también por defecto cuando creamos una
clase.

● RED (Random Early Detection): utilizado para detectar la congestión. Se asegura de que la

cola no se llene.

● ECN (Explicit Congestion Notification): funciona en conjunto con RED

Además, es preciso conocer algunos términos como:

● Qdisc: es el algoritmo que controla la cola de un dispositivo.

● Qdisc raíz: se encuentra adjunta a la interfaz de red.

● Qdisc con clases: permiten realizar subdivisiones internas, que a su vez pueden ser otras

qdiscs.

● Qdisc sin clases: no se pueden configurar subdivisiones internas.

● Clases: una qdisc con clases puede tener múltiples clases, internas todas a la qdisc. A su

vez también, pueden añadirse clases a clases. Las clases terminales son las que no tienen

clases “hijas”, y tienen una qdisc adjunta. Esta qdisc es la que se encarga de enviar los
datos a la clase.

Cómo usar las disciplinas de cola para clasificar el tráfico.

Las disciplinas de cola siguen una estructura jerárquica en árbol. Cada interfaz (tarjeta de

red) tiene una “qdisc raíz” que esta asociada a ella. Cuando se reciben paquetes o tramas de datos

en la interfaz de red, la qdisc raíz recibe la petición de desencolar. En base a las marcas en el
paquete que hayamos establecido con netfilter / iptables, la qdisc raíz lo enviará a alguna de las

clases que contiene. A cada qdisc y cada clase se les asigna un controlador que consiste en dos
partes separadas por dos puntos, un numero mayor y un número menor. Las clases deben tener el

mismo número mayor que sus padres; el número menor debe ser único dentro de una qdisc y sus
clases.

Para aclarar estos conceptos, se expone un ejemplo de implementación en la figura 4:

Fig. 4: Ejemplo de árbol

Las clases terminales 1:10, 1:20 y 1:30 son las que recibirán los paquetes. En cada una de ellas

podemos establecer políticas diferentes: por ejemplo, la 10 puede tener más prioridad que la 20, la
30 tener más ancho de banda... Si no decimos nada, por defecto en cada clase terminal se asocia

una qdisc FIFO.

Imaginemos de nuevo la conexión ADSL con 320kb de subida (se limitará a 300 por las razones
anteriormente expuestas) que debe ser compartida entre dos ordenadores. Una posible solución

para “compartir” el ancho de banda disponible sería la siguiente:


Usando HTB podemos especificar que tanto la clase 1a
clase 1:10 como la 1:20 dispongan de al menos 150kbit de

ancho de banda de subida. Además, en el caso de que uno
de los ordenadores no estuviese en funcionamiento, el otro

podría alcanzar el tope de ancho de banda(lo “toma
prestado”) que especifiquemos (en este caso, 300kbit). A

cada una de las clases terminales también se las denomina
bandas.

Si fuese necesario, podr
  • Links de descarga
http://lwp-l.com/pdf9930

Comentarios de: Implantación de QoS en un entorno GNU/Linux (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad