netem y Network Link Conditioner en Windows
En Linux existe tc netem y en Mac existe Network Link Conditioner. Windows no trae nada integrado que añada retardo y pérdida. Esta página traslada lo que ya conoces a Bean Network Tester y señala dónde las cifras no se trasladan.
Las opciones de netem, una a una
Añade --target y --duration a cada comando de aquí, o afectará a todo el equipo.
| netem | Ajuste en la ventana | Indicador |
|---|---|---|
delay 100ms | Latency | --latency 100 |
delay 100ms 20ms | Latency, Jitter | --latency 100 --jitter 20 |
loss 5% | Loss | --loss 5 |
loss 5% 25% | Loss, Losses in a row (burst) | --loss 5 --loss-burst 4 |
duplicate 1% | Duplication | --dup 1 |
corrupt 0.1% | Corruption | --corrupt 0.1 |
reorder 25% | Spike chance, Spike size | --spike-prob 5 --spike-ms 200 |
rate 1mbit | Download, Upload | --down 122 --up 122 |
limit 1000 | Buffer | --buffer 1000 |
- Pérdida en ráfagas. El valor de correlación de netem no es una longitud de ráfaga. Losses in a row (burst) es el promedio de paquetes perdidos seguidos, lo más parecido.
- Reordenación. No hay un porcentaje de reordenación. Un pico retrasa un solo paquete para que los enviados después lo adelanten, y el contador de reordenados de la página Statistics muestra si realmente ocurrió.
- Tamaño de la cola. El limit de netem cuenta paquetes. Buffer es un tiempo en milisegundos.
Tres diferencias que conviene conocer
Dirección. netem retrasa lo que sale de una interfaz y la respuesta vuelve intacta. Esta herramienta captura ambas direcciones, así que --latency 100 añade unos 200 ms a un ping: 100 de ida y 100 de vuelta. Para obtener lo que hace netem, captura solo el tráfico saliente:
BeanNetworkTester.exe --filter out --latency 100 --jitter 20 --target myapp.exe --duration 120
Unidades. Una tasa de netem va en bits por segundo. Los campos de límite de velocidad van en KB/s, con K = 1024. Conversión de megabits:
| tasa de netem | Campo de límite de velocidad, en KB/s |
|---|---|
1mbit | 122 |
5mbit | 610 |
10mbit | 1221 |
50mbit | 6104 |
100mbit | 12207 |
Alcance. tc da forma a toda una interfaz de red y necesita root. Esta herramienta apunta a un solo programa con --target y necesita derechos de administrador.
Si conoces Network Link Conditioner
La herramienta de Apple funciona con perfiles con nombre. Los más cercanos aquí:
| Network Link Conditioner | Lo más cercano aquí |
|---|---|
| 100% Loss | Loss puesto en 100 |
| 3G | 3G network |
| DSL | Home DSL (VDSL) |
| LTE | LTE / 4G |
| WiFi | Good WiFi |
| Very Bad Network | Terrible network |
| Edge | No hay perfil equivalente. Escribe tú el límite de velocidad y la latencia, y guárdalos como perfil propio con el botón Save.... |
Las cifras no son las de Apple, así que toma un perfil como punto de partida. Cada valor que fija un perfil figura en la página de referencia.
Lo que ganas en Windows
- Un programa, no todo el equipo. Apunta la degradación a una sola app mientras el resto de la máquina sigue normal.
- Una línea de tiempo en lugar de un script de shell. Los escenarios temporizados cambian los ajustes en segundos fijados, lo que hace en Linux un script de
tcysleep. - Una canalización puede ejecutarlo. El mismo ejecutable se ejecuta en CI e informa mediante códigos de salida.
En Linux o macOS, usa los originales. Esta herramienta solo funciona en Windows.