Cómo simular conexiones lentas a Internet en Mac

¿Cuál es una buena solución de software para ralentizar las conexiones a Internet en Mac para pruebas y simulaciones?

Mi principal necesidad es cuando pruebo el código en el simulador de iPhone/iOS, por lo que sería genial ralentizar la conexión para aplicaciones o procesos específicos.

Respuestas (10)

La herramienta oficial de Apple para ralentizar las conexiones de red en su Mac con fines de prueba es Network Link Conditioner

Además, iOS tiene una función similar a la que se puede acceder desde Xcode e iOS 6 o posterior.

ingrese la descripción de la imagen aquí

Las versiones anteriores de Xcode antes de la versión 4.3.2 incrustaron una copia de esta herramienta. Este subproceso SO documenta algo de la historia de la herramienta de manera similar a los simuladores de iOS y la documentación del desarrollador.

Hay 11 perfiles integrados desde una red Lossy Edge con un retraso de 400 ms hasta un módem por cable. Si necesita otros límites , puede crear perfiles personalizados con su propia configuración o también puede usarlo usted mismo como se ipfwdescribe en el artículo de Craig Hockenberry . que Xcode, pero tiene menos opciones que la herramienta de Apple.

Ralentiza toda la pila de red, por lo que no puede acelerar por aplicación sin hacer cosas como instalar Lion en una máquina virtual y configurar esa VM con una pila acelerada.

¡Asegúrese de apagarlo después de terminar la prueba!
También tenga en cuenta que iOS 6 tiene el acondicionador de enlace de red para realizar pruebas en el dispositivo. Acceda a él a través de Configuración-> Desarrollador en la sección "Acondicionador de enlace de red".
parece que no funciona para el tráfico de tipo localhost. Veo que alguien informó que funcionó cuando usaba localhost: 8888 con MAMP, pero me estoy conectando a una VM de Windows a través del puerto 8888.
Tenga en cuenta que Network Link Conditioner Tool es básicamente solo una GUI para controlar dnctl/ ipfwreglas dummynet a través de su nlcddaemon (ver: newosxbook.com/bonus/vol1ch16.html )

OS X 10.9 y versiones anteriores proporcionan ipfwy le permiten definir reglas de firewall personalizadas. Cree una tubería con ancho de banda limitadoipfw y podrá ejecutar sus pruebas y simulaciones.

  1. Cree una tubería "1" limitada a 500 KBytes/s a través de

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. Guíe todo el tráfico de red del puerto 80 a través de la tubería "1" usando

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. Cuando ya no necesite la tubería, retírela del puerto usando

    sudo ipfw delete 1
    

Otro

  • Si desea establecer barreras de tráfico más altas, puede utilizarMByte/s
  • Puerto : puerto estándar para tráfico 80no cifrado . httpEste puerto se usa para la mayoría de las búsquedas y descargas. Debería estar bien con esto en la mayoría de los casos.
  • Puerto : puerto estándar para tráfico 443encriptado SSL .https
¿Qué hay de post-10.9, qué usamos en lugar de ipfw?

El límite de velocidad es un panel de Preferencias del sistema para ralentizar de manera intencional y selectiva puertos y dominios específicos.

La fuente del límite de velocidad parece no tener mantenimiento ahora, pero está disponible aquí y tiene una bifurcación de búsqueda más actualizada aquí , aunque no la he probado en absoluto.

Para agregar a la respuesta aceptada: parece que no debería necesitar XCode, solo una cuenta en el sitio web de Apple Developer (más simple que descargar primero el paquete XCode de 2GB si aún no lo tiene).

Vaya a https://developer.apple.com/downloads y busque "Network Link Conditioner" o "Additional Tools for XCode", siendo este último el nombre del paquete en el que se encuentra.

Para descargarlo a través de Xcode 8.x:

  • Haga clic en el menú Xcode
  • Vaya a Abrir herramienta para desarrolladores > Más herramientas para desarrolladores...
  • Esto abrirá una página en developer.apple.com (Nota: es posible que deba iniciar sesión primero)
  • Haga clic en el signo '+' junto a Herramientas adicionales para Xcode 8.x
  • Haga clic en la URL de descarga

