¿Cómo simulo un entorno de bajo ancho de banda y alta latencia?

201

Necesito simular una conexión de bajo ancho de banda y alta latencia a un servidor para emular las condiciones de una VPN en un sitio remoto. El ancho de banda y la latencia deben ser ajustables para que pueda descubrir la mejor combinación para ejecutar nuestro paquete de software.

Nic
fuente
77
Gran pregunta! Me encantaría escuchar algunas respuestas relacionadas con el desarrollo web ASP .NET.
Carl

Respuestas:

79

Para macOS , existe el Network Link Conditioner que simula el ancho de banda configurable, la latencia y la pérdida de paquetes. Está contenido en el paquete Herramientas adicionales para Xcode . Captura de pantalla

Jon Colverson
fuente
12
El panel de preferencias "Acondicionador de enlace de red" forma parte de Hardware IO Tools para XCode, que puede descargar desde developer.apple.com/downloads
avernet
no parece funcionar con Genymotion. (Pantalla negra)
Bruno
1
Enlace de descarga para las nuevas versiones de XCode: developer.apple.com/download/more/?q=Additional%20Tools
jstorm31
@ jstorm31 Gracias. He actualizado la respuesta con el nombre actual del paquete y el enlace actual.
Jon Colverson el
37

Hay una excelente descripción de cómo configurar una máquina FreeBSD para hacer precisamente esto: tome su escritorio antiguo estándar, agregue una NIC adicional y compile.

El informe está disponible en http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html .

En el paso 5 de las instrucciones anteriores, habilitará un firewall. Para simular una conexión IP diferente, podría (por ejemplo) hacer lo siguiente:

Cree un archivo /etc/rc.firewall.56kque contenga lo siguiente:

ipfw add pipe 1 ip from any to any out
ipfw add pipe 2 ip from any to any in    
ipfw pipe 1 config bw 56Kbit/s   
ipfw pipe 2 config bw 56Kbit/s

Y cambia /etc/rc.conf... reemplaza la línea

firewall_type="open"

con

firewall_type="/etc/rc.firewall.56k"

reiniciar, y tienes un puente de 56K!

Si está trabajando desde un Macintosh, ese sistema operativo tiene ipfw incorporado de forma predeterminada. He hecho lo mismo al enrutar el tráfico de red a través del aeropuerto y a través de Ethernet, configurándolo para que todo lo que venga por el aeropuerto tenga las mismas características que cualquier cosa que esté tratando de emular. Puede invocar los comandos ipfw directamente desde el terminal y obtener los mismos efectos.

heckj
fuente
27

En el pasado, he usado un puente usando la funcionalidad Linux Netem (emulación de red). Es altamente configurable: permite la introducción de demoras (el primer ejemplo es para una WAN), pérdida de paquetes, corrupción, etc.

EDITAR: También existe la interfaz web MasterShaper para controlar la configuración.

Noto que Netem funcionó muy bien para mis aplicaciones, pero también terminé usando WANem varias veces. El ISO de arranque proporcionado (y las imágenes del dispositivo virtual) lo hicieron bastante útil.

Kris Kumler
fuente
¡Perfecto para mis necesidades y disponible de inmediato en mi servidor Ubuntu 14.04!
RobM
21

Charles

Me encontré con Charles, la aplicación proxy de depuración web, y tuve un gran éxito al emular la latencia de la red. Funciona en Windows, Mac y Linux.

Charles en Mac

Acelerador de ancho de banda / simulador de ancho de banda

Charles se puede usar para ajustar el ancho de banda y la latencia de su conexión a Internet. Esto le permite simular condiciones de módem utilizando su conexión de alta velocidad.

El ancho de banda se puede limitar a cualquier byte arbitrario por segundo. Esto permite simular cualquier velocidad de conexión.

La latencia también se puede establecer en cualquier número arbitrario de milisegundos. La demora de latencia simula la latencia experimentada en conexiones más lentas, es decir, la demora entre hacer una solicitud y recibirla en el otro extremo.

DummyNet

