Cómo controlar el tráfico de red en Linux usando el comando tc

El comando Traffic Control (tc) es una herramienta que todo administrador de redes debería conocer. Lo que hace tc es permitir al administrador configurar la programación de paquetes del kernel para simular la pérdida y el retraso de paquetes en aplicaciones UDP/TCP, o limitar el uso del ancho de banda para un servicio específico.

Índice de Contenido
  1. Qué necesitarás
  2. Cómo instalar el comando tc
  3. Uso básico
  4. Cómo simular la pérdida de paquetes con comandos tc

Qué necesitarás

Voy a demostrarlo en una instancia de Ubuntu Server 18.04. Puedes usar este comando en cualquier servidor Linux, pero la instalación de la herramienta puede variar si no está preinstalada. También necesitarás un usuario con privilegios sudo.

Cómo instalar el comando tc

Si descubres que el comando tc no está instalado por defecto, en Ubuntu se empaqueta con iproute2. Así que instálalo de la siguiente manera:

sudo apt-get install iproute2 -y

Uso básico

Lo primero que debes hacer es averiguar el nombre de la interfaz a la que quieres aplicar el programador de paquetes del kernel. Para hacerlo, ejecuta el siguiente comando:

ip a

Python se posiciona como el lenguaje de programación más popular

Este comando mostrará la información de todos tus dispositivos de red (Figura A).

Figura A

Voy a demostrar cómo agregar un retraso constante a la interfaz ens5 de mi máquina. Más específicamente, voy a retrasar el tráfico de salida (egreso) del dispositivo en 50 ms. Para ello, el comando será:

sudo tc qdisc add dev ens5 root tbf rate 1024kbit latency 50ms burst 1540

Las opciones en el comando anterior son:

  • qdisc le dice a tc que modifique el programador
  • add le dice a tc que agregue una nueva regla
  • dev ens5 le dice a tc que las reglas se aplicarán al dispositivo ens5
  • root le dice a tc que modifique el programador de tráfico de salida
  • tbf rate 1024kbit le dice a tc que reduzca la velocidad del tráfico a 1024kbit
  • latency 50ms le dice a tc que retrasará el tráfico en 50ms
  • burst 1540 le dice a tc el tamaño de nuestro cubo

Una vez que hayas ejecutado el comando, puedes verificar que los parámetros se hayan aplicado correctamente con el siguiente comando:

Las tecnologías más demandadas por profesionales de TI

sudo tc qdisc show dev ens5

Deberías ver que cada una de tus opciones esté configurada correctamente (Figura B).

Figura B

Para eliminar la regla que agregaste, ejecuta el siguiente comando:

sudo tc qdisc del dev ens5 root

Una cosa muy importante a tener en cuenta es que solo puedes aplicar una regla a una interfaz a la vez. Por lo tanto, para crear una regla diferente en una interfaz, primero debes eliminar la regla anterior.

Linus Torvalds: El genio detrás de Git

Cómo simular la pérdida de paquetes con comandos tc

Supongamos, por ejemplo, que estás desarrollando una aplicación y necesitas probar cómo se manejará la pérdida de paquetes en tu red. Esto puede ser crucial para asegurarte de que tu aplicación pueda tolerar redes mal configuradas o poco confiables. Aquí tienes dos ejemplos de comandos tc para simular la pérdida de paquetes:

sudo tc qdisc add dev ens5 root netem loss 0.1%

El comando anterior dejará caer paquetes al azar, con una probabilidad del 0,1%.

¿Qué pasa si queremos una probabilidad de pérdida de paquetes del 0,3% con una decisión de descarte del 25% para los paquetes anteriores? Ese comando sería:

sudo tc qdisc add dev ens5 root netem loss 0.3% 25%

Después de ejecutar el comando anterior, realiza una prueba de ping a otra máquina de tu red y deberías ver que se indica la pérdida de paquetes (Figura C).

El auge de la ingeniería legal: una nueva oportunidad en el campo de desarrollo de software

Figura C

Con esa regla en su lugar, ejecuta tu aplicación y observa cómo funciona cuando la red no está en condiciones óptimas. Si la aplicación falla, aún tienes trabajo por hacer.

Si esa regla de pérdida de paquetes en particular no es suficiente para ti, puedes utilizar el esquema Gilbert-Elliot, que define dos estados:

  • Bueno (o pérdida de paquete
  • Malo (o paquete descartado)

Este esquema ofrece un modelo más realista para las limitaciones de red en lugar de una simple pérdida de paquetes. Para usar el esquema Gilbert-Elliot, el comando se vería así:

sudo tc qdisc add dev ens5 root netem loss gemodel 1% 10% 70% 0.1%

Ahora, cuando ejecutemos nuestra prueba de ping, deberíamos ver números similares a los anteriores, pero la pérdida de paquetes debería ser más realista para tus propósitos de prueba (Figura D).

Por qué Kubernetes es la plataforma de gestión de contenedores más popular

Figura D

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Desarrollo, allí encontraras muchos artículos similares a Cómo controlar el tráfico de red en Linux usando el comando tc , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.