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?
fonte
netem delay 50ms
não limita a latência. Aumenta a latência em50ms
comparação com o que seria de outra forma.Respostas:
Finalmente resolvi definir apenas a largura de banda / latência de saída no servidor e, em seguida, fazer o mesmo no cliente, atingindo efetivamente o mesmo resultado.
Estes são os comandos que executei no servidor e no cliente, respectivamente, para atingir meus objetivos:
Servidor: 4 Mbit 50 ms
Cliente: 512 kbit 50 ms
fonte
Cerca de 80-90 kByte / s é sobre o que esperar de
Você pede que os dados recebidos sejam jogados fora quando chegam a 1 mBit / s, ou seja, 125 kByte / s. O servidor remoto cairá para consideravelmente mais baixo que isso (talvez metade, não tenho certeza). Depois disso, todos os pacotes passam, então a extremidade remota aumenta a velocidade lentamente até que 125 kByte / s sejam atingidos novamente. Você obtém uma taxa de transferência média consideravelmente abaixo de 125 kByte / s, o que é típico da forma de entrada.
Estou um pouco surpreso que a velocidade atinja 2 MByte / s com o filtro de política de ingresso já instalado. Onde você mediu - no cliente downstream (programm) ou em algum roteador upstream? Ou talvez você tenha iniciado a conexão e só depois tenha acionado o filtro de política de entrada?
fonte