También puede usar vmware para ejecutar BSD o Linux y probar este artículo (DummyNet) o este.

Eugene Yokota
fuente
2
Charles es un proxy HTTP y, por lo tanto, solo es adecuado para probar aplicaciones HTTP. Para cada uno lo suyo, pero en mi opinión es probablemente uno de los peores programas que he usado. Solo lo usé por un corto tiempo mientras tenía que trabajar en una Mac. Para los usuarios de Windows, recomendaría Fiddler si necesita un proxy de depuración HTTP. Desafortunadamente, no encontré nada más que Charles para OSX.
Brad
66
Hola brad ¿Puedes mencionar qué tipo de problemas tuviste?
Ante
17

Encontré este pequeño programa ordenado para Windows llamado torpe . Está en una especie de estado alfa, pero parece funcionar bien para mí, y es de código abierto.

Editar: Otros han notado que no puede limitar el ancho de banda con torpe, y eso es cierto. Solo puede agregar Latencia y un par de otros errores relacionados con la red. Esto descalificará esta respuesta como una respuesta válida a la pregunta, sin embargo, dado que la utilicé bien cuando quise simular una red defectuosa, la dejaré aquí siempre que tenga> 0 votos o similar.

Markus
fuente
¿Cómo controlas el ancho de banda con torpe?
user3731622
3
Excelente programa Justo lo que necesitaba. Lo recomiendo. Funciona como un encanto y es súper fácil.
Jh62
1
Cuando la mayoría de la gente dice "limitar el ancho de banda", probablemente estén más que contentos con simplemente agregar cantidades masivas de latencia y pérdida de paquetes, ya que efectivamente limitan el ancho de banda. Además, este programa es increíblemente simple de usar, supera todo lo demás que probé en Windows.
llega el
13

Prueba WANem

WANem es un emulador de red de área amplia, destinado a proporcionar una experiencia real de una red de área amplia / Internet, durante el desarrollo / prueba de aplicaciones en un entorno LAN.

epatel
fuente
1
He intentado esto y parece que no puedo hacer que funcione. No recibirá una dirección IP de nuestra red por alguna razón, mientras que cualquier otra computadora no tiene problemas con ella.
Michael Beck
7

Intentaría usar netem en linux. Con él puede simular demoras adicionales, corrupción, pérdida de paquetes y duplicación. Incluso funciona en el dispositivo de bucle invertido.

Josh
fuente
Oye, ¿tienes algún comando equivalente para Windows como netem?
Shashi Ranjan
6

Otro programa del lado del cliente (solo Windows) es NetLimiter - http://www.netlimiter.com

kaliatech
fuente
2
Netlimiter es bueno, pero creo que solo tiene un ancho de banda bajo, ¿no puede cambiar la latencia?
Nathan
Los planes beta para v3 enumeran la simulación de latencia como una característica planificada. Recientemente se ha puesto en libertad y no he usado todavía para ver si esa característica lo hizo en.
kaliatech
Esa característica no llegó a la versión beta 9. Ugh.
cacba
44
Incluso la versión beta actual (NetLimiter 4) no le permite cambiar la latencia.
influyente el
5

Yo uso NetBalancer en mi máquina Windows.

http://seriousbit.com/netbalancer/

Actualizaciones en 2017-10-07 : La última versión gratuita de NetBalancer es 9.2.7. El programa tiene una fecha de vencimiento codificada. Antes de iniciar el servicio NetBalancer, debe retroceder el reloj del sistema antes del 2016-10-18. Vea este artículo para más detalles.

Tony
fuente
¡¡Gracias!! NetBalancer es la única herramienta listada en esta página que pude poner a trabajar y que puede controlar la latencia.
influyente el
3

Para simular una conexión de bajo ancho de banda para probar sitios web usando Google Chrome, puede ir a la pestaña Red en Herramientas F12 y seleccionar un nivel de ancho de banda para simular o crear un ancho de banda personalizado para simular.