Si solo necesita aceleración para el desarrollo web, puedo recomendar de todo corazón a Charles . De todos modos, es una excelente herramienta para depurar aplicaciones HTTP y, entre sus muchas características, tiene una opción de Acelerador. El software no es barato, pero hace un excelente trabajo.

Los usuarios de Mac OS X 10.10+ necesitan usar dnctly pfctl, sin embargo, los ejemplos de uso documentados no son fáciles de encontrar.

# Configure `pfctl` to use `customRule`. 
(cat /etc/pf.conf && echo "dummynet-anchor \"customRule\"" && echo "anchor \"customRule\"") | sudo pfctl -f -

# Define `customRule` to pipe traffic to `pipe 1`.
# Note this is the actual port definition, not a textual comment
echo "dummynet in quick proto tcp from any to any port 443 pipe 1" | sudo pfctl -a customRule -f -

# Define what `pipe 1` should do to traffic
sudo dnctl pipe 1 config delay 10000
sudo dnctl pipe 1 config bw 10Kbit/s

# DO NOT FORGET to undo these when you're done
sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf

Si quieres ir a por todas y darle forma a todo lo que puedes usar:

echo "dummynet in quick proto tcp from any to any pipe 1" | sudo pfctl -a customRule -f -

Creo que esto también afecta a las canalizaciones de host local que ralentizaron la depuración de mi código vs, así que tenlo en cuenta.

Necesitaba ejecutar sudo pfctl -Eprimero para habilitar pfctl. También me aseguré de que mi firewall estuviera habilitado en Preferencias del sistema> Seguridad y privacidad> Firewall, pero no estoy seguro de si eso es necesario.

También puede usar tuberías ipfw para ralentizar su red.

Primero, configure una "tubería" virtual para limitar el rendimiento a 800 KBit/seg:

ipfw pipe 1 config bw 800Kbit

Luego puede configurar reglas para impulsar el tráfico a través de esa tubería (tubería 1). (los puertos 6881-6890 son tráfico bittorrent)

ipfw add 10 pipe 1 tcp from any to me 6881-6890
ipfw add 11 pipe 1 tcp from any 6881-6890 to me

Aquí hay otro ejemplo para limitar el tráfico a 10 Kbit/seg desde una dirección IP específica:

ipfw pipe 2 config bw 10Kbit
ipfw add 15 pipe 2 ip from me to 64.81.84.114

(Fuente)

ipfw se eliminó en OSX 10.10

Encontré este comando de terminal útil en mi caso

Instalación:

Abra la terminal mac y escriba este comando

sudo npm install @sitespeed.io/throttle -g

Uso:

Abra la terminal y escriba el comando requerido

Acelerador de inicio (supongamos que queremos velocidades de carga y descarga de 5000 kbps)

throttle --up 5000 --down 5000

detener el acelerador

throttle --stop

También hay perfiles prefabricados.

--profile         Premade profiles, set to one of the following
                     3g: up:768 down:1600 rtt:150
                     3gfast: up:768 down:1600 rtt:75
                     3gslow: up:400 down:400 rtt:200
                     2g: up:256 down:280 rtt:400
                     cable: up:1000 down:5000 rtt:14
                     dsl: up:384 down:1500 rtt:14
                     3gem: up:400 down:400 rtt:200
                     4g: up:9000 down:9000 rtt:85
                     lte: up:12000 down:12000 rtt:35
                     edge: up:200 down:240 rtt:35
                     dial: up:30 down:49 rtt:60
                     fois: up:5000 down:20000 rtt:2

Uso de perfiles

throttle 4g

En XCode 12, debe instalar herramientas adicionales para XCode 12 en lugar de herramientas de IO de hardware.

Gracias. He limpiado algunos comentarios que tenían el nombre anterior: ¿es esta respuesta básicamente lo que crees que es correcto ?

Para XCode 10.2, en Más herramientas para desarrolladores - Herramientas adicionales para XCode 10.2, encontrará Network Link Conditioner.