Формирование трафика с помощью tc не работает с большой задержкой и пропускной способностью

Я использую tc с ядром 2.6.38.8 для формирования трафика. Ограничение пропускной способности работает, добавление задержки работает, но при формировании обеих полос пропускания с задержкой достигнутая пропускная способность всегда намного ниже предела, если ограничение составляет>1,5 Мбит / с или около того.

Пример:

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

Дает задержку (от ping) 201 мс, но пропускную способность всего 1,66 Мбит / с (от iperf). Если я устраню задержку, пропускная способность будет точно 2 Мбит / с. Если я укажу пропускную способность 1 Мбит / с и 200 мс RTT, все работает. Я также попробовал ipfw / dummynet, который дает аналогичные результаты.

Я попытался использовать пересборка ядра с HZ=1000 в Kconfig - это не решило проблему. Другие идеи?

1 ответ

Представьте, что вы пытаетесь проехать ровно 55 миль в час, если у вас была задержка в одну секунду между нажатием на акселератор и ускорением автомобиля. Тебе было бы довольно трудно это сделать.

И у вас было бы, по крайней мере, преимущество в том, что вам нужно проехать 55 миль в час. Теперь представьте, что вы этого не знаете. Итак, что происходит, когда вы проезжаете более 55 миль в час, вас останавливают и вам приходится снова и снова ускоряться, не имея понятия, на какой скорости вас остановят.

Вы уверены, что, черт возьми, в среднем не 55, не так ли?

То же самое и здесь. Стек TCP не знает, что он ограничен 2 Мбит / с, и должен попытаться найти этот предел. И задержка означает, что он не может быстро реагировать на информацию, что он достиг своего предела. Поскольку из-за жесткого ограничения он никогда не превысит 2 Мбит / с, его среднее значение будет меньше этого.

Вы можете улучшить это с burst и / или minburst Настройки. По сути, они позволяют соединению немного превышать его предел, если он был ниже его предела. Таким образом, время от времени он будет превышать 2 Мбит / с, и в среднем он будет ближе к 2 Мбит / с.

Другие вопросы по тегам