usuario1785960
fuente
1
¡Gracias! Si no puede encontrarlo, está en la consola de Chrome, pestaña Red, en el lado derecho del botón "Desactivar caché". Su valor predeterminado es "Sin limitación".
Alan Willms
1

Si estás en Linux, creo que el programa Traffic Control es de gran ayuda para este tipo de cosas.

smo
fuente
1

Existe un producto de http://www.shunra.com llamado VE Desktop que se puede utilizar para simular condiciones de red variables. Le permite ajustar latencias, ancho de banda y pérdida de paquetes con una simple interfaz de usuario. La única advertencia es que no es gratis. Espero que esto ayude.

Shreedhar Kotekar
fuente
1

He estado buscando una herramienta fácil de usar para este tipo de pruebas desde hace un tiempo. Me encontré con esto el otro día: Network Delay Simulator

Si está ejecutando Windows, debe verificarlo. Fue muy fácil de configurar y poner en marcha, y parece funcionar muy bien. Le permite definir el ancho de banda, la latencia y la pérdida de paquetes en cada dirección. La otra cosa realmente agradable es que puede definir "Condiciones de coincidencia de flujo" para que solo afecte el tráfico que desea. Oh si, y es gratis.

marca
fuente
1

Creo que encontré lo que necesito. tal vez puedas usar el proxy charles o slowy . Espero eso ayude.

Moh Hasbi Assidiqi
fuente
1

Eche un vistazo al NE-ONE Network Emulator, que le permite configurar el ancho de banda, la latencia, la pérdida de paquetes, la reordenación de paquetes, la duplicación de paquetes, la fragmentación de paquetes, la congestión de la red y muchas más alteraciones para que pueda crear condiciones de red en el mundo real en el laboratorio. . Se pueden configurar diferentes degradaciones para el enlace ascendente y descendente para que pueda tener un enlace ascendente realmente bueno pero una experiencia de enlace descendente realmente mala, ideal para ver cómo la aplicación maneja las colas TCP porque los acks no regresan de manera oportuna y la latencia general por lo tanto aumenta!

Hay un video general aquí http://www.youtube.com/watch?v=DwtqlE7LcrQ dirigido específicamente a los desarrolladores de juegos, pero muestra de qué se trata. NE-ONE se configura mediante un navegador web, por lo que es muy fácil de instalar y configurar: no necesita ser un gurú de la red :-)

Hay una versión de hardware: http://www.itrinegy.com/index.php/products/network-emulators/ne-one , o puede descargar una versión de Virtual Appliance (software) que se ejecuta en VMware ESXi Server. El dispositivo virtual se puede descargar desde el intercambio de soluciones de VMware: solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator

Peter White
fuente
0

LANforge ICE es un emulador de red con énfasis en enrutamiento virtual, jitter, corrupción y retraso. Los proyectos lo han utilizado para emular enlaces satelitales, conexiones de cable y módem, y emulación wan de alta velocidad (10 Gbit). Puede usar una GUI de Java para construir sus redes virtuales y generar informes muy detallados del flujo de tráfico. Los productos LANforge también proporcionan características de generación de tráfico: trama, ethernet, capa 3 y tráfico con estado (NFS, http). Las ediciones recientes para LANforge también tienen características sofisticadas de prueba de WiFi.

memnoch_proxy
fuente
0

Puedes probar esto: CovenantSQL / GNTE simplemente escribe YAML así:

group:
  - 
    name: china
    nodes:
      - 
        ip: 10.250.1.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.1.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "100ms 10ms 30%"
    loss: "1% 10%"
  - 
    name: us
    nodes:
      - 
        ip: 10.250.2.2
        cmd: "cd /scripts && ./YourBin args"
      - 
        ip: 10.250.2.3
        cmd: "cd /scripts && ./YourBin args"
    delay: "1000ms 10ms 30%"
    loss: "1% 10%"

network:
  -
    groups:
      - china
      - us
    delay: "200ms 10ms 1%"
    corrupt: "0.2%"
    rate: "10mbit"

correr ./generate scripts/your.yaml

Auxten
fuente