Usando tc no Linux e dummynet no FreeBSD para limitar a largura de banda

5

Temos um produto de rede que roda no Linux e precisa ser testado em redes com largura de banda reduzida.

Nós conseguimos usar 'tc' (controle de tráfego) no Linux e dummynet no FreeBSD para injetar atraso (latência) com comportamento previsível.

Mas quando tentamos diminuir a largura de banda com qualquer um desses, não parece ter muito efeito.

Aqui está um exemplo de tentativa de usar 'tc' para definir a largura de banda para 512Kbps:

tc qdisc change dev eth0 root tbf rate 512kbit burst 1540

Mas quando corremos 'scp' nessa conexão, vemos velocidades muito mais altas do que esperamos.

Aqui estão os resultados da configuração de várias larguras de banda em ambos, dummynet e tc. Você pode ver que tem ALGUM efeito, mas não muito.

BW             _______DUMMYNET__________        __________ TC __________
10Mbps         1m,3.489s        4.0MB/s         1m,2.732s       4.1MB/s
8Mbps          1m,3.461s        4.0MB/          1m,2.728s       4.1MB/s
6Mbps          1m,3.905s        4.0MB/s         1m,2.710s       4.0MB/s
1Mbps          1m, 3.261s       4.0MB/s         1m,2.680s       4.0MB/s
512Kbps        1m,26.175s       3.0MB/s         1m 25.409s      3.0MB/s
256Kbps        2m,39.079s       1.6MB/s         2m 53.004s      1.5MB/s
128Kbps        5m, 3.501s       852.7KB/s       5m, 50.491s     739.7KB/s
64Kbps         9m,48.907s       463.3KB/s       9m,53.105s      436.5KB/s

Eu não tenho a sintaxe que usamos para o DUMMYNET, mas vou postar depois.

    
por lcbrevard 03.12.2010 / 17:57

2 respostas

4

Há uma pergunta no serverfault que eu respondi com um mais extenso exemplo de usar tc e iptables para limitar o tráfego . Este exemplo vem de uma configuração que temos em nosso servidor espelho e funciona muito bem.

    
por 06.12.2010 / 01:01
2

Eu não executaria a filtragem na caixa em questão, eu a executaria em uma caixa dedicada / vm entre as duas partes da tecnologia em questão. Dessa forma, você pode executar uma linha de base limpa e avaliar os resultados de maneira mais adequada (execute ethereal / wireshark em ambos os lados e veja a diferença de tamanho para se certificar de que está funcionando corretamente)

Aqui está algo que você pode achar útil: link

embora tc devesse fazer isso por você

    
por 03.12.2010 / 18:25