¿Hay alguna manera de restringir el ancho de banda en una NIC en Linux? Me gustaría poder simular una conexión arbitrariamente lenta.
linux
networking
bandwidth
Mark Borgerding
fuente
fuente
Respuestas:
El módulo del núcleo netem , controlado por iproute.
Necesita compilar Netem con el núcleo:
Una vez que se cargó el módulo netem, iproute's tc le permite cosas como:
(50% de pérdida de paquetes, retraso adicional de 50 ms)
fuente
sch_netem
. En general, no es necesario cargarlo manualmente, se cargará automáticamente según sea necesario.rate
opción:tc qdisc add dev lo root handle 1:0 netem delay 10ms rate 1mbit limit 1000
. Tenga en cuenta que para algunos dispositivos, tales comolo
(para acceder a localhost), es necesario ajustar la longitud de la cola, así:ifconfig lo txqueuelen 1000
. Consulte serverfault.com/a/394949/76090Lado del cliente, ¿verdad?
goteo debe hacer lo que quieras. Si está ejecutando Ubuntu (o Debian, creo), puede instalarlo
sudo apt-get install trickle
y luego ejecutarlo.trickle -s -d 10 -u 10 firefox
(más o menos, no lo he usado en mucho tiempo) ejecutaría firefox, limitando su velocidad de descarga y carga a 10 kilobytes por segundo.fuente
Encontré una manera de evitar que mi caja se comiera todo el ancho de banda disponible en la red usando una herramienta llamada 'wondershaper' en ubuntu. Espero que también exista en otros destros de Linux. Puedo limitar el ancho de banda que puede consumir mi PC Linux con el siguiente comando.
Esto limita el límite de descarga a 1000 kilobits y la carga a 200 kilobits. Consulte las páginas de manual de wondershaper para obtener más información / opciones.
fuente
wondershaper
en Debian.sudo wondershaper clear eth0
NIST crea un simulador de red llamado NistNet.
http://snad.ncsl.nist.gov/nistnet/ (el enlace parece estar muerto)
http://cs.ecs.baylor.edu/~donahoo/tools/nistnet/
NistNet le permite crear un enrutador que emule un enlace de comunicaciones de su elección.
Para una operación más simple, lo tiene en una caja con dos NIC entre dos redes.
Por ejemplo, tenía una aplicación que tenía que funcionar a través de un enlace satelital.
Los datos podrían pasar por un enlace de 2Mbps con una GRAN latencia. El control tuvo que pasar por un enlace de 128 kbps, con la misma latencia.
NistNet ayudó a que todo funcionara a 128 kbps.
Usando NistNet, podría simular no solo el ancho de banda, sino también la latencia, y también dejará caer paquetes para usted, simulando un enlace ocupado o poco confiable.
Si desea simular una conexión abitraria, no solo restrinja el ancho de banda, sino que también enrolle la latencia.
No olvides fragmentar los paquetes tampoco. Puede configurar buenas MTU pequeñas en el enlace falso.
El IIRC que agrega fluctuación de paquetes le permitirá descubrir si puede hacer frente a los paquetes fuera de servicio.
fuente
Personalmente, he usado wondershaper en el pasado para esto, aunque fue escrito para un caso de uso opuesto, aprovechando al máximo su conexión ADSL.
Sin embargo, tendré que probar los otros mencionados aquí.
fuente
Puede usar el proxy squid instalado localmente para limitar el ancho de banda, por ejemplo, para probar una página web en un enlace lento:
Instale el proxy squid desde su distribución: en mi Fedora fue tan fácil como
yum install squid
.Agregue lo siguiente a
/etc/squid/squid.conf
:delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 16000/16000
Esto limitará el ancho de banda a aproximadamente 128 kbps (16000 Bps).
Comience el calamar :
/etc/init.d/squid start
Configure su navegador para usar el
localhost
puerto del servidor proxy3128
.fuente
Nadie ha mencionado aún ip_relay , llamado "iprelay" en los repositorios de Debian. Funciona como un proxy TCP, en lugar de interceptar llamadas como lo hace el goteo , y funcionará con cualquier aplicación que pueda usar un proxy (por ejemplo, un navegador web) o aceptar un puerto de destino definido por el usuario (telnet, ssh, ftp, curl, etcétera ).
Es un poco más difícil de configurar, pero a menudo funciona en situaciones donde el goteo no lo hará.
fuente