A modelagem de tráfego com tc não funciona para alta demora e largura de banda

2

Estou usando o tc com o kernel 2.6.38.8 para modelagem de tráfego. A largura de banda limite funciona, adicionando atrasos, mas ao configurar a largura de banda com atraso, a largura de banda obtida é sempre muito menor que o limite se o limite for > 1,5 Mbps ou mais.

Exemplo:

tc qdisc del dev usb0 root
tc qdisc add dev usb0 root handle 1: tbf rate 2Mbit burst 100kb latency 300ms
tc qdisc add dev usb0 parent 1:1 handle 10: netem limit 2000 delay 200ms

Gera um atraso (do ping) de 201 ms, mas uma capacidade de apenas 1.66 Mbps (do iperf). Se eu eliminar o atraso, a largura de banda é precisamente de 2 Mbps. Se eu especificar uma largura de banda de 1 Mbps e 200 ms RTT, tudo funciona. Eu também tentei ipfw / dummynet, que produz resultados semelhantes.

Eu tentei usar a reconstrução do kernel com HZ = 1000 no Kconfig - isso não resolveu o problema. Outras ideias?

    
por user308917 23.03.2012 / 20:01

1 resposta

2

Imagine tentar dirigir exatamente 55 milhas por hora se você tivesse um segundo de atraso entre quando você pressionava o acelerador e quando o carro passava mais rápido. Você teria muita dificuldade em fazê-lo.

E você teria pelo menos a vantagem que você sabe você precisa dirigir 55 milhas por hora. Agora, imagine que você não saiba disso. Então, o que acontece é que quando você passa de 80 km por hora, você fica parado e tem que acelerar tudo de novo, não tendo ideia de em que velocidade você vai parar.

Você tem certeza de que não teria uma média de 55, não é?

A mesma coisa aqui. A pilha TCP não tem idéia de que é limitada a 2MBps e tem que tentar encontrar esse limite. E a latência significa que não pode reagir rapidamente à informação de que atingiu seu limite. Uma vez que nunca pode passar mais de 2Mbps, devido ao limite rígido, sua média será menor do que isso.

Você pode melhorar isso com as configurações burst e / ou minburst . Essencialmente, o que isso faz é deixar a conexão ultrapassar um pouco seu limite se estiver abaixo do seu limite. Desta forma, irá passar um pouco mais de 2Mbps em algum tempo e assim terá uma média aproximada de 2Mbps.

    
por 23.03.2012 / 21:33