Я использую 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 - это не решило проблему. Другие идеи?