¿Cuál es la mejor herramienta para simular una conexión lenta a Internet en una Mac?

¡Estás de suerte! Como Mac OS X se basa en FreeBSD, ya tienes la mejor herramienta del mundo para simular redes lentas. Se llama ipfw , y le permite establecer límites en todo el sistema en el rendimiento de la red, para que pueda ver cómo cualquier aplicación, incluida una aplicación web dentro de un navegador, maneja las desviaciones en el ancho de banda, la latencia, etc.

Debido a que esta pequeña joya ya está instalada, puede, si lo desea, dejar de leer mi respuesta y simplemente leer el manual: man ipfw o la página del desarrollador de Apple (tenga en cuenta especialmente la sección “FORMACIÓN DEL TRÁFICO”).

Al igual que con cualquier herramienta UNIX, los usos complicados de ipfw pueden ser bastante complicados, pero (a diferencia de muchas herramientas UNIX) el uso básico es notablemente simple. Para definir una regla que use una pipe para redirigir all tráfico desde any dirección de origen a any dirección de destino, ejecute el siguiente comando (como root, o usando sudo ):

 ipfw add pipe 1 all from any to any 

Para configurar esta regla para limitar el ancho de banda a 300Kbit / sy imponer 200 ms de latencia en cada sentido, haga

 ipfw pipe 1 config bw 300Kbit/s delay 200ms 

Si hace ping localhost o intenta cargar una página web, notará los efectos de inmediato.

Si desea diferentes límites para el tráfico entrante y saliente, intente esto en su lugar:

 ipfw add pipe 1 all from any to any out ipfw add pipe 2 all from any to any in ipfw pipe 1 config bw 64Kbit/s ipfw pipe 2 config bw 128Kbit/s 

Para ver qué reglas están activas actualmente, escriba

 ipfw show 

Si desea eliminar la tubería 1, haga ipfw show , busque la línea para la tubería 1 y anote el número en la primera columna (probablemente 00100, si fue la primera regla que agregó). Use este número para eliminar la regla:

 ipfw delete pipe 100 

Para eliminar todas las reglas y recuperar su conexión de red original, haga

 ipfw flush 

Consulte la respuesta de Abhijeet Joglekar para obtener más detalles sobre lo que ipfw está haciendo realmente con sus paquetes.

Cuando trabajé en Mozilla, usé ipfw como base para un marco de prueba para medir el rendimiento de la búsqueda de recursos especulativos del analizador HTML5. Fue confiable y, después de algunos ajustes, me permitió simular conexiones satelitales y móviles (donde la especulación es lo más importante) con bastante fidelidad.

Apple tiene una herramienta oficial para esto llamada Network Link Conditioner . Matt Gemmell escribió sobre esto aquí: http://mattgemmell.com/2011/07/2

Comenzando con Xcode 4.3, puede encontrarlo en el menú: Xcode> Abrir herramienta de desarrollador> Más herramientas de desarrollador …
Desde el sitio web obtenga las herramientas de Hardware IO para Xcode.

Estoy de acuerdo con Ben Newman en que ipfw (firewall IP) en FreeBSD es una herramienta realmente buena para simular / emular conexiones lentas a Internet en una Mac. Para agregar a la respuesta de Ben, la implementación real de la tubería en FreeBSD se realiza mediante una herramienta de emulación de red / enlace desarrollada por Luigi Rizzo llamada Dummynet. Consulte http://info.iet.unipi.it/~luigi/ … para ver un enlace a la página web de la herramienta. Entonces, en realidad, es la combinación de ipfw (interceptor de paquetes) y dummynet (implementador de tubería / cola) lo que hace el trabajo.

ipfw se usa para crear las reglas que pueden interceptar paquetes, y el resultado de las reglas puede ser reenviar el paquete a una tubería o cola dummynet. Además del ancho de banda y la latencia, también puede configurar la tasa de pérdida de paquetes y la disciplina de colas (FIFO, RED, etc.) en una cola dummynet. De esta manera, incluso puede dividir la latencia total de extremo 2 final que desea simular como una combinación de latencia debido al ancho de banda de la tubería + latencia debido a que el paquete se encuentra en la cola + latencia de cable.

Otra ventaja es que la implementación de Dummynet es muy eficiente y se escala bien con un número creciente de enlaces que deben emularse. Por ejemplo, supongamos que desea probar su servicio web y utilizarlo con muchos miles de clientes de prueba, cada uno con diferentes características de enlace. Tendría que crear muchas tuberías y colas para representar estos miles de enlaces. Dummynet utiliza una Estructura de datos de cola prioritaria para administrar la gran cantidad de tuberías con complejidad O (log n). Esto significa que puede simular muchos enlaces en tiempo real con una pequeña cantidad de hardware (una o dos PC normales deberían ser suficientes).

Emulab, un banco de pruebas de emulación de red muy popular (www.emulab.net, el banco de pruebas de red de la Universidad de Utah) utiliza dummynet e ipfw para implementar características de enlace en una topología de red.