Product SiteDocumentation Site

10.4. Calidad del servicio

10.4.1. Principio y mecanismo

Calidad del servicio (QoS: «Quality of Service») se refiere a un conjunto de técnicas que garantizan o mejoran la calidad del servicio provisto a las aplicaciones. De éstas, la técnica más popular consiste en clasificar el tráfico de red en categorías y diferenciar la gestión del tráfico según la categoría a la que pertenezca. El uso principal de este concepto de servicios diferenciados es la manipulación de tráfico («traffic shaping»), que limita las tasas de transmisión de datos para conexiones relacionadas con algunos servicios y/o equipos para no saturar el ancho de banda disponible y privar a otros servicios importantes. Esta técnica es particularmente buena para tráfico TCP ya que el protocolo se adapta automáticamente al ancho de banda disponible.
También es posible alterar las prioridades del tráfico, lo que permite priorizar paquetes relacionados con servicios interactivos (como ssh y telnet) o a servicios que sólo trabajan con bloques de datos pequeños.
Los núcleos Debian incluyen la funcionalidad necesaria para QoS así como también los módulos asociados. Estos módulos son muchos y cada uno de ellos provee un servicio diferente, los más notables como planificadores especiales para las colas de paquetes IP; el amplio rango de comportamientos de planificadores abarca todo el rango de requerimientos posibles.

10.4.2. Configuración e implementación

Se configuran los parámetros de QoS mediante el programa tc (provisto por el paquete iproute). Se recomienda utilizar herramientas de más alto nivel ya que su interfaz es bastante compleja.

10.4.2.1. Reducción de latencias: wondershaper

El propósito principal de wondershaper (en el paquete con nombre similar) es minimizar las latencias independientemente de la carga en la red. Consigue esto limitando el tráfico total a un valor que está justo por debajo del valor de saturación del enlace.
Una vez que una interfaz de red está configurada puede definir sus limitaciones de tráfico ejecutando wondershaper interfaz tasa_descarga tasa_subida. La interfaz puede ser, por ejemplo, eth0 o ppp0 y ambas tasas son en kilobits por segundo. Ejecutar wondershaper remove interfaz desactiva el control de tráfico en la interfaz especificada.
Para una conexión Ethernet, lo mejor es ejecutar este script inmediatamente después de configurar la interfaz. Puede lograrlo agregando directivas up y down al archivo /etc/network/interfaces indicando las órdenes a ejecutar luego que se configure la interfaz y luego que sea desconfigurada, respectivamente. Por ejemplo:

Ejemplo 10.9. Cambios en el archivo /etc/network/interfaces

iface eth0 inet dhcp
    up /sbin/wondershaper eth0 500 100
    down /sbin/wondershaper remove eth0
En el caso de PPP, crear un script que ejecute wondershaper en /etc/ppp/ip-up.d/ activará el control de tráfico tan pronto como esté activa la conexión.

10.4.2.2. Configuración estándar

Barring a specific QoS configuration, the Linux kernel uses the pfifo_fast queue scheduler, which provides a few interesting features by itself. The priority of each processed IP packet is based on the DSCP field (Differentiated of Services Code Point) of this packet; modifying this 6-bit field is enough to take advantage of the scheduling features. Refer to https://en.wikipedia.org/wiki/Differentiated_services#Class_Selector for more information.
The DSCP field can be set by applications that generate IP packets, or modified on the fly by netfilter. The following rules are sufficient to increase responsiveness for a server's SSH service, note that the DSCP field must be set in hexadecimal:
nft add table ip mangle
nft add rule ip mangle PREROUTING tcp sport 22 counter ip dscp set 0x04
nft add rule ip mangle PREROUTING tcp dport 22 counter ip dscp set 0x04