Me doy cuenta de que ya se han hecho muchas preguntas similares, pero hasta ahora todavía no he encontrado una solución a mi problema.
Tengo un servidor Linux virtual (que ejecuta Debian Squeeze) que uso para probar las velocidades del sitio web con el fin de medir el aumento y la disminución del tiempo de carga de dichos sitios web. Estoy tratando de limitar el ancho de banda y la latencia de este servidor para poder acercarme a los tiempos de carga del mundo real en los sitios web, pero hasta ahora he fallado.
Lo que quiero específicamente es lo siguiente:
- Para establecer una latencia entrante y saliente de 50 ms.
- Para establecer un límite de ancho de banda entrante de 512 kbps.
- Para establecer un límite de ancho de banda saliente de 4096 kbps.
He estado leyendo sobre netem y usando el tc
comando, pero todavía está todo un poco sobre mi cabeza. Me las arreglé para armar este comando para controlar la latencia que parece funcionar, pero ni siquiera estoy seguro de si eso solo maneja la latencia saliente o ambas:
tc qdisc add dev eth0 root netem delay 50ms
¿Algún gurú de la red que me pueda ayudar?
Editar:
Después de una mayor investigación, he llegado a la mitad de mi objetivo, usando este comando todo el tráfico saliente se comporta como quiero:
tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000
Sin embargo, todavía no he podido regular el tráfico entrante correctamente. Aprendí que se supone que debo usar un "filtro Ingress Policer". Intenté hacer eso con el siguiente comando, jugando con diferentes valores, pero sin suerte.
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: protocol ip u32 match ip src 0.0.0.0/0 flowid :1 police rate 1.0mbit mtu 10000 burst 10k drop
Sin embargo, el ancho de banda se ve afectado por el comando, los valores anteriores hacen que la velocidad comience a 2 MB / sy, a medida que avanza una transferencia, cayendo lentamente a alrededor de 80-90 kB / s, que alcanza después de aproximadamente 30 segundos de transferencia.
¿Alguna idea sobre lo que estoy haciendo mal?
fuente
netem delay 50ms
No limita la latencia. Aumenta la latencia en50ms
comparación con lo que de otro modo hubiera sido.Respuestas:
Finalmente decidí simplemente configurar el ancho de banda / latencia saliente en el servidor, y luego hacer lo mismo en el cliente, logrando efectivamente el mismo resultado.
Estos son los comandos que ejecuté en el servidor y el cliente respectivamente para alcanzar mis objetivos:
Servidor: 4 Mbit 50 ms
Cliente: 512 kbit 50 ms
fuente
Unos 80-90 kByte / s son acerca de qué esperar de
Pide que los datos entrantes se descarten cuando lleguen a 1 mBit / s, es decir, aproximadamente 125 kByte / s. El servidor remoto se reducirá considerablemente a eso (tal vez la mitad, no estoy seguro). Después de eso, todos los paquetes llegan, por lo que el extremo remoto aumenta lentamente la velocidad hasta alcanzar nuevamente 125 kByte / s. Obtiene un rendimiento promedio considerablemente inferior a 125 kByte / s, que es típico de la configuración de ingreso.
Estoy un poco sorprendido de que la velocidad alcance los 2 MByte / s con el filtro de política de ingreso ya implementado. ¿Dónde midió: en el cliente descendente (programa) o en algún enrutador ascendente? ¿O tal vez comenzó por primera vez la conexión y solo después de haber activado el filtro de política de ingreso?
fuente