Cómo verificar si una política de QoS de red está activa en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo verificar si una política de Calidad de Servicio (Quality of Service, QoS) de red está activa en Linux. Utilizarás el poderoso comando tc para enumerar e inspeccionar las disciplinas y clases de QoS configuradas en tus interfaces de red.

Específicamente, primero utilizarás tc qdisc show para enumerar las disciplinas de encolamiento activas, comprendiendo su función en la gestión del tráfico de red. Luego, explorarás cómo verificar las clases de QoS con tc class, que se utilizan para categorizar y priorizar diferentes tipos de tráfico. Finalmente, aprenderás cómo inspeccionar los archivos de configuración de red en /etc/network para entender cómo se pueden configurar de forma persistente las políticas de QoS.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/help -.-> lab-558741{{"Cómo verificar si una política de QoS de red está activa en Linux"}} linux/man -.-> lab-558741{{"Cómo verificar si una política de QoS de red está activa en Linux"}} linux/ls -.-> lab-558741{{"Cómo verificar si una política de QoS de red está activa en Linux"}} linux/cat -.-> lab-558741{{"Cómo verificar si una política de QoS de red está activa en Linux"}} linux/ifconfig -.-> lab-558741{{"Cómo verificar si una política de QoS de red está activa en Linux"}} linux/netstat -.-> lab-558741{{"Cómo verificar si una política de QoS de red está activa en Linux"}} linux/ip -.-> lab-558741{{"Cómo verificar si una política de QoS de red está activa en Linux"}} end

Listar disciplinas de QoS con tc qdisc

En este paso, aprenderás cómo listar las disciplinas de Calidad de Servicio (Quality of Service, QoS) utilizando el comando tc. QoS es un conjunto de tecnologías que gestionan el tráfico de red para reducir la pérdida de paquetes, la latencia y el jitter. El comando tc es una herramienta poderosa en Linux para configurar el control de tráfico.

El comando tc qdisc se utiliza para gestionar las disciplinas de encolamiento. Una disciplina de encolamiento (qdisc) es la parte del núcleo de Linux que determina la programación de los paquetes.

Para listar las disciplinas de QoS actualmente configuradas en tus interfaces de red, abre la terminal y escribe el siguiente comando:

tc qdisc show

Presiona Enter.

Deberías ver una salida similar a esta:

qdisc noqueue 0: dev lo root refcnt 2
qdisc fq_codel 0: dev eth0 root refcnt 2 limit 10240p flows 1024 quantum 1514 target 5ms interval 100ms memory_limit 32Mb ecn

Desglosemos la salida:

  • qdisc: Indica que esta línea describe una disciplina de encolamiento.
  • noqueue 0: dev lo: Muestra la qdisc para la interfaz de bucle interno (lo). noqueue significa que no se está produciendo encolamiento, ya que el tráfico en la interfaz de bucle interno normalmente no está sujeto a limitación.
  • fq_codel 0: dev eth0: Muestra la qdisc para la interfaz de red eth0. fq_codel es un tipo específico de qdisc que combina Colas Justas (Fair Queueing, FQ) con Retraso Controlado (Controlled Delay, CoDel).
  • root: Indica que esta es la qdisc raíz para el dispositivo.
  • Los parámetros restantes (refcnt, limit, flows, etc.) son específicos de la qdisc fq_codel y controlan su comportamiento.

La salida que veas puede variar dependiendo de la configuración predeterminada de las interfaces de red en el entorno de LabEx. Lo importante es entender que tc qdisc show lista las disciplinas de encolamiento activas.

Ahora, intenta listar las qdiscs para una interfaz específica, como eth0:

tc qdisc show dev eth0

Presiona Enter.

Este comando solo mostrará la qdisc configurada en la interfaz eth0.

Comprender la salida de tc qdisc show es el primer paso para gestionar el tráfico de red con tc.

Haz clic en Continuar para pasar al siguiente paso.

Verificar clases de QoS con tc class

En el paso anterior, aprendiste sobre las disciplinas de encolamiento (qdisc). Ahora, exploremos las clases de QoS utilizando el comando tc class.

Mientras que las qdiscs definen el comportamiento general de programación en una interfaz, las clases se utilizan dentro de ciertas qdiscs (como HTB o CBQ) para crear estructuras jerárquicas y aplicar diferentes reglas a diferentes tipos de tráfico. Puedes pensar en las clases como categorías o subdivisiones dentro de una qdisc.

Para listar las clases de QoS actualmente configuradas, debes especificar la interfaz de red y la qdisc o clase padre. Dado que la qdisc fq_codel predeterminada en eth0 no utiliza una jerarquía de clases de la misma manera que algunas otras qdiscs, ejecutar directamente tc class show dev eth0 puede que no muestre ninguna clase al principio.

Intentemos el comando de todos modos para ver la salida:

tc class show dev eth0

Presiona Enter.

Es probable que no veas ninguna salida, o una salida que indique que no se han definido clases, similar a esto:

Esto es lo esperado porque fq_codel es una qdisc sin clases. Las qdiscs sin clases realizan su trabajo sin necesidad de clasificar el tráfico en diferentes grupos.

Sin embargo, si se configurara una qdisc como HTB (Hierarchical Token Bucket) o CBQ (Class Based Queueing), verías una lista de clases definidas bajo esa qdisc, mostrando sus parámetros como límites de ancho de banda, prioridades, etc.

Por ejemplo, si HTB estuviera configurada en eth0, la salida podría verse algo así (este es solo un ejemplo, no verás esta salida en el entorno actual):

class htb 1:1 root prio 0 rate 100Mbit ceil 100Mbit burst 1600b cburst 1600b
class htb 1:10 parent 1:1 prio 1 rate 50Mbit ceil 80Mbit burst 1600b cburst 1600b
class htb 1:20 parent 1:1 prio 2 rate 20Mbit ceil 30Mbit burst 1600b cburst 1600b

En este ejemplo hipotético:

  • class htb: Indica una clase HTB.
  • 1:1: El identificador de la clase raíz.
  • 1:10, 1:20: Identificadores de las clases hijas bajo la clase raíz 1:1.
  • rate, ceil: Definen el ancho de banda garantizado y máximo para la clase.
  • prio: Define la prioridad de la clase.

Si bien no se ven clases con la configuración predeterminada, entender el comando tc class show es crucial para trabajar con qdiscs con clases cuando se configuran.

Haz clic en Continuar para pasar al siguiente paso.

Inspeccionar la configuración de QoS en /etc/network

En los pasos anteriores, utilizaste el comando tc para ver las configuraciones de QoS actualmente activas. Si bien tc muestra el estado en tiempo de ejecución, los archivos de configuración a menudo determinan cómo se aplican estas configuraciones cuando el sistema se inicia o se activan las interfaces de red.

En sistemas basados en Debian, como Ubuntu, las configuraciones de las interfaces de red a menudo se gestionan en el archivo /etc/network/interfaces y en los archivos dentro del directorio /etc/network/interfaces.d/. Estos archivos pueden incluir comandos que se ejecutan cuando se configura una interfaz, incluyendo comandos tc para configurar QoS.

Inspeccionemos el archivo principal de configuración de red. Abre la terminal y utiliza el comando cat para ver el contenido de /etc/network/interfaces:

cat /etc/network/interfaces

Presiona Enter.

Verás la configuración básica de la interfaz de red. En este entorno de LabEx, la salida podría verse algo así:

## interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Este archivo define la interfaz de bucle interno (lo) y la interfaz de red principal (eth0), que está configurada para utilizar DHCP para obtener una dirección IP.

Las configuraciones de QoS no se suelen colocar directamente en /etc/network/interfaces para configuraciones complejas. En su lugar, a menudo se incluyen en scripts separados o fragmentos de configuración que se ejecutan cuando se activa la interfaz. Estos fragmentos pueden estar ubicados en el directorio /etc/network/if-up.d/. Los scripts en este directorio se ejecutan después de que se haya activado una interfaz de red.

Listemos los archivos en el directorio /etc/network/if-up.d/ para ver si hay algún script relacionado con QoS o control de tráfico:

ls /etc/network/if-up.d/

Presiona Enter.

La salida mostrará los archivos presentes en ese directorio. Puedes ver varios scripts relacionados con la configuración de red, pero probablemente ninguno específicamente para configuraciones complejas de QoS en este entorno básico.

## Example output (may vary)
avahi-autoipd  ethtool  mountnfs  ntp  openssh-server  resolvconf  upstart

Si hubiera scripts diseñados para aplicar reglas tc al arrancar el sistema, normalmente residirían aquí. Por ejemplo, un script llamado qos-setup en este directorio podría contener comandos tc para configurar qdiscs y clases.

Si bien no encontraste configuraciones explícitas de QoS en estos lugares estándar en este entorno básico, saber dónde buscar (/etc/network/interfaces, /etc/network/interfaces.d/ y /etc/network/if-up.d/) es esencial para entender cómo se configura de forma persistente QoS en un sistema Linux.

Haz clic en Continuar para completar este laboratorio.

Resumen

En este laboratorio, aprendiste cómo verificar si una política de QoS de red está activa en Linux. Comenzaste utilizando el comando tc qdisc show para listar las disciplinas de encolamiento activas en tus interfaces de red, comprendiendo que las qdiscs determinan la programación de paquetes y son una parte clave de la configuración de QoS. Examinaste la salida para identificar el tipo de qdisc y la interfaz de red asociada, y también aprendiste cómo listar las qdiscs para una interfaz específica utilizando tc qdisc show dev <interface>.