Cómo limitar el ancho de banda de red utilizado por las aplicaciones en un sistema Linux con Trickle


¿Alguna vez se ha encontrado con situaciones en las que una aplicación dominaba todo el ancho de banda de su red? Si alguna vez ha estado en una situación en la que una aplicación se comió todo su tráfico, entonces valorará el papel de la aplicación del modelador de ancho de banda. Ya sea que sea un administrador del sistema o simplemente un usuario de Linux, debe aprender a controlar las velocidades de carga y descarga de aplicaciones para asegurarse de que una sola aplicación no queme el ancho de banda de su red.

¿Qué es Trickle?

Trickle es una herramienta para modelar el ancho de banda de la red que nos permite administrar las velocidades de carga y descarga de aplicaciones para evitar que una de ellas acapare todo (o la mayor parte) del ancho de banda disponible. En pocas palabras, el goteo le permite controlar la tasa de tráfico de la red por aplicación, a diferencia del control por usuario, que es el ejemplo clásico de configuración del ancho de banda en un entorno cliente-servidor, y es probablemente la configuración que tenemos más. familiar con.

¿Cómo funciona Trickle?

Además, el goteo puede ayudarnos a definir prioridades por aplicación, de modo que cuando se establezcan límites generales para todo el sistema, las aplicaciones prioritarias seguirán obteniendo más ancho de banda automáticamente. Para realizar esta tarea, el filtrado establece límites de tráfico a la forma en que los datos se envían y reciben desde los sockets que utilizan conexiones TCP. Debemos tener en cuenta que, aparte de las tasas de transferencia de datos, el goteo no modifica en modo alguno el comportamiento del proceso que está configurando en un momento dado.

¿Qué no puede hacer Trickle?

La única limitación, por así decirlo, es que el goteo no funcionará con aplicaciones o binarios vinculados estáticamente con el conjunto de bits SUID o SGID, ya que usa vinculación dinámica y carga para ubicarse entre el proceso conformado y su conector de red asociado. Trickle entonces actúa como un proxy entre estos dos componentes de software.

Dado que el goteo no requiere privilegios de superusuario para ejecutarse, los usuarios pueden establecer sus propios límites de tráfico. Dado que esto puede no ser deseable, exploraremos cómo establecer límites generales que los usuarios del sistema no pueden superar. En otras palabras, los usuarios aún podrán administrar sus tasas de tráfico, pero siempre dentro de los límites establecidos por el administrador del sistema.

En este artículo explicaremos cómo limitar el ancho de banda de red utilizado por las aplicaciones en un servidor Linux con goteo. Para generar el tráfico necesario, usaremos ncftpput y ncftpget (ambas herramientas están disponibles instalando ncftp) en el cliente (servidor CentOS 7 - dev1: 192.168.0.17) y vsftpd en el servidor (Debian Wheezy 7.5 - dev2: 192.168.0.17). 0.15) con fines de demostración. Las mismas instrucciones también funcionan en sistemas basados u200bu200ben RedHat, Fedora y Ubuntu.

1. Para RHEL/CentOS 7/6, habilite el repositorio EPEL. Extra Packages for Enterprise Linux (EPEL) es un repositorio de software de código abierto y gratuito de alta calidad mantenido por el proyecto Fedora y es 100% compatible con sus derivados, como Red Hat Enterprise Linux y CentOS. Tanto goteo como ncftp están disponibles en este repositorio.

2. Instale ncftp de la siguiente manera:

# yum update && sudo yum install ncftp		[On RedHat based systems]
# aptitude update && aptitude install ncftp	[On Debian based systems]	

3. Configure un servidor FTP en un servidor separado. Tenga en cuenta que aunque FTP es intrínsecamente inseguro, todavía se usa ampliamente en los casos en que no se necesita seguridad para cargar o descargar archivos. Lo estamos usando en este artículo para ilustrar las recompensas del goteo y porque muestra las tasas de transferencia en stdout en el cliente, y dejaremos la discusión sobre si debe o no usarse para otra fecha y hora :).

# yum update && yum install vsftpd 		[On RedHat based systems]
# aptitude update && aptitude install vsftpd 	[On Debian based systems]

Ahora, edite el archivo /etc/vsftpd/vsftpd.conf en el servidor FTP de la siguiente manera:

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

Después de eso, asegúrese de iniciar vsftpd para su sesión actual y habilitarlo para el inicio automático en futuros arranques:

# systemctl start vsftpd 		[For systemd-based systems]
# systemctl enable vsftpd
# service vsftpd start 			[For init-based systems]
# chkconfig vsftpd on

4. Si elige configurar el servidor FTP en un droplet CentOS/RHEL 7 con claves SSH para acceso remoto, necesitará una cuenta de usuario protegida por contraseña con el directorio apropiado y los permisos de archivo para cargar y descargar el contenido deseado FUERA de la raíz directorio de inicio.

Luego puede navegar a su directorio de inicio ingresando la siguiente URL en su navegador. Aparecerá una ventana de inicio de sesión que le solicitará una cuenta de usuario y una contraseña válidas en el servidor FTP.

ftp://192.168.0.15

Si la autenticación tiene éxito, verá el contenido de su directorio de inicio. Más adelante en este tutorial, podrá actualizar esa página para mostrar los archivos que se han cargado durante los pasos anteriores.