Sei que muitas perguntas semelhantes já foram feitas, mas até agora ainda não encontrei uma solução para o meu problema.
Eu tenho um servidor linux virtual (executando o Debian Squeeze) que uso para testar a velocidade dos sites, a fim de medir o aumento e a diminuição do tempo de carregamento desses sites. Estou tentando limitar a largura de banda e a latência desse servidor para poder aproximar-me dos tempos de carregamento do mundo real nos sites, mas até agora falharam.
O que eu quero especificamente é o seguinte:
- Para definir uma latência de entrada e saída de 50 ms.
- Para definir um limite de largura de banda de entrada de 512 kbps.
- Para definir um limite de largura de banda de saída de 4096 kbps.
Estive lendo no netem e usando o tc
comando, mas ainda está um pouco acima da minha cabeça. Eu consegui montar este comando para controlar a latência que parece funcionar, mas não tenho certeza se isso lida apenas com a latência de saída ou com ambas:
tc qdisc add dev eth0 root netem delay 50ms
Algum guru da rede por aí que possa me ajudar?
Editar:
Após mais pesquisas, cheguei a meio caminho do meu objetivo, usando este comando todo o tráfego de saída se comporta como eu quero:
tc qdisc add dev eth0 root tbf rate 4.0mbit latency 50ms burst 50kb mtu 10000
No entanto, ainda não consegui controlar o tráfego de entrada corretamente. Eu aprendi que eu deveria usar um "filtro Policer do Ingress". Eu tenho tentado fazer exatamente isso com o comando abaixo, brincando com valores diferentes, mas sem sorte.
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
A largura de banda é afetada pelo comando, porém, os valores acima fazem a velocidade iniciar em 2MB / se, conforme a transferência progride, diminuindo lentamente para cerca de 80-90kB / s que atinge após cerca de 30 segundos de transferência.
Alguma idéia do que estou fazendo de errado?
netem delay 50ms
não limita a latência. Aumenta a latência em50ms
comparação com o que seria de outra forma.